اپراتورهای داخلی

اپراتورهای داخلی

اپراتورهای داخلی
اپراتورهای داخلی ویژه ای برای مدل سازی و ارزیابی نتایج در دسترس هستند. این عملگرها شبیه توابع هستند اما رفتار متفاوتی دارند. بسیاری از رابط های فیزیک از این عملگرها برای پیاده سازی معادلات و عملکردهای ویژه استفاده می کنند. جدول 5-8 و توضیحات تفصیلی بعدی را ببینید.
TABLE 5-8: BUILT-IN OPERATORS
OPERATOR
DESCRIPTION
LINK TO MORE INFORMATION
adj(expr)
Evaluate expression using the adjoint sensitivity.
adj
at
Access the solution at any time.
at
atlocal
Evaluate expression at given local coordinates in each mesh element.
atlocal
attimemax
attimemin
Evaluate an expression at the time where another expression achieves its maximum or minimum.
attimemax and attimemin
atxdatonlynoxd
Evaluation of expressions in extra dimensions.
atxd, atonly, and noxd
ballint(r,expr),
ballavg(r,expr),
circint(r,expr),
circavg(r,expr),
diskint(r,expr),
diskavg(r,expr),
sphint(r,expr),
sphavg(r,expr)
Evaluate the integral or average of the expression on the specified shape with radius r.
ball, circle, disk, and sphere
bdf(expr,i)
Apply backward differentiation formula of order i on expression.
bdf
bndenv(expr)
Evaluate the expression expr at the coordinates of a particle or ray at a boundary.
env, bndenv, and noenv
centroid(expr)
Evaluate the expression expr in the centroid of the mesh element to which the point belongs.
centroid
circumcenter(expr)
Evaluate the expression expr in the circumcenter of the mesh element to which the point belongs.
circumcenter
d(f,x)
Differentiation operator. Differentiation of f with respect to x.
Differentiation Operators: d, pd, dtang, and frame.dt
depends(expr)
depends(expr,var)
True if expression expr depends on the solution or var, respectively.
depends
dest(expr)
Evaluate parts of an integration coupling expression on destination side.
dest
down(expr)
Evaluate expression as defined in adjacent downside.
up and down
dtang(f,x)
Tangential differentiation of an expression f defined on a boundary with respect to a spatial dimension x.
Differentiation Operators: d, pd, dtang, and frame.dt
elemint(gporder,expr)
Integrate expression over each mesh element using the specified Gauss point pattern.
elemint
elemavg(gporder,expr)
Evaluate elementwise average of expression using the specified Gauss point pattern.
elemavg
elemgpmin(gporder,
expr)
Evaluate elementwise minimum of expression over Gauss points with the specified pattern.
elemgpmin
elemgpmax(gporder,
expr)
Evaluate elementwise maximum of expression over Gauss points with the specified pattern.
elemgpmax
emetric(exprx,expry)
emetric(exprx,expry,
exprz)
The square of the length of the global vector (exprxexpryexprz) computed in the mesh element’s own metric.
emetric
env(expr)
Evaluate the expression expr at the coordinates of a particle or ray in a domain.
env, bndenv, and noenv
error(‘string’)
Generates an error with error message string.
error
frame.dt(expr)
Compute time derivative with respect to a specified frame
Differentiation Operators: d, pd, dtang, and frame.dt
fsens(p)
fsensimag(p)
Functional sensitivity with respect to control variable p.
Functional sensitivity with respect to imaginary part of control variable p.
fsens and fsensimag
gpeval(gporder,expr)
gpeval(gporder,expr,
exorder)
Evaluate expression in the specified Gauss point pattern and extrapolate the result to the input evaluation points.
gpeval
if(cond,expr1,expr2)
Conditional expression evaluating the second or third argument depending on the value of the condition.
if
integrate(expr,var,
lower,upper)
Evaluate integral of general expression with respect to an integration variable over a real interval specified by lower and upper limits.
integrate
isdefined(variable)
Returns one where the variable is defined and zero where it is not defined.
isinf(expr)
True if expression evaluates to infinity.
isinf and isnan
islinear(expr)
True if expression is a linear function of the solution.
islinear
isnan(expr)
True if expression evaluates to NaN (not-a-number).
isinf and isnan
jacdepends(expr)
jacdepends(expr,var)
True if the derivative of the expression expr with respect to the solution depends on the solution or var, respectively.
jacdepends
laginterp(order,expr)
Map an expression to a Lagrange field of a specified order and then evaluate on that field in each mesh element.
laginterp
lindev
Evaluate an expression linearized at the linearization point (when a linearization point is stored in the solution).
lindev
linper
Mark a load term to be used in a Linear perturbation solver.
linper
linpoint
Access the linearization point (when a linearization point is stored in the solution).
linpoint
linsol
Access the standard solution (for example inside linpoint or lintotal).
linsol
lintotal
Access the sum of the linearization point and linear perturbation.
lintotal
lintotalavg
Evaluate average of lintotal(expr) over all phases.
lintotalavg
lintotalpeak
Evaluate maximum of lintotal(expr) over all phases.
lintotalpeak
lintotalrms
Evaluate RMS of lintotal(expr) over all phases.
lintotalrms
linzero
Evaluate expression with zero solution.
linzero
mean(expr)
Mean value of expression as evaluated on adjacent boundaries.
mean
nif(cond1,expr1,…,
condn,exprn,exprn+1)
Nested if operator. Evaluating the expr after the first cond to return true.
nif
noenv(expr)
Evaluate an expression expr that is defined only on particles or rays, not the domain or boundary where the particles or rays are located.
env, bndenv, and noenv
nojac(expr)
No contribution to the Jacobian.
nojac
pd(f,x)
Differentiation operator. Differentiation of f with respect to x. No chain rule for dependent variables.
Differentiation Operators: d, pd, dtang, and frame.dt
ppr
Polynomial-preserving derivative recovery.
ppr and pprint
pprint
Polynomial-preserving derivative recovery within each domain group.
ppr and pprint
prev(expr,i)
Evaluate expression at the ith previous time step.
prev
reacf(u)
reacf(u,dim)
Accurate evaluation of reaction forces and fluxes.
reacf
realdot(a,b)
Treat complex numbers a and b as real 2-vectors and return their dot product.
realdot
residual(expr)
Evaluate last computed residual.
residual
scope.atenti(ent,
expr)
Evaluate the mesh-independent expression expr at an i-dimensional entity with number ent.
entity at
scope.ati(coordinate exprs,expr)
scope.ati(coordinate exprs,expr,’evaltype’)
Evaluate the expression expr at an i-dimensional entity in the point with coordinates given by the coordinate expressions coordinate exprs. For example, comp1.at3 for a 3D entity in a component with the name comp1.
spatial at
sens(expr,i)
Evaluate expression using the forward sensitivity for the parameter given by the second argument.
sens
setconst(const,value)
Define temporary constant in withsol and withparam.
setconst
setind(par,index)
setval(par,value)
Specify parameter index or parameter value in withsol and withparam.
setind and setval
shapeorder(variable)
The element order used for discretization of a variable.
shapeorder
side(entity,expr)
Evaluate expression as defined in the adjacent entity.
side
stddev(operator,arg1arg2,…)
Evaluate the standard deviation for an integration, projection, or summation operator
stddev
subst(exprexpr1_origexpr1_subst,…)
Substitute variables in an expression with other variables or expressions.
subst and substval
substval(exprval1_origval1_subst,…)
Evaluate an expression with the current values of variables.
subst and substval
sum(expr,index,
 lower,upper)
