Skip to content

Upanuzi kwa user subroutines

FrontISTR hutoa kundi la user subroutines kwa kupanua utendaji bila kubadilisha source code kuu. Hii inajumuisha utekelezaji wa constitutive laws wa mtumiaji na kuingiza external loads zinazofafanuliwa na mtumiaji. Sura hii inaorodhesha sehemu zinazoweza kupanuliwa na keywords za analysis control file zinazotumika kuziita. Kwa specification ya kina ya arguments za subroutine na utaratibu wa rebuild, tazama User subroutines (coding guide).

Muhtasari wa vipengele

Sehemu za upanuzi kupitia user subroutines zimegawanywa katika mifumo miwili: material constitutive laws na external loads. Upande wa constitutive laws una njia nne za kuitwa—linear elasticity, hyperelasticity, elastoplasticity, na general constitutive law—na kila moja huanzishwa kwa keyword yake. Upande wa external loads una njia ya kusoma taarifa za load kutoka external file iliyoandaliwa na mtumiaji na kuiongeza kwenye global load vector na residual vector. Zote hutumika baada ya kuhariri template files zilizo katika usambazaji wa FrontISTR na kisha kujenga upya programu kuu.

Kategoria ya upanuzi Keyword ya analysis control User subroutine kuu Template ya kuhariri
User linear elasticity !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
User hyperelasticity !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
User elastoplasticity (yield function na return mapping) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
General user constitutive law !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
User-defined external load !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

User hardening law (njia ya kubakiza built-in yield function na kutekeleza hardening curve pekee kwa mtumiaji) haitumiki. Ikiwa hardening curve lazima itekelezwe na mtumiaji, chagua !PLASTIC, YIELD=USER na ubadilishe elastoplastic constitutive law nzima kwa utekelezaji wa mtumiaji. Pia hakuna extension points za user boundary conditions au user processing wakati wa restart.

!CREEP ya TYPE=USER haitumiki. Tumia !USER_MATERIAL unapotekeleza time-dependent constitutive law.

Constitutive laws za mtumiaji

User constitutive law ni entry point ya kutekeleza kwa external subroutine uhusiano wa stress–strain ambao hauwezi kuwakilishwa na built-in material models. Kuna njia nne kulingana na framework ya constitutive law inayolingana: user linear elasticity, user hyperelasticity, user elastoplasticity, na general user constitutive law. Kwa kila njia, ongeza !MATERIAL au TYPE=USER kwenye keyword husika ndani ya block ya YIELD=USER katika analysis control data. Hadi user constants 100 zinaweza kutajwa na hupitishwa kwa subroutine.

User linear elasticity

User linear elasticity ni njia ambayo mtumiaji huhesabu elastic matrix ndani ya small-deformation framework. !ELASTIC, TYPE=USER ikiwekwa katika analysis control data, FrontISTR huitendea kama small-deformation constitutive law na huita uElasticMatrix (hurudisha elastic matrix \(D\)) na uElasticUpdate (hurudisha stress) wakati wa element stiffness calculation na stress update. Haitumiki pamoja na hyperelastic au elastoplastic models zilizopo.

User hyperelasticity

User hyperelasticity ni njia ya kuhesabu stress na tangent stiffness kutoka derivatives za strain-energy function katika large-deformation (Total Lagrange) framework. Weka !HYPERELASTIC, TYPE=USER katika analysis control data. Subroutines zinazoitwa ni uElasticMatrix na uElasticUpdate, sawa na user linear elasticity, na zote hutumia template fistr1/src/lib/user/uelastic.f90. Kwa kuwa keyword huamua kama FrontISTR itatumia small-deformation au Total Lagrange treatment, template hiyo hiyo haiwezi kutumika kwa utekelezaji wa small na large deformation kwa wakati mmoja; itekeleze kama constitutive law moja kati ya hizo.

User elastoplasticity

User elastoplasticity ni njia ambayo mtumiaji hutekeleza yield function na utaratibu wa return mapping. Weka !PLASTIC, YIELD=USER katika analysis control data. Hii huingia branch tofauti na built-in yield functions za Mises, Mohr-Coulomb, na Drucker-Prager. uElastoPlasticMatrix (hurudisha elastoplastic tangent stiffness \(D\)) huitwa wakati wa element stiffness calculation, uBackwardEuler (hupanga trial stress kuwa true stress na kusasisha state variables) wakati wa stress update, na uElastoPlasticNumStatus (hurudisha idadi ya real-valued state variables zinazohifadhiwa) wakati wa Gaussian-point initialization. Njia ya kubadilisha hardening curve pekee kwa user implementation haitumiki; ikiwa hardening curve ya mtumiaji inahitajika, elastoplastic constitutive law nzima lazima itekelezwe kupitia njia hii.

