Skip to content

Upanuzi kwa subrutini za mtumiaji

FrontISTR hutoa subrutini za mtumiaji za kupanua utendaji bila kubadilisha msimbo chanzo wa programu kuu. Hizi zinajumuisha utekelezaji wa sheria za konstitutivu za mtumiaji na uwekaji wa mizigo ya nje iliyofafanuliwa na mtumiaji. Sura hii inaorodhesha sehemu zinazoweza kupanuliwa na maneno muhimu ya faili ya udhibiti wa uchanganuzi yanayotumika kuziita. Kwa ubainishaji wa kina wa hoja za subrutini na utaratibu wa kujenga upya, tazama Subrutini za mtumiaji (mwongozo wa uandishi wa msimbo).

Muhtasari wa vipengele

Sehemu za upanuzi kupitia subrutini za mtumiaji zimegawanywa katika makundi mawili: sheria za konstitutivu za nyenzo na mizigo ya nje. Kwa sheria za konstitutivu kuna njia nne za kuitwa—unyumbufu wa mstari, hiperelastisiti, elastoplastisiti, na sheria ya konstitutivu ya jumla—na kila njia huanzishwa kwa neno kuu lake. Kwa mizigo ya nje, kuna njia ya kusoma taarifa za mzigo kutoka faili ya nje iliyoandaliwa na mtumiaji na kuiongeza kwenye vekta ya mzigo ya jumla na vekta ya masalio. Kila upanuzi hutumika baada ya kuhariri faili ya kiolezo iliyojumuishwa katika usambazaji wa FrontISTR na kujenga upya programu kuu.

Kategoria ya upanuzi Neno kuu la udhibiti wa uchanganuzi Subrutini kuu za mtumiaji Kiolezo cha kuhariri
Unyumbufu wa mstari wa mtumiaji !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Hiperelastisiti ya mtumiaji !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Elastoplastisiti ya mtumiaji (funksi ya kutiririka na urejeshaji wa ramani) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
Sheria ya konstitutivu ya jumla ya mtumiaji !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
Mzigo wa nje uliofafanuliwa na mtumiaji !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

Sheria ya uimarishaji iliyofafanuliwa na mtumiaji—yaani njia inayobakiza funksi ya kutiririka iliyojengewa ndani na kubadilisha tu mviringo wa uimarishaji kwa utekelezaji wa mtumiaji—haitumiki. Mviringo wa uimarishaji wa mtumiaji ukihitajika, chagua !PLASTIC, YIELD=USER na ubadilishe sheria nzima ya konstitutivu ya elastoplastisiti kwa utekelezaji wa mtumiaji. Masharti ya mpaka ya mtumiaji na sehemu za upanuzi kwa uchakataji wa mtumiaji wakati wa kuanza tena pia hazitumiki.

!CREEP yenye TYPE=USER haitumiki. Tumia !USER_MATERIAL kutekeleza sheria ya konstitutivu inayotegemea wakati kama upanuzi wa mtumiaji.

Sheria za konstitutivu za mtumiaji

Sheria za konstitutivu za mtumiaji hutoa sehemu ya kuingilia ya kutekeleza, katika subrutini ya nje, uhusiano wa mkazo na mnyumbuko usioweza kuwakilishwa na modeli za nyenzo zilizojengewa ndani. Kuna njia nne kulingana na mfumo wa sheria ya konstitutivu inayolingana: unyumbufu wa mstari wa mtumiaji, hiperelastisiti ya mtumiaji, elastoplastisiti ya mtumiaji, na sheria ya konstitutivu ya jumla ya mtumiaji. Katika kila njia, ndani ya bloku ya !MATERIAL ya data ya udhibiti wa uchanganuzi, bainisha TYPE=USER au YIELD=USER katika neno kuu linalolingana. Hadi konstanti 100 za mtumiaji zinaweza kubainishwa na kupitishwa kwenye subrutini.

Unyumbufu wa mstari wa mtumiaji

