Lietotāja apakšprogrammu paplašinājumi¶
FrontISTR nodrošina lietotāja apakšprogrammu kopu, kas ļauj paplašināt funkcionalitāti, nemainot galveno pirmkodu. Tās aptver konstitutīvo likumu lietotāja realizācijas un lietotāja definētu ārējo slodžu integrēšanu. Šajā nodaļā ir uzskaitīti pieejamie paplašināšanas punkti un analīzes vadības faila atslēgvārdi, ar kuriem katrs no tiem tiek izsaukts. Detalizētu apakšprogrammu argumentu un atkārtotas kompilēšanas procedūru aprakstu skatiet Lietotāja apakšprogrammas (programmēšanas rokasgrāmata).
Funkciju pārskats¶
Lietotāja apakšprogrammu paplašināšanas punkti ir iedalīti divās kategorijās: materiālu konstitutīvie likumi un ārējās slodzes. Konstitutīvo likumu pusē ir četri izsaukšanas ceļi — lineārā elastība, hiperelastība, elastoplastiskums un vispārējs konstitutīvais likums —, un katru aktivizē neatkarīgs atslēgvārds. Ārējo slodžu pusē ir paredzēts ceļš, kas nolasa slodzes informāciju no lietotāja sagatavota ārēja faila un pievieno to globālajam slodzes vektoram un atlikuma vektoram. Katrs paplašinājums kļūst pieejams pēc FrontISTR izplatījumā iekļautā veidnes faila rediģēšanas un galvenās programmas atkārtotas kompilēšanas.
| Paplašinājuma kategorija | Analīzes vadības atslēgvārds | Galvenās lietotāja apakšprogrammas | Rediģējamā veidne |
|---|---|---|---|
| Lietotāja lineārā elastība | !ELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Lietotāja hiperelastība | !HYPERELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Lietotāja elastoplastiskums (tecēšanas funkcija un atgriešanas kartēšana) | !PLASTIC, YIELD=USER | uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus | fistr1/src/lib/user/uyield.f90 |
| Vispārējs lietotāja konstitutīvais likums | !USER_MATERIAL | uMatlMatrix, uUpdate | fistr1/src/lib/user/umat.f90 |
| Lietotāja definēta ārējā slodze | !ULOAD, FILE=<fname> | ureadload, uloading, uResidual | fistr1/src/lib/user/uload.f90 |
Lietotāja definēti cietēšanas likumi (ceļš, kurā tiek saglabāta iebūvētā tecēšanas funkcija un tikai cietēšanas līkne tiek aizstāta ar lietotāja realizāciju) netiek atbalstīti. Ja ir nepieciešama lietotāja definēta cietēšanas līkne, atlasiet !PLASTIC, YIELD=USER un aizstājiet visu elastoplastisko konstitutīvo likumu ar lietotāja realizāciju. Lietotāja robežnosacījumi un paplašināšanas punkti lietotāja apstrādei restartēšanas laikā netiek atbalstīti.
!CREEP ar TYPE=USER netiek atbalstīts. Lai kā lietotāja paplašinājumu realizētu no laika atkarīgu konstitutīvo likumu, izmantojiet !USER_MATERIAL.
Lietotāja konstitutīvie likumi¶
Lietotāja konstitutīvie likumi nodrošina ieejas punktu sprieguma–deformācijas sakarību realizēšanai ārējā apakšprogrammā, ja tās nevar izteikt ar iebūvētajiem materiālu modeļiem. Atbilstoši attiecīgā iebūvētā konstitutīvā likuma ietvaram ir pieejami četri ceļi: lietotāja lineārā elastība, lietotāja hiperelastība, lietotāja elastoplastiskums un vispārējs lietotāja konstitutīvais likums. Katrā ceļā analīzes vadības datu !MATERIAL blokā attiecīgajam atslēgvārdam norādiet TYPE=USER vai YIELD=USER. Var norādīt līdz 100 lietotāja konstantēm, un tās tiek nodotas apakšprogrammai.
Lietotāja lineārā elastība¶
Lietotāja lineārā elastība ir ceļš, kurā lietotājs aprēķina elastības matricu mazo deformāciju ietvarā. Ja analīzes vadības datos ir norādīts !ELASTIC, TYPE=USER, FrontISTR to apstrādā kā mazo deformāciju konstitutīvo likumu un elementa stinguma aprēķinā izsauc uElasticMatrix (kas atgriež elastības matricu \(D\)), bet sprieguma atjaunināšanā — uElasticUpdate (kas atgriež spriegumu). Neizmantojiet to kopā ar esošu hiperelastīgu vai elastoplastisku modeli.
Lietotāja hiperelastība¶
Lietotāja hiperelastība ir ceļš sprieguma un pieskares stinguma aprēķināšanai no deformācijas enerģijas funkcijas atvasinājumiem lielu deformāciju (pilnā Lagranža formulējuma) ietvarā. Analīzes vadības datos norādiet !HYPERELASTIC, TYPE=USER. Tiek izsauktas tās pašas apakšprogrammas uElasticMatrix un uElasticUpdate kā lietotāja lineārajai elastībai, un tiek koplietota tā pati fistr1/src/lib/user/uelastic.f90 veidne. Tā kā atslēgvārda norāde pārslēdz, vai FrontISTR realizāciju apstrādā kā mazo deformāciju vai pilnā Lagranža formulējuma realizāciju, vienu un to pašu veidni nevar vienlaikus izmantot abiem realizācijas veidiem. Realizējiet to kā vienu no šiem diviem konstitutīvajiem likumiem.
Lietotāja elastoplastiskums¶
Lietotāja elastoplastiskums ir ceļš, kurā lietotājs realizē tecēšanas funkciju un atgriešanas kartēšanas procedūru. Analīzes vadības datos norādiet !PLASTIC, YIELD=USER. Tas ieiet atzarā, kas ir neatkarīgs no iebūvētajām fon Mīzesa, Mora–Kulona un Drukera–Prāgera tecēšanas funkcijām. Elementa stinguma aprēķinā tiek izsaukta uElastoPlasticMatrix (kas atgriež elastoplastisko pieskares stingumu \(D\)), sprieguma atjaunināšanā — uBackwardEuler (kas kartē izmēģinājuma spriegumu uz patieso spriegumu un atjaunina stāvokļa mainīgos), bet Gausa punktu inicializācijā — uElastoPlasticNumStatus (kas atgriež saglabājamo reālvērtīgo stāvokļa mainīgo skaitu). Ceļš, kas tikai cietēšanas līkni aizstāj ar lietotāja realizāciju, netiek atbalstīts. Pat ja ir nepieciešama tikai lietotāja definēta cietēšanas līkne, izmantojiet šo ceļu, lai visu elastoplastisko konstitutīvo likumu aizstātu ar lietotāja realizāciju.
Vispārējs lietotāja konstitutīvais likums¶
Vispārējs lietotāja konstitutīvais likums ir ceļš tādu konstitutīvo likumu realizēšanai, kas neietilpst elastības, hiperelastības vai elastoplastiskuma ietvaros. Analīzes vadības datos norādiet !USER_MATERIAL. Pēc noklusējuma tas tiek apstrādāts atjauninātā Lagranža formulējuma ietvarā; ja ir norādīts KIRCHHOFF, tas tiek apstrādāts pilnā Lagranža formulējuma ietvarā. Stāvokļa mainīgo skaitu norāda ar NSTATUS. Elementa stinguma aprēķinā tiek izsaukta uMatlMatrix (kas atgriež pieskares stingumu \(D\)), bet sprieguma atjaunināšanā — uUpdate (kas atjaunina spriegumu un stāvokļa mainīgos).
Lietotāja konstanšu un stāvokļa mainīgo nodošana¶
Katram no ceļiem !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER un !USER_MATERIAL lietotāja konstantes, kas ierakstītas analīzes vadības datu rindās (līdz 100), tiek tieši nodotas apakšprogrammai ar argumentu matl. Ceļam !PLASTIC, YIELD=USER tiek nodotas ar !ELASTIC norādītās elastības konstantes un ar !PLASTIC datu rindām piegādātās lietotāja konstantes.
Vispārējam lietotāja konstitutīvajam likumam un !PLASTIC, YIELD=USER iepriekšējā soļa vēstures informāciju (piemēram, plastisko deformāciju, pretējo spriegumu un bojājumu) var nodot lietotāja realizācijai ar stāvokļa mainīgo fstat un soļa beigās ierakstīt atpakaļ. Stāvokļa mainīgo skaitu vispārējam lietotāja konstitutīvajam likumam nosaka !USER_MATERIAL un tā NSTATUS, bet !PLASTIC, YIELD=USER gadījumā — uElastoPlasticNumStatus atgrieztā vērtība.
Lietotāja definētas ārējās slodzes¶
Lietotāja definētas ārējās slodzes nodrošina ceļu ārējo spēku definēšanai, kurus nevar izteikt ar iebūvētajām koncentrētajām slodzēm, sadalītajām slodzēm vai tilpuma spēkiem. Ja analīzes vadības datos ir ierakstīts !ULOAD, FILE=<fname>, FrontISTR nodod norādīto faila nosaukumu ureadload, un lietotāja realizācijas nolasītā informācija tiek saglabāta kā moduļa dati.
Šādas trīs apakšprogrammas atbilst !ULOAD izsaukšanai.
ureadload: analīzes sākumā nolasa lietotāja definētās slodzes no vadības failā norādītā ārējā faila. Lietotāja realizācija atver failu un saglabā nepieciešamos datus moduļa mainīgajos.uloading: tiek izsaukta katra soļa ārējās slodzes vektora montāžas laikā un pievieno lietotāja slodzi globālajam slodzes vektoram. Pašreizējā soļa numurs un slodzes koeficients tiek nodoti kā argumenti.uResidual: tiek izsaukta atlikuma vektora montāžas laikā katrā iterācijā un pievieno lietotāja slodzes ieguldījumu globālajam atlikuma vektoram. Tā tiek izsaukta gan nelineārajās iterācijās, gan līdzsvara aprēķinos.
Lietotāja robežnosacījumiem (noteikta pārvietojuma vai kontakta nosacījumu lietotāja paplašinājumiem) paplašināšanas punkts nav paredzēts. Ja ir nepieciešams lietotāja paplašinājums, kas nav ārējs spēks, izmantojiet attiecīgo iebūvēto atslēgvārdu vai lietotāja konstitutīvā likuma ceļu.
Lietotāja apakšprogrammu realizēšanas procedūra¶
Lai izmantotu lietotāja apakšprogrammu, rediģējiet FrontISTR pirmkoda izplatījumā iekļauto veidnes failu un pēc tam atkārtoti kompilējiet FrontISTR. Izplatītajos binārajos failos lietotāja apakšprogrammas nevar aizstāt, tāpēc lietotāja paplašinājumam ir nepieciešama vide, kurā FrontISTR var kompilēt no pirmkoda.
Lietotāja apakšprogrammu veidnes atrodas zem fistr1/src/lib/user/, un katrai paplašinājuma kategorijai ir noteikts rediģējamais fails (failu nosaukumus skatiet tabulā sadaļā Funkciju pārskats). Sākotnējā stāvoklī failos ir vai nu tukši apakšprogrammu ķermeņi, vai lineārās elastības realizācijas piemērs; lietotājs tajos pievieno savu konstitutīvo likumu vai slodzes definīciju. Pēc veidnes rediģēšanas parastajā veidā atkārtoti kompilējiet FrontISTR ar CMake un palaidiet analīzi ar iegūto fistr1 izpildāmo failu.
Tāda detalizēta informācija kā apakšprogrammu argumentu nozīme, stāvokļa mainīgo masīvu apstrāde un piesardzības pasākumi atkārtotas kompilēšanas laikā ir sniegta attiecīgajās programmēšanas rokasgrāmatas lapās.
- Lietotāja apakšprogrammas (pārskats)
- Vispārējs lietotāja konstitutīvais likums
umat.f - Lietotāja elastoplastiskums
uyield.f - Lietotāja definēta ārējā slodze
uload.f - Lietotāja lineārā elastība un lietotāja hiperelastība
uelastic.f
Saistītās tēmas¶
- Materiālu dati — konstitutīvo likumu opcijas un iebūvēto modeļu saraksts
- Robežnosacījumi un slodzes — iebūvētie robežnosacījumi un slodzes
- Lietotāja apakšprogrammas (programmēšanas rokasgrāmata) — apakšprogrammu argumentu specifikācijas un realizācijas konvencijas
- !USER_MATERIAL — vispārējā lietotāja konstitutīvā likuma atslēgvārda sintakse
- !ELASTIC — lineārās elastības atslēgvārds, tostarp
TYPE=USER - !HYPERELASTIC — hiperelastības atslēgvārds, tostarp
TYPE=USER - !PLASTIC — elastoplastiskuma atslēgvārds, tostarp
YIELD=USER