Kalo te përmbajtja

Zgjerimet me nënprograme të përdoruesit

FrontISTR ofron një grup nënprogramesh të përdoruesit për zgjerimin e funksionalitetit pa ndryshuar kodin burimor kryesor. Ato mbulojnë implementimet nga përdoruesi të ligjeve konstitutive dhe integrimin e ngarkesave të jashtme të përcaktuara nga përdoruesi. Ky kapitull rendit pikat e disponueshme të zgjerimit dhe fjalët kyçe në skedarin e kontrollit të analizës që përdoren për të thirrur secilën prej tyre. Për specifikimet e hollësishme të argumenteve të nënprogrameve dhe procedurat e rindërtimit, shihni Nënprogramet e përdoruesit (Udhëzuesi i kodimit).

Përmbledhje e funksioneve

Pikat e zgjerimit me nënprograme të përdoruesit ndahen në dy kategori: ligjet konstitutive të materialit dhe ngarkesat e jashtme. Në anën e ligjeve konstitutive ekzistojnë katër rrugë thirrjeje—elasticiteti linear, hiperelasticiteti, elastoplasticiteti dhe një ligj konstitutiv me përdorim të përgjithshëm—secila e aktivizuar nga një fjalë kyçe e pavarur. Në anën e ngarkesave të jashtme ofrohet një rrugë që lexon informacionin e ngarkesës nga një skedar i jashtëm i përgatitur nga përdoruesi dhe e shton atë në vektorin global të ngarkesës dhe në vektorin e mbetjes. Çdo zgjerim bëhet i disponueshëm pasi të redaktohet skedari shabllon i përfshirë në shpërndarjen e FrontISTR dhe të rindërtohet programi kryesor.

Kategoria e zgjerimit Fjala kyçe e kontrollit të analizës Nënprogramet kryesore të përdoruesit Shablloni për t'u redaktuar
Elasticitet linear i përdoruesit !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Hiperelasticitet i përdoruesit !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Elastoplasticitet i përdoruesit (funksioni i rrjedhjes dhe projektimi i kthimit) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
Ligj konstitutiv i përdoruesit me përdorim të përgjithshëm !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
Ngarkesë e jashtme e përcaktuar nga përdoruesi !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

Ligjet e fortësimit të përcaktuara nga përdoruesi (një rrugë që ruan funksionin e integruar të rrjedhjes duke zëvendësuar vetëm lakoren e fortësimit me një implementim të përdoruesit) nuk mbështeten. Nëse kërkohet një lakore fortësimi e përcaktuar nga përdoruesi, zgjidhni !PLASTIC, YIELD=USER dhe zëvendësoni të gjithë ligjin konstitutiv elastoplastik me një implementim të përdoruesit. Kushtet kufitare të përdoruesit dhe pikat e zgjerimit për përpunimin e përdoruesit gjatë restart-it nuk mbështeten.

!CREEP me TYPE=USER nuk mbështetet. Përdorni !USER_MATERIAL për të implementuar një ligj konstitutiv të varur nga koha si zgjerim i përdoruesit.

Ligjet konstitutive të përdoruesit

Ligjet konstitutive të përdoruesit ofrojnë një pikë hyrjeje për implementimin në një nënprogram të jashtëm të marrëdhënieve sforcim-deformim që nuk mund të përfaqësohen nga modelet e integruara të materialit. Sipas kuadrit të ligjit konstitutiv të integruar përkatës, janë të disponueshme katër rrugë: elasticiteti linear i përdoruesit, hiperelasticiteti i përdoruesit, elastoplasticiteti i përdoruesit dhe një ligj konstitutiv i përdoruesit me përdorim të përgjithshëm. Në secilën rrugë, brenda bllokut !MATERIAL të të dhënave të kontrollit të analizës, përcaktoni TYPE=USER ose YIELD=USER në fjalën kyçe përkatëse. Mund të përcaktohen deri në 100 konstante të përdoruesit dhe ato i kalohen nënprogramit.

Elasticiteti linear i përdoruesit

