استفاده از مواد خارجی در واسط های فیزیک

استفاده از مواد خارجی در واسط های فیزیک

استفاده از مواد خارجی در واسط های فیزیک
برای اینکه یک رابط فیزیک از مواد خارجی استفاده کند، باید دارای یک یا چند ویژگی باشد که تعاریف کمیت ورودی را ارائه دهد و از مقادیر خروجی برگشتی در معادلات و عبارات پس پردازش استفاده کند. چنین ویژگی هایی در حال حاضر در Solid Mechanics موجود است. غشاء؛ میدانهای مغناطیسی؛ و میدان های مغناطیسی، بدون جریان رابط.
 
استفاده از مواد خارجی در Solid Mechanics یا Membrane نیاز به مجوز ماژول مکانیک سازه یا ماژول MEMS دارد.
رابط‌های AC/DC که از مواد خارجی پشتیبانی می‌کنند، فقط با مجوز ماژول AC/DC در دسترس هستند، به جز برای میدان‌های مغناطیسی در دوبعدی.
انواع رابط مواد خارجی
با توجه به اینکه یک ویژگی فیزیک به کمیت‌های خروجی خاصی نیاز دارد و کمیت‌های ورودی مشخصی را تعریف می‌کند، راه‌های ممکن زیادی برای تنظیم فراخوانی یک تابع خارجی، از جمله اعلام خواص و حالت‌های مواد وجود دارد. مشخصات رابط مورد نیاز، یا نوع رابط ، در یک سوکت مواد خارجی موجود است که تعدادی کار مختلف را انجام می دهد:
این دستور دستور فراخوانی را برای توابع مواد خارجی تعریف می کند. یعنی نام تابع، نوع بازگشتی و تعداد آرگومان ها را با انواع داده ها و اندازه آنها تعریف می کند.
این یک نگاشت بین اجزای تانسور کمیت ورودی و خروجی در فضای نام متغیر COMSOL Multiphysics و موقعیت‌ها در آرگومان‌های تابع خارجی تعریف می‌کند.
It defines a mapping between function argument positions and partial derivatives of outputs with respect to inputs.
It decides which input quantities should be evaluated at the last converged step — rather than at the last iteration — and sets up states for these variables.
It declares material model state variables and maps them to positions in the function arguments.
It declares required material properties and maps them to the function arguments.
It specifies error handling procedures, including error messages for various exit conditions.
The call syntax is in general not fixed for a given socket. Most sockets allow socket parameters to control certain aspects of the socket behavior, including:
Whether to pass arguments as real or complex numbers.
Whether to call an initialization function in the external library before the solver is started.
آیا برای فراخوانی یک تابع پاکسازی در کتابخانه خارجی.
چه نام های آرایه حالت تعریف شده توسط کاربر برای اعلام و ارسال به تابع خارجی، و همچنین اندازه هر آرایه.
آیا باید یک آرگومان رشته ای از پیش تخصیص داده شده با اندازه انتخاب شده به لیست آرگومان اضافه شود، که اگر تابع ماده خارجی به نحوی از کار بیفتد، می توان پیام خطای مفصلی برای آن نوشت.
آیا باید تعدادی آرگومان رشته ای در انتهای لیست آرگومان اضافه شود یا خیر.
 
برای اینکه یک کتابخانه مشترک خارجی با COMSOL Multiphysics سازگار باشد، باید از قراردادهای مشخص شده توسط برخی از سوکت ها پیروی کند. برعکس، هنگام استفاده از یک کتابخانه خارجی موجود در یک مدل چندفیزیکی، انتخاب نوع واسط و پارامترهای مناسب مهم است. عدم انجام این کار منجر به فراخوانی کتابخانه خارجی با آرگومان های غیرمنتظره می شود که منجر به رفتار دلخواه می شود.
برای یک سوکت لازم نیست که تمام کمیت های خروجی مورد نیاز یک ویژگی فیزیک را تعریف کند. سوکت و کتابخانه خارجی ممکن است فقط برخی از کمیت ها را محاسبه کنند، در حالی که بقیه کمیت ها توسط گروه های دارایی تحت ویژگی External Material مشخص می شوند. برای مثال، سوکت تنش-کرنش داخلی داخلی تنها تنش دوم Piola-Kirchhoff را به عنوان خروجی برمی‌گرداند، در حالی که ویژگی‌های فیزیک با استفاده از این نوع رابط نیز ممکن است به چگالی مواد نیاز داشته باشند. تراکم ممکن است در عوض به عنوان یک عبارت در گروه ویژگی Basic مشخص شود.
همچنین می توان نوع Interface را روی None تنظیم کرد تا هیچ سوکتی انتخاب نشود و در عوض رابطه بین مقادیر ورودی و خروجی را به عنوان عبارات مستقیماً در یک ویژگی ماده خارجی تنظیم کرد. این رفتار بیشتر برای آزمایش و اشکال زدایی مدل های چندفیزیکی در نظر گرفته شده است. توجه داشته باشید که در این حالت هیچ تابع ماده خارجی فراخوانی نخواهد شد.
 