Evaluate sum of general expression for all indices from lower to upper.
sum
test(expr)
Test function operator.
test
timeinttimeavg
Integrate or compute the average of a time-dependent expression over a time interval.
timeint and timeavg
timemaxtimemin
Evaluate the maximum or minimum of an expression over time.
timemax and timemin
treatasconst(expr)
Treat expr as independent of the solution.
treatasconst
try_catch(tryExpr,
catchExpr)
Attempt to evaluate tryExpr; but if this fails for any point, catchExpr is evaluated instead.
try_catch
uflux(u), dflux(u)
Evaluate the flux associated to a dependent variable u into the domains on the up and down sides of a boundary, respectively.
Boundary Flux Operators: uflux and dflux
up(expr)
Evaluate expression as defined in adjacent upside.
up and down
var(expr,fieldname1, fieldname2, …)
Variation operator.
var
with
Access specific solutions during results evaluation.
with
withparam(tag,expr)
Access the solution parameters for the solution defined by solver tag.
withparam
withsol(tag,expr)
Access solution defined by solver tag.
withsol
تصرف
وقتی عملگر حساسیت الحاقی adj را به یک عبارت اعمال می کنید، COMSOL Multiphysics از راه حل حساسیت الحاقی به جای راه حل اولیه برای ارزیابی استفاده می کند.
راه حل حساسیت الحاقی برای نتایج زمانی در دسترس است که از حل کننده حساسیت با روش حساسیت الحاقی استفاده شده باشد و برای متغیرهای وابسته ای که برای آنها حل شده اند.
در
اپراتور at می تواند در هر زمان به راه حلی برای یک مشکل وابسته به زمان دسترسی داشته باشد. COMSOL Multiphysics راه حل را در آن زمان با استفاده از درون یابی ارائه می دهد. می توانید از عملگر at برای مقایسه دو راه حل در زمان های مختلف در طول ارزیابی نتایج استفاده کنید. برای مثال، at(30,u)-at(20,u) تفاوت بین محلول در 30 ثانیه و محلول در 20 ثانیه است.
اولین آرگومان ورودی زمان است. آرگومان ورودی دوم عبارتی است که می خواهید با استفاده از این راه حل ارزیابی کنید. به عنوان مثال، در (12.5,u) راه حل در 12.5  ثانیه است. زمان باید در بازه زمانی شبیه سازی باشد اما نباید زمان خروجی مشخصی باشد. اگر اینطور نیست، عملگر at از درون یابی برای محاسبه مقادیر داده در آن زمان استفاده می کند.
همچنین می‌توانید از « اول » یا « آخرین » به عنوان اولین آرگومان برای ارزیابی یک عبارت در اولین یا آخرین بار شبیه‌سازی استفاده کنید.
عملگر at فقط در هنگام ارزیابی نتایج قابل استفاده است، بنابراین نباید هنگام تنظیم مدل از آن استفاده کرد.
همچنین برای اپراتور کلی تر به withsol مراجعه کنید.
محلی
عملگر atlocal بسته به بعد موجودیت هندسی که روی آن ارزیابی می شود، 2، 3 یا 4 آرگومان می گیرد.
به عنوان مثال، در یک موجودیت سه بعدی، atlocal(xi1,xi2,xi3,expr) expr را در نقطه با مختصات محلی ( ξ 1 , ξ 2 , ξ 3 ) در هر عنصر مش ارزیابی می کند. در موجودیت دو بعدی، نحو atlocal(xi1,xi2,expr) و در موجودیت تک بعدی atlocal(xi1,expr) است.
ATTIMEMAX و ATTIMEMIN
عملگرهای attimemax و attimemin یک عبارت را در زمانی ارزیابی می کنند که عبارت دیگر به ترتیب به حداکثر یا حداقل خود برسد. attimemax(t1,t2,expr1,expr2) زمان 0 را در بازه 1  ≤  t  ≤  2 می یابد که در آن expr1(t) حداکثر است و expr2(t0) را محاسبه می کند . دو آرگومان اول باید ثابت واقعی باشند.
attimemax(t1,t2,expr1,expr2,’nointerp’) و attimemin (t1,t2,expr1,expr2,’nointerp’) حداکثر یا حداقل را بدون انجام هیچ گونه درون یابی بین مراحل زمانی ذخیره شده ارزیابی می کنند. این نوع ممکن است دقیق تر اما سریع تر و قوی تر باشد.
عملگرهای attimemax و attimemin را فقط می توان در حین ارزیابی نتایج استفاده کرد، بنابراین نمی توانید در هنگام تنظیم مدل از آن استفاده کنید. برای اپراتورهای مشابه به timemax و timemin مراجعه کنید .
ATXD، ATONLY و NOXD
هنگام کار با ابعاد اضافی، ارزیابی را می توان در یک هندسه پایه استاندارد، در یک هندسه بعد اضافی، یا در یک محصول از یک هندسه پایه و یک یا چند هندسه بعد اضافی انجام داد. عملگرهای atxd ، atonly و noxd با افزودن یا حذف هندسه‌ها از محصول فعلی، زمینه ارزیابی را تغییر می‌دهند.
همه این عملگرها دارای محدوده ای هستند که هندسه پایه یا بعد اضافی که به آن تعلق دارند را نشان می دهد. دامنه هندسه های پایه معمولاً comp1 ، comp2 و غیره است، در حالی که محدوده برای ابعاد اضافی معمولاً xdim1 ، xdim2 و غیره است. همچنین عملگرهای atxd دارای پسوند 0، 1، 2 یا 3 هستند که نشان دهنده بعد موجودات هندسی است که در آن آرگومان آنها ارزیابی می شود. بنابراین، نام کامل یک عملگر atxd ، برای مثال، xdim1.atxd2 است، و نام کامل یک عملگر atonly یا noxd ، برای مثال، comp1.atonly یا xdim1.noxd است..
عملگرهای atxd هندسه دیگری را به محصول فعلی اضافه می کنند. به عنوان مثال، فرض کنید که یک هندسه پایه دو بعدی با scope comp1 ، و یک هندسه دو بعدی با ابعاد اضافی با scope xdim1 دارید . با شروع در زمینه ارزیابی در هندسه پایه، xdim1.atxd1 (2،3، expr expr را در حاصلضرب comp1 و xdim1 ، در نقطه ای از مرز در xdim1 با مختصات (2، 3) ارزیابی می کند. با شروع در یک زمینه ارزیابی در بعد اضافی، comp1.atxd2(4,5, expr expr را در محصول comp1 وxdim1 ، در نقطه ای از یک دامنه در comp1 با مختصات (4، 5).
هنگامی که یک محصول از یک هندسه پایه با بیش از یک بعد اضافی وجود دارد، چندین عملگر atxd تودرتو می توانند برای تعیین ارزیابی در محصول استفاده شوند. برای مثال، فرض کنید xdim2 و xdim3 ابعاد اضافی 1 بعدی هستند که به یک کامپ1 هندسه پایه متصل شده اند . با شروع در هندسه پایه، xdim2.atxd1(2,xdim3.atxd0(3، expr )) expr را در حاصل ضرب comp1 با xdim2 و xdim3 ارزیابی می کند. ترتیب اعمال دو عملگر بی اهمیت است.
نکات زیر در مورد عملگرهای atxd قابل ذکر است:
تعداد آرگومان ها همیشه sdim +1 است، که در آن sdim بعد هندسه است که توسط محدوده عملگر نشان داده شده است.
اولین آرگومان های sdim مختصات را در این هندسه مشخص می کنند. آنها باید در زمینه ارزیابی فعلی ثابت باشند.
آخرین آرگومان عبارتی است که در زمینه محصول مشخص شده توسط اپراتور ارزیابی می شود.
پسوند نام اپراتور یک عدد صحیح i در محدوده ≤ ≤ sdim است.
هندسه محصول مشخص شده توسط اپراتور باید با استفاده از ویژگی Attached Dimensions در مدل ایجاد شده باشد.
عملگرهای atonly به جز یک هندسه همه هندسه را از محصول فعلی حذف می کنند. دوباره مثالی را در نظر بگیرید که در آن comp1 یک هندسه پایه و xdim1 یک بعد اضافی است. با شروع از حاصل ضرب comp1 و xdim1 ، comp1.atonly expr expr را در هندسه پایه و xdim1.atonly( expr expr را در بعد اضافی ارزیابی می کند. expr باید در هندسه مربوط به پیشوند atonly در دسترس باشد (به عنوان مثال، در هندسه پایه برای comp1.atonly ).
عملگرهای noxd شبیه عملگرهای atonly هستند، اما در عوض یک هندسه را از محصول فعلی حذف می‌کنند. این بیشتر در محصولاتی با بیش از یک بعد اضافی کاربرد دارد، زیرا در محصولاتی که فقط یک بعد اضافی دارند، می توان به جای آن از اپراتور atonly استفاده کرد. برای مثال، در حاصل ضرب یک هندسه پایه comp1 و ابعاد اضافی xdim2 و xdim3 ، xdim2.noxd expr expr را در حاصل ضرب comp1 و xdim3 ارزیابی می‌کند .
توپ، دایره، دیسک و کره
عملگر ballint ( r , expr  ) انتگرال حجمی عبارت expr را در یک توپ با شعاع r در اطراف نقطه ای که در آن ارزیابی می شود محاسبه می کند. اپراتور ballint را می توان روی همه موجودیت ها به صورت سه بعدی ارزیابی کرد.
عملگر balavg ( r , expr  ) به صورت ballint ( r ,  expr )/ ballint ( r , 1) تعریف می شود.
عملگر circint ( r , expr  ) انتگرال منحنی عبارت expr را روی دایره ای با شعاع r در اطراف نقطه ای که در آن ارزیابی می شود محاسبه می کند. عملگر circint را می توان بر روی همه موجودات به صورت دو بعدی و در لبه ها به صورت سه بعدی ارزیابی کرد، هنگامی که به صورت سه بعدی استفاده می شود، ادغام روی دایره در صفحه عادی به لبه انجام می شود.
عملگر circavg ( r ، expr  ) به عنوان circint ( r ،  expr )/ circint ( r ، 1) تعریف می شود.
دیسکنت ( r ,  expr ) شبیه عملگر circint است اما به جای آن انتگرال سطح روی دیسک را محاسبه می کند.
عملگر diskavg ( r ، expr  ) به صورت diskint ( r ،  expr )/ diskint ( r ، 1) تعریف می شود.
اسفنت ( r ,  expr ) شبیه عملگر ballint است اما به جای آن انتگرال سطح را روی یک کره محاسبه می کند.
عملگر sphavg ( r ، expr  ) به صورت sphint ( r ،  expr )/ sphint ( r ، 1) تعریف می‌شود.
همه عملگرها را می توان با آرگومان سوم N استفاده کرد که تقریباً تعداد نقاط ادغام مورد استفاده را مشخص می کند – برای مثال circint ( r ,  expr ,100).
به همه عملگرها می‌توانید پسوندی (” _frameId”) اضافه کنید که فریمی را که ادغام در آن انجام می‌شود مشخص می‌کند – برای مثال circint_spatial ( r ،  expr ).
عبارت expr ممکن است حاوی عملگر dest باشد. عملگر dest بیان خود را مجبور می کند تا در مرکز کره یا دایره ارزیابی شود. برای مثال می‌توانید از آن با عملگر اسفنت برای نوشتن عباراتی از جمله جهت طبیعی کره استفاده کنید.
بی دی اف
هنگامی که از حل کننده گسسته زمانی استفاده می شود، از عملگر bdf برای تقریب مشتقات زمانی استفاده کنید.
عبارت bdf( expr ,  ) منجر به گسسته سازی مشتق زمانی expr با استفاده از یک فرمول تمایز به عقب می شود.
آرگومان دوم، i ، ترتیب دقت گسسته سازی را تعیین می کند. در حال حاضر، مرتبه اول و مرتبه دوم در دسترس است، بنابراین مقادیر مجاز  = 1 و  = 2 هستند. فرمول مرتبه دوم نیاز به دسترسی به دو مرحله زمانی قبلی دارد. از آنجا که این در مرحله اولیه امکان پذیر نیست، ارزیابی در مرحله اولیه همیشه از فرمول مرتبه اول استفاده می کند.
عملگر bdf را می توان با استفاده از عملگر prev پیاده سازی کرد برای مثال، از طریق bdf(u,1) =
(u-prev(u,1))/timestep
 فرمول تمایز به عقب مرتبه اول را که به عنوان روش اویلر عقب مانده نیز شناخته می شود، بدست آورید .
اپراتورهای شار مرزی: UFLUX و DFLUX
اگر شارهای مرزی محاسباتی را در یک رابط فیزیک انتخاب کرده اید که یک متغیر وابسته u , uflux(u) و dflux(u) را تعریف می کند ، هنگامی که بر روی یک مرز ارزیابی می شود، مقدار دقیق شار مرزی را در دامنه های سمت بالا و پایین ارائه دهید. از مرز، به ترتیب.
اگر شارهای مرزی محاسبه را انتخاب نکرده باشید ، عملگرهای uflux و dflux مقدار دقیق کمتری از شار را در دامنه، بر اساس گرادیان u می‌دهند . اگر اپراتورها در حین حل ارزیابی شوند، همیشه از روش کمتر دقیق استفاده می شود زیرا شارهای مرزی دقیق در آن زمان در دسترس نیستند.
شار برای فریم های مختلف را می توان با افزودن _material ، _spatial ، _mesh یا _geometry به نام اپراتورها به دست آورد. پیش فرض قاب متریال است.
 
عملگرهای uflux و dflux فقط برای متغیرهای وابسته تعریف شده توسط واسط های فیزیک که از شارهای مرزی دقیق پشتیبانی می کنند، قابل استفاده هستند.
 
محاسبه شارهای دقیق
نقطه مرکزی
عملگر centroid ( expr ) عبارت expr را در مرکز عنصر مش که نقطه به آن تعلق دارد ارزیابی می کند.
توجه داشته باشید که اپراتور به زمینه حساس است به این معنا که عنصر مش از همان بعد (نقطه ای اغلب متعلق به چندین عنصر مش مختلف است) را به عنوان زمینه ای که ارزیابی در آن انجام می شود انتخاب می کند.
اطراف مرکز
عملگر circumcenter ( expr ) عبارت expr را در مرکز محیطی عنصر مش که نقطه به آن تعلق دارد ارزیابی می کند. این نکته به طور کلی فقط برای موارد ساده به خوبی تعریف شده است. برای سایر عناصر مش، نقطه ای با فاصله تقریباً یکسان تا تمام رئوس عنصر مش محاسبه می شود.
توجه داشته باشید که اپراتور به زمینه حساس است به این معنا که عنصر مش از همان بعد (نقطه ای اغلب متعلق به چندین عنصر مش مختلف است) را به عنوان زمینه ای که ارزیابی در آن انجام می شود انتخاب می کند.
می‌توانید پسوندی (« frameId ») اضافه کنید که چارچوبی را که ارزیابی در آن انجام می‌شود، مشخص می‌کند – برای مثال circumcenter_spatial ( expr ).
اپراتورهای تمایز: D، PD، DTANG و FRAME.DT
همه عملگرهای تمایز ( d , pd , و dtang و frame .dt ) را می توان هم در تنظیمات مدل و هم در ارزیابی نتایج استفاده کرد.
از عملگر d برای متمایز کردن یک متغیر با متغیر دیگر، با استفاده از قانون زنجیره ای برای وابستگی مکان و زمان متغیرهای وابسته استفاده کنید. برای مثال، d(T,x) به معنای تمایز T نسبت به x است. اگر x یک مختصات قاب در یکی از قاب های فضایی، ماده، هندسه یا مش باشد، همچنین جزء x شیب T در آن قاب است. برخی از مشتقات فضایی نیز با استفاده از متغیرهای از پیش تعریف شده در دسترس هستند. به عنوان مثال، uxx ، d(ux،x) و d(d(u،x)،x) برای یک متغیر وابسته u وقتی در یک دامنه ارزیابی می‌شوند، معادل هستند. اما در یک مرز، d(u,x)تعریف نشده است، در حالی که ux میانگین مقادیر از دامنه های مجاور است.
عملگر pd به روشی مشابه عملگر d کار می کند. تفاوت اصلی این است که pd(u,x) به جای ux 0 است (هیچ قانون زنجیره ای برای متغیرهای وابسته اعمال نمی شود).
از عملگر dtang برای محاسبه مولفه های گرادیان یک عبارت پیش بینی شده بر روی صفحه مماس بر مرزی که ارزیابی انجام می شود، استفاده کنید. عملگر dtang را می توان برای عباراتی اعمال کرد که فقط روی مرز تعریف شده اند و بنابراین نمی توانند توسط عملگر d متمایز شوند. در یک مدل سه بعدی، (dtang(f,x)، dtang(f,y)، dtang(f,z)) بردار در صفحه مماس یک مرز در نقطه ای است که در آن ارزیابی می شود، و به طور مشابه در یک 2 بعدی مدل، (dtang(f,x)، dtang(f,y)) بردار در جهت مماس در نقطه ای از مرز است. وقتی در یک دامنه ارزیابی می‌شود، dtang(f,x) همان d(f,x) است.. آرگومان دوم dtang(f,x) باید مختصات فریمی از یکی از قاب های فضایی، ماده، هندسه یا مش باشد. همه کمیت ها قوانینی برای ارزیابی مشتقات مماسی ندارند. اعمال dtang(f,x) به عبارتی بدون قاعده مشتق مماسی منجر به پیام خطا می شود.
از frame .dt در یک دامنه برای محاسبه مشتق زمانی یک عبارت برای مختصات ثابت در فریم مشخص شده استفاده کنید. به عنوان مثال، spatial.dt(T) مشتق زمانی میدان T است که توسط ناظری که در مختصات ثابت در قاب فضایی ساکن است، دیده می شود. به طور مشابه، material.dt(T) مشتق زمانی است که توسط ذرات ماده، که در مختصات ثابتی در قاب ماده قرار دارند، تجربه می‌شود. در حضور ALE، هنگامی که مش در حال حرکت است، این مشتقات با هندسه و مشتقات زمان مش geometry.dt(T) و mesh.dt(T) با یک اصطلاح همرفتی افزایشی که فقط در حوزه ها به خوبی تعریف شده است (و نه) تفاوت دارند. در مرزها، لبه ها و نقاط).
نمونه هایی از استفاده از عملگرهای تمایز
عبارات d(u^2,u) و pd(u^2,u) هر دو برابر 2*u هستند. d همچنین متغیرهای مکانی و زمانی را در نظر می گیرد و مشتقات آنها را بر اساس آن رفتار می کند. به عبارت دیگر، اگر u متغیر وابسته و x یک مختصات فضایی باشد، d(u+x,x) برابر است با ux+1 ( ux مشتق مکانی u نسبت به x است)، در حالی که pd(u+x ,x) برابر با 1 است زیرا u در مورد pd مستقل از هر چیزی غیر از خودش در نظر گرفته می شود .
اگر یک مدل وابسته به زمان در دو بعدی شامل دو متغیر وابسته u و v باشد، از mesh.dt(u*v) برای محاسبه مشتق محصول uv برای گره های ثابت در مش استفاده کنید. این معادل تمایز صریح با توجه به نماد زمان مش TIME است که d(u*v،TIME) نوشته شده است، که به نوبه خود از قانون زنجیره ای معادل u*vTIME+uTIME*v استفاده می کند (با استفاده از متغیر مشتق زمانی داخلی نام ها). به روشی مشابه، مشتق زمانی مکانی متناظر spatial.dt(u*v) که برای مختصات مکانی ثابت محاسبه می‌شود، با استفاده از قانون زنجیره به u*vTIME+uTIME*v-mesh.dt(x)*d(u* گسترش می‌یابد. v,x)-mesh.dt(y)*d(u*v,y). توجه داشته باشید که اگر مختصات فضایی گره‌های مش ثابت باشد، سرعت‌های مش mesh.dt(x) و mesh.dt(y) ناپدید می‌شوند و عبارت باقی‌مانده مانند mesh.dt(u*v) است.
اگر u یک متغیر وابسته باشد که فقط روی یک مرز تعریف شده است، d(u,x) تعریف نمی شود، اما مشتق مماسی dtang(u,x) را می توان روی مرز ارزیابی کرد. مشتق مماسی از اکثر قوانین تمایز متداول مانند قانون محصول و قانون زنجیره پیروی می کند. با این حال، dtang(x,x) همیشه برابر با 1 نیست. مقدار آن به جهت گیری مرز نسبت به محورهای مختصات بستگی دارد.
بستگی دارد
اگر عبارت expr که روی آن عمل می‌کند به راه‌حل بستگی داشته باشد، عملگر بستگی ( expr ) 1 را برمی‌گرداند . در غیر این صورت، 0 را برمی گرداند.
بستگی دارد ( expr , var ) اگر expr به var وابستهباشد 1 را برمی گرداند. در غیر این صورت، 0 را برمی گرداند.
از این عملگر برای بررسی عبارات تعریف شده توسط کاربر برای وابستگی به راه حل استفاده کنید.
مقصد
اپراتور مقصد (مقصد) برای اپراتورهای زیر در دسترس است:
اپراتورهای جفت: یکپارچه سازی، حداکثر، حداقل، طرح کلی، طرح ریزی خطی، و یکپارچه سازی بیش از ابعاد اضافی.
اپراتورهای داخلی: ballint ، ballavag ، circint ، circavg ، diskint ، diskavg ، sphint و sphavg .
عملگر dest عبارتی را که روی آن کار می کند مجبور می کند به جای نقاط مبدا در نقاط مقصد ارزیابی شود. این بدان معنی است که عملگر مقصد می تواند برای ایجاد انتگرال های کانولوشن و سایر تبدیل های انتگرال استفاده شود. برای مثال، ادغام عبارت u/((dest(x)-x)^2+(dest(y)-y)^2) تابع زیر x و y را به دست می‌دهد :
عملگر dest همچنین می تواند در عملگر فهرست شده در بخش توپ، دایره، دیسک و کره استفاده شود. در این زمینه، نقطه ارزیابی اجباری مرکز کره یا دایره است. برای مثال می‌توانید از آن با عملگر اسفنت برای نوشتن عباراتی از جمله جهت طبیعی کره استفاده کنید.
عنصر
عملگر elemint gporder expr ) عبارت expr را با استفاده از مرتبه نقطه گاوس gporder ادغام می کند (ترتیب ادغام – به ترتیب ادغام در واژه نامه مراجعه کنید). مقدار gporder که باید یک عدد صحیح غیرمنفی باشد، نقاطی را که expr ارزیابی می‌شود تعیین می‌کند.
ELEMAVG
عملگر elemavg gporder expr ) میانگین عبارت expr را بر روی هر عنصر مش با استفاده از مرتبه نقطه گاوس gporder ارزیابی می کند (ترتیب ادغام – ترتیب ادغام را در واژه نامه ببینید). مقدار gporder که باید یک عدد صحیح غیرمنفی باشد، نقاطی را که expr ارزیابی می‌شود تعیین می‌کند.
ELEMGPMIN
عملگر elemgpmin gporder expr ) حداقل عبارت expr را روی نقاط گاوس هر عنصر مش ارزیابی می کند. الگوی نقطه گاوس با استفاده از مرتبه نقطه گاوس gporder مشخص می شود (ترتیب ادغام – به ترتیب ادغام در واژه نامه مراجعه کنید). مقدار gporder که باید یک عدد صحیح غیرمنفی باشد، نقاطی را که expr ارزیابی می‌شود تعیین می‌کند.
ELEMGPMAX
عملگر elemgpmax gporder expr ) حداکثر عبارت expr را بر روی نقاط گاوس هر عنصر مش ارزیابی می کند. الگوی نقطه گاوس با استفاده از مرتبه نقطه گاوس gporder مشخص می شود (ترتیب ادغام – به ترتیب ادغام در واژه نامه مراجعه کنید). مقدار gporder که باید یک عدد صحیح غیرمنفی باشد، نقاطی را که expr ارزیابی می‌شود تعیین می‌کند.
اندازه گیری
عملگر emetric بردار ) مجذور طول یک 2 بردار محاسبه شده در متریک کوواریانت خود عنصر مش را برمی گرداند. در این متریک، لبه‌های عنصر مش معمولاً دارای طول 1 و بردارهای متعامد با عنصر دارای طول 0 هستند. تعداد آرگومان‌های ورودی که بردار را تعریف می‌کنند باید برابر با بعد فضا باشد. می‌توانید یک پسوند فریم اضافه کنید تا از فریم متریال پیش‌فرض به فریمی که می‌خواهید تغییر دهید. به عنوان مثال، می توانید emetric_spatial ( بردار ) را برای استفاده از قاب فضایی بنویسید.
اگر بیشتر به متریک عنصر متضاد علاقه دارید، اجزای آن توسط متغیرهای emetricinvxx ، emetricinvxy ، emetricinvXX و غیره قابل دسترسی هستند. همچنین ورودی های emetric2 و tremetric را در جدول 5-9 برای متغیرهای مرتبط ببینید.
موجودیت در
عملگر scope .atent ent expr ) یک عبارت مستقل از مش expr را در هندسه با محدوده داده شده (معمولاً comp1 برای مولفه 1 یا یک محدوده مشابه برای شاخه دیگر جزء) در موجودیت i -dimensional با عدد ent ارزیابی می کند. نیازی نیست که موجودیت مشبک باشد و حتی در داخل هندسه نباشد. دامنه های خارج از هندسه دارای مقادیر dom غیر مثبت هستند.
 