Elasticiteti linear i përdoruesit është rruga në të cilën përdoruesi llogarit matricën elastike brenda kuadrit të deformimeve infinitesimale. Kur në të dhënat e kontrollit të analizës përcaktohet !ELASTIC, TYPE=USER, FrontISTR e trajton atë si ligj konstitutiv me deformim infinitesimal dhe gjatë llogaritjes së ngurtësisë së elementit thërret uElasticMatrix (që kthen matricën elastike \(D\)), ndërsa gjatë përditësimit të sforcimit thërret uElasticUpdate (që kthen sforcimin). Mos e përdorni së bashku me një model ekzistues hiperelastik ose elastoplastik.

Hiperelasticiteti i përdoruesit

Hiperelasticiteti i përdoruesit është rruga për llogaritjen e sforcimit dhe ngurtësisë tangjente nga derivatet e një funksioni të energjisë së deformimit brenda kuadrit të deformimeve të mëdha (Total Lagrange). Përcaktoni !HYPERELASTIC, TYPE=USER në të dhënat e kontrollit të analizës. Nënprogramet e thirrura janë të njëjtat uElasticMatrix dhe uElasticUpdate si për elasticitetin linear të përdoruesit, dhe ndahet i njëjti shabllon fistr1/src/lib/user/uelastic.f90. Meqenëse përcaktimi i fjalës kyçe ndryshon nëse FrontISTR e trajton implementimin si deformim infinitesimal apo Total Lagrange, i njëjti shabllon nuk mund të përdoret njëkohësisht për implementime me deformime infinitesimale dhe me deformime të mëdha. Implementojeni si njërin prej dy ligjeve konstitutive.

Elastoplasticiteti i përdoruesit

Elastoplasticiteti i përdoruesit është rruga në të cilën përdoruesi implementon funksionin e rrjedhjes dhe procedurën e projektimit të kthimit. Përcaktoni !PLASTIC, YIELD=USER në të dhënat e kontrollit të analizës. Kjo hyn në një degë të pavarur nga funksionet e integruara të rrjedhjes Mises, Mohr-Coulomb dhe Drucker-Prager. uElastoPlasticMatrix (që kthen ngurtësinë tangjente elastoplastike \(D\)) thirret gjatë llogaritjes së ngurtësisë së elementit, uBackwardEuler (që projekton sforcimin provë në sforcimin e vërtetë dhe përditëson ndryshoret e gjendjes) gjatë përditësimit të sforcimit, dhe uElastoPlasticNumStatus (që kthen numrin e ndryshoreve të gjendjes me vlerë reale që duhen ruajtur) gjatë inicializimit të pikave Gauss. Nuk mbështetet një rrugë që zëvendëson vetëm lakoren e fortësimit me një implementim të përdoruesit. Edhe kur nevojitet vetëm një lakore fortësimi e përcaktuar nga përdoruesi, përdorni këtë rrugë për të zëvendësuar të gjithë ligjin konstitutiv elastoplastik me një implementim të përdoruesit.

Ligji konstitutiv i përdoruesit me përdorim të përgjithshëm

Ligji konstitutiv i përdoruesit me përdorim të përgjithshëm është një rrugë për implementimin e ligjeve konstitutive që nuk përshtaten brenda kuadrit elastik, hiperelastik ose elastoplastik. Përcaktoni !USER_MATERIAL në të dhënat e kontrollit të analizës. Si parazgjedhje trajtohet brenda kuadrit Updated Lagrange; kur përcaktohet KIRCHHOFF, trajtohet si Total Lagrange. Numri i ndryshoreve të gjendjes përcaktohet me NSTATUS. uMatlMatrix (që kthen ngurtësinë tangjente \(D\)) thirret gjatë llogaritjes së ngurtësisë së elementit, dhe uUpdate (që përditëson sforcimin dhe ndryshoret e gjendjes) gjatë përditësimit të sforcimit.

Kalimi i konstantave të përdoruesit dhe ndryshoreve të gjendjes

Për secilën nga rrugët !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER dhe !USER_MATERIAL, konstantat e përdoruesit të shkruara në rreshtat e të dhënave në të dhënat e kontrollit të analizës (deri në 100) i kalohen drejtpërdrejt nënprogramit përmes argumentit matl. Për !PLASTIC, YIELD=USER, kalohen konstantat elastike të përcaktuara nga !ELASTIC dhe konstantat e përdoruesit të dhëna përmes rreshtave të të dhënave !PLASTIC.

