Paplašināšana ar lietotāja apakšprogrammām¶
FrontISTR nodrošina lietotāja apakšprogrammu kopu, kas ļauj paplašināt funkcionalitāti, nemainot paša FrontISTR pirmkodu. Tās paredzētas lietotāja realizētiem konstitutīvajiem likumiem un lietotāja definētām ārējām slodzēm. Šajā nodaļā ir uzskaitīti paplašināšanas punkti un analīzes vadības faila atslēgvārdi, ar kuriem tie tiek aktivizēti. Detalizētu apakšprogrammu argumentu specifikāciju un pārbūvēšanas procedūru skatiet sadaļā Lietotāja apakšprogrammas (programmēšanas rokasgrāmata).
Funkcionalitātes pārskats¶
Paplašināšanas punkti ar lietotāja apakšprogrammām iedalās divās grupās: materiālu konstitutīvie likumi un ārējās slodzes. Konstitutīvajiem likumiem ir četri neatkarīgi izsaukšanas ceļi: lietotāja lineārā elastība, hiperelastība, elastoplastiskums un vispārīgs lietotāja konstitutīvais likums; katru aktivizē ar atsevišķu atslēgvārdu. Ārējo slodžu ceļš nolasa slodzes informāciju no lietotāja sagatavota ārēja faila un pieskaita to globālajam slodzes vektoram un atlikuma vektoram. Visos gadījumos jārediģē FrontISTR izplatījumā iekļautais veidnes fails un pēc tam jāpārbūvē FrontISTR.
| 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 (plūšanas funkcija un atgriešanas kartēšana) | !PLASTIC, YIELD=USER | uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus | fistr1/src/lib/user/uyield.f90 |
| Vispārīgs 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 cietēšanas likums (ceļš, kur iebūvētā plūšanas funkcija tiek saglabāta, bet lietotājs realizē tikai cietēšanas līkni) netiek atbalstīts. Ja cietēšanas līkne jārealizē lietotājam, izvēlieties !PLASTIC, YIELD=USER un aizstājiet visu elastoplastisko konstitutīvo likumu ar lietotāja realizāciju. Lietotāja robežnosacījumi un lietotāja apstrādes paplašināšanas punkti restartēšanas laikā netiek atbalstīti.
TYPE=USER atslēgvārdam !CREEP netiek atbalstīts. Laikatkarīgam lietotāja konstitutīvajam likumam izmantojiet !USER_MATERIAL.
Lietotāja konstitutīvie likumi¶
Lietotāja konstitutīvie likumi ir ieejas punkts sprieguma–deformācijas sakarību realizēšanai ārējās apakšprogrammās, ja tās nevar aprakstīt ar iebūvētajiem materiālu modeļiem. Atbilstoši iebūvēto konstitutīvo likumu ietvariem ir četri ceļi: lietotāja lineārā elastība, lietotāja hiperelastība, lietotāja elastoplastiskums un vispārīgs lietotāja konstitutīvais likums. Katrā ceļā attiecīgajam atslēgvārdam analīzes vadības datu !MATERIAL blokā pievieno TYPE=USER vai YIELD=USER. Var norādīt līdz 100 lietotāja konstantēm, kas 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 mazu deformāciju ietvarā. Ja analīzes vadības datos norādīts !ELASTIC, TYPE=USER, FrontISTR to apstrādā kā mazu deformāciju konstitutīvo likumu un elementa stinguma aprēķina un sprieguma atjaunināšanas brīžos izsauc uElasticMatrix (atgriež elastības matricu \(D\)) un uElasticUpdate (atgriež spriegumu). To nelieto kopā ar esošajiem hiperelastības vai elastoplastiskuma modeļiem.
Lietotāja hiperelastība¶
Lietotāja hiperelastība ir ceļš, kurā spriegumu un pieskares stingumu lielu deformāciju (Total Lagrange) ietvarā aprēķina no deformācijas enerģijas funkcijas atvasinājumiem. Analīzes vadības datos norāda !HYPERELASTIC, TYPE=USER. Tiek izsauktas tās pašas apakšprogrammas uElasticMatrix un uElasticUpdate kā lietotāja lineārajai elastībai, un arī veidne ir kopīga — fistr1/src/lib/user/uelastic.f90. Atslēgvārda izvēle nosaka, vai FrontISTR to apstrādā kā mazu deformāciju vai Total Lagrange formulējumu, tādēļ vienu un to pašu veidni nevar vienlaikus izmantot gan mazu, gan lielu deformāciju realizācijai. Tā jārealizē kā viens no šiem konstitutīvajiem likumiem.
Lietotāja elastoplastiskums¶
Lietotāja elastoplastiskums ir ceļš, kurā lietotājs realizē plūšanas funkciju un atgriešanas kartēšanas (return-mapping) procedūru. Analīzes vadības datos norāda !PLASTIC, YIELD=USER. Tas izmanto atsevišķu zaru no iebūvētajām Mises, Mohr-Coulomb un Drucker-Prager plūšanas funkcijām. Elementa stinguma aprēķinā tiek izsaukta uElastoPlasticMatrix (atgriež elastoplastisko pieskares stingumu \(D\)), sprieguma atjaunināšanā — uBackwardEuler (kartē izmēģinājuma spriegumu uz patieso spriegumu un atjaunina stāvokļa mainīgos), bet Gausa punktu inicializācijā — uElastoPlasticNumStatus (atgriež saglabājamo reālo stāvokļa mainīgo skaitu). Ceļš tikai cietēšanas līknes aizstāšanai ar lietotāja realizāciju netiek atbalstīts. Arī tad, ja lietotājam jārealizē tikai cietēšanas līkne, ar šo ceļu jāaizstāj viss elastoplastiskais konstitutīvais likums.
Vispārīgs lietotāja konstitutīvais likums¶
Vispārīgs lietotāja konstitutīvais likums ir ceļš tādu konstitutīvo likumu vienotai realizēšanai, kas neietilpst elastības, hiperelastības vai elastoplastiskuma ietvaros. Analīzes vadības datos norāda !USER_MATERIAL. Pēc noklusējuma tas tiek apstrādāts Updated Lagrange ietvarā, bet, ja norādīts KIRCHHOFF, — Total Lagrange ietvarā. Stāvokļa mainīgo skaitu norāda ar NSTATUS. Elementa stinguma aprēķinā tiek izsaukta uMatlMatrix (atgriež pieskares stingumu \(D\)), bet sprieguma atjaunināšanā — uUpdate (atjaunina spriegumu un stāvokļa mainīgos).
Lietotāja konstantu un stāvokļa mainīgo nodošana¶
Ceļos !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER un !USER_MATERIAL lietotāja konstantes (līdz 100), kas ierakstītas analīzes vadības datu datu rindās, tiek tieši nodotas apakšprogrammas argumentā matl. Ceļā !PLASTIC, YIELD=USER kopā ar !ELASTIC norādītajām elastības konstantēm tiek nodotas lietotāja konstantes, kas dotas !PLASTIC datu rindās.
Vispārīgajā lietotāja konstitutīvajā likumā un !PLASTIC, YIELD=USER ceļā stāvokļa mainīgie fstat ļauj nodot lietotāja realizācijai iepriekšējā soļa vēstures informāciju (piemēram, plastisko deformāciju, pretspiedienu vai bojājuma lielumu) un ierakstīt to atpakaļ soļa beigās. Stāvokļa mainīgo skaitu vispārīgajam lietotāja konstitutīvajam likumam nosaka NSTATUS atslēgvārdā !USER_MATERIAL, bet !PLASTIC, YIELD=USER gadījumā — uElastoPlasticNumStatus atgrieztā vērtība.
Lietotāja definētas ārējās slodzes¶
Lietotāja definēta ārējā slodze ir ceļš ārējo spēku noteikšanai ar lietotāja apakšprogrammu, ja tos nevar aprakstīt ar iebūvētu koncentrētu slodzi, sadalītu slodzi vai tilpuma spēku. Ja analīzes vadības datos ieraksta !ULOAD, FILE=<fname>, FrontISTR nodod norādīto faila nosaukumu funkcijai ureadload, un lietotāja realizācija saglabā nolasīto informāciju kā moduļa datus.
!ULOAD aktivizēšanai atbilst šādas trīs apakšprogrammas.
ureadload: analīzes sākumā nolasa lietotāja definēto slodzi no vadības failā norādīta ārēja 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 pieskaita lietotāja slodzi globālajam slodzes vektoram. Kā argumenti tiek nodots pašreizējā soļa numurs un slodzes koeficients.uResidual: tiek izsaukta atlikuma vektora montāžas laikā katrā iterācijā un pieskaita lietotāja slodzes ieguldījumu globālajam atlikuma vektoram. To izsauc gan nelineārās iterācijas, gan līdzsvara aprēķina laikā.
Paplašināšanas punkti lietotāja robežnosacījumiem (uzdoto pārvietojumu un kontakta nosacījumu lietotāja paplašinājumiem) nav nodrošināti. Ja nepieciešams lietotāja paplašinājums, kas nav ārējs spēks, izmantojiet atbilstošo 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šprogrammas, jārediģē FrontISTR pirmkoda izplatījumā iekļautie veidņu faili un pēc tam jāpārbūvē FrontISTR. Izplatītajos binārajos failos lietotāja apakšprogrammas nevar aizstāt, tādēļ lietotāja paplašinājumiem nepieciešama vide FrontISTR būvēšanai no pirmkoda.
Lietotāja apakšprogrammu veidnes atrodas fistr1/src/lib/user/, un rediģējamais fails ir noteikts katrai paplašinājuma kategorijai (failu nosaukumus skatiet tabulā Funkcionalitātes pārskats). Sākotnēji apakšprogrammas šajos failos ir vai nu tukšas, vai satur lineārās elastības parauga realizāciju; lietotājs tajās pievieno savu konstitutīvā likuma vai slodzes definīciju. Pēc veidnes rediģēšanas pārbūvējiet FrontISTR kā parasti ar CMake un veiciet analīzi ar iegūto izpildāmo failu fistr1.
Detalizēta apakšprogrammu argumentu nozīme, stāvokļa mainīgo masīvu apstrāde un piezīmes par pārbūvēšanu ir aprakstītas atsevišķās programmēšanas rokasgrāmatas lapās.
- Lietotāja apakšprogrammas (pārskats)
- Vispārīgs 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 izvēles 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ācija un realizēšanas noteikumi
- !USER_MATERIAL — vispārīgā lietotāja konstitutīvā likuma atslēgvārda sintakse
- !ELASTIC — lineārās elastības atslēgvārds, kas ietver
TYPE=USER - !HYPERELASTIC — hiperelastības atslēgvārds, kas ietver
TYPE=USER - !PLASTIC — elastoplastiskuma atslēgvārds, kas ietver
YIELD=USER