Unyumbufu wa mstari wa mtumiaji ni njia ambayo mtumiaji hukokotoa matriki elastiki ndani ya mfumo wa mgeuko infinitesimali. !ELASTIC, TYPE=USER inapobainishwa katika data ya udhibiti wa uchanganuzi, FrontISTR huitumia kama sheria ya konstitutivu ya mgeuko infinitesimali na huita uElasticMatrix—inayorejesha matriki elastiki \(D\)—wakati wa kukokotoa ugumu wa elementi, na uElasticUpdate—inayorejesha mkazo—wakati wa kusasisha mkazo. Usiitumie pamoja na modeli iliyopo ya hiperelastisiti au elastoplastisiti.

Hiperelastisiti ya mtumiaji

Hiperelastisiti ya mtumiaji ni njia ya kukokotoa mkazo na ugumu wa tanjenti kutoka derivativi za funksi ya nishati ya mnyumbuko ndani ya mfumo wa mgeuko mkubwa wa Total Lagrange. Bainisha !HYPERELASTIC, TYPE=USER katika data ya udhibiti wa uchanganuzi. Subrutini zinazoitwa ni uElasticMatrix na uElasticUpdate, sawa na katika unyumbufu wa mstari wa mtumiaji, na zote hutumia kiolezo kilekile fistr1/src/lib/user/uelastic.f90. Kwa kuwa neno kuu huamua kama FrontISTR itatumia utekelezaji huo kama mgeuko infinitesimali au kama Total Lagrange, kiolezo kilekile hakiwezi kutumiwa kwa utekelezaji wa mgeuko infinitesimali na mgeuko mkubwa kwa wakati mmoja. Kitekeleze kama mojawapo ya sheria hizo mbili za konstitutivu.

Elastoplastisiti ya mtumiaji

Elastoplastisiti ya mtumiaji ni njia ambayo mtumiaji hutekeleza funksi ya kutiririka na utaratibu wa urejeshaji wa ramani. Bainisha !PLASTIC, YIELD=USER katika data ya udhibiti wa uchanganuzi. Hii huingia katika tawi tofauti na funksi za kutiririka zilizojengewa ndani za Mises, Mohr-Coulomb, na Drucker-Prager. uElastoPlasticMatrix—inayorejesha ugumu wa tanjenti wa elastoplastisiti \(D\)—huitwa wakati wa kukokotoa ugumu wa elementi; uBackwardEuler—inayobadilisha mkazo wa majaribio kuwa mkazo halisi na kusasisha vigezo vya hali—huitwa wakati wa kusasisha mkazo; na uElastoPlasticNumStatus—inayorejesha idadi ya vigezo vya hali vya thamani halisi vinavyohifadhiwa—huitwa wakati wa kuanzisha nukta za Gauss. Njia ya kubadilisha mviringo wa uimarishaji pekee kwa utekelezaji wa mtumiaji haitumiki. Hata inapohitajika mviringo wa uimarishaji wa mtumiaji pekee, tumia njia hii kubadilisha sheria nzima ya konstitutivu ya elastoplastisiti.

Sheria ya konstitutivu ya jumla ya mtumiaji

Sheria ya konstitutivu ya jumla ya mtumiaji ni njia ya kutekeleza sheria za konstitutivu ambazo haziingii katika mifumo ya unyumbufu, hiperelastisiti, au elastoplastisiti. Bainisha !USER_MATERIAL katika data ya udhibiti wa uchanganuzi. Kwa chaguo-msingi hushughulikiwa katika mfumo wa Updated Lagrange; KIRCHHOFF ikibainishwa, hushughulikiwa kama Total Lagrange. Idadi ya vigezo vya hali hubainishwa kwa NSTATUS. uMatlMatrix—inayorejesha ugumu wa tanjenti \(D\)—huitwa wakati wa kukokotoa ugumu wa elementi, na uUpdate—inayosasisha mkazo na vigezo vya hali—huitwa wakati wa kusasisha mkazo.

Kupitisha konstanti za mtumiaji na vigezo vya hali

Katika kila mojawapo ya njia za !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER, na !USER_MATERIAL, konstanti za mtumiaji zilizoandikwa katika mistari ya data ya udhibiti wa uchanganuzi—hadi 100—hupitishwa moja kwa moja kwenye subrutini kupitia hoja matl. Kwa !PLASTIC, YIELD=USER, konstanti elastiki zilizobainishwa na !ELASTIC na konstanti za mtumiaji zilizotolewa kupitia mistari ya data ya !PLASTIC hupitishwa.