سوکت‌ها و گروه‌های ویژگی مواد مرتبط با یک برچسب شناسه شناسایی می‌شوند که باید در بین تمام نصب‌های COMSOL که فایل‌ها بین آنها به اشتراک گذاشته می‌شود، منحصربه‌فرد باشد. به منظور جلوگیری از تضاد بین سوکت های داخلی و سوکت های توسعه یافته توسط کاربر آینده، یک قرارداد نام گذاری کامل به سبک جاوا اتخاذ شده است. بنابراین، برای مثال، سوکت داخلی رابط عمومی H(B) دارای شناسه منحصربه‌فرد com.comsol.generalHBRelation است و گروه ویژگی مواد مرتبط دارای برچسب و نام comcomsolgeneralHBRelation است – یعنی الحاق مستقیم ID.
تکرارهای حل کننده و به روز رسانی های حالت
این بخش مقادیری را که در مرحله فعلی یا در مرحله همگرای قبلی ارزیابی می شوند، توصیف می کند. این به الگوی تکرار حل کننده ها مربوط می شود. عملکرد مواد خارجی در درجه اول برای مدل سازی مواد با نوعی حافظه یا وابستگی مسیر (به عنوان مثال، مواد جامد غیرکشسان یا موادی که پسماند الکترومغناطیسی را نشان می دهند) در نظر گرفته شده است. این بدان معناست که شبیه‌سازی‌ها باید در مراحلی در یک بازه زمانی یا برخی پارامترها (که اغلب می‌تواند به عنوان شبه زمان تفسیر شود) انجام شود.
این که آیا یک حلگر وابسته به زمان یا پارامتریک استفاده می شود، برداشتن یک گام به جلو مستلزم حل یک مسئله غیرخطی است که معمولاً یک روش تکراری است. برای اینکه همگرایی کارآمد باشد، حل‌کننده نیوتن اصلاح‌شده به اطلاعات ژاکوبین صحیح نیاز دارد (ژاکوبین گاهی اوقات ماتریس سفتی مماسی نامیده می‌شود )، که باید توسط توابع ماده خارجی به شکل مشتقات جزئی اجزای آرگومان خروجی ارائه شود. با توجه به اجزای آرگومان ورودی هنگامی که تکرار غیرخطی همگرا می شود، راه حل آن مرحله زمانی یا مرحله پارامتر ذخیره می شود و حل کننده به مرحله بعدی می رود.
توابع ماده خارجی معمولاً در هر تکرار در حلقه غیرخطی داخلی فراخوانی می شوند. آرگومان هایی که در مرحله فعلی ارزیابی می شوند، در هر تکرار داخلی دوباره ارزیابی می شوند، در حالی که آرگومان های تعریف شده در مرحله همگرای قبلی، ارزشی را که در زمان همگرایی تکرار غیرخطی قبلی داشتند، حفظ می کنند. یعنی مقداری که آخرین بار ذخیره شده است. آرگومان های متغیر حالت به تابع ماده خارجی با همان مقادیر همگرای قبلی در هر تکرار غیرخطی داخلی منتقل می شوند. انتظار می رود تابع ماده خارجی این مقدار قبلی را با یک مقدار جدید مطابق با تکرار فعلی بازنویسی کند، اما این مقدار فقط زمانی ذخیره می شود و حالت ها به روز می شوند که تکرار غیرخطی داخلی همگرا شود.
ارائه نتیجه
تابع ماده خارجی نیز ممکن است در حین ارائه نتیجه فراخوانی شود. در COMSOL Multiphysics، راه حل ذخیره شده شامل درجات آزادی به اضافه هر متغیر حالت ممکن است.
به عنوان مثال، اگر مدل مواد الاستوپلاستیک خود را برای مکانیک جامد کدگذاری کرده باشید، معمولاً کرنش های پلاستیکی را به صورت حالت ذخیره می کنید. اگر در حین ارائه نتیجه نمودار تنش ها را بسازید، تابع ماده به منظور محاسبه تنش ها از جابجایی ها و کرنش های پلاستیک فراخوانی می شود. این در تعداد زیادی از مکان‌های مش رخ خواهد داد.
حالت‌ها در نقاط ادغام ذخیره می‌شوند، بنابراین اگر نتایج نقطه یکپارچه‌سازی را با ترتیب درست درخواست کنید، تماسی با مواد خارجی با حالتی که قبلاً همگرا شده است برقرار می‌شود. اگر تابع به خوبی کدگذاری شده باشد، پس از یک بار تکرار، حالت استرس را برمی‌گرداند.
اغلب تابع ماده از مکانی فراخوانی می شود که نقطه ادغام نیست (مثلاً یک گره مش). در این حالت، مقادیر متغیرهای حالت از نزدیک‌ترین نقطه ادغام گرفته می‌شوند، در حالی که کرنش‌های کل از گرادیان‌های میدان جابجایی در محل ارزیابی محاسبه می‌شوند. این ترکیب به طور کلی حالت همگرا را ارائه نمی دهد، بنابراین برای یافتن حالت تنش به تکرار در داخل تابع ماده نیاز است. این می تواند چندین اثر منفی داشته باشد:
تکرارها ارزشیابی را گران تر می کند.
دقت کاهش یافته است، زیرا مقادیر متغیر حالت از یک مکان همسایه گرفته شده است.
در بدترین حالت، ارزیابی در عملکرد مواد به طور کامل شکست می خورد. آنچه در این مورد اتفاق می افتد بستگی به نحوه برخورد با استثناها دارد.
به این دلایل، چه از نظر عملکرد و چه از نظر دقت، سودمند است که نتایج را فقط در نقاط ادغام مناسب ارزیابی کنیم. برای اطمینان از آن، می توانید عملگر gpeval را به عبارات خود اضافه کنید. به جای رسم برای مثال solid.mises ، از عبارتی مانند gpeval(4,solid.mises) استفاده کنید.