COMSOL中内置数学函数及内置运算符
·
前言
最近想通过COMSOL实现一些比较高级的操作,就对内置数学函数和内置运算符相关章节的帮助文档进行了阅读。在COMSOL中使用各类算子及运算符能够在建模时起到很大的帮助,本文将对帮助文档中的相应章节进行翻译(粗略介绍),对于具体的用法,还需自行查阅相关的章节,特别是各类内置运算符,可以将本文收藏需要的时候再看。
一、内置数学函数
名称 | 描述 | 语法 |
---|---|---|
abs | 绝对值 | abs(x) |
acos | 反余弦(弧度单位) | acos(x) |
acosh | 反双曲余弦 | acosh(x) |
acot | 反余切(弧度单位) | acot(x) |
acoth | 反双曲余切 | acoth(x) |
acsc | 反余割(弧度单位) | acsc(x) |
acsch | 反双曲余割 | acsch(x) |
arg | 相位角(弧度单位) | arg(z) |
asec | 反正切(弧度单位) | asec(x) |
asech | 反双曲正切 | asech(x) |
asin | 反正弦(弧度单位) | asin(x) |
asinh | 反双曲正弦 | asinh(x) |
atan | 反正切(弧度单位) | atan(x) |
atan2 | 四象限反正切(弧度单位) | atan2(y,x) |
atanh | 反双曲正切 | atanh(x) |
besselj | 第一类贝塞尔函数 | besselj (n,z) |
bessely | 第二类贝塞尔函数 | bessely (n,z) |
bessei | 第一类修正贝塞尔函数 | bessei(n,z) |
besselk | 第二类修正贝塞尔函数 | besselk(n,z) |
binomial | 二项式系数 | binomial(n,k) |
ceil | 最接近的整数 | ceil (x) |
conj | 共轭复数 | conj (x) |
cos | 余弦 | cos(z) |
cosh | 双曲余弦 | cosh(x) |
cot | 余切 | cot(x) |
coth | 双曲余切 | coth(x) |
csc | 余割 | csc(z) |
csch | 双曲余割 | csch(x) |
erf | 错误函数 | erf (x) |
erfinv | 逆错误函数 | erfinv(x) |
exp | 指数函数 | exp(x) |
factorial | 非负整数的阶乘 | factorial(n) |
floor | 最近前整数 | floor (x) |
gamma | 伽马函数 | gamma(x) |
gcd | 最大公约数 | gcd(a,b) |
imag | 虚部 | imag(x) |
lcm | 最小公倍数 | lcm(a,b) |
legendre | Legendre多项式 | legendre(l,x) legendre(l,m,x) |
log | 自然对数 | log(x) |
log10 | 以10为底的对数 | log10(x) |
log2 | 以2为底的对数 | log2(x) |
max | 两个参数的最大值 | max(x,y) |
min | 两个参数的最小值 | min(x,y) |
mod | 取模运算符 | min(x,y) |
poweps | 幂函数 | poweps(x,n) |
psi | 函数和它的导数 | psi(k,x) |
random | 随机函数,均匀分布 | random(x,y,…) |
randomnormal | 随机函数,高斯分布 | randomnormal(x,y,…) |
range | 创建一个数字范围 | range(start,step,end) |
real | 实部 | real(x) |
round | 舍入到最接近的整数或指定精度p(十进制位数)的最接近的数字 | round(x) round(x,p) |
sec | 正割 | sec(z) |
sech | 双曲正割 | sech(x) |
sign | 符号函数 | sign(x) |
sin | 正弦 | sin(z) |
sinh | 双曲正弦 | sinh(x) |
sphericaly | 球谐函数 | sphericaly(l,m,theta,phi) |
sphericalyr | 实球谐函数 | sphericalyr(l,m,theta,phi) |
sqrt | 平方根 | sqrt(x) |
sqrteps | 对于需要在零附近求值的表达式的导数使用平方根 | sqrteps(x) |
tan | 正切 | tan(z) |
tanh | 双曲正切 | tanh(x) |
zernike | Zernike多项式函数 | zernike(n,m,r,phi) |
二、内置运算符
有特殊的内置运算符可用于建模和评估结果;这些操作符类似于函数,但行为不同。许多物理接口使用这些运算符来实现方程和特殊功能。
名称 | 描述 |
---|---|
adj(expr) | 使用伴随灵敏度评估表达式 |
at | 随时访问解决方案 |
atlocal | 计算表达式在给定的局部坐标在每个网格元素 |
attimemax attimemin | 在另一个表达式达到最大值或最小值时计算一个表达式 |
atxd atonly noxd | 在额外维度中求值表达式 |
ballint(r,expr) ballavg(r,expr) circint(r,expr) circavg(r,expr) diskin(r,expr) diskavg(r,expr) sphint(r,expr) sphavg(r,expr) | 以半径r计算表达式在指定形状上的积分或平均值 |
bdf(expr,i) | 对表达式应用i阶后向微分公式 |
bndenv(expr) | 求表达式expr在粒子或射线在边界处的坐标。 |
centroid(expr) | 在点所属的网格单元的质心中计算表达式expr |
circumcenter(expr) | 求表达式expr在该点所属的网格单元的圆周上的值 |
d(f,x) | 微分算子,f关于x的微分 |
depends(expr) depends(expr,var) | 如果表达式expr分别依赖于解或var,则为True |
dest(expr) | 在目标端计算集成耦合表达式的部分 |
down(expr) | 对表达式求值,定义在相邻的下端 |
dtang(f,x) | 在边界上定义的表达式f对空间维度x的切向微分 |
elemint(gporder,expr) | 使用指定的高斯点模式在每个网格元素上积分表达式 |
elemavg(gporder,expr) | 使用指定的高斯点模式计算表达式的元素平均值 |
elemgpmin(gporder,expr) | 求表达式的元素最小值高斯点与指定的模式 |
elemgpmax(gporder,expr) | 求表达式的元素最大值高斯点与指定的模式 |
emetric(exprx,expry) emetric(exprx,expry,exprz) | 全局向量长度的平方(exprx, expry, exprz)在网格元素自己的度量中计算 |
env(expr) | 求表达式expr在一个域内粒子或射线的坐标处的值 |
error(‘string’) | 生成带有错误消息字符串的错误 |
frame.dt(expr) | 计算对指定坐标系的时间导数 |
fsens§,fsensimag§ | 相对于控制变量p的功能灵敏度。对控制变量p虚部的函数灵敏度 |
gpeval(gporder,expr) gpeval(gporder,expr,exorder) | 以指定的高斯点模式评估表达式,并将结果外推到输入评估点 |
if(cond,expr1,expr2) | 根据条件的值计算第二个或第三个参数的条件表达式 |
integrate(expr,var,lower,upper) | 求一般表达式对一个积分变量在实数区间内的上下限的积分 |
isdefined(variable) | 在定义变量时返回1,在未定义变量时返回0 |
isinf(expr) | 如果表达式的值为无穷大,则为True |
islinear(expr) | 如果表达式是解的线性函数,则为真 |
isnan(expr) | 如果表达式的计算结果为NaN (not- number),则为True |
jacdepends(expr) jacdepends(expr,var) | 如果表达式expr对解的导数分别依赖于解或var,则为真 |
laginterp(order,expr) | 将表达式映射到指定顺序的拉格朗日字段,然后在每个网格元素中对该字段求值 |
lindev | 计算在线性化点处线性化的表达式(当线性化点存储在解中时) |
linper | 标记要在线性摄动解算器中使用的负荷项 |
linpoint | 访问线性化点(当线性化点存储在溶液中时) |
linsol | 访问标准解决方案(例如在linpoint或lintotal内部) |
lintotal | 获取线性化点和线性摄动的和 |
lintotalavg | 评估所有阶段的总碱(expr)平均值 |
lintotalpeak | 评估所有阶段的最大lintotal(expr) |
lintotalrms | 评估所有阶段的均方根值(expr) |
linzero | 用零解计算表达式 |
mean(expr) | 在相邻边界上计算的表达式的平均值 |
nif(cond1,expr1,…,condn,exprn,exprn+1) | 嵌套if操作符。在第一个cond之后对expr求值以返回true |
noenv(expr) | 求值表达式expr,该表达式仅定义在粒子或射线上,而不是粒子或射线所在的域或边界上nojac(expr) |
pd(f,x) | 微分算子,f关于x的微分,因变量不用链式法则 |
ppr | 保持多项式的导数恢复 |
pprint | 各域群内保持多项式的导数恢复 |
prev(expr,i) | 在前第i个时间步对表达式求值 |
reacf(u) reacf(u,dim) | 准确评估反作用力和通量 |
realdot(a,b) | 把复数a和b当作实数2向量并返回它们的点积 |
residual(expr) | 求上次计算的残差 |
scope.atenti(ent,expr) | 在编号为ent的i维实体上计算网格无关表达式expr |
scope.ati(coordinateexprs,expr) scope.ati(coordinateexprs,expr,‘evaltype’) | 用坐标表达式坐标表达式给出的坐标在点上的i维实体上求值表达式expr。例如,comp1。用于组件中名为comp1的3D实体 |
sens(expr,i) | 使用第二个参数给出的形参的前向灵敏度计算表达式 |
setconst(const,value) | 在withsol和withparam中定义临时常量 |
setind(par,index) setval(par,value) | 在withsol和withparam中指定参数索引或参数值 |
shapeorder(variable) | 用于离散变量的元素顺序 |
side(entity,expr) | 计算相邻实体中定义的表达式 |
stddev(operator,arg1,arg2,…) | 计算积分、投影或求和运算符的标准偏差 |
subst(expr,expr1_orig,expr1_subst,…) | 用其他变量或表达式替换表达式中的变量 |
substval(expr,val1_orig,val1_subst,…) | 用变量的当前值计算表达式 |
sum(expr,index,lower,upper) | 从下到上计算所有指标的和 |
test(expr) | 测试函数运算符 |
timeint timeavg | 积分或计算时间相关表达式在一个时间间隔内的平均值 |
timemax timemin | 随时间计算表达式的最大值或最小值 |
treatasconst(expr) | 将expr视为独立于解 |
try_catch(tryExpr,catchExpr) | 尝试计算tryExpr;但如果这在任何一点上失败,则计算catchExpr |
uflux(u) dflux(u) | 分别在边界的上下两侧的域中计算与因变量u相关的通量 |
up(expr) | 计算表达式在相邻上行中定义的表达式 |
var(expr,fieldname1,fieldname2, …) | 变异算子 |
with | 在结果评估期间访问特定的解决方案 |
withparam(tag,expr) | 访问由solver标记定义的解决方案的解决方案参数 |
withsol(tag,expr) | 访问由求解器标签定义的解决方案 |
总结
对于比较简单的各种运算符及物理常数上面没有介绍,感兴趣可以自行查阅帮助文档,同时翻译和排版存在一定的问题,欢迎留言讨论。
更多推荐
已为社区贡献5条内容
所有评论(0)