ارزیابی بدون مش انجام می شود و بنابراین این عبارت نمی تواند به موقعیت درون موجودیت بستگی داشته باشد. برای یک عملگر مشابه، از scope .at3 استفاده کنید ( مختصات exprs ,  expr , ‘mi’ ); فضایی را در .
ENV، BNDENV و NOENV
 
این عملگرها را فقط می توان بر روی ذرات یا پرتوها در شبیه سازی ردیابی ذرات یا ردیابی پرتو ارزیابی کرد. بنابراین، ماژول ردیابی ذرات، ماژول اپتیک پرتو یا ماژول آکوستیک مورد نیاز است.
ارزیابی env ( expr ) روی یک ذره یا پرتو ، expr را در نقطه‌ای از حوزه‌ای که ذره یا پرتو قرار دارد، ارزیابی می‌کند. هنگام ارزیابی متغیر var بر روی یک ذره یا پرتو، اگر متغیر بر روی ذره یا پرتو تعریف نشده باشد، به طور خودکار با env ( var ) جایگزین می شود . بنابراین، عملگر env اغلب می تواند حذف شود.
با ارزیابی bndenv ( expr ) روی یک ذره یا پرتو، expr را در نقطه ای از مرزی که ذره یا پرتو قرار دارد ارزیابی می کند. اگر ذره یا پرتو در یک مرز نباشد، ارزیابی با شکست مواجه می شود. هنگام ارزیابی عباراتی که فقط بر روی مرزها تعریف شده اند، از این عملگر به جای env استفاده کنید.
عملگر noenv (expr) فقط می تواند به عنوان بخشی از یک عبارت در عملگر env(expr) یا bndenv(expr) استفاده شود. عملگر noenv (expr) برای ارزیابی عبارت expr استفاده می‌شود که برای ذرات یا پرتوها تعریف شده است اما در مکان‌های آن‌ها در یک دامنه یا در یک مرز تعریف نشده است. به عنوان مثال، اگر env(expr1*noenv(expr2)) را بنویسید ، expr1 باید در دامنه ای که ذره یا پرتو در آن قرار دارد تعریف شود، و expr2 باید کمیتی باشد که برای ذرات یا پرتوهای جداگانه تعریف شده است، مانند سرعت ذرات
خطا
عملگر خطا ( رشته ) خطایی با رشته پیام خطا ایجاد می کند .
به عنوان مثال می توانید از این عملگر برای اظهار نظر در مورد نحوه رفتار راه حل خود استفاده کنید. اگر بنویسید if( cond expr error(‘cond is false’) expr زمانی محاسبه می شود که cond true باشد و یک پیام خطایی شامل متن cond false و زمانی که cond false باشد تولید می شود.
FSENS و FSENSIMAG
عملگر حساسیت تابعی fsens حساسیت تابع هدف فعلی را با توجه به متغیر کنترلی که به عنوان آرگومان واحد داده شده است، ارزیابی می کند. توجه داشته باشید که آرگومان باید یک نام متغیر کنترلی باشد. سایر متغیرهای وابسته یا عبارت کلی مجاز نیستند.
عملگر حساسیت عملکردی fsensimag حساسیت تابع هدف فعلی را با توجه به بخش خیالی متغیر کنترلی که به عنوان آرگومان واحد داده شده است، ارزیابی می کند.
حساسیت عملکردی برای تجزیه و تحلیل زمانی در دسترس است که حل کننده حساسیت با روش حساسیت الحاقی یا حساسیت رو به جلو و برای متغیرهای کنترلی که برای آنها حل شده اند استفاده شده باشد.
برای یک متغیر کنترلی با ارزش مختلط iy ، تابع حساسیت f را به صورت
وقتی از تقسیم پیچیده استفاده می کنید، می توانید حساسیت را به عنوان ماتریسی از مشتقات در نظر بگیرید
در این حالت، fsens ردیف اول را برمی‌گرداند و fsensimag ردیف دوم را به صورت − iu y برمی‌گرداند .
 
توجه داشته باشید که حل کننده های بهینه سازی IPOPT و SNOPT اهداف حداقل مربعات را به گونه ای پیاده سازی می کنند که می تواند باعث شود fsens و fsensimag مقادیر غیر صفر را برای راه حل های متفاوت از راه حل آخر برگردانند.
GPEVAL
عملگر gpeval عبارت را در الگوی نقطه گاوس مشخص شده ارزیابی می کند و نتیجه را با استفاده از ترتیب برون یابی مشخص شده به نقاط ارزیابی ورودی برون یابی می کند.
gpeval( gporder expr ) عبارت expr را در الگوی نقطه گاوس ارائه شده توسط مرتبه نقطه گاوس gporder ارزیابی می کند (ترتیب ادغام – ترتیب ادغام را در واژه نامه ببینید). مقدار gporder که باید یک عدد صحیح غیرمنفی باشد، نقاطی را که expr ارزیابی می‌شود تعیین می‌کند. برون یابی (به زیر مراجعه کنید) در این مورد با استفاده از یک exorder تنظیم شده به 1 انجام می شود.
gpeval ( gporder ، expr ، exorder ) از یک دستور برون یابی اختیاری استفاده می کند . ترتیب برون یابی یک عدد صحیح بزرگتر یا مساوی با  1 است ترتیب استفاده شده توسط تعداد نقاط گاوس استفاده شده محدود می شود. برون یابی سعی می کند یک تقریب چند جمله ای از عبارات ایجاد کند که بر اساس موقعیت ها و مقادیر ارزیابی شده در نقاط گاوس است. ترتیب چنین چندجمله ای ها ( exorder ) نمی تواند به طور دلخواه زیاد باشد – تعداد امتیازات ارزیابی ترتیب چند جمله ای ها را محدود می کند.
برای محصولات در اجزای بعد اضافی، از عملگر gpeval با دامنه ابعاد اضافی مانند xdim1.gpeval استفاده کنید. اگر یک عبارت را در یک محصول بعد اضافی ارزیابی کنید، gpeval با یک دامنه بعد اضافی، نقاط گاوس را در هندسه بعد اضافی مشخص شده با دامنه (مانند xdim1 ) تغییر می‌دهد. استفاده از gpeval بدون اسکوپ باعث تغییر نقاط گاوس در هندسه پایه می شود.
اگر
عملگر if( cond expr1 expr2 یک عبارت شرطی را پیاده سازی می کند.
اولین استدلال شرطی است که COMSOL Multiphysics به عنوان یک عبارت بولی در نظر می گیرد. اگر – در یک نقطه ارزیابی خاص – cond درست باشد، آرگومان دوم ارزیابی می شود. در غیر این صورت، آرگومان سوم ارزیابی می شود. یعنی در هر نقطه ارزیابی فقط یک شعبه ارزیابی می شود.
برای جلوگیری از عملیات غیرقانونی از اپراتور if استفاده کنید . به عنوان مثال، if(x==0,1,sin(x)/x) یک عبارت معتبر و پیوسته برای تمام مقادیر x از جمله x =  0 است.
همچنین برای یک عبارت شرطی تو در تو به nif مراجعه کنید.
ادغام کردن
integrate( expr ، var ، پایین تر ، بالا ) انتگرال expr را برای متغیر ادغام var در بازه زمانی مشخص شده توسط عبارات پایین تر برای حد پایین و بالا برای حد بالا محاسبه می کند. عبارات حدهای پایین و بالایی لازم نیست ثابت باشند، بلکه باید به مقادیر واقعی ارزیابی شوند.
integrate ( expr var low upper tol ) تحمل نسبی را در ادغام عددی روی tol تنظیم می کند. مقدار پیش‌فرض تلورانس نسبی (که وقتی آرگومان پنجم حذف می‌شود) 1e- 3 است. تلورانس باید یک ثابت واقعی بین 0 و 1 باشد.
عبارت expr ممکن است هر تابع 1 بعدی باشد، مانند sin( x ). همچنین می توان متغیرهای اضافی مانند sin( xy ) را نیز در نظر گرفت. آرگومان دوم مشخص می کند که انتگرال بر روی کدام متغیر محاسبه می شود. به عنوان مثال، integrate(sin(x*y),y,0,1) تابعی از x را به دست می دهد ، زیرا ادغام فقط متغیر انتگرال گیری y را حذف می کند . توجه داشته باشید که اپراتور همچنین می‌تواند توابع تحلیلی را که در قسمت تعاریف در مؤلفه فعلی تعریف می‌کنید، مدیریت کند.
امکان استفاده از نام مختصات به عنوان متغیر ادغام در عملگر ادغام وجود دارد. با این حال، توجه داشته باشید که این نقطه ارزیابی را که در آن آرگومان اول ارزیابی می شود، تغییر نمی دهد. برای مثال، اگر u یک متغیر وابسته باشد، integrate(u,x,a,b) معادل u*integrate(1,x,a,b) است.
برای ارزیابی یک انتگرال بر روی یک منحنی هندسی، عملگر انتگرال را می توان با یکی از عملگرهای فضایی در ترکیب کرد (به فضایی در نگاه کنید ). به عنوان مثال، در یک مدل دو بعدی، integrate(comp1.at2(x,y,u),x,a,b) u را در امتداد پاره خط با نقاط انتهایی ( a ,  y ) و ( b ,  y ) ادغام می کند.
ISINF و ISNAN
عملگر isinf اگر عبارتی که روی آن کار می‌کند به بی‌نهایت (یا منهای بی‌نهایت) ارزیابی شود، 1 را برمی‌گرداند در غیر این صورت، 0 را برمی گرداند.
عملگر isnan 1 را برمی گرداند اگر عبارتی که روی آن عمل می کند به NaN (عدد نیست) ارزیابی شود. در غیر این صورت، 0 را برمی گرداند.
خطی
عملگر islinear اگر عبارتی که روی آن عمل می کند تابع خطی راه حل باشد، 1 را برمی گرداند. در غیر این صورت، 0 را برمی گرداند.
از این عملگر برای بررسی خطی بودن عبارات تعریف شده توسط کاربر با توجه به راه حل استفاده کنید. حلگر ثابت این کار را به طور خودکار انجام می دهد تا بین حل کننده خطی یا غیرخطی یکی را انتخاب کند.
JAC بستگی دارد
عملگر jacdepends ( expr ) 1 را برمی گرداند اگر مشتق عبارت expr ، با توجه به هر بخشی از راه حل، به جواب بستگی داشته باشد. در غیر این صورت، 0 را برمی گرداند.
jacdepends ( expr ، var ) اگر مشتق عبارت expr ، با توجه به هر بخشی از راه حل، به var وابسته باشد، 1 را برمی گرداند . در غیر این صورت، 0 را برمی گرداند.
LAGINTERP
عملگر laginterp یک عملگر درون یابی لاگرانژ است که یک عبارت را به یک فیلد لاگرانژ با مرتبه مشخص نگاشت می کند و سپس در آن فیلد در هر عنصر مش ارزیابی می کند. عملگر laginterp همچنین مشتقات فضایی و یک Jacobian کامل را ارائه می دهد. برای مثال، ارزیابی مشتقات فضایی برای فیلدهایی که با استفاده از عناصر برداری تعریف شده‌اند، که مشتقات فضایی را پشتیبانی نمی‌کنند یا برای نگاشت هماهنگ بین فیلدها با ترتیب ناسازگار، می‌تواند مفید باشد.
از laginterp ( order , expr ) برای نگاشت عبارت expr به یک فیلد لاگرانژ به ترتیب مشخص شده به عنوان اولین آرگومان استفاده کنید.
لیندف
عملگر lindev آرگومان خود را به روش زیر ارزیابی می کند زمانی که راه حل دارای یک نقطه خطی سازی ذخیره شده باشد: عبارت ابتدا در نقطه خطی سازی خطی شده و سپس در راه حل فعلی ارزیابی می شود. به طور خاص، اگر f به صورت خطی به جواب وابسته باشد، lindev(f) همان f است. اگر f به جواب بستگی نداشته باشد، lindev(f) 0 است. اگر محلول نقطه خطی سازی ذخیره شده نداشته باشد، lindev حول صفر خطی می شود.
لنگی
عملگر Linper یک کاربرد دارد: برای نشان دادن عبارات باری که باید توسط حل‌کننده‌های ثابت استفاده شود، خطی بودن را روی اختلال خطی در پنجره تنظیمات برای حل‌کننده ثابت تنظیم کنید . عباراتی که توسط linper احاطه نشده اند توسط چنین حل کننده هایی نادیده گرفته می شوند. با این حال، اصطلاحات داخل linper توسط همه حل‌کننده‌های دیگر نادیده گرفته می‌شوند.
لینک
عملگر linpoint می تواند به نقطه خطی شدن در یک راه حل با یک نقطه خطی سازی ذخیره شده دسترسی پیدا کند. اگر راه حل یک نقطه خطی سازی ذخیره شده نداشته باشد، استفاده از linpoint باعث ایجاد یک پیام خطا می شود.
لینسول
عملگر linsol یک عبارت را با استفاده از محلول استاندارد ارزیابی می کند. این حالت پیش‌فرض است، بنابراین در بیشتر زمینه‌ها عملگر چندان مفید نیست. با این حال، به عنوان مثال، می تواند در داخل آرگومان linpoint برای ارزیابی بخشی از عبارت با راه حل استاندارد به جای نقطه خطی سازی استفاده شود.
لینتتال
عملگر لینتوتال می تواند به مجموع نقطه خطی شدن و اغتشاش خطی در محلولی با نقطه خطی سازی ذخیره شده دسترسی پیدا کند. اگر راه حل یک نقطه خطی سازی ذخیره شده نداشته باشد، استفاده از lintotal باعث ایجاد یک پیام خطا می شود.
LINTOTALAVG
عملگر lintotalavg میانگین یک عبارت را در تمام مراحل ارزیابی می کند. lintotalavg(f) با در نظر گرفتن میانگین lintotal(f) با حل (اما نه نقطه خطی شدن) ضرب در تعدادی از فازها ارزیابی می شود. تعداد فازها به طور خودکار برای دستیابی به مقدار دقیق انتخاب می شود. lintotalavg(f,n) از n فاز با فاصله مساوی استفاده می کند.
LINTOTALPEAK
عملگر lintotalpeak حداکثر یک عبارت را در تمام مراحل ارزیابی می کند. lintotalpeak(f) با گرفتن ماکزیمم real(lintotal(f)) با حل (اما نه نقطه خطی شدن) در تعدادی فاز ضرب می شود . تعداد فازها به طور خودکار برای دستیابی به مقدار دقیق انتخاب می شود. lintotalpeak(f,n) از n فاز با فاصله مساوی استفاده می کند.
LINTOTALRMS
عملگر lintotalrms RMS یک عبارت را در تمام مراحل ارزیابی می کند. lintotalrms(f) همان sqrt(lintotalavg(abs(f)^2)) است.
LINZERO
عملگر linzero یک عبارت را با استفاده از یک راه حل صفر ارزیابی می کند. این بیشتر به صورت داخلی در تعاریف برخی از اپراتورهای دیگر استفاده می شود.
منظور داشتن
عملگر میانگین مقدار میانگین یک عبارت را به عنوان مثال در مرزهای مجاور محاسبه می کند.
نرم افزار COMSOL Multiphysics می تواند عبارات موجود در ابعاد مختلف را ارزیابی کند و این ممکن است بر نتیجه تأثیر بگذارد. به عنوان مثال، یک نقطه می تواند روی یک لبه قرار گیرد، که می تواند لبه یک مربع باشد، که می تواند بخشی از مرز یک مکعب باشد. اگر می خواهید به شماره گذاری موجودیت دسترسی داشته باشید، بدیهی است که نتایج متفاوتی برای نقطه، لبه، مربع و مکعب دریافت می کنید. اگر می‌خواهید مقدار متغیر وابسته را بدانید، اگر نقطه را بخشی از یک نقطه، یال، مربع یا مکعب می‌دانید، رفتار باید یکسان باشد.
عملگر میانگین را می توان روی هر موجودی که ابعاد کمتری نسبت به مدل دارد فراخوانی کرد. بعد نهادی که تماس از آنجا برقرار می شود n نامیده می شود .
عملگر میانگین کوچکترین عدد صحیح m>n را که موجودیتهای مجاور بعد m برای آن وجود دارد را تعیین می کند. سپس عبارت را در نقطه یک زمان برای هر موجودیت مجاور m بعدی، با در نظر گرفتن نقطه به عنوان یک نقطه در موجودیت، ارزیابی می کند و میانگین مقادیر محاسبه شده را می گیرد.
همچنین برای اپراتورهای مشابه بالا و پایین و کنار را ببینید.
NIF
عملگر nif cond1 expr1 ,…, condn exprn exprn+1 ) یک عبارت شرطی تو در تو را پیاده سازی می کند. می‌توان آن را به صورت «اگر cond1 ، سپس expr1 ، در غیر این صورت اگر …، در غیر این صورت اگر condn ، سپس exprn ، دیگری exprn+1 » رونویسی کرد.
عملگر nif می تواند هر تعداد فرد آرگومان بزرگتر یا مساوی 3 داشته باشد.
 اگر غیر صفر باشد cond درست در نظر گرفته می شود.
nif( cond1 expr1 expr2 )=if( cond1 expr1 expr2 )
همچنین ببینید اگر .
شترمرغ
عملگر nojac مطمئن می شود که هر عبارتی که روی آن عمل می کند از محاسبات ژاکوبین حذف می شود (از همه تمایزات نمادین جلوگیری می کند) این در صورتی مفید است که مشارکت ژاکوبین کاملاً ضروری نباشد و الزامات محاسباتی برای آن زیاد باشد، مانند هنگام استفاده از یک جفت غیر محلی. استفاده از عملگر nojac می‌تواند با اجتناب از پر کردن ماتریس ژاکوبین به میزان قابل توجهی نیاز به حافظه را کاهش دهد، اما استفاده از آن ممکن است همگرایی راه‌حل را کاهش دهد.
مدل آشفتگی k – ε مثالی است که در آن استفاده داخلی از عملگر nojac عملکرد را بهبود می بخشد.
PPR و PPRINT
هنگامی که عملگر ppr روی یک عبارت اعمال می‌شود، نرم‌افزار COMSOL Multiphysics از بازیابی چندجمله‌ای برای ارزیابی همه متغیرهای عبارتی که با استفاده از توابع شکل لاگرانژ گسسته شده‌اند، استفاده می‌کند. به عنوان مثال، اگر e = ux + vy ، آنگاه ppr(e^2)=(ppr(ux)+ppr(vy))^2 . برای سایر انواع تابع شکل، عملگر هیچ تاثیری ندارد.
 
بازیابی مشتق با حفظ چند جمله ای
عملگر pprint به طور مشابه بازیابی حفظ چند جمله ای را در هر گروه از دامنه ها با تنظیمات برابر اعمال می کند. از این عملگرها برای به دست آوردن تخمینی از خطای گسسته سازی در گرادیان استفاده کنید. به عنوان مثال، ux-pprint(ux) در یک مدل 1 بعدی.
 
اگر این عملگرها روی عباراتی که هنگام حل مدل استفاده می شوند اعمال شوند، COMSOL Multiphysics تقریباً با نادیده گرفتن عملگر ژاکوبین را محاسبه می کند. به عنوان مثال، ژاکوبین ux-pprint(ux) 0 است.
قبلی
هنگامی که از حل کننده گسسته زمانی استفاده می شود، راه حل را در تعدادی از مراحل زمانی قبلی ذخیره می کند.
عبارت prev( expr ,  expr را با استفاده از راه حل به دست آمده i گام های زمانی قبل از مرحله زمانی فعلی ارزیابی می کند.
عملگر را می توان در معادلات و همچنین برای ارزیابی نتایج استفاده کرد.
هنگامی که در معادلات استفاده می شود، عملگر prev امکان گسسته سازی مشتقات زمانی را فراهم می کند. به عنوان مثال، برای گسسته کردن ut (مشتق زمانی u ) با فرمول معروف به روش اویلر عقب مانده ، از عبارت (u-prev(u,1))/ timestep استفاده کنید. در اینجا، timestep اندازه گام زمانی است که برای رسیدن به راه حل فعلی u استفاده می شود. عملگر prev برای مرحله زمانی نیز قابل استفاده است . به عنوان مثال، prev( timestep ,1) اندازه مرحله زمانی است که برای رسیدن به راه حل در مرحله زمانی قبلی استفاده می شود.
هنگام استفاده از عملگر قبلی ، باید به اندازه کافی مراحل زمانی قبلی ذخیره شود. تعداد مراحل زمانی قبلی را برای ذخیره در حل کننده گسسته زمانی (سطوح گسسته زمانی) در قسمت تعداد سطوح گسسته زمانی در بخش عمومی پنجره تنظیمات برای حل کننده گسسته زمان مشخص کنید. ارزیابی یک عبارت در مرحله زمانی قبلی که ذخیره نشده است منجر به خطا می شود.
واکنش نشان دادن
عملگر نیروی واکنش ( reacf ) نیروی واکنش را در هر نقطه گره که در آن محدودیت اعمال می شود، ارزیابی می کند. نیروی واکنش در یک گره برابر با مولفه متناظر بردار باقیمانده معکوس – L است که هنگام حل مدل محاسبه می شود. نیروهای واکنش همراه با بردار محلول توسط حل کننده ها ذخیره می شوند.
 
شما فقط می توانید از عملگر reacf در حین پس پردازش استفاده کنید. برای متغیرهای حل شده در طول فرآیند حل پشتیبانی نمی شود. همچنین، برای عناصر curl پشتیبانی نمی شود.
عملگر نیروی واکنش ( reacf ) هنگام محاسبه انتگرال نیروهای واکنش یا شار مفید است.
هنگام انجام ادغام سطحی، عملگر reacf را ​​روی نام متغیرهای وابسته اعمال کنید . به عنوان مثال، در مکانیک سازه، با متغیرهای وابسته u و v متناظر با جابجایی‌های x و y ، از reacf(u) و reacf(v) برای دسترسی به انتگرال‌های نیروهای واکنش در  جهت‌های x  و y استفاده کنید. ادغام برای نیروی واکنش یک جمع بر روی گره ها است، بنابراین روش ادغام باید به جای ادغام، جمع باشد. روش یکپارچه سازی خودکار در ادغام های موجود در زیر Results>Derved Values ​​استفاده از reacf را ​​تشخیص می دهد.عملیات و سپس از روش جمع بندی استفاده می کند.
اگر نیروی واکنش را به طور جداگانه روی دو مرز محدود مجاور ادغام کنید، مجموع دو نتیجه به طور کلی با چیزی که اگر ادغام را روی هر دو مرز در یک عملیات انجام دهید، برابر نیست. گره هایی که بین دو مرز مشترک هستند در هر دو ادغام گنجانده شده اند. راه دیگری برای بیان این موضوع این است که نیروی واکنش در یک گره از تمام عناصر متصل به گره کمک می کند، بنابراین از نزدیک ترین عناصر نیز بر مرز همسایه تأثیر می گذارد. اگر مش را اصلاح کنید، این اختلاف کاهش می یابد زیرا نیروی واکنش روی یک گره با اندازه عنصر متناسب است. همچنین به محاسبه شارهای دقیق مراجعه کنید .
ذخیره نیروهای واکنش را می توان با پاک کردن کادر بررسی نیروهای واکنش در بخش خروجی در پنجره تنظیمات حل کننده غیرفعال کرد. این باعث صرفه جویی در زمان و حافظه محاسباتی می شود. در این صورت استفاده از عملگر نیروی واکنش ممکن نیست.
می توانید reacf را ​​با آرگومان دوم اختیاری فراخوانی کنید. آرگومان دوم بعد نهادی است که در آن نیروی واکنش باید ارزیابی شود. فرض می شود که ابعاد حداقل برابر با بعد جایی است که از آن فراخوانی reacf گرفته می شود. این با r eacf(u) تنها در موردی متفاوت است که u در موجودیتی که اپراتور در آن ارزیابی می‌شود تعریف نشده باشد، بلکه فقط در موجودیت‌های مجاور با ابعاد بالاتر تعریف شده باشد.
همچنین امکان فراخوانی reacf با آرگومان سوم اختیاری وجود دارد. این عاملی است که نرم افزار COMSOL Multiphysics reacf(u,dim) را در آن ضرب می کند. آرگومان سوم بر روی هر موجود مجاور با ابعاد کم رنگ ارزیابی می شود و در نیروهای واکنش روی آن موجودیت ضرب می شود.
هنگام استفاده از قیود ضعیف، بردار باقیمانده همیشه 0 است، بنابراین نیروهای واکنش در دسترس نیستند.
REALDOT
عبارت realdot(a,b) با اعداد مختلط a و b طوری رفتار می کند که انگار بردارهایی با ارزش واقعی به طول 2 هستند و حاصل ضرب نقطه ای آنها را برمی گرداند. همچنین در نظر بگیرید که فراخوانی اپراتور یک شکل کوتاه از real(a*conj(b)) است. با این حال، این عبارت تابعی تحلیلی از آرگومان های پیچیده آن نیست و بنابراین مشتقات جزئی منحصر به فردی با توجه به a و b ندارد.
تفاوت بین realdot(a,b) و real(a*conj(b)) در این است که مشتقات جزئی اولی با توجه به a و b به ترتیب به صورت conj ) و conj ) تعریف می شوند، در حالی که برای عبارت اخیر، مشتقات جزئی واقعی ) و واقعی ) هستند.
 
