Skip to content

ການຂະຫຍາຍດ້ວຍຊັບຣູທີນຜູ້ໃຊ້

FrontISTR ຈັດຫາຊຸດ ຊັບຣູທີນຜູ້ໃຊ້ ສຳລັບຂະຫຍາຍຟັງຊັນໂດຍບໍ່ຕ້ອງແກ້ໄຂ ລະຫັດຕົ້ນສະບັບ ຫຼັກ. ຂອບເຂດປະກອບມີການສ້າງ ກົດຄວາມສຳພັນວັດສະດຸ ໂດຍຜູ້ໃຊ້ ແລະການລວມໂຫຼດພາຍນອກທີ່ຜູ້ໃຊ້ກຳນົດ. ບົດນີ້ສະຫຼຸບຈຸດຂະຫຍາຍທີ່ມີ ແລະ ຄຳສັ່ງ ໃນໄຟລ໌ຄວບຄຸມການວິເຄາະທີ່ໃຊ້ເອີ້ນແຕ່ລະຈຸດ. ລາຍລະອຽດອາກິວເມນຂອງ ຊັບຣູທີນ ແລະຂັ້ນຕອນ ສ້າງໃໝ່ ໃໝ່ ໃຫ້ເບິ່ງ ຊັບຣູທີນຜູ້ໃຊ້ (ຄູ່ມືການຂຽນໂຄດ).

ພາບລວມຟັງຊັນ

ຈຸດຂະຫຍາຍດ້ວຍ ຊັບຣູທີນຜູ້ໃຊ້ ແບ່ງເປັນ 2 ກຸ່ມ: ກົດຄວາມສຳພັນວັດສະດຸ ຂອງວັດສະດຸ ແລະໂຫຼດພາຍນອກ. ດ້ານ ກົດຄວາມສຳພັນວັດສະດຸ ມີ 4 ເສັ້ນທາງການເອີ້ນ: ຄວາມຍືດຫຍຸ່ນເຊິ່ງເສັ້ນ, ໄຮເປີອີລາສຕິກ, ອີລາສໂຕພລາສຕິກ ແລະ ກົດຄວາມສຳພັນວັດສະດຸ ແບບທົ່ວໄປ, ໂດຍແຕ່ລະເສັ້ນທາງເປີດໃຊ້ດ້ວຍ ຄຳສັ່ງ ແຍກກັນ. ດ້ານໂຫຼດພາຍນອກມີເສັ້ນທາງສຳລັບອ່ານຂໍ້ມູນໂຫຼດຈາກໄຟລ໌ພາຍນອກທີ່ຜູ້ໃຊ້ຈັດກຽມ ແລ້ວເພີ່ມເຂົ້າ ເວັກເຕີໂຫຼດລວມ ແລະ ເວັກເຕີຄ່າເຫຼືອ. ທຸກການຂະຫຍາຍໃຊ້ງານໄດ້ຫຼັງຈາກແກ້ໄຂ ແມ່ແບບ ທີ່ມາກັບ 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.

ກົດຄວາມສຳພັນວັດສະດຸ ໂດຍຜູ້ໃຊ້

ກົດຄວາມສຳພັນວັດສະດຸ ໂດຍຜູ້ໃຊ້ເປັນຈຸດເຂົ້າສຳລັບສ້າງຄວາມສຳພັນ ຄວາມເຄັ້ນ–ຄວາມເຄັ່ງ ທີ່ບໍ່ສາມາດສະແດງດ້ວຍ ແບບຈຳລອງວັດສະດຸ ທີ່ມີຢູ່. ມີ 4 ເສັ້ນທາງຕາມກອບ ກົດຄວາມສຳພັນວັດສະດຸ: ຄວາມຍືດຫຍຸ່ນເຊິ່ງເສັ້ນ, ໄຮເປີອີລາສຕິກ, ອີລາສໂຕພລາສຕິກ ແລະ ກົດຄວາມສຳພັນວັດສະດຸ ແບບທົ່ວໄປ. ໃນແຕ່ລະເສັ້ນທາງ ພາຍໃນ ບລັອກ !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, ດັ່ງນັ້ນ ແມ່ແບບ ດຽວກັນບໍ່ສາມາດໃຊ້ພ້ອມກັນສຳລັບທັງສອງ. ຕ້ອງປະຕິບັດເປັນ ກົດຄວາມສຳພັນວັດສະດຸ ໃດໜຶ່ງ.

ອີລາສໂຕພລາສຕິກ ໂດຍຜູ້ໃຊ້

