Ընդլայնում օգտատիրոջ ենթածրագրերով¶
FrontISTR-ը տրամադրում է օգտատիրոջ ենթածրագրերի հավաքածու՝ առանց հիմնական սկզբնաղբյուրը փոփոխելու գործառույթները ընդլայնելու համար։ Դրանք ընդգրկում են որոշիչ օրենքների օգտատիրոջ իրականացումները և օգտատիրոջ կողմից սահմանված արտաքին բեռների ներառումը։ Այս գլխում թվարկվում են ընդլայնման հասանելի կետերը և վերլուծության կառավարման ֆայլի բանալի բառերը, որոնցով դրանք կանչվում են։ Ենթածրագրերի արգումենտների մանրամասն սահմանումների և վերակառուցման ընթացակարգի համար տես Օգտատիրոջ ենթածրագրեր (կոդավորման ուղեցույց)։
Ֆունկցիոնալ հնարավորությունների ընդհանուր պատկերը¶
Օգտատիրոջ ենթածրագրերով ընդլայնման կետերը բաժանվում են երկու խմբի՝ նյութի որոշիչ օրենքներ և արտաքին բեռներ։ Որոշիչ օրենքների համար կան չորս անկախ կանչման ուղիներ՝ գծային առաձգականություն, հիպերառաձգականություն, առաձգապլաստիկություն և ընդհանուր նշանակության որոշիչ օրենք, որոնցից յուրաքանչյուրը միացվում է առանձին բանալի բառով։ Արտաքին բեռների համար նախատեսված է ուղի, որը օգտատիրոջ արտաքին ֆայլից կարդում է բեռի տվյալները և դրանք ավելացնում ընդհանուր բեռի վեկտորին ու մնացորդի վեկտորին։ Բոլոր դեպքերում անհրաժեշտ է խմբագրել FrontISTR-ի բաշխման մեջ ներառված ձևանմուշային ֆայլը և ապա վերակառուցել ծրագիրը։
| Ընդլայնման կատեգորիա | Վերլուծության կառավարման բանալի բառ | Հիմնական օգտատիրոջ ենթածրագրեր | Խմբագրվող ձևանմուշ |
|---|---|---|---|
| Օգտատիրոջ գծային առաձգականություն | !ELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Օգտատիրոջ հիպերառաձգականություն | !HYPERELASTIC, TYPE=USER | uElasticMatrix, uElasticUpdate | fistr1/src/lib/user/uelastic.f90 |
| Օգտատիրոջ առաձգապլաստիկություն (հոսունության ֆունկցիա և վերադարձի արտապատկերում) | !PLASTIC, YIELD=USER | uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus | fistr1/src/lib/user/uyield.f90 |
| Ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենք | !USER_MATERIAL | uMatlMatrix, uUpdate | fistr1/src/lib/user/umat.f90 |
| Օգտատիրոջ կողմից սահմանված արտաքին բեռ | !ULOAD, FILE=<fname> | ureadload, uloading, uResidual | fistr1/src/lib/user/uload.f90 |
Օգտատիրոջ կարծրացման օրենքը՝ այն ուղին, որտեղ ներկառուցված հոսունության ֆունկցիան պահպանվում է, իսկ միայն կարծրացման կորը իրականացվում է օգտատիրոջ կողմից, չի աջակցվում։ Եթե կարծրացման կորը պետք է իրականացվի օգտատիրոջ կողմից, ընտրեք !PLASTIC, YIELD=USER և օգտատիրոջ իրականացմամբ փոխարինեք ամբողջ առաձգապլաստիկ որոշիչ օրենքը։ Օգտատիրոջ սահմանային պայմանների և վերագործարկման ժամանակ օգտատիրոջ մշակման ընդլայնման կետերը նույնպես չեն աջակցվում։
!CREEP-ի TYPE=USER տարբերակը չի աջակցվում։ Ժամանակից կախված որոշիչ օրենք օգտատիրոջ կողմից իրականացնելու համար օգտագործեք !USER_MATERIAL։
Օգտատիրոջ որոշիչ օրենքներ¶
Օգտատիրոջ որոշիչ օրենքները մուտքի կետ են՝ ներկառուցված նյութական մոդելներով չներկայացվող լարում–դեֆորմացիա կապը արտաքին ենթածրագրում իրականացնելու համար։ Համապատասխան ներկառուցված որոշիչ օրենքի շրջանակին համապատասխան կան չորս ուղիներ՝ օգտատիրոջ գծային առաձգականություն, օգտատիրոջ հիպերառաձգականություն, օգտատիրոջ առաձգապլաստիկություն և ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենք։ Բոլոր ուղիներում վերլուծության կառավարման տվյալների !MATERIAL բլոկի համապատասխան բանալի բառին ավելացվում է TYPE=USER կամ YIELD=USER։ Կարելի է նշել մինչև 100 օգտատիրոջ հաստատուն, որոնք փոխանցվում են ենթածրագրին։
Օգտատիրոջ գծային առաձգականություն¶
Այս ուղիով օգտատերը փոքր դեֆորմացիաների շրջանակում հաշվարկում է առաձգականության մատրիցը։ Եթե վերլուծության կառավարման տվյալներում նշված է !ELASTIC, TYPE=USER, FrontISTR-ը այն մշակում է որպես փոքր դեֆորմացիաների որոշիչ օրենք և տարրի կոշտության հաշվարկի ու լարումների թարմացման համապատասխան պահերին կանչում uElasticMatrix-ը (վերադարձնում է առաձգականության \(D\) մատրիցը) և uElasticUpdate-ը (վերադարձնում է լարումը)։ Այն չի համակցվում ներկառուցված հիպերառաձգական կամ առաձգապլաստիկ մոդելների հետ։
Օգտատիրոջ հիպերառաձգականություն¶
Այս ուղիով մեծ դեֆորմացիաների (Total Lagrange) շրջանակում լարումն ու շոշափող կոշտությունը հաշվարկվում են դեֆորմացիոն էներգիայի ֆունկցիայի ածանցյալներից։ Վերլուծության կառավարման տվյալներում նշվում է !HYPERELASTIC, TYPE=USER։ Կանչվող ենթածրագրերը նույն uElasticMatrix և uElasticUpdate ենթածրագրերն են, ինչ օգտատիրոջ գծային առաձգականության դեպքում, և երկու ուղիներն էլ օգտագործում են fistr1/src/lib/user/uelastic.f90 ձևանմուշը։ Քանի որ բանալի բառի ընտրությամբ FrontISTR-ը փոխում է փոքր դեֆորմացիայի և Total Lagrange մշակման միջև, նույն ձևանմուշի իրականացումը չի կարող միաժամանակ օգտագործվել և՛ փոքր, և՛ մեծ դեֆորմացիաների համար։ Այն պետք է իրականացվի որպես դրանցից մեկի որոշիչ օրենք։
Օգտատիրոջ առաձգապլաստիկություն¶
Այս ուղիով օգտատերը իրականացնում է հոսունության ֆունկցիան և վերադարձի արտապատկերման (return-mapping) ընթացակարգը։ Վերլուծության կառավարման տվյալներում նշվում է !PLASTIC, YIELD=USER։ Սա առանձին ճյուղ է ներկառուցված Mises, Mohr-Coulomb և Drucker-Prager հոսունության ֆունկցիաներից։ Տարրի կոշտության հաշվարկի ժամանակ կանչվում է uElastoPlasticMatrix-ը (վերադարձնում է առաձգապլաստիկ շոշափող կոշտության \(D\) մատրիցը), լարումների թարմացման ժամանակ՝ uBackwardEuler-ը (փորձնական լարումը արտապատկերում է իրական լարման վրա և թարմացնում վիճակի փոփոխականները), իսկ Գաուսի կետերի սկզբնավորման ժամանակ՝ uElastoPlasticNumStatus-ը (վերադարձնում է պահվող իրական վիճակի փոփոխականների թիվը)։ Միայն կարծրացման կորը օգտատիրոջ իրականացմամբ փոխարինելու ուղի չկա։ Այդ դեպքում նույնպես այս ուղիով պետք է օգտատիրոջ իրականացմամբ փոխարինել ամբողջ առաձգապլաստիկ որոշիչ օրենքը։
Ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենք¶
Այս ուղին նախատեսված է այն որոշիչ օրենքների միասնական իրականացման համար, որոնք չեն տեղավորվում առաձգականության, հիպերառաձգականության կամ առաձգապլաստիկության շրջանակում։ Վերլուծության կառավարման տվյալներում նշվում է !USER_MATERIAL։ Լռելյայն այն մշակվում է Updated Lagrange մեթոդի շրջանակում, իսկ KIRCHHOFF նշելու դեպքում՝ Total Lagrange մեթոդով։ Վիճակի փոփոխականների թիվը նշվում է NSTATUS-ով։ Տարրի կոշտության հաշվարկի ժամանակ կանչվում է uMatlMatrix-ը (վերադարձնում է շոշափող կոշտության \(D\) մատրիցը), իսկ լարումների թարմացման ժամանակ՝ uUpdate-ը (թարմացնում է լարումն ու վիճակի փոփոխականները)։
Օգտատիրոջ հաստատունների և վիճակի փոփոխականների փոխանցում¶
!ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER և !USER_MATERIAL ուղիներից յուրաքանչյուրում վերլուծության կառավարման տվյալների տվյալային տողերում գրված օգտատիրոջ հաստատունները (առավելագույնը 100) անմիջապես փոխանցվում են ենթածրագրի matl արգումենտին։ !PLASTIC, YIELD=USER-ի դեպքում !ELASTIC-ում նշված առաձգական հաստատունների հետ փոխանցվում են նաև !PLASTIC-ի տվյալային տողերով տրված օգտատիրոջ հաստատունները։
Ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենքի և !PLASTIC, YIELD=USER-ի դեպքում fstat վիճակի փոփոխականների միջոցով կարելի է նախորդ քայլի պատմության տվյալները (պլաստիկ դեֆորմացիա, հակալարում, վնասման չափ և այլն) փոխանցել օգտատիրոջ իրականացմանը և քայլի վերջում հետ գրել։ Վիճակի փոփոխականների թիվը ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենքի դեպքում որոշվում է !USER_MATERIAL-ի NSTATUS-ով, իսկ !PLASTIC, YIELD=USER-ի դեպքում՝ uElastoPlasticNumStatus-ի վերադարձվող արժեքով։
Օգտատիրոջ կողմից սահմանված արտաքին բեռ¶
Օգտատիրոջ կողմից սահմանված արտաքին բեռը ուղի է՝ այն արտաքին ուժերը օգտատիրոջ ենթածրագրով սահմանելու համար, որոնք հնարավոր չէ ներկայացնել ներկառուցված կենտրոնացված բեռներով, բաշխված բեռներով կամ ծավալային ուժերով։ Եթե վերլուծության կառավարման տվյալներում գրվում է !ULOAD, FILE=<fname>, FrontISTR-ը նշված ֆայլի անունը փոխանցում է ureadload-ին, իսկ օգտատիրոջ իրականացումը կարդացած տեղեկությունը պահում է որպես մոդուլի ներսի տվյալներ։
!ULOAD-ի հետ կապված են հետևյալ երեք ենթածրագրերը։
ureadload: վերլուծության սկզբում կառավարման ֆայլում նշված արտաքին ֆայլից կարդում է օգտատիրոջ կողմից սահմանված բեռները։ Օգտատիրոջ իրականացումը բացում է ֆայլը և անհրաժեշտ տվյալները պահում մոդուլի փոփոխականներում։uloading: կանչվում է յուրաքանչյուր քայլի արտաքին բեռի վեկտորի հավաքման ժամանակ և օգտատիրոջ բեռը ավելացնում է ընդհանուր բեռի վեկտորին։ Որպես արգումենտ փոխանցվում են ընթացիկ քայլի համարը և բեռի գործակիցը։uResidual: կանչվում է յուրաքանչյուր իտերացիայում մնացորդի վեկտորի հավաքման ժամանակ և ընդհանուր մնացորդի վեկտորին ավելացնում օգտատիրոջ բեռի ներդրումը։ Այն կանչվում է ինչպես ոչ գծային իտերացիաներից, այնպես էլ հավասարակշռության հաշվարկից։
Օգտատիրոջ սահմանային պայմաններին (սահմանված տեղաշարժի կամ կոնտակտային պայմանների օգտատիրոջ ընդլայնում) համապատասխան ընդլայնման կետ չկա։ Եթե անհրաժեշտ է արտաքին ուժերից տարբեր օգտատիրոջ ընդլայնում, օգտագործեք համապատասխան ներկառուցված բանալի բառը կամ օգտատիրոջ որոշիչ օրենքի ուղին։
Օգտատիրոջ ենթածրագրի իրականացման ընթացակարգը¶
Օգտատիրոջ ենթածրագրեր օգտագործելու համար խմբագրեք FrontISTR-ի սկզբնաղբյուր բաշխման մեջ ներառված ձևանմուշային ֆայլերը և ապա վերակառուցեք FrontISTR-ը։ Բաշխված բինարային ֆայլերում օգտատիրոջ ենթածրագրերը փոխարինել հնարավոր չէ, ուստի օգտատիրոջ ընդլայնում օգտագործելու համար անհրաժեշտ է սկզբնաղբյուրից կառուցման միջավայր։
Օգտատիրոջ ենթածրագրերի ձևանմուշները գտնվում են fistr1/src/lib/user/-ում, իսկ խմբագրվող ֆայլը որոշվում է ընդլայնման կատեգորիայով (ֆայլերի անունների համար տես Ֆունկցիոնալ հնարավորությունների ընդհանուր պատկերը աղյուսակը)։ Սկզբնական վիճակում այդ ֆայլերի ենթածրագրերի մարմինը կամ դատարկ է, կամ պարունակում է գծային առաձգականության օրինակային իրականացում, և օգտատերը այնտեղ ավելացնում է իր որոշիչ օրենքը կամ բեռի սահմանումը։ Ձևանմուշը խմբագրելուց հետո FrontISTR-ը սովորական ձևով վերակառուցեք CMake-ով և վերլուծությունը կատարեք ստացված fistr1 գործարկելի ֆայլով։
Ենթածրագրերի արգումենտների իմաստը, վիճակի փոփոխականների զանգվածների մշակումը, վերակառուցման նկատառումները և այլ մանրամասներ բաժանված են կոդավորման ուղեցույցի հետևյալ էջերի միջև։
- Օգտատիրոջ ենթածրագրեր (ակնարկ)
- Ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենք
umat.f - Օգտատիրոջ առաձգապլաստիկություն
uyield.f - Օգտատիրոջ կողմից սահմանված արտաքին բեռ
uload.f - Օգտատիրոջ գծային առաձգականություն և հիպերառաձգականություն
uelastic.f
Առնչվող թեմաներ¶
- Նյութերի տվյալներ — որոշիչ օրենքների տարբերակներ և ներկառուցված մոդելների ցանկ
- Սահմանային պայմաններ և բեռներ — ներկառուցված սահմանային պայմաններ և բեռներ
- Օգտատիրոջ ենթածրագրեր (կոդավորման ուղեցույց) — ենթածրագրերի արգումենտների սահմանումներ և իրականացման կանոններ
- !USER_MATERIAL — ընդհանուր նշանակության օգտատիրոջ որոշիչ օրենքի բանալի բառի ձևաչափ
- !ELASTIC — գծային առաձգականության բանալի բառը՝ ներառյալ
TYPE=USER - !HYPERELASTIC — հիպերառաձգականության բանալի բառը՝ ներառյալ
TYPE=USER - !PLASTIC — առաձգապլաստիկության բանալի բառը՝ ներառյալ
YIELD=USER