Kwa sheria ya konstitutivu ya jumla ya mtumiaji na !PLASTIC, YIELD=USER, taarifa ya historia ya hatua iliyopita—kama mnyumbuko wa plastiki, mkazo wa nyuma, na uharibifu—inaweza kupitishwa kwenye utekelezaji wa mtumiaji kupitia kigezo cha hali fstat na kuandikwa tena mwishoni mwa hatua. Idadi ya vigezo vya hali huamuliwa na !USER_MATERIAL pamoja na NSTATUS yake kwa sheria ya konstitutivu ya jumla ya mtumiaji, na kwa thamani inayorejeshwa na uElastoPlasticNumStatus kwa !PLASTIC, YIELD=USER.

Mizigo ya nje iliyofafanuliwa na mtumiaji

Mzigo wa nje uliofafanuliwa na mtumiaji hutoa njia ya kufafanua nguvu za nje zisizoweza kuwakilishwa na mizigo iliyojengewa ndani iliyokolezwa, iliyosambazwa, au ya mwili. !ULOAD, FILE=<fname> inapoandikwa katika data ya udhibiti wa uchanganuzi, FrontISTR hupitisha jina la faili lililobainishwa kwa ureadload, na taarifa iliyosomwa na utekelezaji wa mtumiaji huhifadhiwa kama data ya moduli.

Subrutini tatu zifuatazo huitwa kwa !ULOAD.

  • ureadload: mwanzoni mwa uchanganuzi, husoma mizigo iliyofafanuliwa na mtumiaji kutoka faili ya nje iliyobainishwa katika faili ya udhibiti. Utekelezaji wa mtumiaji hufungua faili na kuhifadhi data inayohitajika katika vigezo vya moduli.
  • uloading: huitwa wakati wa kukusanya vekta ya mzigo wa nje kwa kila hatua na huongeza mzigo wa mtumiaji kwenye vekta ya mzigo ya jumla. Nambari ya hatua ya sasa na kipengele cha mzigo hupitishwa kama hoja.
  • uResidual: huitwa wakati wa kukusanya vekta ya masalio katika kila urudiaji na huongeza mchango wa mzigo wa mtumiaji kwenye vekta ya masalio ya jumla. Huitwa kutoka katika marudio yasiyo ya mstari na hesabu za msawazo.

Hakuna sehemu ya upanuzi kwa masharti ya mpaka ya mtumiaji—yaani upanuzi wa uhamisho uliowekwa au masharti ya mgusano. Upanuzi mwingine usio nguvu ya nje ukihitajika, tumia neno kuu lililojengewa ndani linalolingana au njia ya sheria ya konstitutivu ya mtumiaji.

Utaratibu wa kutekeleza subrutini ya mtumiaji

Ili kutumia subrutini ya mtumiaji, hariri faili ya kiolezo iliyojumuishwa katika usambazaji wa msimbo chanzo wa FrontISTR, kisha jenga upya FrontISTR. Subrutini za mtumiaji haziwezi kubadilishwa katika faili za binary zilizosambazwa; kwa hiyo upanuzi wa mtumiaji unahitaji mazingira yanayoweza kujenga FrontISTR kutoka msimbo chanzo.

Violezo vya subrutini za mtumiaji viko chini ya fistr1/src/lib/user/, na faili ya kuhariri imebainishwa kwa kila kategoria ya upanuzi; tazama jedwali katika Muhtasari wa vipengele kwa majina ya faili. Katika hali ya awali, faili hizo zina miili ya subrutini iliyo tupu au mfano wa utekelezaji wa unyumbufu wa mstari; mtumiaji huongeza hapo sheria yake ya konstitutivu au ufafanuzi wa mzigo. Baada ya kuhariri kiolezo, jenga upya FrontISTR kwa CMake kama kawaida na uendeshe uchanganuzi kwa faili tekelezi ya fistr1 iliyopatikana.

Maelezo ya maana ya hoja za subrutini, utunzaji wa safu za vigezo vya hali, na tahadhari za kujenga upya yametolewa katika kurasa zinazolingana za mwongozo wa uandishi wa msimbo.

Mada zinazohusiana