Tarkibga o'tish

Foydalanuvchi quyi dasturlari orqali kengaytirish

FrontISTR asosiy manba kodini o‘zgartirmasdan funksiyalarni kengaytirish uchun foydalanuvchi quyi dasturlarini 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. Quyi dastur argumentlarining batafsil spetsifikatsiyasi va qayta yig‘ish tartibi uchun Foydalanuvchi quyi dasturlari (kodlash qo‘llanmasi) ga qarang.

Funksiyaning umumiy ko‘rinishi

Foydalanuvchi quyi dasturlari 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 andoza fayl tahrirlanib, so‘ng asosiy dastur qayta yig‘iladi.

Kengaytirish kategoriyasi Tahlil boshqaruv kalit so‘zi Asosiy foydalanuvchi quyi dasturlari Tahrir qilinadigan andoza
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 qaytarish xaritalash) !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 qattiqlashish qonuni (oquvchanlik funksiyasi ichki qolib, faqat qattiqlashish egri chizig‘ini foydalanuvchi amalga oshiradigan yo‘l) qo‘llab-quvvatlanmaydi. Qattiqlashish 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 qayta boshlash 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 ichki material modellari ifodalay olmaydigan kuchlanish–nisbiy deformatsiya munosabatini tashqi quyi dastur orqali amalga oshirish uchun kirish nuqtasidir. Tegishli ichki 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 quyi dasturga 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 nisbiy deformatsiya energiyasi funksiyasi hosilasidan kuchlanish va urinma qattiqlik hisoblanadi. Tahlil boshqaruv ma’lumotlarida !HYPERELASTIC, TYPE=USER beriladi. Chaqiriladigan quyi dasturlar foydalanuvchi chiziqli elastikligidagi kabi uElasticMatrix va uElasticUpdate, andoza esa umumiy fistr1/src/lib/user/uelastic.f90 dir. Kalit so‘z FrontISTR ning kichik deformatsiya yoki Total Lagrange rejimini tanlaydi; shu sababli ayni andozani 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 qaytarish xaritalash jarayonini amalga oshiradi. Tahlil boshqaruv ma’lumotlarida !PLASTIC, YIELD=USER beriladi. Bu Mises, Mohr-Coulomb va Drucker-Prager ichki oquvchanlik funksiyalaridan mustaqil tarmoqqa o‘tadi: element qattiqligini hisoblashda uElastoPlasticMatrix (elastoplastik urinma qattiqlik \(D\) ni qaytaradi), kuchlanishni yangilashda uBackwardEuler (sinov kuchlanishini haqiqiy kuchlanishga akslantirib, holat o‘zgaruvchilarini yangilaydi), Gauss nuqtasini boshlang‘ichlashtirishda esa uElastoPlasticNumStatus (saqlanadigan haqiqiy holat o‘zgaruvchilari sonini qaytaradi) chaqiriladi. Faqat qattiqlashish 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. Holat o‘zgaruvchilari soni NSTATUS bilan belgilanadi. Element qattiqligini hisoblashda uMatlMatrix (urinma qattiqlik \(D\) ni qaytaradi), kuchlanishni yangilashda uUpdate (kuchlanish va holat o‘zgaruvchilarini yangilaydi) chaqiriladi.

Foydalanuvchi konstantalari va holat o‘zgaruvchilarini uzatish

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

Umumiy foydalanuvchi konstitutiv qonuni va !PLASTIC, YIELD=USER da fstat holat o‘zgaruvchisi orqali oldingi qadamning tarix ma’lumotlari (plastik nisbiy deformatsiya, orqa kuchlanish, shikastlanish miqdori va boshqalar) foydalanuvchi implementatsiyasiga uzatiladi va qadam oxirida qayta yozilishi mumkin. Holat o‘zgaruvchilari 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 ichki konsentrlangan, taqsimlangan yoki hajmiy yuklar bilan ifodalab bo‘lmaydigan tashqi kuchni foydalanuvchi quyi dastur 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 quyi dastur 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 qadamda tashqi yuk vektori yig‘ilganda chaqiriladi va foydalanuvchi yukini global yuk vektoriga qo‘shadi. Joriy qadam 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 ko‘chish yoki kontakt shartlarini foydalanuvchi kengaytirishi) uchun kengaytirish nuqtasi mavjud emas. Tashqi kuchdan boshqa kengaytirish zarur bo‘lsa, tegishli ichki kalit so‘z yoki foydalanuvchi konstitutiv qonuni yo‘lidan foydalaning.

Foydalanuvchi quyi dasturni amalga oshirish tartibi

Foydalanuvchi quyi dasturdan foydalanish uchun FrontISTR manba distributiviga kiruvchi andoza faylni tahrirlab, so‘ng FrontISTR asosiy dasturini qayta yig‘ish kerak. Tayyor distributiv binarida foydalanuvchi quyi dasturni almashtirib bo‘lmaydi; shu sababli foydalanuvchi kengaytmasi uchun manbadan yig‘ish muhiti talab etiladi.

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

Quyi dastur argumentlarining ma’nosi, holat o‘zgaruvchilari massivlari bilan ishlash va qayta yig‘ishdagi ehtiyot choralari kodlash qo‘llanmasining alohida sahifalarida bayon qilingan.

Tegishli mavzular