Për ligjin konstitutiv të përdoruesit me përdorim të përgjithshëm dhe !PLASTIC, YIELD=USER, informacioni historik nga hapi i mëparshëm (si deformimi plastik, sforcimi prapa dhe dëmtimi) mund t'i kalohet implementimit të përdoruesit përmes ndryshores së gjendjes fstat dhe të shkruhet përsëri në fund të hapit. Numri i ndryshoreve të gjendjes përcaktohet, për ligjin konstitutiv të përdoruesit me përdorim të përgjithshëm, nga !USER_MATERIAL dhe NSTATUS i tij, ndërsa për !PLASTIC, YIELD=USER, nga vlera e kthyer prej uElastoPlasticNumStatus.

Ngarkesat e jashtme të përcaktuara nga përdoruesi

Ngarkesat e jashtme të përcaktuara nga përdoruesi ofrojnë një rrugë për përcaktimin e forcave të jashtme që nuk mund të përfaqësohen nga ngarkesat e përqendruara, ngarkesat e shpërndara ose forcat trupore të integruara. Kur në të dhënat e kontrollit të analizës shkruhet !ULOAD, FILE=<fname>, FrontISTR ia kalon emrin e skedarit të përcaktuar ureadload, dhe informacioni i lexuar nga implementimi i përdoruesit ruhet si të dhëna moduli.

Tri nënprogramet e mëposhtme korrespondojnë me thirrjen e !ULOAD.

  • ureadload: Në fillim të analizës, lexon ngarkesat e përcaktuara nga përdoruesi nga skedari i jashtëm i përcaktuar në skedarin e kontrollit. Implementimi i përdoruesit hap skedarin dhe ruan të dhënat e nevojshme në ndryshore moduli.
  • uloading: Thirret gjatë montimit të vektorit të ngarkesës së jashtme për çdo hap dhe shton ngarkesën e përdoruesit në vektorin global të ngarkesës. Numri aktual i hapit dhe faktori i ngarkesës kalohen si argumente.
  • uResidual: Thirret gjatë montimit të vektorit të mbetjes në çdo iteracion dhe shton kontributin e ngarkesës së përdoruesit në vektorin global të mbetjes. Thirret si nga iteracionet jolineare, ashtu edhe nga llogaritjet e ekuilibrit.

Nuk ofrohet pikë zgjerimi për kushtet kufitare të përdoruesit (zgjerime të përdoruesit për zhvendosjen e përshkruar ose kushtet e kontaktit). Nëse nevojitet një zgjerim i përdoruesit përveç një force të jashtme, përdorni fjalën kyçe të integruar përkatëse ose një rrugë të ligjit konstitutiv të përdoruesit.

Procedura për implementimin e nënprogrameve të përdoruesit

Për të përdorur një nënprogram të përdoruesit, redaktoni skedarin shabllon të përfshirë me shpërndarjen e kodit burimor të FrontISTR dhe më pas rindërtoni FrontISTR. Nënprogramet e përdoruesit nuk mund të zëvendësohen në binarët e shpërndarë, prandaj përdorimi i një zgjerimi të përdoruesit kërkon një mjedis ku FrontISTR mund të ndërtohet nga kodi burimor.

Shabllonet e nënprogrameve të përdoruesit ndodhen nën fistr1/src/lib/user/, me një skedar të caktuar për t'u redaktuar për çdo kategori zgjerimi (shihni tabelën te Përmbledhje e funksioneve për emrat e skedarëve). Në gjendjen e tyre fillestare, skedarët përmbajnë ose trupa bosh të nënprogrameve, ose një implementim shembull të elasticitetit linear; përdoruesit shtojnë aty ligjin e tyre konstitutiv ose përkufizimin e ngarkesës. Pas redaktimit të shabllonit, rindërtoni FrontISTR normalisht me CMake dhe ekzekutoni analizën me ekzekutuesin fistr1 të krijuar.

Hollësi si kuptimi i argumenteve të nënprogrameve, trajtimi i vargjeve të ndryshoreve të gjendjes dhe masat paraprake gjatë rindërtimit jepen në faqet përkatëse të udhëzuesit të kodimit.

Shihni gjithashtu

AI-assisted translation May contain errors Official docs Status