ເສັ້ນທາງ ອີລາສໂຕພລາສຕິກ ໃຫ້ຜູ້ໃຊ້ປະຕິບັດຟັງຊັນຄາກ ແລະຂັ້ນຕອນ ການແມັບກັບ. ໃຫ້ກຳນົດ !PLASTIC, YIELD=USER. ນີ້ເຂົ້າສູ່ສາຂາທີ່ແຍກຈາກ ຟັງຊັນຄາກ ທີ່ມີຢູ່ Mises, Mohr-Coulomb ແລະ Drucker-Prager. ໃນການຄຳນວນ ຄວາມແຂງຂອງອົງປະກອບ ຈະເອີ້ນ uElastoPlasticMatrix (ສົ່ງກັບ ຄວາມແຂງສຳຜັດອີລາສໂຕພລາສຕິກ \(D\)), ໃນການອັບເດດຄວາມເຄັ້ນຈະເອີ້ນ uBackwardEuler (ແມັບຄວາມເຄັ້ນທົດລອງ ໄປ ຄວາມເຄັ້ນຈິງ ແລະອັບເດດ ຕົວແປສະຖານະ), ແລະໃນການ ເລີ່ມຄ່າຈຸດ Gauss ຈະເອີ້ນ 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 ກ່ຽວຂ້ອງກັບ 3 ຊັບຣູທີນ ຕໍ່ໄປນີ້.

  • ureadload: ໃນຕອນເລີ່ມການວິເຄາະ ອ່ານໂຫຼດທີ່ຜູ້ໃຊ້ກຳນົດຈາກໄຟລ໌ພາຍນອກທີ່ລະບຸໃນ ໄຟລ໌ຄວບຄຸມ. ການປະຕິບັດ ຂອງຜູ້ໃຊ້ເປີດໄຟລ໌ ແລະເກັບຂໍ້ມູນຈຳເປັນໄວ້ໃນ ຕົວແປຂອງໂມດູນ.
  • uloading: ຖືກເອີ້ນໃນຂະນະ ປະກອບ ເວັກເຕີໂຫຼດພາຍນອກຂອງແຕ່ລະ ຂັ້ນ ແລະເພີ່ມ ໂຫຼດຜູ້ໃຊ້ ເຂົ້າ ເວັກເຕີໂຫຼດລວມ. ໝາຍເລກ ຂັ້ນ ປັດຈຸບັນແລະ ຕົວຄູນໂຫຼດ ຖືກສົ່ງເປັນ ອາກິວເມັນ.
  • uResidual: ຖືກເອີ້ນໃນຂະນະ ປະກອບ ເວັກເຕີຄ່າເຫຼືອ ຂອງແຕ່ລະການວົນຊ້ຳ ແລະເພີ່ມສ່ວນປະກອບຂອງ ໂຫຼດຜູ້ໃຊ້ ເຂົ້າ ເວັກເຕີຄ່າເຫຼືອລວມ. ຖືກເອີ້ນຈາກທັງ ການວົນຊ້ຳແບບບໍ່ເປັນເສັ້ນ ແລະການຄຳນວນສົມດຸນ.

ບໍ່ມີຈຸດຂະຫຍາຍສຳລັບ ເງື່ອນໄຂຂອບເຂດຂອງຜູ້ໃຊ້ (ການຂະຫຍາຍ ການກຳນົດການກະຈັດ ຫຼື ເງື່ອນໄຂການສຳຜັດ ໂດຍຜູ້ໃຊ້). ຖ້າຕ້ອງການ ການຂະຫຍາຍໂດຍຜູ້ໃຊ້ ທີ່ບໍ່ແມ່ນແຮງພາຍນອກ ໃຫ້ໃຊ້ ຄຳສັ່ງ ທີ່ມີຢູ່ ຫຼືເສັ້ນທາງ ກົດຄວາມສຳພັນວັດສະດຸຂອງຜູ້ໃຊ້ ທີ່ກ່ຽວຂ້ອງ.

ຂັ້ນຕອນ ການປະຕິບັດ ຊັບຣູທີນຜູ້ໃຊ້

ເພື່ອໃຊ້ ຊັບຣູທີນຜູ້ໃຊ້, ໃຫ້ແກ້ໄຂ ໄຟລ໌ແມ່ແບບ ທີ່ມາກັບ ຊຸດແຈກຢາຍຕົ້ນສະບັບ ຂອງ FrontISTR ແລ້ວ ສ້າງ FrontISTR ໃໝ່. ບໍ່ສາມາດສັບປ່ຽນ ຊັບຣູທີນຜູ້ໃຊ້ ໃນ ຊຸດແຈກຢາຍໄບນາຣີ ໄດ້, ດັ່ງນັ້ນການໃຊ້ ການຂະຫຍາຍໂດຍຜູ້ໃຊ້ ຕ້ອງມີ ສະພາບແວດລ້ອມ ທີ່ສາມາດ ສ້າງໃໝ່ FrontISTR ຈາກ ຕົ້ນສະບັບ.

ແມ່ແບບ ຂອງ ຊັບຣູທີນຜູ້ໃຊ້ ຢູ່ພາຍໃຕ້ fistr1/src/lib/user/, ໂດຍມີໄຟລ໌ທີ່ຕ້ອງແກ້ໄຂແຕກຕ່າງຕາມປະເພດການຂະຫຍາຍ (ເບິ່ງຊື່ໄຟລ໌ໃນຕາຕະລາງ ພາບລວມຟັງຊັນ). ໃນສະພາບເລີ່ມຕົ້ນ ໄຟລ໌ເຫຼົ່ານີ້ມີ ເນື້ອຫາຊັບຣູທີນ ວ່າງ ຫຼືຕົວຢ່າງ ການປະຕິບັດ ຂອງ ຄວາມຍືດຫຍຸ່ນເຊິ່ງເສັ້ນ; ຜູ້ໃຊ້ເພີ່ມ ກົດຄວາມສຳພັນວັດສະດຸ ຫຼືນິຍາມໂຫຼດຂອງຕົນເອງ. ຫຼັງຈາກແກ້ໄຂ ແມ່ແບບ ແລ້ວ ໃຫ້ ສ້າງໃໝ່ FrontISTR ດ້ວຍ CMake ຕາມປົກກະຕິ ແລະເຮັດການວິເຄາະດ້ວຍ ໄຟລ໌ປະຕິບັດ fistr1 ທີ່ໄດ້.

ລາຍລະອຽດເຊັ່ນຄວາມໝາຍຂອງ ອາກິວເມັນ ຂອງ ຊັບຣູທີນ, ການຈັດການ ອາເຣ ຂອງ ຕົວແປສະຖານະ ແລະຂໍ້ຄວນລະວັງໃນການ ສ້າງໃໝ່ ໃໝ່ ຖືກແຍກອະທິບາຍໃນໜ້າຕ່າງໆຂອງ ຄູ່ມືການຂຽນໂຄດ.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