Tarkibga o'tish

Foydalanuvchi subroutinelari orqali kengaytirish

FrontISTR asosiy manba kodini o‘zgartirmasdan funksiyalarni kengaytirish uchun foydalanuvchi subroutinelarini taqdim etadi. Bunga konstitutiv qonunlarni foydalanuvchi tomonidan amalga oshirish va foydalanuvchi belgilaydigan tashqi yuklarni qo‘shish kiradi. Ushbu bob kengaytirish nuqtalari va ularni chaqirish uchun tahlil boshqaruv faylida ishlatiladigan kalit so‘zlarni jamlaydi. Subroutine argumentlarining batafsil spetsifikatsiyasi va qayta build qilish tartibi uchun Foydalanuvchi subroutinelari (kodlash qo‘llanmasi) ga qarang.

Funksiyaning umumiy ko‘rinishi

Foydalanuvchi subroutinelari orqali kengaytirish nuqtalari ikki guruhga bo‘linadi: material konstitutiv qonunlari va tashqi yuklar. Konstitutiv qonunlar uchun foydalanuvchi chiziqli elastiklik, giperelastiklik, elastoplastiklik va umumiy foydalanuvchi konstitutiv qonuni bo‘yicha to‘rtta alohida chaqirish yo‘li mavjud; har biri mustaqil kalit so‘z bilan faollashtiriladi. Tashqi yuklar uchun foydalanuvchi tayyorlagan tashqi fayldan yuk ma’lumotlarini o‘qib, global yuk vektori va qoldiq vektoriga qo‘shish yo‘li mavjud. Har bir holatda FrontISTR distributiviga kiruvchi template fayl tahrirlanib, so‘ng asosiy dastur qayta build qilinadi.

Kengaytirish kategoriyasi Tahlil boshqaruv kalit so‘zi Asosiy foydalanuvchi subroutinelari Tahrir qilinadigan template
Foydalanuvchi chiziqli elastikligi !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Foydalanuvchi giperelastikligi !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Foydalanuvchi elastoplastikligi (oquvchanlik funksiyasi va return-mapping) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
Umumiy foydalanuvchi konstitutiv qonuni !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
Foydalanuvchi belgilaydigan tashqi yuk !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

Foydalanuvchi hardening qonuni (oquvchanlik funksiyasi built-in qolib, faqat hardening egri chizig‘ini foydalanuvchi amalga oshiradigan yo‘l) qo‘llab-quvvatlanmaydi. Hardening egri chizig‘ini foydalanuvchi amalga oshirishi kerak bo‘lsa, !PLASTIC, YIELD=USER tanlanib, butun elastoplastik konstitutiv qonun foydalanuvchi implementatsiyasi bilan almashtiriladi. Foydalanuvchi chegaraviy shartlari va restart vaqtida foydalanuvchi ishlovi uchun kengaytirish nuqtalari mavjud emas.

!CREEP uchun TYPE=USER qo‘llab-quvvatlanmaydi. Vaqtga bog‘liq konstitutiv qonunni foydalanuvchi amalga oshirsa, !USER_MATERIAL dan foydalaniladi.

Foydalanuvchi konstitutiv qonunlari

Foydalanuvchi konstitutiv qonuni built-in material modellari ifodalay olmaydigan kuchlanish–deformatsiya munosabatini tashqi subroutine orqali amalga oshirish uchun kirish nuqtasidir. Tegishli built-in konstitutiv strukturalarga muvofiq to‘rtta yo‘l mavjud: foydalanuvchi chiziqli elastikligi, foydalanuvchi giperelastikligi, foydalanuvchi elastoplastikligi va umumiy foydalanuvchi konstitutiv qonuni. Har bir yo‘lda tahlil boshqaruv ma’lumotlaridagi !MATERIAL blokida tegishli kalit so‘zga TYPE=USER yoki YIELD=USER beriladi. 100 tagacha foydalanuvchi konstantasi ko‘rsatilishi va subroutine ga uzatilishi mumkin.

