概述
算符
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 |
最后
以上就是健忘向日葵为你收集整理的常用的COMSOL操作符和数学函数的全部内容,希望文章能够帮你解决常用的COMSOL操作符和数学函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复