Plėtiniai naudotojo paprogramėmis¶
FrontISTR pateikia naudotojo paprogramių rinkinį, kuriuo funkcionalumą galima išplėsti nekeičiant pagrindinio šaltinio kodo. Jis apima naudotojo realizuojamus konstitucinius dėsnius ir naudotojo apibrėžtų išorinių apkrovų integravimą. Šiame skyriuje išvardyti galimi plėtimo taškai ir analizės valdymo failo raktažodžiai, kuriais kiekvienas iš jų iškviečiamas. Išsamius paprogramių argumentus ir perkompiliavimo procedūras žr. Naudotojo paprogramės (programavimo vadovas).
Funkcijų apžvalga¶
Plėtimo taškai naudotojo paprogramėmis skirstomi į dvi kategorijas: medžiagos konstitucinius dėsnius ir išorines apkrovas. Konstitucinių dėsnių pusėje yra keturi iškvietimo keliai – tiesinis elastingumas, hiperelastingumas, elastoplastika ir bendrosios paskirties konstitucinis dėsnis – ir kiekvienas jų įjungiamas atskiru raktažodžiu. Išorinių apkrovų pusėje pateikiamas kelias, kuris perskaito apkrovos informaciją iš naudotojo parengto išorinio failo ir prideda ją prie globaliojo apkrovų vektoriaus bei liekamosios paklaidos vektoriaus. Kiekvienas plėtinys tampa prieinamas paredagavus su FrontISTR pateikiamą šablono failą ir iš naujo sukompiliavus pagrindinę programą.
| Plėtinio kategorija | Analizės valdymo raktažodis | Pagrindinės naudotojo paprogramės | Redaguojamas šablonas |
|---|---|---|---|
| Naudotojo tiesinis elastingumas | !ELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Naudotojo hiperelastingumas | !HYPERELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Naudotojo elastoplastika (takumo funkcija ir grįžtamojo atvaizdavimo procedūra) | !PLASTIC, YIELD=USER | uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus | fistr1/src/lib/user/uyield.f90 |
| Bendrosios paskirties naudotojo konstitucinis dėsnis | !USER_MATERIAL | uMatlMatrix, uUpdate | fistr1/src/lib/user/umat.f90 |
| Naudotojo apibrėžta išorinė apkrova | !ULOAD, FILE=<fname> | ureadload, uloading, uResidual | fistr1/src/lib/user/uload.f90 |
Naudotojo apibrėžti kietėjimo dėsniai (kelias, kuriame paliekama integruota takumo funkcija ir naudotojo realizacija pakeičiama tik kietėjimo kreivė) nepalaikomi. Jei reikalinga naudotojo apibrėžta kietėjimo kreivė, pasirinkite !PLASTIC, YIELD=USER ir visa elastoplastinį konstitucinį dėsnį pakeiskite naudotojo realizacija. Naudotojo kraštinės sąlygos ir plėtimo taškai naudotojo veiksmams paleidžiant iš naujo nepalaikomi.
!CREEP su TYPE=USER nepalaikomas. Nuo laiko priklausomam konstituciniam dėsniui kaip naudotojo plėtiniui realizuoti naudokite !USER_MATERIAL.
Naudotojo konstituciniai dėsniai¶
Naudotojo konstituciniai dėsniai suteikia plėtimo tašką, kuriame išorinėje paprogramėje galima realizuoti įtempio ir deformacijos ryšius, kurių negalima išreikšti integruotais medžiagų modeliais. Pagal atitinkamo integruoto konstitucinio dėsnio sistemą galimi keturi keliai: naudotojo tiesinis elastingumas, naudotojo hiperelastingumas, naudotojo elastoplastika ir bendrosios paskirties naudotojo konstitucinis dėsnis. Kiekvienu keliu analizės valdymo duomenų !MATERIAL bloke atitinkamam raktažodžiui nurodykite TYPE=USER arba YIELD=USER. Galima nurodyti iki 100 naudotojo konstantų; jos perduodamos paprogramei.
Naudotojo tiesinis elastingumas¶
Naudotojo tiesinis elastingumas – tai kelias, kuriame naudotojas apskaičiuoja elastingumo matricą mažųjų deformacijų sistemoje. Analizės valdymo duomenyse nurodžius !ELASTIC, TYPE=USER, FrontISTR tai traktuoja kaip mažųjų deformacijų konstitucinį dėsnį ir elementų standumo skaičiavimo metu kviečia uElasticMatrix (grąžina elastingumo matricą \(D\)), o atnaujindamas įtempius – uElasticUpdate (grąžina įtempį). Nenaudokite kartu su esamu hiperelastiniu arba elastoplastiniu modeliu.
Naudotojo hiperelastingumas¶
Naudotojo hiperelastingumas – tai kelias, skirtas įtempiui ir liestinės standumui apskaičiuoti iš deformacijos energijos funkcijos išvestinių didelių deformacijų (Total Lagrange) sistemoje. Analizės valdymo duomenyse nurodykite !HYPERELASTIC, TYPE=USER. Kviečiamos tos pačios paprogramės uElasticMatrix ir uElasticUpdate kaip ir naudotojo tiesiniam elastingumui, taip pat bendrinamas tas pats fistr1/src/lib/user/uelastic.f90 šablonas. Kadangi raktažodžio nuostata perjungia, ar FrontISTR realizaciją traktuoja kaip mažųjų deformacijų, ar kaip Total Lagrange, to paties šablono negalima vienu metu naudoti abiejoms – mažųjų ir didelių deformacijų – realizacijoms. Realizuokite jį kaip vieną iš šių dviejų konstitucinių dėsnių.
Naudotojo elastoplastika¶
Naudotojo elastoplastika – tai kelias, kuriame naudotojas realizuoja takumo funkciją ir grįžtamojo atvaizdavimo procedūrą. Analizės valdymo duomenyse nurodykite !PLASTIC, YIELD=USER. Taip pasirenkama šaka, nepriklausoma nuo integruotų Mises, Mohr-Coulomb ir Drucker-Prager takumo funkcijų. Elementų standumo skaičiavimo metu kviečiama uElastoPlasticMatrix (grąžina elastoplastinį liestinės standumą \(D\)), atnaujinant įtempius – uBackwardEuler (bandomąjį įtempį atvaizduoja į tikrąjį įtempį ir atnaujina būsenos kintamuosius), o inicializuojant Gauso taškus – uElastoPlasticNumStatus (grąžina saugotinų realiųjų būsenos kintamųjų skaičių). Kelias, kuriame naudotojo realizacija pakeičiama tik kietėjimo kreivė, nepalaikomas. Net jei reikia tik naudotojo apibrėžtos kietėjimo kreivės, šiuo keliu visą elastoplastinį konstitucinį dėsnį pakeiskite naudotojo realizacija.
Bendrosios paskirties naudotojo konstitucinis dėsnis¶
Bendrosios paskirties naudotojo konstitucinis dėsnis – tai kelias, skirtas konstituciniams dėsniams, kurie netelpa į elastinio, hiperelastinio arba elastoplastinio modelio sistemą. Analizės valdymo duomenyse nurodykite !USER_MATERIAL. Pagal numatytąją nuostatą jis apdorojamas Updated Lagrange sistemoje; nurodžius KIRCHHOFF, apdorojamas kaip Total Lagrange. Būsenos kintamųjų skaičius nurodomas NSTATUS. Elementų standumo skaičiavimo metu kviečiama uMatlMatrix (grąžina liestinės standumą \(D\)), o atnaujinant įtempius – uUpdate (atnaujina įtempį ir būsenos kintamuosius).
Naudotojo konstantų ir būsenos kintamųjų perdavimas¶
Kiekvienu iš kelių !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER ir !USER_MATERIAL analizės valdymo duomenų duomenų eilutėse įrašytos naudotojo konstantos (iki 100) tiesiogiai perduodamos paprogramei per argumentą matl. Naudojant !PLASTIC, YIELD=USER, perduodamos !ELASTIC nurodytos elastinės konstantos ir !PLASTIC duomenų eilutėse pateiktos naudotojo konstantos.
Bendrosios paskirties naudotojo konstituciniam dėsniui ir !PLASTIC, YIELD=USER ankstesnio žingsnio istorijos informaciją (pvz., plastinę deformaciją, atgalinį įtempį ir pažeidimą) galima perduoti naudotojo realizacijai per būsenos kintamąjį fstat ir žingsnio pabaigoje į jį įrašyti atnaujintą informaciją. Bendrosios paskirties naudotojo konstitucinio dėsnio būsenos kintamųjų skaičių nustato !USER_MATERIAL ir jo NSTATUS, o !PLASTIC, YIELD=USER atveju – uElastoPlasticNumStatus grąžinama reikšmė.
Naudotojo apibrėžtos išorinės apkrovos¶
Naudotojo apibrėžtos išorinės apkrovos suteikia kelią išorinėms jėgoms, kurių negalima išreikšti integruotomis koncentruotomis, paskirstytomis arba tūrinėmis apkrovomis, apibrėžti. Analizės valdymo duomenyse įrašius !ULOAD, FILE=<fname>, FrontISTR perduoda nurodytą failo vardą į ureadload, o naudotojo realizacijos perskaityta informacija išsaugoma kaip modulio duomenys.
!ULOAD iškvietimą atitinka šios trys paprogramės.
ureadload: analizės pradžioje perskaito naudotojo apibrėžtas apkrovas iš valdymo faile nurodyto išorinio failo. Naudotojo realizacija atidaro failą ir reikiamus duomenis išsaugo modulio kintamuosiuose.uloading: kviečiama surenkant kiekvieno žingsnio išorinių apkrovų vektorių ir prideda naudotojo apkrovą prie globaliojo apkrovų vektoriaus. Kaip argumentai perduodami dabartinio žingsnio numeris ir apkrovos koeficientas.uResidual: kviečiama surenkant liekamosios paklaidos vektorių kiekvienoje iteracijoje ir prideda naudotojo apkrovos indėlį prie globaliojo liekamosios paklaidos vektoriaus. Ji kviečiama ir iš netiesinių iteracijų, ir iš pusiausvyros skaičiavimų.
Naudotojo kraštinėms sąlygoms (nurodyto poslinkio ar kontakto sąlygų naudotojo plėtiniams) plėtimo taškas nepateikiamas. Jei reikia kitokio naudotojo plėtinio nei išorinė jėga, naudokite atitinkamą integruotą raktažodį arba naudotojo konstitucinio dėsnio kelią.
Naudotojo paprogramių realizavimo procedūra¶
Norėdami naudoti naudotojo paprogramę, paredaguokite su FrontISTR šaltinio kodo platinimu pateiktą šablono failą ir tada iš naujo sukompiliuokite FrontISTR. Platinamuose dvejetainiuose failuose naudotojo paprogramių pakeisti negalima, todėl naudotojo plėtiniui reikia aplinkos, kurioje FrontISTR galima sukompiliuoti iš šaltinio kodo.
Naudotojo paprogramių šablonai yra kataloge fistr1/src/lib/user/; kiekvienai plėtinio kategorijai skirtas konkretus redaguojamas failas (failų vardus žr. Funkcijų apžvalgos lentelėje). Pradinėje būsenoje failuose yra arba tušti paprogramių kūnai, arba tiesinio elastingumo pavyzdinė realizacija; naudotojai juose įrašo savo konstitucinį dėsnį arba apkrovos apibrėžimą. Paredagavę šabloną, įprastai iš naujo sukompiliuokite FrontISTR naudodami CMake ir vykdykite analizę gautu fistr1 vykdomuoju failu.
Tokia išsami informacija kaip paprogramių argumentų reikšmės, būsenos kintamųjų masyvų tvarkymas ir atsargumo priemonės perkompiliuojant pateikiama atitinkamuose programavimo vadovo puslapiuose.
- Naudotojo paprogramės (apžvalga)
- Bendrosios paskirties naudotojo konstitucinis dėsnis
umat.f - Naudotojo elastoplastika
uyield.f - Naudotojo apibrėžta išorinė apkrova
uload.f - Naudotojo tiesinis elastingumas ir naudotojo hiperelastingumas
uelastic.f
Taip pat žr.¶
- Medžiagos duomenys — konstitucinių dėsnių parinktys ir integruotų modelių sąrašas
- Kraštinės sąlygos ir apkrovos — integruotos kraštinės sąlygos ir apkrovos
- Naudotojo paprogramės (programavimo vadovas) — paprogramių argumentų specifikacijos ir realizavimo susitarimai
- !USER_MATERIAL — bendrosios paskirties naudotojo konstitucinio dėsnio raktažodžio sintaksė
- !ELASTIC — tiesinio elastingumo raktažodis, įskaitant
TYPE=USER - !HYPERELASTIC — hiperelastingumo raktažodis, įskaitant
TYPE=USER - !PLASTIC — elastoplastikos raktažodis, įskaitant
YIELD=USER