General user constitutive law

General user constitutive law ni njia ya kutekeleza kwa pamoja constitutive law isiyoingia katika frameworks za elasticity, hyperelasticity, au elastoplasticity. Weka !USER_MATERIAL katika analysis control data. Kwa default hutendewa kwa Updated Lagrange method; KIRCHHOFF ikitajwa hutendewa kwa Total Lagrange method. Idadi ya state variables huwekwa na NSTATUS. uMatlMatrix (hurudisha tangent stiffness \(D\)) huitwa wakati wa element stiffness calculation, na uUpdate (husasisha stress na state variables) wakati wa stress update.

Kupitisha user constants na state variables

Katika njia za !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER, na !USER_MATERIAL, user constants zilizoandikwa katika data rows za analysis control data (hadi 100) hupitishwa moja kwa moja kwenye argument matl ya subroutine. Kwa !PLASTIC, YIELD=USER, user constants zilizotolewa kupitia data rows za !ELASTIC hupitishwa pamoja na elastic constants zilizowekwa na !PLASTIC.

Kwa general user constitutive law na !PLASTIC, YIELD=USER, state variable fstat inaweza kutumiwa kupitisha history information ya step iliyopita (kama plastic strain, back stress, na damage variable) kwa user implementation na kuiandika tena mwisho wa step. Idadi ya state variables huamuliwa na !USER_MATERIAL ya NSTATUS kwa general user constitutive law, na na return value ya !PLASTIC, YIELD=USER kwa uElastoPlasticNumStatus.

User-defined external loads

User-defined external load ni njia ya kufafanua kwa user subroutine external force isiyoweza kuwakilishwa na built-in concentrated, distributed, au body loads. !ULOAD, FILE=<fname> ikiandikwa katika analysis control data, FrontISTR hupitisha filename iliyotajwa kwa ureadload, na user implementation huhifadhi taarifa iliyosomwa kama data ya ndani ya module.

Kuanzishwa kwa !ULOAD kunahusiana na subroutines tatu zifuatazo.

  • ureadload: mwanzoni mwa analysis, husoma user-defined load kutoka external file iliyotajwa kwenye control file. User implementation hufungua file na kuhifadhi data inayohitajika katika module variables.
  • uloading: huitwa wakati wa kuassemble external-load vector katika kila step na huongeza user load kwenye global load vector. Current step number na load factor hupitishwa kama arguments.
  • uResidual: huitwa wakati wa kuassemble residual vector katika kila iteration na huongeza mchango wa user load kwenye global residual vector. Huitwa kutoka nonlinear iterations na equilibrium calculations.

Hakuna extension point ya user boundary conditions (user extensions za prescribed displacement au contact conditions). Ikiwa upanuzi mwingine zaidi ya external force unahitajika, tumia built-in keyword inayolingana au njia ya user constitutive law.

Utaratibu wa kutekeleza user subroutine

Ili kutumia user subroutine, hariri template file iliyo katika FrontISTR source distribution kisha ujenge upya FrontISTR. User subroutines haziwezi kubadilishwa katika distributed binaries, hivyo source-build environment inahitajika kwa user extensions.

Templates za user subroutines ziko chini ya fistr1/src/lib/user/, na file ya kuhariri imeamuliwa kwa kila kategoria ya upanuzi (tazama jedwali katika Muhtasari wa vipengele kwa filenames). Katika hali ya awali, subroutine bodies katika files hizi ni tupu au zina sample implementation ya linear elasticity; mtumiaji huongeza constitutive law au load definition yake hapo. Baada ya kuhariri template, jenga upya FrontISTR kwa CMake kama kawaida na uendeshe analysis kwa executable ya fistr1 iliyopatikana.

Maelezo zaidi kuhusu maana ya subroutine arguments, utunzaji wa state-variable arrays, na tahadhari za rebuild yamegawanywa katika kurasa za coding guide.

Mada zinazohusiana

AI-assisted translation May contain errors Official docs Status