عملگرهای تانسور و سایر اپراتورها

عملگرهای تانسور و سایر اپراتورها

عملگرهای تانسور و سایر اپراتورها
همه فیلدهای Expression از متغیرهای تانسور و عملگرهای تانسور پشتیبانی می کنند. برای مثال، اگر می‌خواهید حاصل ضرب بین دو بردار باشد، به سادگی تایپ کنید
مستقیماً در قسمت Expression . نماد محصول متقاطع از جمله نمادهای ریاضی استاندارد تعریف شده توسط استاندارد یونیکد است. سایر نمادهای خاص مورد استفاده توسط عبارات عبارتند از حاصل ضرب نقطه (داخلی)، A · B ، و عملگر nabla، ∇ A. فونت سیستم باید از نمادهای خاص پشتیبانی کند تا آنها را به درستی نمایش دهد. در غیر این صورت، ممکن است این عبارت درست به نظر نرسد. همیشه می توان آنها را از ویرایشگری که از ورودی یونیکد پشتیبانی می کند یا مستقیماً از نقشه کاراکتر یونیکد کپی-پیست کرد.
برخی از توابع نیز وجود دارد که می توانید از آنها برای انجام عملیات تانسور استفاده کنید – به عنوان مثال، جابجایی یک ماتریس یا معکوس یک ماتریس.
 
از این بخش در ترکیب با ویژگی های توضیح داده شده در فصل ابزارهای سازنده فیزیک استفاده کنید .
جدول زیر نمادهای عملگر و عملیاتی را که تجزیه کننده تانسور پشتیبانی می کند فهرست می کند.
 
عمل
تقدم
مثال
محصول متقابل
همان ضرب
یا ضربدر (الف، ب)
محصول نقطه داخلی
همان ضرب
یا نقطه (a,b)
محصول دو نقطه
همان ضرب
الف : ب
شیب
تابع
 a یا گرادیان (a)
