Skip to content

Appendix D: Available Formulas 可用公式

NOTE

原文出处:Sentaurus Visual User Guide, W-2024.09, PDF 第 424–432 页


创建新变量

NOTE

对于新变量,可以在函数表达式中使用现有数据集的变量,也可以使用值列表。

要创建新变量,请使用 create_variable 命令。例如,要在数据集 myDataset 中创建变量 Y 的常用对数作为新变量,可以使用以下命令:

tcl
create_variable -name commonLogY -dataset "myDataset" \
  -function "log(<Y:myDataset>)"

访问函数中的变量时,请使用格式 <VARIABLE:DATASET>。新变量将出现在创建它所在的数据集的变量列表中。

NOTE

也可以通过点击 Data Selection 面板的 Data 选项卡中的 New Variable 来创建变量。系统将打开一个对话框,您可以在其中交互式地添加函数、运算符和变量来创建新公式。


创建新曲线

NOTE

对于新曲线,可以在函数表达式中使用现有曲线。

要创建新曲线,请使用 create_curve 命令。例如,要创建 Curve_1 的导数并将其命名为 newCurve,可以使用以下命令:

tcl
create_curve -name newCurve -function diff(<Curve_1>)

对曲线应用函数

要在公式中使用曲线,必须将曲线标识符写在尖括号中。例如,要对 Curve_1 上的数据使用微分函数,应写作 <Curve_1>

NOTE

如果您想使用一个函数从多条曲线创建新曲线,例如:

tcl
create_curve -name newCurve_2 -function <Curve_1>*<Curve_2>

曲线 Curve_1Curve_2 必须共享相同的 x 轴,并且必须具有相同数量的有效数据。否则可能会导致意外结果。

您也可以通过点击 Data Selection 面板的 Curves 选项卡中的 New 按钮来创建曲线。系统将打开一个对话框,您可以在其中交互式地添加函数、运算符和曲线来基于公式创建新曲线。


对现有曲线应用函数

要对现有曲线应用函数,请使用 set_curve_prop 命令。例如,要对 Curve_1 应用绝对值函数,请使用命令:

tcl
set_curve_prop Curve_1 -function "abs"

或者,您也可以使用 Curve Properties 面板:

  1. 选择曲线。
  2. 点击 Trans. 选项卡。
  3. Function 列表中选择所需的函数。

NOTE

不能对现有曲线应用多个函数。如需多个函数,请创建新曲线。

此外,作为例外,您可以在其他函数的基础上额外应用积分、一阶导数或二阶导数函数,但需使用另一个参数(-integ-deriv):

tcl
set_curve_prop Curve_1 -integ
set_curve_prop Curve_1 -deriv 2

或者,您也可以使用 Curve Properties 面板:

  1. 选择曲线。
  2. 点击 Trans. 选项卡。
  3. Deriv / Integ 列表中选择要应用的函数。

创建新场(Field)

NOTE

对于新场,可以在函数表达式中使用现有场。

要创建新场,请使用 create_field 命令。现有的场用于根据用户指定的函数和运算来创建新场。如果新场的名称已存在,则控制台会显示错误消息,除非指定了 -overwrite 选项。

以下示例中,假设有两个场分别名为 ElectricField-XElectricField-Y。您希望创建一个新场,其中包含两个场绝对值之和。这可以通过以下命令完成:

tcl
create_field -name AbsSumElectricField -dataset 2D \
  -function "abs(<ElectricField-X>+<ElectricField-Y>)" -show

如果选择了 Display 选项,新场将自动显示在绘图窗口中。如果新场名称已存在,则会打开一个对话框,您可以确认是否覆盖现有场,或在已选择 Overwrite 选项的情况下直接覆盖。

NOTE

可以使用 remove_fields 命令删除场(参见 remove_fields)。


可用函数

NOTE

对于那些仅返回 Double 值且仅作为公式最外层函数的函数,其结果仅显示在对话框中,无法在 Tcl 脚本中使用。

带有 * 返回类型的函数会创建多个场。

表 34:可用函数

