Kasutaja alamprogrammide laiendused¶
FrontISTR pakub kasutaja alamprogramme funktsionaalsuse laiendamiseks ilma põhilähtekoodi muutmata. Need hõlmavad konstitutiivsete seaduste kasutajateostusi ja kasutaja määratud väliskoormuste integreerimist. Selles peatükis loetletakse saadaolevad laienduspunktid ja analüüsi juhtfaili märksõnad, millega neid kutsutakse. Alamprogrammide argumente ja uuesti kompileerimise protseduuri vt Kasutaja alamprogrammidest (programmeerimisjuhend).
Funktsioonide ülevaade¶
Kasutaja alamprogrammide laienduspunktid jagunevad kahte kategooriasse: materjali konstitutiivsed seadused ja väliskoormused. Konstitutiivsete seaduste jaoks on neli kutseteed — lineaarne elastsus, hüperelastsus, elastoplastsus ja üldotstarbeline konstitutiivne seadus — ning igaüks aktiveeritakse eraldi märksõnaga. Väliskoormuse jaoks on tee, mis loeb kasutaja koostatud välisfailist koormusinfo ning lisab selle globaalsesse koormus- ja jääkvektorisse. Iga laiendus muutub kasutatavaks pärast FrontISTR-i distributsioonis oleva mallifaili muutmist ja põhiprogrammi uuesti kompileerimist.
| Laienduse kategooria | Analüüsi juhtmärksõna | Peamised kasutaja alamprogrammid | Muudetav mall |
|---|---|---|---|
| Kasutaja lineaarne elastsus | !ELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Kasutaja hüperelastsus | !HYPERELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Kasutaja elastoplastsus (voolavusfunktsioon ja return mapping) | !PLASTIC, YIELD=USER | uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus | fistr1/src/lib/user/uyield.f90 |
| Üldotstarbeline kasutaja konstitutiivne seadus | !USER_MATERIAL | uMatlMatrix, uUpdate | fistr1/src/lib/user/umat.f90 |
| Kasutaja määratud väliskoormus | !ULOAD, FILE=<fname> | ureadload, uloading, uResidual | fistr1/src/lib/user/uload.f90 |
Kasutaja määratud kalestumisseadusi (tee, mis jätaks sisseehitatud voolavusfunktsiooni alles ja asendaks ainult kalestumiskõvera kasutajateostusega) ei toetata. Kui kasutaja määratud kalestumiskõver on vajalik, valige !PLASTIC, YIELD=USER ja asendage kogu elastoplastne konstitutiivne seadus kasutajateostusega. Kasutaja rajatingimusi ega taaskäivituse ajal kasutajatöötluse laienduspunkte ei toetata.
!CREEP koos TYPE=USER-iga pole toetatud. Ajast sõltuva konstitutiivse seaduse kasutajalaiendusena teostamiseks kasutage !USER_MATERIAL.
Kasutaja konstitutiivsed seadused¶
Kasutaja konstitutiivsed seadused annavad sisenemispunkti selliste pinge-deformatsiooni seoste teostamiseks välises alamprogrammis, mida sisseehitatud materjalimudelid ei kirjelda. Vastavalt sisseehitatud konstitutiivse seaduse raamistikule on saadaval neli teed: kasutaja lineaarne elastsus, hüperelastsus, elastoplastsus ja üldotstarbeline kasutaja konstitutiivne seadus. Iga tee korral määrake analüüsi juhtandmete !MATERIAL plokis vastava märksõna juures TYPE=USER või YIELD=USER. Määrata saab kuni 100 kasutajakonstanti, mis edastatakse alamprogrammile.
Kasutaja lineaarne elastsus¶
Kasutaja lineaarne elastsus on tee, kus kasutaja arvutab infinitesimaalsete deformatsioonide raamistikus elastsusmaatriksi. Kui analüüsi juhtandmetes on määratud !ELASTIC, TYPE=USER, käsitleb FrontISTR seda infinitesimaalse deformatsiooni konstitutiivse seadusena ning kutsub elemendi jäikuse arvutamisel uElasticMatrix-it (tagastab elastsusmaatriksi \(D\)) ja pinge uuendamisel uElasticUpdate-i (tagastab pinge). Ärge kasutage seda koos olemasoleva hüperelastse või elastoplastse mudeliga.
Kasutaja hüperelastsus¶
Kasutaja hüperelastsus on tee pinge ja puutujäikuse arvutamiseks deformatsioonienergia funktsiooni tuletistest suurte deformatsioonide (Total Lagrange) raamistikus. Määrake analüüsi juhtandmetes !HYPERELASTIC, TYPE=USER. Kutsutavad alamprogrammid on samad uElasticMatrix ja uElasticUpdate nagu kasutaja lineaarse elastsuse puhul ning kasutatakse sama malli fistr1/src/lib/user/uelastic.f90. Kuna märksõna määrab, kas FrontISTR käsitleb teostust infinitesimaalse deformatsiooni või Total Lagrange’i konstitutiivse seadusena, ei saa sama malli samaaegselt kasutada mõlema jaoks. Teostage see ühena kahest konstitutiivsest seadusest.
Kasutaja elastoplastsus¶
Kasutaja elastoplastsus on tee, kus kasutaja teostab voolavusfunktsiooni ja return-mapping-protseduuri. Määrake analüüsi juhtandmetes !PLASTIC, YIELD=USER. See kasutab sisseehitatud Misesi, Mohr-Coulombi ja Drucker-Prageri voolavusfunktsioonidest sõltumatut haru. Elemendi jäikuse arvutamisel kutsutakse uElastoPlasticMatrix-it (tagastab elastoplastse puutujäikuse \(D\)), pinge uuendamisel uBackwardEuler-it (teisendab proovipinge tegelikuks pingeks ja uuendab olekumuutujaid) ning Gaussi punkti initsialiseerimisel uElastoPlasticNumStatus-t (tagastab säilitatavate reaalarvuliste olekumuutujate arvu). Ainult kalestumiskõvera asendamist kasutajateostusega ei toetata. Ka siis, kui vaja on ainult kasutaja määratud kalestumiskõverat, kasutage seda teed kogu elastoplastse konstitutiivse seaduse asendamiseks kasutajateostusega.
Üldotstarbeline kasutaja konstitutiivne seadus¶
Üldotstarbeline kasutaja konstitutiivne seadus on tee selliste seaduste teostamiseks, mis ei mahu elastse, hüperelastse ega elastoplastse raamistiku alla. Määrake analüüsi juhtandmetes !USER_MATERIAL. Vaikimisi käsitletakse seda Updated Lagrange’i raamistikus; KIRCHHOFF määramisel Total Lagrange’i raamistikus. Olekumuutujate arv määratakse NSTATUS-iga. Elemendi jäikuse arvutamisel kutsutakse uMatlMatrix-it (tagastab puutujäikuse \(D\)) ja pinge uuendamisel uUpdate-i (uuendab pinget ja olekumuutujaid).
Kasutajakonstantide ja olekumuutujate edastamine¶
Teedel !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER ja !USER_MATERIAL edastatakse analüüsi juhtandmete andmeridadele kirjutatud kasutajakonstandid (kuni 100) otse alamprogrammile argumendi matl kaudu. !PLASTIC, YIELD=USER puhul edastatakse !ELASTIC-iga määratud elastsuskonstandid ja !PLASTIC andmeridade kaudu antud kasutajakonstandid.
Üldotstarbelise kasutaja konstitutiivse seaduse ja !PLASTIC, YIELD=USER korral saab eelmise sammu ajalooteabe (näiteks plastne deformatsioon, vastupinge ja kahjustus) edastada kasutajateostusele olekumuutuja fstat kaudu ja sammu lõpus tagasi kirjutada. Olekumuutujate arvu määrab üldotstarbelise konstitutiivse seaduse puhul !USER_MATERIAL koos NSTATUS-iga ning !PLASTIC, YIELD=USER puhul uElastoPlasticNumStatus tagastusväärtus.
Kasutaja määratud väliskoormused¶
Kasutaja määratud väliskoormused annavad tee selliste välisjõudude määramiseks, mida sisseehitatud koondkoormuste, jaotatud koormuste või mahujõududega esitada ei saa. Kui analüüsi juhtandmetes on !ULOAD, FILE=<fname>, edastab FrontISTR määratud failinime ureadload-ile ning kasutajateostuse loetud teave säilitatakse mooduliandmetena.
!ULOAD kutsele vastavad järgmised kolm alamprogrammi.
ureadload: loeb analüüsi alguses juhtfailis määratud välisfailist kasutaja määratud koormused. Kasutajateostus avab faili ja salvestab vajalikud andmed moodulimuutujatesse.uloading: kutsutakse iga sammu väliskoormusvektori assembleerimisel ja lisab kasutajakoormuse globaalsesse koormusvektorisse. Argumentidena edastatakse jooksva sammu number ja koormustegur.uResidual: kutsutakse igas iteratsioonis jääkvektori assembleerimisel ja lisab kasutajakoormuse panuse globaalsesse jääkvektorisse. Seda kutsutakse nii mittelineaarsetest iteratsioonidest kui ka tasakaaluarvutustest.
Kasutaja rajatingimustele (etteantud nihke või kontaktitingimuste kasutajalaiendustele) laienduspunkti ei pakuta. Kui vaja on muud kasutajalaiendust kui välisjõud, kasutage vastavat sisseehitatud märksõna või kasutaja konstitutiivse seaduse teed.
Kasutaja alamprogrammide teostamise protseduur¶
Kasutaja alamprogrammi kasutamiseks muutke FrontISTR-i lähtekoodidistributsioonis olevat mallifaili ja kompileerige FrontISTR uuesti. Valmis binaarpaketis ei saa kasutaja alamprogramme asendada, seega nõuab kasutajalaienduse kasutamine keskkonda, kus FrontISTR-i saab lähtekoodist ehitada.
Kasutaja alamprogrammide mallid asuvad kataloogis fistr1/src/lib/user/; iga laienduskategooria jaoks on konkreetne muudetav fail (failinimesid vt tabelist Funktsioonide ülevaade). Algselt sisaldavad failid kas tühje alamprogrammikehi või lineaarse elastsuse näidisteostust; kasutaja lisab sinna oma konstitutiivse seaduse või koormuse määratluse. Pärast malli muutmist kompileerige FrontISTR tavapäraselt CMake’iga ja käivitage analüüs saadud fistr1 täitmisfailiga.
Alamprogrammi argumentide tähendus, olekumuutujate massiivide käsitlus ja uuesti kompileerimise ettevaatusabinõud on toodud programmeerimisjuhendi vastavatel lehtedel.
- Kasutaja alamprogrammid (ülevaade)
- Üldotstarbeline kasutaja konstitutiivne seadus
umat.f - Kasutaja elastoplastsus
uyield.f - Kasutaja määratud väliskoormus
uload.f - Kasutaja lineaarne elastsus ja hüperelastsus
uelastic.f
Vaata ka¶
- Materjaliandmed — konstitutiivse seaduse valikud ja sisseehitatud mudelite loend
- Rajatingimused ja koormused — sisseehitatud rajatingimused ja koormused
- Kasutaja alamprogrammid (programmeerimisjuhend) — alamprogrammide argumentide spetsifikatsioonid ja teostusreeglid
- !USER_MATERIAL — üldotstarbelise kasutaja konstitutiivse seaduse märksõna süntaks
- !ELASTIC — lineaarse elastsuse märksõna, sh
TYPE=USER - !HYPERELASTIC — hüperelastsuse märksõna, sh
TYPE=USER - !PLASTIC — elastoplastsuse märksõna, sh
YIELD=USER