گرادیان مماسی
تابع
گرادیانT(a)
واگرایی
تابع
یا واگرایی (الف)
حلقه
تابع
یا حلقه (a)
حلقه مماسی
تابع
curlT(a)
ماتریس هویت
تابع
شناسه (4) , هویت (‘3×5’) , هویت ({3,4} , یا هویت (اندازه (par.in1))
معکوس یک ماتریس
تابع
معکوس (الف)
تعیین کننده یک ماتریس
تابع
تعیین کننده (الف)
جابجایی یک ماتریس
تابع
یا انتقال (الف)
یک بردار را عادی کنید
تابع
عادی سازی (الف)
هنجار یک بردار
تابع
هنجار (الف)
جمع بیش از آخرین شاخص
تابع
جمع (الف)
بخش انحرافی یک تانسور
تابع
منحرف کننده (الف)
حداکثر عنصر در یک بردار
تابع
maxElement(a)
حداقل عنصر در یک بردار
تابع
minElem (a)
با متغیر به اندازه پر کنید
تابع
آرایه(a,{2,2}) = {{a,a},{a,a}}
آرایه(a,”3×1″) = {a,a,a}
عناصر بردار را مشخص کنید
نام متغیر
{1،2،3،4،5}
عناصر ماتریس را مشخص کنید
نام متغیر
{{11,12},{21,22}}
عناصر را به لیست آرگومان ها گسترش دهید
نام متغیر
اجازه دهید r = {x,y,z}
f(r.1..n)
 تبدیل به f(x,y,z)
g(r.1..2)
 می شود g(x,y)
تقارن نیرو در ماتریس
تابع
فرض کنید M ماتریسی متقارن باشد، M = {{u*u، u*v، u*w}، {v*u، v*v، v*w}، {w*u، w*v، w *w}} . تقارن را نمی توان تشخیص داد زیرا v*u با مقایسه رشته ای با u*v متفاوت است . عملگر متقارن تقارن را اعمال می کند: متقارن (M) = {{u*u، u*v، u*w}، {u*v، v*v، v*w}، {u*w، v*w، w *w}}
مولفه های درون صفحه یک بردار فضایی را صفر کنید
تابع
فرض کنید r = {r,phi,z} در تقارن محوری دوبعدی
zeroInPlane(r) = {0,phi,0}
مولفه های خارج از صفحه یک بردار فضایی را صفر کنید
تابع
فرض کنید r = {r,phi,z} در تقارن محوری دوبعدی
zeroOutOfPlane(r) = {r,0,z}
ضرب در ضریب ادغام حجم
تابع
integrand(a+b) در تقارن محوری دوبعدی (a+b)*ie1.detInvT برای یک دامنه عنصر نامتناهی (a+b) *2*pi*r می شود .

ثابت های فیزیکی، پارامترهای جهانی و واحدها را به مقادیر عددی ارزیابی کنید. می توانید از این عملگر با عبارات شرطی برای بررسی اینکه آیا پارامتری بزرگتر از مقدار معینی است، استفاده کنید.
تابع
فرض کنید T0 یک پارامتر سراسری باشد که روی 300K تنظیم شده است ، اگر واحد پایه متر باشد evalConst
(k_B_const*T0/e_const) 
0.025851997154882865
می شود .
کاما مشتق
تابع
اجازه دهید u یک متغیر وابسته با ارزش برداری با مولفه‌های u ، v و w و نام مختصات x ، y ، و z باشد . سپس
 کاماDerivative(u) = {{ux,uy,uz}, {vx,vy,vz}, {wx,wy,wz}}
حاصل ضرب دو نقطه جمع بر دو شاخص است:
متأسفانه دو تعریف از محصول دو نقطه ای وجود دارد که در بالا به محصول داخلی فروبنیوس یا محصول کولون اشاره شده است . تعریف دیگر ترتیب شاخص ها را در عامل دوم تغییر داده است
تعریف قبلی توسط تجزیه کننده تانسور استفاده می شود.
عملگر گرادیان را می توان با s ، m ، g ، یا M پسوند کرد تا مشخص کند که در مورد کدام متغیر مختصات (به ترتیب مکانی، ماده، هندسه یا چارچوب مش) باید مشتقات خود را بگیرد. مثال ∇ .mu گرادیان متغیر u در قاب ماده است.
عملگر eval کنترل زمینه ارزیابی را به صورت محلی در یک عبارت امکان پذیر می کند. قبل از عملگر باید یکی از پیشوندهای قاب قرار گیرد: M (مش)، g (هندسه)، m (ماده)، و s (مکانی). برای مثال، عملگر eval می‌تواند در تعریف زیرگره یک اعلان متغیر برای ارائه یک تبدیل خودکار برای همه فریم‌ها به جز یک فریم استفاده شود. فرض کنید برای متغیری به نام A در همه فریم ها اعلان دارید . زیرگره تعریف این اعلان عبارت m.eval(A) را دارد.، به این معنی که زمینه ارزیابی به صورت محلی به چارچوب مواد تغییر می کند. ارزیابی در آن قاب همیشه اعلان را در چارچوب مواد، [AX، AY، AZ] انتخاب می‌کند و سپس آن را به چارچوب بافت ارزیابی تعریف تبدیل می‌کند. این منجر به سه تعریف برای هر یک از اعلان‌ها می‌شود، که در آن تعاریف هندسه و فضایی با استفاده از متغیر ماده یک تبدیل خودکار خواهند داشت. از سوی دیگر، تعریف متغیر ماده، ارجاع دایره ای به خود خواهد داشت. این آخرین تعریف باید با یک گره Variable Definition جداگانه در همان انتخاب با یک تعریف صریح (به عنوان مثال، یک تعریف شکل) جایگزین شود.
برای ایجاد یک ماتریس هویت، عملگر هویت می‌تواند یک آرگومان عدد صحیح مثبت N را برای یک ماتریس هویت مربعی N – به – N بگیرد. همچنین می‌توانید از رشته‌ای به شکل « » یا آرایه‌ای از دو عدد صحیح مثبت (مثلاً که توسط عملگر اندازه تولید می‌شود ) استفاده کنید. همه ماتریس های غیر مربعی به اندازه دلخواه برش داده می شوند. به عنوان مثال، برای 2-by-3: {1، 0، 0; 0، 1 0}.
اپراتور جایگزین برای جایگزینی ورودی های مدل
عملگر subst ، mat.subst می تواند ورودی های مدل را در داخل عبارات خواص مواد جایگزین کند. نحو به شرح زیر است:
mat.subst(<material_property>، <model_input_1>، <replacement_1>، …، <model_input_N>، <replacement_N>)
اولین آرگومان باید نام یک ویژگی ماده با یا بدون پیشوند mat باشد . اگر پیشوند وجود نداشته باشد، به طور خودکار به نام داده شده اضافه می شود. آرگومان های ورودی مدل یا نام متغیرها یا نام فیلدهای ورودی مدل هستند (مثلاً T یا دما ) با یا بدون پیشوند minput . مجدداً در صورت عدم وجود پیشوند اضافه خواهد شد. آرگومان های جایگزین به عنوان عبارات معمولی تجزیه می شوند و باید با اندازه تانسور آرگومان ورودی مدل که متعلق به آن است مطابقت داشته باشند.
نمونه ای از استفاده از این عملگر:
فرض کنید که خاصیت ماده برای چگالی، rho ، عبارت rho(T, pA) را دارد . صورتحساب
mat.subst(rho,T,300[K],Electricfield,{1,0,0}[V/m])
به عبارت نهایی منجر می شود
rho(300[K],comp1.id.id1.minput_pressure)
که در آن آخرین آرگومان نام متغیر ورودی مدل داخلی برای فشار است. دما جایگزین شده است و میدان الکتریکی نادیده گرفته می شود.
اپراتورهای قاب
عملگرهای زیر برای بررسی متغیرها با توجه به فریم ها در دسترس هستند:
عملگر hasSameFrame(var1, var2, …, var ) 1 ( true ) را برمی گرداند اگر همه متغیرها (نام یا عبارات) روی فریم های معادل تعریف شده باشند (یعنی همان فریم یا فریم های مختلف اگر تغییری بین آنها وجود نداشته باشد). ). در غیر این صورت، 0 ( false ) را برمی گرداند.
عملگر hasMovingFrame(var) اگر var در یک فریم متحرک (مانند فریمی که با روش ALE هدایت می‌شود) اعلام شده باشد، 1 ( true ) را برمی‌گرداند. در غیر این صورت، 0 ( false ) را برمی گرداند.