常用的COMSOL操作符和數學函數

算符

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))等價於:

常用的COMSOL操作符和數學函數

var(expr,fieldname1,

fieldname2, ...)

變異算子

用於弱形式,它和test算符功能相同,但是僅用於某些特定的場中;

如var(F(u,∇u, v,∇v),a),變量u是a場的變量,而v不是。

試函數之只作用於變量u。

常用的COMSOL操作符和數學函數

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)

常用的COMSOL操作符和數學函數

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章