函数参数返回值描述
abs(x)Double / Vector / CurveDouble / Vector / Curve绝对值
acos(x)Double / Vector / CurveDouble / Vector / Curve反余弦(ArcCosine)
acosh(x)Double / Vector / CurveDouble / Vector / Curve双曲反余弦(Hyperbolic ArcCosine)
asin(x)Double / Vector / CurveDouble / Vector / Curve反正弦(ArcSine)
asinh(x)Double / Vector / CurveDouble / Vector / Curve双曲反正弦(Hyperbolic ArcSine)
atan(x)Double / Vector / CurveDouble / Vector / Curve反正切(ArcTangent)
atanh(x)Double / Vector / CurveDouble / Vector / Curve双曲反正切(Hyperbolic ArcTangent)
bessel_j0(x)Double / Vector / CurveDouble / Vector / Curve第一类贝塞尔函数,阶数为零
bessel_j1(x)Double / Vector / CurveDouble / Vector / Curve第一类贝塞尔函数,一阶
bessel_y0(x)Double / Vector / CurveDouble / Vector / Curve第二类贝塞尔函数,阶数为零
bessel_y1(x)Double / Vector / CurveDouble / Vector / Curve第二类贝塞尔函数,一阶
cbrt(x)Double / Vector / CurveDouble / Vector / Curve立方根
ceil(x)Double / Vector / CurveDouble / Vector / Curve向上取整(不小于 x 的最小整数)
cfftim(x, y)x: Vector, Curve
y: Vector, Curve
Vector / Curve快速傅里叶变换,虚部
cfftre(x, y)x: Vector, Curve
y: Vector, Curve
Vector / Curve快速傅里叶变换,实部
cifftim(x, y)x: Vector, Curve
y: Vector, Curve
Vector / Curve逆快速傅里叶变换,虚部
cifftre(x, y)x: Vector, Curve
y: Vector, Curve
Vector / Curve逆快速傅里叶变换,实部
cos(x)Double / Vector / CurveDouble / Vector / Curve余弦
cosh(x)Double / Vector / CurveDouble / Vector / Curve双曲余弦
crop(y, x, min, max)x: Vector
y: Vector
min: Double
max: Double
Vector根据 x 的最小值和最大值范围裁剪 y 的值
crop(c, min, max)c: Curve
min: Double
max: Double
Curve根据最小值和最大值范围裁剪曲线的值
diff(c)c: CurveCurve一阶导数
diff(y, x)x: Vector
y: Vector
Vector一阶导数
erf(x)Double / Vector / CurveDouble / Vector / Curve误差函数
erfc(x)Double / Vector / CurveDouble / Vector / Curve余误差函数
exp(x)Double / Vector / CurveDouble / Vector / Curve计算
fftabs(y, x)x: Vector, Curve
y: Vector, Curve
Vector / Curve快速傅里叶变换,绝对值
fftim(x)x: Vector, CurveVector / Curve快速傅里叶变换,虚部
fftre(x)x: Vector, CurveVector / Curve快速傅里叶变换,实部
floor(x)Double / Vector / CurveDouble / Vector / Curve向下取整(不大于 x 的最大整数)
gamma(x)Double / Vector / CurveDouble / Vector / Curve伽马函数
gradient(x)DoubleDouble*梯度函数,创建四个带后缀的场:
_mag:梯度幅值
_x:x 轴梯度
_y:y 轴梯度
_z:z 轴梯度
ifftim(x)x: Vector, CurveVector / Curve逆傅里叶变换,虚部
ifftre(x)x: Vector, CurveVector / Curve逆傅里叶变换,实部
integr(y, x)y: Vector
x: Vector
Vector对向量 y 在 x 指定的范围内积分
integr(c)c: CurveCurve对曲线 c 积分
inverse(x)Double / Vector / CurveDouble / Vector / Curve倒数
lgamma(x)Double / Vector / CurveDouble / Vector / Curve对数伽马函数
log(x)Double / Vector / CurveDouble / Vector / Curve自然对数
log10(x)Double / Vector / CurveDouble / Vector / Curve常用对数(以 10 为底)
minmax(x, min, max)x: Vector
min: Double
max: Double
Vector所有小于 min 的值替换为 min,所有大于 max 的值替换为 max
pow(x, y)x: Double / Vector / Curve
y: Double
Double / Vector / Curve计算 ,其中 x 可以是 Double 值、向量值或曲线
rms(x, y)x: Vector, Curve
y: Vector, Curve
Double均方根值
sign(x)Double / Vector / CurveDouble / Vector / Curve符号函数
sin(x)Double / Vector / CurveDouble / Vector / Curve正弦
sinh(x)Double / Vector / CurveDouble / Vector / Curve双曲正弦
sqrt(x)Double / Vector / CurveDouble / Vector / Curve平方根
tan(x)Double / Vector / CurveDouble / Vector / Curve正切
tangent(c, v)c: Curve
v: Double
Curve在曲线 c 的点 v 处创建切线
tangent(y, x, v)x: Vector
y: Vector
v: Double
Vector在由向量 x 和 y 定义的曲线的点 v 处创建切线
tanh(x)Double / Vector / CurveDouble / Vector / Curve双曲正切
vecmax(x)x: VectorDouble返回向量的最大值
vecmax(c)c: CurveDouble返回曲线的最大 y 值
vecmin(x)x: VectorDouble返回向量的最小值
vecmin(c)c: CurveDouble返回曲线的最小 y 值
vecvalx(y, x, v)x: Vector
y: Vector
v: Double
Double返回曲线中 时对应的 x 值
vecvalx(c, v)c: Curve
v: Double
Double返回曲线中 时对应的 x 值
vecvaly(y, x, v)x: Vector
y: Vector
v: Double
Double返回曲线中 时对应的 y 值
vecvaly(c, v)c: Curve
v: Double
Double返回曲线中 时对应的 y 值
veczero(y, x)x: Vector
y: Vector
Double返回曲线中 时对应的 x 值
veczero(c)c: CurveDouble返回曲线中 时对应的 x 值

表 34:可用函数(续)

基于 Sentaurus TCAD 官方文档构建

代码块