امتدادات الروتينات الفرعية للمستخدم¶
يوفر 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 (الذي يعيد الإجهاد) أثناء تحديث الإجهاد. لا تستخدمه مع نموذج فرط مرونة أو مرونة لدنة موجود.
فرط المرونة للمستخدم¶
فرط المرونة للمستخدم هو المسار لحساب الإجهاد والصلابة المماسية من مشتقات دالة طاقة الانفعال ضمن إطار التشوه الكبير (Total Lagrange). حدّد !HYPERELASTIC, TYPE=USER في بيانات التحكم في التحليل. الروتينات الفرعية المستدعاة هي نفسها uElasticMatrix وuElasticUpdate المستخدمة في المرونة الخطية للمستخدم، كما يُستخدم قالب fistr1/src/lib/user/uelastic.f90 نفسه. ولأن تحديد الكلمة المفتاحية يبدّل ما إذا كان FrontISTR يعامل التنفيذ كتشوه متناهي الصغر أو Total Lagrange، فلا يمكن استخدام القالب نفسه في الوقت نفسه لتنفيذ التشوه المتناهي الصغر والتشوه الكبير. نفّذه كأحد القانونين التكوينيين.
المرونة اللدنة للمستخدم¶
المرونة اللدنة للمستخدم هي المسار الذي ينفذ فيه المستخدم دالة الخضوع وإجراء إسقاط الرجوع. حدّد !PLASTIC, YIELD=USER في بيانات التحكم في التحليل. يدخل هذا في فرع مستقل عن دوال الخضوع المدمجة Mises وMohr-Coulomb وDrucker-Prager. يُستدعى uElastoPlasticMatrix (الذي يعيد الصلابة المماسية المرنة-اللدنة \(D\)) أثناء حساب صلابة العنصر، وuBackwardEuler (الذي يسقط الإجهاد التجريبي إلى الإجهاد الحقيقي ويحدّث متغيرات الحالة) أثناء تحديث الإجهاد، وuElastoPlasticNumStatus (الذي يعيد عدد متغيرات الحالة الحقيقية المطلوب الاحتفاظ بها) أثناء تهيئة نقطة Gauss. لا يُدعم مسار يستبدل منحنى التصلد وحده بتنفيذ من المستخدم. حتى عندما يكون المطلوب فقط منحنى تصلد معرّفًا من المستخدم، استخدم هذا المسار لاستبدال القانون التكويني المرن-اللدن كاملًا بتنفيذ من المستخدم.
القانون التكويني العام للمستخدم¶
القانون التكويني العام للمستخدم هو مسار لتنفيذ قوانين تكوينية لا تندرج ضمن أطر المرونة أو فرط المرونة أو المرونة اللدنة. حدّد !USER_MATERIAL في بيانات التحكم في التحليل. افتراضيًا، يُعالج ضمن إطار Updated Lagrange؛ وعند تحديد KIRCHHOFF يُعالج بوصفه Total Lagrange. يُحدَّد عدد متغيرات الحالة بواسطة 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 الناتج.
ترد التفاصيل، مثل معنى معاملات الروتين الفرعي ومعالجة مصفوفات متغيرات الحالة والاحتياطات عند إعادة البناء، في الصفحات المقابلة من دليل البرمجة.
- الروتينات الفرعية للمستخدم (نظرة عامة)
- القانون التكويني العام للمستخدم
umat.f - المرونة اللدنة للمستخدم
uyield.f - الحمل الخارجي المعرّف من المستخدم
uload.f - المرونة الخطية للمستخدم وفرط المرونة للمستخدم
uelastic.f
انظر أيضًا¶
- بيانات المادة — خيارات القوانين التكوينية وقائمة النماذج المدمجة
- شروط الحدود والأحمال — شروط الحدود والأحمال المدمجة
- الروتينات الفرعية للمستخدم (دليل البرمجة) — مواصفات معاملات الروتينات الفرعية واتفاقيات التنفيذ
- !USER_MATERIAL — صيغة الكلمة المفتاحية للقانون التكويني العام للمستخدم
- !ELASTIC — كلمة المرونة الخطية بما في ذلك
TYPE=USER - !HYPERELASTIC — كلمة فرط المرونة بما في ذلك
TYPE=USER - !PLASTIC — كلمة المرونة اللدنة بما في ذلك
YIELD=USER