Pāriet uz saturu

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.

Saistītās tēmas

AI-assisted translation May contain errors Official docs Status