算符
d(f,x) |
f对x方向的微分 1. 使用d算符来计算一个变量对另一个变量的导数,如:d(T,x)指变量T对x求导,而d(u^2,u)=2*u等; 2. 如果模型中含有任何独立变量,建模中使用d算符会使模型变为非线性; 3. 在解的后处理上使用d算符,可以使用一些预置的变量,如:uxx,d(ux,x),d(d(u,x),x)都是等效的; 4. pd算符与d算符类似,但对独立变量不使用链式法则; 5. d(E,TIME)求解表达式E的时间导数; 6. dtang算符可以计算表达式在边界上的切向微分(d算符无法计算),在求解域上使用dtang等价于d,dtang只求解对坐标变量的微分,但需要注意的是并不是所有的量都有切向微分。
|
pd(f,x) |
f对x方向的微分 pd和d的区别: d(u+x,x)=ux+1,d(u,t)=ut,u和x,t等有关 pd(u+x,x)=1,pd(u,t)=0,u是独立的和x,t无关 |
dtang(f,x) |
边界上f对x的切向微分 在边界上d(u,x)不能定义,但是可以使用dtang(u,x),dtang付出基本的微分法则,如乘积法则和链式法则,但是需要指出的是,dtang(x,x)不一定等于1。 |
test(expr) |
试函数 用于方程弱形式的算符,test(F(u,∇u))等价于: |
var(expr,fieldname1, fieldname2, ...) |
变异算子 用于弱形式,它和test算符功能相同,但是仅用于某些特定的场中; 如var(F(u,∇u, v,∇v),a),变量u是a场的变量,而v不是。 试函数之只作用于变量u。 |
nojac(expr) |
对Jacobian矩阵没有贡献 将表达式排除在Jacobian计算外,这对那些对Jacobian贡献不大,但是计算消耗很大的变量是否有效; k-e 湍流模型就是利用 nojac算符来提高计算性能的例子。 |
up(expr) |
上邻近估算表达式 up,down,mean算符只能用在边界上,对于一个表达式或变量在边界处两边不连续,COMSOL通常显示边界的平均值,使用up,down可计算某个方向上的值。 |
down(expr) |
下邻近估算表达式 |
mean(expr) |
邻近边界上的平均值 |
depends(expr) |
查看某个表达式是否依赖于求解结果 |
isdefined(variable) |
变量是否定义 |
dest(expr) |
在目标端计算积分耦合表达式 dest算符强制将source points上的表达式用在destination points上。 例如:u/((dest(x)-x)^2+(dest(y)-y)^2) |
if(cond,expr1,expr2) |
条件表达式 例如:if(x==0,1,sin(x)/x) |
isinf(expr) |
表达式的值是否是无穷大 |
islinear(expr) |
解是否是线性函数 |
isnan(expr) |
表达式是否是非数 |
with |
调用某个解 例如with(3,u^2)指调用解3的u^2用于本次求解; with只能用于解的后处理,不能用于建模; |
at |
调用解的某个时间 例如:at(12.5,u) |
timeint |
表达式的时间积分 timeint(t1,t2,expr,tol,minlen),t1,t2需要是实数,expr是表达式,tol是容差,默认大小为1e-8,minlen设置积分的最短路径,它需要是正数,默认长度为1e-6。 timeint只能用于解的后处理,不能用于建模; |
timeavg |
表达式的时间积分平均值 timeavg(t1,t2,expr,tol,minlen) |
linpoint |
调用线性化点 |
lindev |
计算在线性化点的表达式 当解存储了一个线性化点,那么表达式在线性化点上先线性化,然后用当前的解来计算; 特别的:当f线性依赖于解,那么lindev(f)=f,如果不依赖则lindev(f)=0; 如果解没有线性化点,那么会报错; |
lintotal |
调用线性化点的和和线性扰动 |
lintotalavg |
在各相中计算平均lintotal |
lintotalrms |
在各相中计算lintotal的RMS lintotalrms(f)=sqrt(lintotalavg(abs(f)^2)) |
lintotalpeak |
在各相中计算lintotal的最大值 |
linsol |
调用标准解,如linpoint或lintotal |
linzero |
计算表达式的根 |
linper |
标记一个荷载项用于线性扰动求解器 |
ppr |
精确的派生修复 用polynomial-preserving recovery计算表达式中所有用lagrange形函数差分的变量,如e=ux+vy ppr(e^2)=(ppr(ux)+ppr(vy))^2 |
pprint |
在各求解域群中精确派生修复 用这些操作符来计算梯度计算中的离散误差 ux-pprint(ux) |
reacf |
反应力和反应流的精确积分 用于表面积分,如在结构力学中,u,v与x,y位移有关,用reacf(u),reaf(v)计算x,y方向上的反应力; reacf在弱贡献中无效; |
adj(expr) |
用伴随灵敏度计算表达式 |
fsens(expr) |
用函数灵敏度计算表达式 |
sens(expr,i) |
用第二个参数向前灵敏度计算表达式 ∂u/∂q=sens(u,q) |
realdot(a,b) |
两个复数的点积 realdot(a,b), real(a*conj(b)) |
shapeorder(variable) |
差分一个变量使用的单元级数 |
prev(expr,i) |
在i步前计算表达式 向后Euler法: (u-prev(u,1))/timestep |
bdf(expr,i) |
应用级数为i的向后差分公式 bdf(u,1) = (u-prev(u,1))/timestep |
subst(expr, expr1_orig, , expr1_subst,...) |
用其他变量或表达式替换一个表达式 subst(hmnf.nutildeinit,p,pin_stat) |
circint(r,expr), circavg(r,expr), diskint(r,expr), diskavg(r,expr), sphint(r,expr), sphavg(r,expr), ballint(r,expr), ballavg(r,expr) |
计算在一个特殊的形状,曲率为r时的表达式积分或平均值 |
scope.ati(coordinate exprs,expr) |
计算表达式在i维下的表达式coordinate exprs值 root.mod1.at1(0,y,dom)在2D的一条边的点(0,y)上计算dom |
|
|
数学函数
abs |
绝对值 |
abs(x) |
acos |
反余弦 |
acos(x) |
acosh |
反双曲余弦 (in radians) |
acosh(x) |
acot |
反余切 (in radians) |
acot(x) |
acoth |
反双曲余切 (in radians) |
acoth(x) |
acsc |
反余割 (in radians) |
acsc(x) |
acsch |
反双曲余割 (in radians) |
acsch(x) |
arg |
相位角(in radians) |
arg(x) |
asec |
反正割 (in radians) |
asec(x) |
asech |
反双曲正割 (in radians) |
asech(x) |
asin |
反正弦 (in radians) |
asin(x) |
asinh |
反双曲正弦(in radians) |
asinh(x) |
atan |
反正切 (in radians) |
atan(x) |
atan2 |
四象限反正切 (in radians) |
atan2(y,x) |
atanh |
反双曲正切 (in radians) |
atanh(x) |
besselj |
一类Bessel函数 |
besselj(a,x) |
bessely |
二类Bessel函数 |
bessely(a,x) |
besseli |
一类改性Bessel函数 |
besseli(a,x) |
besselk |
二类改性Bessel函数 |
besselk(a,x) |
ceil |
上约数 |
ceil(x) |
conj |
复共轭 |
conj(x) |
cot |
余切 |
cot(x) |
coth |
双曲余切 |
coth(x) |
csc |
余割 |
csc(x) |
csch |
双曲余割 |
csch(x) |
eps |
相对精度 |
eps |
erf |
误差函数 |
erf(x) |
exp |
指数函数 |
exp(x) |
floor |
下约数 |
floor(x) |
gamma |
Gamma函数 |
gamma(x) |
i,j |
虚数单位 |
i |
imag |
虚部 |
imag(u) |
inf |
无穷 |
inf |
log |
自然对数 ln |
log(x) |
log10 |
对数,底数为10 |
log10(x) |
log2 |
对数,底数为2 |
log2(x) |
max |
最大值 |
max(a,b) |
min |
最小值 |
min(a,b) |
mod |
取模 |
mod(a,b) |
NaN, |
非数 |
nan |
pi |
Pi |
pi |
psi |
Psi函数和它的衍生物 |
psi(x,k) |
range |
建立一个数列 |
range(a,step,b) |
real |
实部 |
real(u) |
round |
四舍五入 |
round(x) |
sec |
正割 |
sec(x) |
sech |
双曲正割 |
sech(x) |
sign |
符号函数 |
sign(u) |
sin |
正弦 |
sin(x) |
sinh |
双曲正弦 |
sinh(x) |
sqrt |
根号 |
sqrt(x) |
tan |
正切 |
tan(x) |
tanh |
双曲正切 |
tanh(x) |
|
|
|
预置的变量
Time |
t |
Frequency |
freq |
Eigenvalues |
lambda |
Position |
x, y, z, r, X, Y, Z, R |
Edge/surface parameters |
s, s1, s2 |
Edge/surface normals |
n, nx, ny, nz, nr |
Edge tangents |
tx, ty, tz, tr |
Surface tangents |
t1x, t1y, t1z, t2x, t2y, t2z |
Edge/surface upward normals |
un, unx, uny, unz,参考方向的左边 |
Edge/surface downward normals |
dn, dnx, dny, dnz,参考方向的右边 |
Numerical constants |
eps, i, j, pi |
Mesh information |
h, dom, meshtype, meshelement, dvol, qual, reldetjac, reldetjacmin |
range函数的用法
range( a,(b-a)/(n-1),b)
10^range(-3,3) 产生:10-3, 10-2, …, 103
1^range(1,10) 产生 10个1
其他的平滑函数
flsmhs |
y=flsmhs(x,scale) 在阶跃的两端都存在连续过冲的平滑Heaviside函数。 在-scale < x < scale处,flsmhs和flsmsign为7阶多项式,因此它的2阶导数仍然连续;它满足理想Heaviside函数,因此存在一定量的过冲。 |
flsmsign |
y = flsmsign(x,scale) 近似于符号函数y=sign(x)在-scale < x < scale处平滑过渡 |
flc1hs |
不含过冲的一阶连续导数的平滑Heaviside函数,导数fldc1hs |
flc2hs |
不含过冲的二阶连续导数的平滑Heaviside函数,导数fldc2hs |