تفاوت بین تعاریف مشتق جزئی در تحلیل حساسیت مسائل پاسخ فرکانسی (معادلات هلمهولتز اسکالر یا برداری) مهم است.
کمیت های تابع هدف مشترک مانند توان و انرژی باید بر حسب نقطه واقعی (a,b) به جای واقعی (a*conj(b)) بازتعریف شوند تا حلگر حساسیت بتواند مشتقات صحیح را محاسبه کند. این همچنین برای قدر مطلق abs(a) از طریق تعریف | صدق می کند یک  =  نقطه واقعی a, a ) .
تابع realdot غیر تحلیلی است و بنابراین نمی توان ژاکوبین آن تابع را به درستی بیان کرد و ارزیابی کرد وقتی که بردار حل با مقدار مختلط بر حسب درجه آزادی با مقدار مختلط منفرد نمایش داده شود. به همین دلیل، عملگر realdot ، به‌طور پیش‌فرض، تنها زمانی که متغیرهای مختلط Split در تنظیمات قطعات واقعی و خیالی در گره Compile Equations برای مطالعه فعال باشد ، به مشارکت‌های Jacobian در طول مونتاژ منجر می‌شود. رفتار پیش‌فرض مشارکت‌های ژاکوبین را می‌توان با ارائه آرگومان سوم اختیاری به realdot نادیده گرفت:
realdot (a,b,jaclevel)
آرگومان jaclevel مشارکت های Jacobian عملگر realdot(a,b) را کنترل می کند و می تواند مقادیر زیر را داشته باشد:
 1: (پیش‌فرض) مشارکت ژاکوبین در مونتاژ تنها در صورتی که تقسیم متغیرهای مختلط در بخش واقعی و خیالی برای مطالعه فعال باشد.
