پرش به محتویات

افزونه‌های زیرروال کاربر

FrontISTR مجموعه‌ای از زیرروال‌های کاربر را برای گسترش قابلیت‌ها بدون تغییر کد منبع اصلی فراهم می‌کند. این زیرروال‌ها پیاده‌سازی کاربری قوانین ساختاری و ادغام بارهای خارجی تعریف‌شده توسط کاربر را پوشش می‌دهند. این فصل نقاط قابل گسترش و کلیدواژه‌های فایل کنترل تحلیل برای فراخوانی هر یک را فهرست می‌کند. برای مشخصات دقیق آرگومان‌های زیرروال و روش بازبیلد، زیرروال‌های کاربر (راهنمای کدنویسی) را ببینید.

نمای کلی قابلیت‌ها

نقاط گسترش با زیرروال کاربر به دو دسته تقسیم می‌شوند: قوانین ساختاری ماده و بارهای خارجی. در سمت قانون ساختاری، چهار مسیر فراخوانی برای الاستیسیتهٔ خطی، هایپرالاستیسیته، الاستوپلاستیسیته و قانون ساختاری عمومی وجود دارد که هر یک با کلیدواژه‌ای مستقل فعال می‌شوند. در سمت بار خارجی، مسیری برای خواندن اطلاعات بار از فایل خارجی تهیه‌شده توسط کاربر و افزودن آن به بردار بار کلی و بردار باقیمانده فراهم است. هر افزونه پس از ویرایش فایل الگوی موجود در توزیع FrontISTR و بازبیلد برنامهٔ اصلی قابل استفاده می‌شود.

دستهٔ افزونه کلیدواژهٔ کنترل تحلیل زیرروال‌های اصلی کاربر الگوی قابل ویرایش
الاستیسیتهٔ خطی کاربر !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
هایپرالاستیسیتهٔ کاربر !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
الاستوپلاستیسیتهٔ کاربر (تابع تسلیم و نگاشت بازگشتی) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
قانون ساختاری عمومی کاربر !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
بار خارجی تعریف‌شده توسط کاربر !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

قانون سخت‌شوندگی تعریف‌شده توسط کاربر (مسیری که تابع تسلیم داخلی را حفظ کند و فقط منحنی سخت‌شوندگی را با پیاده‌سازی کاربر جایگزین کند) پشتیبانی نمی‌شود. اگر منحنی سخت‌شوندگی تعریف‌شده توسط کاربر لازم باشد، !PLASTIC, YIELD=USER را انتخاب کرده و کل قانون ساختاری الاستوپلاستیک را با پیاده‌سازی کاربر جایگزین کنید. شرایط مرزی کاربر و نقاط گسترش برای پردازش کاربر هنگام بازراه‌اندازی پشتیبانی نمی‌شوند.

!CREEP با TYPE=USER پشتیبانی نمی‌شود. برای پیاده‌سازی قانون ساختاری وابسته به زمان به‌عنوان افزونهٔ کاربر از !USER_MATERIAL استفاده کنید.

قوانین ساختاری کاربر

قوانین ساختاری کاربر ورودی‌ای برای پیاده‌سازی رابطه‌های تنش-کرنش هستند که با مدل‌های مادهٔ داخلی قابل بیان نیستند. مطابق چارچوب قانون ساختاری داخلی متناظر، چهار مسیر وجود دارد: الاستیسیتهٔ خطی کاربر، هایپرالاستیسیتهٔ کاربر، الاستوپلاستیسیتهٔ کاربر و قانون ساختاری عمومی کاربر. در هر مسیر، در بلوک !MATERIAL دادهٔ کنترل تحلیل، روی کلیدواژهٔ متناظر TYPE=USER یا YIELD=USER را مشخص کنید. حداکثر 100 ثابت کاربر را می‌توان تعیین کرد و به زیرروال منتقل می‌شوند.

الاستیسیتهٔ خطی کاربر

الاستیسیتهٔ خطی کاربر مسیری است که در آن کاربر ماتریس الاستیک را در چارچوب تغییرشکل کوچک محاسبه می‌کند. با تعیین !ELASTIC, TYPE=USER در دادهٔ کنترل تحلیل، FrontISTR آن را به‌عنوان قانون ساختاری تغییرشکل کوچک در نظر می‌گیرد و هنگام محاسبهٔ سختی المان uElasticMatrix (که ماتریس الاستیک \(D\) را برمی‌گرداند) و هنگام به‌روزرسانی تنش uElasticUpdate (که تنش را برمی‌گرداند) را فراخوانی می‌کند. آن را همراه با مدل هایپرالاستیک یا الاستوپلاستیک موجود استفاده نکنید.

