उपयोगकर्ता सबरूटीन विस्तार¶
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 (जो ट्रायल प्रतिबल को वास्तविक प्रतिबल में मैप करता है और अवस्था चर अद्यतन करता है), तथा Gauss-बिंदु आरंभीकरण के दौरान uElastoPlasticNumStatus (जो बनाए रखने वाले वास्तविक-मूल्य अवस्था चरों की संख्या लौटाता है) बुलाए जाते हैं। केवल हार्डनिंग वक्र को उपयोगकर्ता कार्यान्वयन से बदलने वाला मार्ग समर्थित नहीं है। यदि केवल उपयोगकर्ता-परिभाषित हार्डनिंग वक्र की आवश्यकता हो, तब भी इसी मार्ग से पूरे प्रत्यास्थ-प्लास्टिक संविधायी नियम को उपयोगकर्ता कार्यान्वयन से बदलें।
सामान्य-प्रयोजन उपयोगकर्ता संविधायी नियम¶
सामान्य-प्रयोजन उपयोगकर्ता संविधायी नियम उन संविधायी नियमों को कार्यान्वित करने का मार्ग है जो प्रत्यास्थ, अतिप्रत्यास्थ या प्रत्यास्थ-प्लास्टिक ढाँचों में फिट नहीं होते। विश्लेषण नियंत्रण डेटा में !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/ के अंतर्गत स्थित हैं और प्रत्येक विस्तार श्रेणी के लिए एक विशिष्ट फ़ाइल संपादित करनी होती है (फ़ाइल नामों के लिए अवलोकन की तालिका देखें)। प्रारंभिक अवस्था में फ़ाइलों में या तो रिक्त सबरूटीन निकाय या नमूना रैखिक-प्रत्यास्थ कार्यान्वयन होता है; उपयोगकर्ता वहाँ अपना संविधायी नियम या भार परिभाषा जोड़ते हैं। टेम्पलेट संपादित करने के बाद CMake से FrontISTR को सामान्य रूप से पुनर्बिल्ड करें और प्राप्त fistr1 निष्पादनयोग्य से विश्लेषण चलाएँ।
सबरूटीन आर्ग्युमेंटों का अर्थ, अवस्था-चर सरणियों का संचालन और पुनर्बिल्ड के समय सावधानियाँ जैसी जानकारी कोडिंग गाइड के संबंधित पृष्ठों पर दी गई है।
- उपयोगकर्ता सबरूटीन (अवलोकन)
- सामान्य-प्रयोजन उपयोगकर्ता संविधायी नियम
umat.f - उपयोगकर्ता प्रत्यास्थ-प्लास्टिकता
uyield.f - उपयोगकर्ता-परिभाषित बाह्य भार
uload.f - उपयोगकर्ता रैखिक प्रत्यास्थता और उपयोगकर्ता अतिप्रत्यास्थता
uelastic.f
संबंधित विषय¶
- सामग्री डेटा — संविधायी-नियम विकल्प और अंतर्निर्मित मॉडलों की सूची
- सीमा शर्तें और भार — अंतर्निर्मित सीमा शर्तें और भार
- उपयोगकर्ता सबरूटीन (कोडिंग गाइड) — सबरूटीन आर्ग्युमेंट विनिर्देश और कार्यान्वयन परंपराएँ
- !USER_MATERIAL — सामान्य-प्रयोजन उपयोगकर्ता संविधायी नियम के लिए कीवर्ड सिंटैक्स
- !ELASTIC —
TYPE=USERसहित रैखिक-प्रत्यास्थ कीवर्ड - !HYPERELASTIC —
TYPE=USERसहित अतिप्रत्यास्थ कीवर्ड - !PLASTIC —
YIELD=USERसहित प्रत्यास्थ-प्लास्टिक कीवर्ड