0: بدون مشارکت ژاکوبین
1: مشارکت های همیشه ژاکوبین
باقی مانده
برای دسترسی به آخرین باقیمانده مونتاژ شده، از اپراتور باقیمانده استفاده کنید. برای مثال، می‌توانید residual(spf.U) را رسم کنید تا نمودار آخرین باقیمانده سرعت U را در شبیه‌سازی جریان سیال به دست آورید. باقیمانده می‌تواند با نشان دادن مکان‌هایی که باقیمانده جبری بزرگ است، بینشی در مورد مسائل همگرایی ارائه دهد.
محاسبه باقیمانده از یک طرح به روز رسانی استفاده می کند که در آن، در هر تکرار، حل کننده باقیمانده را محاسبه می کند، بردار باقیمانده ذخیره شده را به روز می کند و سپس ژاکوبین ها را محاسبه می کند.
برای در دسترس قرار دادن باقیمانده در خروجی شبیه‌سازی (مثلاً برای ترسیم نمودار)، مشخص کنید که حل‌کننده آن را هم در حین حل و هم در خروجی با انتخاب در حالی که حل می‌کند و در خروجی از فهرست ذخیره آخرین باقیمانده در پنجره تنظیمات گره حل پیشرفته ، آن را ذخیره می‌کند. .
برای خروجی درون یابی ( لیست Times to store روی مقادیر مشخص شده تنظیم شده است)، هیچ داده ای برای باقیمانده (NaN) ذخیره نمی شود.
 