Foydalanuvchi chiziqli elastikligi

Bu yo‘lda foydalanuvchi kichik deformatsiya doirasida elastiklik matritsasini hisoblaydi. Tahlil boshqaruv ma’lumotlarida !ELASTIC, TYPE=USER berilsa, FrontISTR uni kichik deformatsiya konstitutiv qonuni sifatida ishlatadi va element qattiqligi hamda kuchlanishni yangilash paytida uElasticMatrix (elastiklik matritsasi \(D\) ni qaytaradi) va uElasticUpdate (kuchlanishni qaytaradi) ni chaqiradi. U mavjud giperelastik yoki elastoplastik modellar bilan birga qo‘llanmaydi.

Foydalanuvchi giperelastikligi

Bu yo‘lda katta deformatsiya (Total Lagrange) doirasida strain energiya funksiyasi hosilasidan kuchlanish va urinma qattiqlik hisoblanadi. Tahlil boshqaruv ma’lumotlarida !HYPERELASTIC, TYPE=USER beriladi. Chaqiriladigan subroutinelar foydalanuvchi chiziqli elastikligidagi kabi uElasticMatrix va uElasticUpdate, template esa umumiy fistr1/src/lib/user/uelastic.f90 dir. Kalit so‘z FrontISTR ning kichik deformatsiya yoki Total Lagrange rejimini tanlaydi; shu sababli ayni template ni bir vaqtning o‘zida ikkala rejim uchun ishlatib bo‘lmaydi. Uni konstitutiv qonunlarning bittasi sifatida amalga oshiring.

Foydalanuvchi elastoplastikligi

Bu yo‘lda foydalanuvchi oquvchanlik funksiyasi va return-mapping jarayonini amalga oshiradi. Tahlil boshqaruv ma’lumotlarida !PLASTIC, YIELD=USER beriladi. Bu Mises, Mohr-Coulomb va Drucker-Prager built-in oquvchanlik funksiyalaridan mustaqil branchga o‘tadi: element qattiqligini hisoblashda uElastoPlasticMatrix (elastoplastik urinma qattiqlik \(D\) ni qaytaradi), kuchlanishni yangilashda uBackwardEuler (trial stressni haqiqiy kuchlanishga map qilib, state variablelarni yangilaydi), Gauss nuqtasini boshlang‘ichlashtirishda esa uElastoPlasticNumStatus (saqlanadigan haqiqiy state variablelar sonini qaytaradi) chaqiriladi. Faqat hardening egri chizig‘ini foydalanuvchi implementatsiyasi bilan almashtirish yo‘li mavjud emas; zarur bo‘lsa, butun elastoplastik konstitutiv qonun shu yo‘l orqali almashtiriladi.

Umumiy foydalanuvchi konstitutiv qonuni

Bu yo‘l elastik, giperelastik yoki elastoplastik doiraga sig‘maydigan konstitutiv qonunni yagona interfeysda amalga oshirish uchun mo‘ljallangan. Tahlil boshqaruv ma’lumotlarida !USER_MATERIAL beriladi. Standart holatda Updated Lagrange doirasida, KIRCHHOFF berilganda esa Total Lagrange doirasida ishlaydi. State variablelar soni NSTATUS bilan belgilanadi. Element qattiqligini hisoblashda uMatlMatrix (urinma qattiqlik \(D\) ni qaytaradi), kuchlanishni yangilashda uUpdate (kuchlanish va state variablelarni yangilaydi) chaqiriladi.

Foydalanuvchi konstantalari va state variablelarni uzatish

!ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER va !USER_MATERIAL yo‘llarining barchasida tahlil boshqaruv ma’lumotlarining data qatorida yozilgan foydalanuvchi konstantalari (100 tagacha) subroutine ning matl argumentiga aynan uzatiladi. !PLASTIC, YIELD=USER da !ELASTIC bilan berilgan elastik konstantalar bilan birga !PLASTIC data qatori orqali berilgan foydalanuvchi konstantalari uzatiladi.