هایپرالاستیسیتهٔ کاربر

هایپرالاستیسیتهٔ کاربر مسیری برای محاسبهٔ تنش و سختی مماسی از مشتقات تابع انرژی کرنشی در چارچوب تغییرشکل بزرگ (لاگرانژ کل) است. در دادهٔ کنترل تحلیل !HYPERELASTIC, TYPE=USER را مشخص کنید. زیرروال‌های فراخوانی‌شده همان uElasticMatrix و uElasticUpdate مورد استفاده برای الاستیسیتهٔ خطی کاربر هستند و الگوی fistr1/src/lib/user/uelastic.f90 نیز مشترک است. چون تعیین کلیدواژه مشخص می‌کند FrontISTR پیاده‌سازی را تغییرشکل کوچک یا لاگرانژ کل در نظر بگیرد، یک الگوی واحد را نمی‌توان هم‌زمان برای پیاده‌سازی تغییرشکل کوچک و بزرگ استفاده کرد. آن را به‌عنوان یکی از این دو قانون ساختاری پیاده‌سازی کنید.

الاستوپلاستیسیتهٔ کاربر

الاستوپلاستیسیتهٔ کاربر مسیری است که در آن کاربر تابع تسلیم و رویهٔ نگاشت بازگشتی را پیاده‌سازی می‌کند. در دادهٔ کنترل تحلیل !PLASTIC, YIELD=USER را مشخص کنید. این مسیر وارد شاخه‌ای مستقل از توابع تسلیم داخلی Mises، Mohr-Coulomb و Drucker-Prager می‌شود. هنگام محاسبهٔ سختی المان uElastoPlasticMatrix (که سختی مماسی الاستوپلاستیک \(D\) را برمی‌گرداند)، هنگام به‌روزرسانی تنش uBackwardEuler (که تنش آزمایشی را به تنش حقیقی نگاشت کرده و متغیرهای حالت را به‌روزرسانی می‌کند)، و هنگام مقداردهی اولیهٔ نقطهٔ گاوس uElastoPlasticNumStatus (که تعداد متغیرهای حالت حقیقی نگهداری‌شونده را برمی‌گرداند) فراخوانی می‌شوند. مسیری برای جایگزینی فقط منحنی سخت‌شوندگی با پیاده‌سازی کاربر پشتیبانی نمی‌شود. حتی اگر فقط منحنی سخت‌شوندگی کاربر لازم باشد، از این مسیر برای جایگزینی کل قانون ساختاری الاستوپلاستیک با پیاده‌سازی کاربر استفاده کنید.

قانون ساختاری عمومی کاربر

قانون ساختاری عمومی کاربر مسیری برای پیاده‌سازی یکپارچهٔ قوانینی است که در چارچوب الاستیک، هایپرالاستیک یا الاستوپلاستیک نمی‌گنجند. در دادهٔ کنترل تحلیل !USER_MATERIAL را مشخص کنید. به‌طور پیش‌فرض در چارچوب لاگرانژ به‌روزشده پردازش می‌شود؛ اگر KIRCHHOFF مشخص شود، در چارچوب لاگرانژ کل پردازش می‌شود. تعداد متغیرهای حالت با NSTATUS مشخص می‌شود. هنگام محاسبهٔ سختی المان uMatlMatrix (که سختی مماسی \(D\) را برمی‌گرداند) و هنگام به‌روزرسانی تنش uUpdate (که تنش و متغیرهای حالت را به‌روزرسانی می‌کند) فراخوانی می‌شوند.

انتقال ثابت‌های کاربر و متغیرهای حالت

در هر یک از مسیرهای !ELASTIC, TYPE=USER، !HYPERELASTIC, TYPE=USER و !USER_MATERIAL، ثابت‌های کاربر نوشته‌شده در خطوط دادهٔ کنترل تحلیل (حداکثر 100 عدد) مستقیماً از طریق آرگومان matl به زیرروال منتقل می‌شوند. برای !PLASTIC, YIELD=USER، ثابت‌های الاستیک مشخص‌شده با !ELASTIC همراه با ثابت‌های کاربر داده‌شده در خطوط دادهٔ !PLASTIC منتقل می‌شوند.