داده‌های باقی‌مانده جبری فقط برای گام‌های زمانی واقعی که توسط حل‌کننده برداشته می‌شود، منطقی است. برای خروجی درون یابی، که پیش فرض است، نرم افزار COMSOL Multiphysics هیچ مقداری را برای باقیمانده ذخیره نمی کند. بنابراین شما یک نمودار خالی برای زمان های درون یابی دریافت می کنید. دو روش وجود دارد که از طریق آنها می توانید باقیمانده را برای مسئله وابسته به زمان مطالعه کنید (با فرض اینکه گزینه Store last residual را در هنگام حل و در خروجی تنظیم کرده باشید ):
به روز رسانی در تنظیم نمودار در حین حل را به گام های بارگذاری شده توسط حل کننده تغییر دهید و نموداری را انتخاب کنید که از عملگر باقی مانده استفاده می کند.
تنظیم Times to store را برای گره Time-Dependent Solver ، در بخش Output ، به Steps Taken by Solver تغییر دهید . این رویکرد همچنین باقیمانده را برای پس پردازش در دسترس قرار می دهد.
حس
هنگامی که عملگر حساسیت رو به جلو (عملگر sens ) به یک عبارت اعمال می شود، COMSOL Multiphysics از راه حل حساسیت رو به جلو با توجه به متغیر کنترل نشان داده شده به جای راه حل اولیه برای ارزیابی استفاده می کند. این در عمل به این معنی است که وقتی آرگومان اول یک عبارت خطی در متغیرهای وابسته است، عملگر مشتق خود را با توجه به متغیر کنترلی که به عنوان آرگومان دوم داده شده است، برمی گرداند. نتیجه یک عبارت غیرخطی معمولاً فاقد معنی است.
راه حل حساسیت رو به جلو برای تجزیه و تحلیل زمانی در دسترس است که از حل کننده حساسیت با روش حساسیت رو به جلو استفاده شده باشد، و برای متغیرهای وابسته و متغیرهای کنترلی که حل شده اند.
برای متغیرهای کنترل اسکالر، با دادن نام متغیر کنترلی به عنوان آرگومان دوم به این عملگر، به راه حل حساسیت رو به جلو مربوطه دسترسی پیدا کنید. به عنوان مثال، با متغیر وابسته u و پارامتر کنترل اسکالر q ، به راه حل حساسیت رو به جلو ∂ /∂ q به عنوان sens(u,q) دسترسی پیدا کنید.
برای یک فیلد متغیر کنترلی، که اسکالر نیست، باید از یک نحو پیچیده‌تر استفاده شود که درجه آزادی منحصر به فردی را مشخص می‌کند. این کار با دادن یک عدد صحیح به عنوان آرگومان دوم، مربوط به عدد درجه آزادی جهانی برای متغیر کنترل درخواستی درجه آزادی انجام می شود. شاخص درجه آزادی برای پارامتر حساسیت باید عددی بزرگتر یا مساوی 1 باشد.
SETCONST
setconst فقط در withsol یا withparam قابل استفاده است. متن زیر نحوی را با استفاده از withsol توضیح می‌دهد ، اما برای withparam یکسان است.
از عملگر setconst برای تعریف ثابت های موقت استفاده کنید در حالی که آرگومان دوم عملگر withsol (به withsol مراجعه کنید ) ارزیابی می شود. به عنوان مثال، withsol(‘sol1’,expr,setconst(a,3)) متغیر a را برای داشتن مقدار 3 تعریف می کند در حالی که expr ارزیابی می شود. عملگر setconst را می توان با setind یا setval ترکیب کرد (به زیر مراجعه کنید) و بر راه حلی که برای ارزیابی انتخاب شده است تأثیری نمی گذارد.
می توانید از setconst با بیش از دو آرگومان برای فشرده تر کردن نحو استفاده کنید. به عنوان مثال، withsol(‘sol1’,expr,setconst(a,3,b,4)) معادل withsol(‘sol1’,expr,setconst(a,3),setconst(b,4)) است.
ستیند و ستوال
setind و setval را فقط می توان در withsol یا withparam استفاده کرد . متن زیر نحوی را با استفاده از withsol توضیح می‌دهد ، اما برای withparam یکسان است.
از setind برای تعیین شاخص پارامتر و از setval برای تعیین مقدار پارامتر در ارتباط با عملگر withsol استفاده کنید (به withsol مراجعه کنید ). برای جابجایی های پارامتریک بر روی چندین پارامتر، مثلاً p و q ، setval و setind را می توان در هر ترکیبی برای این دو پارامتر استفاده کرد – به عنوان مثال، withsol(‘sol1’,expr,setind(p,2,q,3)) یا withsol (‘sol1’,expr,setind(p,2,setval(q,5)) .
شاخص های منفی در ستیند از انتها شمارش می شوند. به عنوان مثال، در یک حلگر وابسته به زمان، withsol(‘sol1’,expr,setind(t,-2)) expr را در آخرین مرحله زمانی ارزیابی می کند. نماد جایگزین برای اولین و آخرین شاخص ها setind(p,’first’) و setind (p,’last’) است.
می توانید از setind و setval با بیش از دو آرگومان برای فشرده تر کردن نحو استفاده کنید. برای مثال، withsol(‘sol1’,expr,setval(p,1,q,2)) معادل withsol(‘sol1’,expr,setval(p,1),setval(q,2)) است.
شکل دهنده
عبارت shapeorder( u ) ترتیب عنصر مورد استفاده برای گسسته سازی متغیر u را می دهد.
آرگومان u باید یک متغیر وابسته یا مشتق جزئی یک متغیر وابسته باشد. در حالت دوم، ترتیب برگشتی ترتیب خود متغیر وابسته است و نه ترتیب مشتق آن.
اعمال عملگر shapeorder به عنوان مثال برای یک عبارت، یک ثابت یا یک مختصات فضایی یک خطا است.
سمت
عملگر جانبی یک عبارت را همانطور که در موجودیت مجاور تعریف شده است ارزیابی می کند.
نرم افزار COMSOL Multiphysics می تواند عبارات موجود در ابعاد مختلف را ارزیابی کند و این ممکن است بر نتیجه تأثیری نداشته باشد. به عنوان مثال، یک نقطه می تواند روی یک لبه قرار گیرد، که می تواند لبه یک مربع باشد، که می تواند بخشی از مرز یک مکعب باشد. اگر اکنون می خواهید به شماره گذاری موجودیت دسترسی داشته باشید، واضح است که باید نتایج متفاوتی برای نقطه، لبه، مربع و مکعب بدست آورید. اگر می خواهید مقدار متغیر وابسته را بدانید، اگر نقطه را بخشی از یک نقطه، لبه، مربع یا مکعب در نظر می گیرید، این رفتار باید یکسان باشد.
عملگر جانبی را می توان روی موجودی فراخوانی کرد که ابعاد کمتری نسبت به مدل دارد. بعد نهادی که تماس از آنجا برقرار می شود n نامیده می شود .
عملگر جانبی عملگری است که یک عبارت را نه در موجودیتی که در آن فراخوانی شده است بلکه در یکی از موجودیت های مجاور بعد n+1 ارزیابی می کند. شما انتخاب می کنید کدام موجودیت را با دادن شماره آن (این عددی است که به عنوان مثال در فیلدهای انتخاب نمایش داده می شود) به عنوان اولین آرگومان به اپراتور انتخاب می کنید.
ممکن است نهادی که انتخاب می‌کنید بیش از یک بار در مجاورت نقطه ارزیابی باشد. به عنوان مثال، یک مرز می تواند دامنه یکسانی در هر دو طرف داشته باشد. در چنین مواردی اپراتور جانبی میانگین مقادیر مختلف را می گیرد.
همچنین بالا و پایین و میانگین را برای عملگرهای مشابه ببینید.
فضایی در
عملگر یک عبارت expr را در یک نقطه خاص از فضا ارزیابی می کند. معمولاً هنگام ارزیابی درون مش از i بدون آرگومان اضافی استفاده کنید و هنگام ارزیابی خارج از مش یا حتی خارج از هندسه آرگومان های اضافی اضافه کنید .
عملگر scope .at i ( <coordinate expresss> , expr  ) عبارت expr را در هندسه با محدوده داده شده (معمولاً comp1 برای جزء 1 یا یک محدوده مشابه برای شاخه کامپوننت دیگر) بر روی یک موجود i -dimensional در نقطه داده شده ارزیابی می کند. توسط عبارات مختصات ( at0 برای یک موجود 0 بعدی، at1 برای یک موجود 1 بعدی، at2 برای یک موجودیت 2 بعدی، و at3 برای یک موجودیت 3 بعدی). برای مثال، comp1.at1(0,y,dom) dom را ارزیابی می کند در هندسه دو بعدی روی لبه در نقطه 0 , ) . برای استفاده از یک نوع عملگر مشخص در i ، باید یک نهاد هندسی مشبک با ابعاد مناسب در مختصاتی که در آن ارزیابی می‌شود وجود داشته باشد. برای مثال، at0 فقط زمانی کار می‌کند که هندسه منبع در نقطه‌ای که می‌خواهید عبارت را ارزیابی کنید، راس داشته باشد. تعداد آرگومان‌ها برای عملگر scope .at i برابر است با بعد فضا در مؤلفه منبع (عبارات مختصات) به اضافه یک (عبارتی که باید ارزیابی شود).
برای مدل‌های دو و سه بعدی، ارزیابی در سطح دامنه (یعنی at2 برای مدل‌های دو بعدی و at3 برای مدل‌های سه‌بعدی) می‌تواند یک آرگومان اضافی ‘evaltype’ داشته باشد. مقادیر «evaltype» پشتیبانی شده «mi» و «minc» هستند. بر خلاف ارزیابی‌های معمولی ati ، این انواع ارزیابی نیازی به شبکه‌های دامنه ندارند و در هر نقطه قابل ارزیابی هستند. با این حال، اگر دو حوزه مجاور وجود داشته باشد که چیزی برای آنها متفاوت تعریف شده است، اپراتور می خواهد که مرز بین دامنه ها مشبک باشد. ” می”ارزش (ارزیابی مستقل از مش) بررسی می کند که شما تمام این مرزهای مورد نیاز را مشبک کرده اید (حتی برای متغیرهایی که هیچ ارتباطی با آرگومان واقعی اپراتور ندارند)، در حالی که مقدار «minc» (ارزیابی بدون چک مستقل از مش) این کار را انجام می دهد. نه، و بنابراین اگر به درستی استفاده نشود ممکن است نتایج نادرستی بدهد.
به همه عملگرها می‌توانید پسوندی (“_frameId”) اضافه کنید که چارچوبی را که عبارات مختصات در آن استفاده می‌شود، مشخص می‌کند – برای مثال، at1_spatial ( x ، y ،  expr ). بدون پسوند، ارزیابی در قاب متریال انجام می شود.
STDDEV
عملگر stddev عملگر دیگری را به عنوان اولین آرگومان خود (به عنوان یک رشته) و به دنبال آن آرگومان های عملگر برای محاسبه انحراف استاندارد (جمعیت) می گیرد. به عنوان مثال، برای یک عملگر یکپارچه سازی intop1 که در کامپوننت comp1 تعریف شده است ، عملگر stddev موارد زیر را محاسبه می کند:
stddev(‘comp1.intop1’, X ) = sqrt(comp1.intop1(( X -comp1.intop1( X ))/comp1.intop1(1))^2)/comp1.intop1(1))
علاوه بر فراخوانی به عملگرهای یکپارچه سازی و جمع بندی تعریف شده توسط کاربر، می توانید از عملگرهای داخلی زیر به عنوان اولین آرگومان (رشته) برای stddev استفاده کنید : integrate ، circint ، diskint ، sphint ، ballint و timeint . مثال زیر یک تماس با stddev را با استفاده از عملگر integrate نشان می دهد :
stddev(‘ادغام’,x*sin(x),x,-1,1)
SUBST و SUBSTVAL
عملگر subst یک متغیر یا عبارت را به عنوان اولین آرگومان خود می گیرد و به دنبال آن یک یا چند جفت آرگومان که هر کدام از یک نام متغیر و یک عبارت تشکیل شده است، می گیرد. عملگر substval از همان نحو اما با مقادیر متغیرها به عنوان جفت آرگومان استفاده می کند. آرگومان اول در هر جفت یک متغیر اصلی است که در متغیر یا عبارتی که به عنوان آرگومان اول تعیین کرده اید ظاهر می شود و آرگومان دوم در هر جفت متغیر یا عبارتی است که می خواهید متغیر اصلی را جایگزین کنید. این می تواند مفید باشد، برای مثال، برای جایگزینی متغیر دما در یک عبارت وابسته به دما برای مقداری با یک دمای اولیه ثابت برای استفاده به عنوان شرایط اولیه.
به عنوان مثال، عبارت subst(hmnf.nutildeinit,p,pin_stat) (برگرفته از مدل Sajben Diffuser در کتابخانه کاربردی ماژول CFD) متغیر وابسته p را با یک متغیر تعریف شده توسط کاربر pin_stat برای استاتیک ورودی جایگزین می‌کند. فشار. ارزیابی متغیر hmnf.nutildeinit (برای ویسکوزیته سینماتیکی آشفته نشده میرا نشده) سپس به جای p مقدار pin_stat را می گیرد .
واحد خروجی از عملگرهای subst و substval همان واحد آرگومان ورودی اول آن است.
مجموع
عملگر sum ، هنگامی که به عنوان sum ( expr ، index ، low ، upper ) استفاده می شود، یک عملگر جمع است که مجموع عبارت expr را برای همه مقادیر شاخص از پایین به بالا محاسبه می کند . عبارات حد پایین و بالایی برای ارزیابی به مقادیر واقعی و مستقل از نقطه ارزیابی لازم است. برای مثال، sum(i^2,i,1,4) = 1 2 +2 2 +3 2 +4 2 = 30.
تست
عملگر تست برای مدل سازی با استفاده از فرمول ضعیف معادلات در دسترس است. این عملگر تابع تست را برای متغیری که روی آن کار می کند ایجاد می کند. برای مثال، ux*test(u) را بنویسید تا x برابر تابع آزمایشی u را نشان دهد.
ساعت و ساعت
عملگرهای timeint و timeavg به ترتیب میانگین یک عبارت وابسته به زمان را در یک بازه زمانی یکپارچه و محاسبه می کنند. timeint(t1,t2, expr ) و timeavg (t1,t2, expr ) انتگرال و میانگین expr را به ترتیب در بازه t=t1 تا t=t2 محاسبه می کنند. دو آرگومان اول باید اسکالر واقعی باشند. انتگرال با یکپارچه سازی عددی محاسبه می شود و فاصله را تا رسیدن به دقت مورد نیاز تقسیم می کند. عملگر timeavg به صورت عددی عبارت را به روش timeint یکپارچه می کند و سپس نتیجه را بر t2-t1 تقسیم می کند..
timeint(t1,t2, expr tol ) و timeavg(t1,t2, expr tol ) تلورانس نسبی را در روش ادغام عددی روی tol تنظیم می کنند. تحمل باید یک ثابت واقعی مثبت باشد. تلورانس پیش فرض (در صورت حذف آرگومان چهارم استفاده می شود) 1e-8 است.
timeint(t1,t2, expr tol minlen ) و timeavg(t1,t2, expr tol minlen ) کوچکترین طول زیر بازه های مورد استفاده در انتگرال گیری عددی را به عنوان کسری از طول کل بازه انتگرال گیری تنظیم می کنند. بازه های فرعی کوچکتر از این طول، حتی اگر به این معنی باشد که دقت لازم به دست نیامده است، بیشتر تقسیم نمی شوند. مینلن باید یک ثابت واقعی مثبت باشد. مقدار پیش فرض minlen (در صورت حذف آخرین آرگومان استفاده می شود) 1e-4 است.
timeint(t1,t2, expr ,’nointerp’) و timeavg(t1,t2, expr ,’nointerp’) انتگرال زمان را بدون انجام هیچ گونه درون یابی بین مراحل زمانی ذخیره شده ارزیابی می کنند. این نوع ممکن است دقیق تر اما سریع تر و قوی تر باشد.
عملگرهای timeint و timeavg فقط در حین ارزیابی نتایج قابل استفاده هستند، بنابراین نمی توانید هنگام تنظیم مدل از آنها استفاده کنید.
حداکثر زمان و زمان حداقل
عملگرهای timemax و timemin به ترتیب حداکثر و حداقل یک عبارت را در طول زمان ارزیابی می‌کنند. timemax(t1,t2,expr) حداکثر expr را در بازه 1  ≤  t  ≤  2 می یابد. دو آرگومان اول باید ثابت واقعی باشند.
timemax(t1,t2,expr,’nointerp’) و timemin (t1,t2,expr,’nointerp’) حداکثر یا حداقل را بدون انجام هیچ گونه درون یابی بین مراحل زمانی ذخیره شده ارزیابی می کنند. این نوع ممکن است دقیق تر اما سریع تر و قوی تر باشد.
عملگرهای timemax و timemin فقط در حین ارزیابی نتایج قابل استفاده هستند، بنابراین نمی‌توانید در هنگام تنظیم مدل از آن استفاده کنید. برای اپراتورهای مشابه attimemax و attimemin را ببینید .
TREATASCONST
هنگام تصمیم گیری در مورد اینکه آیا می توان از حل کننده خطی استفاده کرد، عملگر treatasconst( expr expr را مستقل از راه حل تلقی می کند (حتی اگر واقعاً اینطور نباشد).
TRY_CATCH
عملگر try_catch tryExpr catchExpr ) تلاش می‌کند تا عبارت tryExpr را ارزیابی کند ، اما اگر برای هر نقطه‌ای موفق نشد، عملگر catchExpr را ارزیابی می‌کند .
توجه داشته باشید که نتیجه ممکن است به نحوه تقسیم بندی عناصر مش به بلوک ها در طول ارزیابی بستگی داشته باشد که می تواند نسبتاً دلخواه باشد. به محض اینکه ارزیابی آرگومان اول در بخشی از بلوک با شکست مواجه شود، آرگومان دوم در کل بلوک ارزیابی می شود. همچنین، در طول پس پردازش، رفتار ممکن است تغییر کند، زیرا مقادیر NaN (عدد نیست) در زیرمجموعه‌ای از نقاط ارزیابی پذیرفته می‌شوند، بنابراین ممکن است بیان آرگومان دوم حتی در نقاطی که آرگومان اول شکست می‌خورد، ارزیابی نشود.
اگر عملگر if قابل اجرا است ، به جای عملگر try_catch از عملگر if (see if ) با یک شرط مناسب به عنوان آرگومان اول استفاده کنید.
بالا و پایین
نرم افزار COMSOL Multiphysics می تواند عبارات را در هر دو طرف یک مرز ارزیابی کند. یکی از راه های انجام این کار استفاده از عملگرهای بالا و پایین است. این عملگرها فقط بر روی مرزها (یعنی موجودات هندسی با ابعاد یک کمتر از بعد مدل) در دسترس هستند.
برای عبارت یا متغیری که در سراسر یک مرز ناپیوسته است، مقدار در هر دو طرف متفاوت است و COMSOL Multiphysics معمولاً مقادیر میانگین را روی مرز نشان می‌دهد.
از عملگرهای بالا و پایین برای ارزیابی یک عبارت در سمت بالا یا پایین مرز استفاده کنید. اگر رو به بالا یا پایین خارج از هندسه باشد، یا اگر متغیرهای عبارت در آن سمت فعال نباشند، عملگر بالا یا پایین 0 را برمی گرداند.
برای اطلاعات بیشتر در مورد بالا و پایین بودن یک مرز، به متغیرهای مماس و عادی مراجعه کنید . برای عملگرهای مشابه، سمت و میانگین را نیز ببینید .
بود
عملگر var ( عملگر تغییر) برای مدل سازی با استفاده از فرمول ضعیف معادلات موجود است.
عملگر var همان عملکرد عملگر تست را دارد اما محدود به مجموعه فیلدهای مشخص شده است.
این عملگر تابع تست را برای متغیری که روی آن کار می کند ایجاد می کند. برای عبارتی مانند var u ،  ∇ u، v ،  ∇ )، ) ، که متغیر وابسته u در فیلد با نام a است و متغیر وابسته v نیست، عملگر var معادل است:
برای همه متغیرهای وابسته i .
با
اپراتور with می تواند در طول ارزیابی نتایج به راه حل های خاص دسترسی پیدا کند.
برای مسائل وابسته به زمان، مسائل پارامتری و مسائل ارزش ویژه، این امکان استفاده از راه‌حل را در هر یک از مراحل زمانی، هر مقدار پارامتر یا هر حل ویژه در عبارتی که برای ترسیم یا ارزیابی داده‌ها استفاده می‌شود، می‌سازد. برای ارزیابی مجموع (متوسط) جابجایی برای شش حالت ویژه اول بالای حالت‌های جسم صلب در یک مدل مکانیک جامدات سه بعدی، به عنوان مثال، از sum (با(m,(1/(m+1))*solid.disp استفاده کنید. )،m،7،12) ، که m شاخص جمع است، جابجایی ها را جمع می کند، تقسیم بر m+1 برای تشکیل میانگین، از حالت ویژه 7 تا حالت ویژه 12.
از عدد حل به عنوان اولین آرگومان ورودی استفاده کنید. آرگومان ورودی دوم عبارتی است که می خواهید با استفاده از این راه حل ارزیابی کنید. به عنوان مثال، with(3,u^2) مربع سومین حل ویژه را برای مسئله مقدار ویژه ارائه می دهد.
همچنین می‌توانید از « اول » یا « آخرین » به عنوان اولین آرگومان برای ارزیابی یک عبارت در اولین یا آخرین بار شبیه‌سازی استفاده کنید.
برای مثال، می‌توانید از عملگر with برای تأیید متعامد بودن دو محلول ویژه یا مقایسه دو راه‌حل در مراحل زمانی مختلف یا مقادیر پارامتر استفاده کنید.
اگر می خواهید از عملگر with برای یک مسئله پارامتری استفاده کنید، باید به جای Sweep پارامتریک از حل کننده پارامتری استفاده کنید.
عملگر with فقط در حین ارزیابی نتایج قابل استفاده است، بنابراین نمی توانید هنگام تنظیم مدل از آن استفاده کنید.
برای دو عملگر عمومی دیگر به withsol و withparam مراجعه کنید .
با پارام
عملگر withparam می تواند به پارامترهای حل مربوط به راه حل از هر دنباله حل کننده در مدل فعلی بدون تغییر واقعی راه حل فعلی دسترسی داشته باشد. می توان آن را به عنوان یک نسخه سریع از withsol در نظر گرفت که تنها مجموعه کوچکی از پارامترها معنی را تغییر می دهد. در واقع، تنها چیزهایی که قرار است در داخل باپارام تغییر کنند، پارامترهای حل و متغیرها و ثابت های مشخص شده توسط عملگرهای setind ، setval و setconst هستند. نمونه هایی از پارامترهایی که معنی را تغییر می دهند عبارتند از t ، freq و lambda. نمونه‌هایی از چیزهایی که معنا را تغییر نمی‌دهند عبارتند از راه‌حل‌ها، پارامترهای تعریف‌شده تحت تعاریف جهانی، متغیرها، تعداد دفعات و istimestepping .
با سل
عملگر withsol می تواند از هر دنباله حل کننده در مدل فعلی به راه حل دسترسی داشته باشد. به محض محاسبه راه حل می توان از آن استفاده کرد. آرگومان اول تگ دنباله حل کننده است و آرگومان دوم عبارتی برای ارزیابی با استفاده از آن راه حل. برای تعیین گام زمانی، مقدار ویژه یا مقدار پارامتر می توان آرگومان های اضافی اضافه کرد. همچنین به setind و setval مراجعه کنید .
عملگر withsol شبیه به اپراتورهای with و at است اما عمومی تر است زیرا می تواند به هر راه حلی در مدل فعلی دسترسی داشته باشد.
اگر نمی‌خواهید از دنباله حل‌کننده فعلی تغییر کنید، می‌توانید از «جریان» به عنوان تگ دنباله حل‌کننده استفاده کنید. هنگام تغییر راه حل ها در جاروهای بیرونی ، گزینه تگ “جریان” پشتیبانی نمی شود. بنابراین توصیه می شود در صورت امکان از تگ دنباله حل کننده صحیح استفاده کنید.
 