Umumiy foydalanuvchi konstitutiv qonuni va !PLASTIC, YIELD=USER da fstat state variable orqali oldingi stepning tarix ma’lumotlari (plastik deformatsiya, back stress, shikastlanish miqdori va boshqalar) foydalanuvchi implementatsiyasiga uzatiladi va step oxirida qayta yozilishi mumkin. State variablelar soni umumiy foydalanuvchi konstitutiv qonunida !USER_MATERIAL ning NSTATUS parametri, !PLASTIC, YIELD=USER da esa uElastoPlasticNumStatus qaytargan qiymat bilan aniqlanadi.

Foydalanuvchi belgilaydigan tashqi yuk

Foydalanuvchi belgilaydigan tashqi yuk built-in konsentrlangan, taqsimlangan yoki hajmiy yuklar bilan ifodalab bo‘lmaydigan tashqi kuchni foydalanuvchi subroutine orqali berish yo‘lidir. Tahlil boshqaruv ma’lumotlarida !ULOAD, FILE=<fname> yozilsa, FrontISTR ko‘rsatilgan fayl nomini ureadload ga uzatadi va foydalanuvchi implementatsiyasi o‘qigan ma’lumot modul ichida saqlanadi.

!ULOAD faollashtirilganda quyidagi uchta subroutine ishlatiladi.

  • ureadload: Tahlil boshida boshqaruv faylida ko‘rsatilgan tashqi fayldan foydalanuvchi yukini o‘qiydi. Foydalanuvchi implementatsiyasi faylni ochib, zarur ma’lumotlarni modul o‘zgaruvchilariga saqlaydi.
  • uloading: Har bir stepda tashqi yuk vektori yig‘ilganda chaqiriladi va foydalanuvchi yukini global yuk vektoriga qo‘shadi. Joriy step raqami va yuk koeffitsiyenti argument sifatida uzatiladi.
  • uResidual: Har bir iteratsiyada qoldiq vektori yig‘ilganda chaqiriladi va foydalanuvchi yukining hissasini global qoldiq vektoriga qo‘shadi. Nochiziqli iteratsiya va muvozanat hisobining ikkala yo‘lidan ham chaqiriladi.

Foydalanuvchi chegaraviy shartlari (berilgan siljish yoki contact shartlarini foydalanuvchi kengaytirishi) uchun kengaytirish nuqtasi mavjud emas. Tashqi kuchdan boshqa kengaytirish zarur bo‘lsa, tegishli built-in kalit so‘z yoki foydalanuvchi konstitutiv qonuni yo‘lidan foydalaning.

Foydalanuvchi subroutineni amalga oshirish tartibi

Foydalanuvchi subroutinedan foydalanish uchun FrontISTR manba distributiviga kiruvchi template faylni tahrirlab, so‘ng FrontISTR asosiy dasturini qayta build qilish kerak. Tayyor distributiv binarida foydalanuvchi subroutineni almashtirib bo‘lmaydi; shu sababli foydalanuvchi kengaytmasi uchun manbadan build qilish muhiti talab etiladi.

Foydalanuvchi subroutine templatelari fistr1/src/lib/user/ ostida joylashgan va tahrir qilinadigan fayl kengaytirish kategoriyasiga qarab belgilanadi (fayl nomlari uchun Funksiyaning umumiy ko‘rinishi jadvaliga qarang). Dastlab subroutine tanasi bo‘sh yoki chiziqli elastiklik namunasi bilan berilgan; foydalanuvchi o‘z konstitutiv qonuni yoki yuk ta’rifini shu yerga qo‘shadi. Template tahrirlangach, FrontISTR odatdagidek CMake bilan qayta build qilinadi va hosil bo‘lgan fistr1 executable bilan tahlil bajariladi.

Subroutine argumentlarining ma’nosi, state-variable massivlari bilan ishlash va qayta build qilishdagi ehtiyot choralari kodlash qo‘llanmasining alohida sahifalarida bayon qilingan.

Tegishli mavzular

AI-assisted translation May contain errors Official docs Status