در قانون ساختاری عمومی کاربر و !PLASTIC, YIELD=USER، اطلاعات تاریخچهٔ گام پیشین (مانند کرنش پلاستیک، تنش پس‌ماند و مقدار آسیب) را می‌توان از طریق متغیر حالت fstat به پیاده‌سازی کاربر منتقل و در پایان گام بازنویسی کرد. تعداد متغیرهای حالت در قانون ساختاری عمومی کاربر با !USER_MATERIAL و پارامتر NSTATUS و در !PLASTIC, YIELD=USER با مقدار بازگشتی uElastoPlasticNumStatus تعیین می‌شود.

بارهای خارجی تعریف‌شده توسط کاربر

بار خارجی تعریف‌شده توسط کاربر مسیری برای تعریف نیروهای خارجی است که با بار متمرکز، بار توزیع‌شده یا نیروی حجمی داخلی قابل بیان نیستند. وقتی !ULOAD, FILE=<fname> در دادهٔ کنترل تحلیل نوشته شود، FrontISTR نام فایل مشخص‌شده را به ureadload می‌دهد و اطلاعات خوانده‌شده توسط پیاده‌سازی کاربر به‌صورت دادهٔ ماژول نگهداری می‌شود.

سه زیرروال زیر با فراخوانی !ULOAD مرتبط‌اند.

  • ureadload: در آغاز تحلیل، بار تعریف‌شده توسط کاربر را از فایل خارجی مشخص‌شده در فایل کنترل می‌خواند. پیاده‌سازی کاربر فایل را باز کرده و دادهٔ مورد نیاز را در متغیرهای ماژول ذخیره می‌کند.
  • uloading: هنگام مونتاژ بردار بار خارجی هر گام فراخوانی می‌شود و بار کاربر را به بردار بار کلی اضافه می‌کند. شمارهٔ گام جاری و ضریب بار به‌عنوان آرگومان منتقل می‌شوند.
  • uResidual: هنگام مونتاژ بردار باقیمانده در هر تکرار فراخوانی می‌شود و سهم بار کاربر را به بردار باقیماندهٔ کلی اضافه می‌کند. هم از تکرارهای غیرخطی و هم از محاسبات تعادل فراخوانی می‌شود.

نقطهٔ گسترشی برای شرایط مرزی کاربر (گسترش کاربری جابه‌جایی تجویزی یا شرایط تماس) فراهم نشده است. اگر گسترشی غیر از نیروی خارجی لازم باشد، از کلیدواژهٔ داخلی متناظر یا مسیر قانون ساختاری کاربر استفاده کنید.

روش پیاده‌سازی زیرروال‌های کاربر

برای استفاده از زیرروال کاربر، فایل الگوی موجود در توزیع منبع FrontISTR را ویرایش کرده و سپس FrontISTR را بازبیلد کنید. زیرروال‌های کاربر را نمی‌توان در باینری‌های توزیع‌شده جایگزین کرد؛ بنابراین برای استفاده از افزونهٔ کاربر باید محیطی برای بیلد FrontISTR از منبع آماده کنید.

الگوهای زیرروال کاربر زیر fistr1/src/lib/user/ قرار دارند و برای هر دستهٔ افزونه فایل مشخصی باید ویرایش شود (برای نام فایل‌ها جدول نمای کلی قابلیت‌ها را ببینید). در حالت اولیه، بدنهٔ زیرروال‌ها خالی است یا یک پیاده‌سازی نمونهٔ الاستیسیتهٔ خطی دارد؛ کاربر قانون ساختاری یا تعریف بار خود را در آن می‌نویسد. پس از ویرایش الگو، FrontISTR را به روش معمول با CMake بازبیلد کرده و تحلیل را با فایل اجرایی fistr1 حاصل اجرا کنید.

جزئیاتی مانند معنای آرگومان‌های زیرروال، نحوهٔ کار با آرایهٔ متغیرهای حالت و نکات هنگام بازبیلد در صفحات مربوط در راهنمای کدنویسی آمده‌اند.

موارد مرتبط