عملگر withsol به یک مجموعه داده با یک راه حل نیاز دارد. بنابراین مجموعه داده مش با عملگر withsol سازگار نیست .
مثال ها:
withsol(‘sol1’,expr) expr را بااستفاده از محلول از دنباله حل کننده با برچسب sol1 ارزیابی می کند.
برای حلگر وابسته به زمان، withsol(‘sol1’,expr) در آخرین مرحله زمانی ذخیره شده در محلول ارزیابی می‌شود. سایر مراحل زمانی را می توان با استفاده از عملگرهای setin یا setval به عنوان آرگومان های اضافی مشخص کرد. به عنوان مثال، withsol(‘sol1’,expr,setval(t,0.5)) در مرحله زمانی  =  0.5 (با استفاده از درون یابی بین مراحل زمانی ذخیره شده در صورت لزوم) و withsol(‘sol1’,expr,setind(t, 3)) در سومین مرحله زمانی ذخیره شده ارزیابی می کند.
برای حل کننده مقدار ویژه، withsol(‘sol1’,expr) در اولین مقدار ویژه ارزیابی می شود. سایر مقادیر ویژه را می توان با استفاده از عملگر setind به عنوان یک آرگومان اضافی مشخص کرد. برای مثال، withsol(‘sol1’,expr,setind(lambda,2)) در دومین مقدار ویژه ارزیابی می شود. ( عملگر setval را می توان با مقادیر ویژه نیز استفاده کرد، اما این خیلی مفید نیست زیرا مقادیر ویژه دقیق باید شناخته شوند.) استفاده از این نحو می تواند مفید باشد، به عنوان مثال، برای تعریف نیرویی با توزیع شتاب گرفته شده از یک حالت ویژه. تجزیه و تحلیل ارزش ویژه
برای جابجایی پارامتریک روی پارامتر p ، withsol(‘sol1’, expr) در آخرین مقدار پارامتر ارزیابی می‌شود. شما می توانید مقادیر پارامترهای دیگر را با استفاده از عملگرهای setin یا setval به عنوان آرگومان های اضافی مشخص کنید. به عنوان مثال، withsol(‘sol1’,expr,setval(p,4)) با مقدار پارامتر p  = 4. withsol(‘sol1’,expr,setind(p,2)) برای مقدار دوم پارامتر p ارزیابی می‌کند. .
برای دسترسی به محفظه بار، از setval استفاده کنید . به عنوان مثال: withsol(‘sol2’,truss.Sn,setval(loadcase,1)) .