ការពង្រីកដោយសាប់រូទីនអ្នកប្រើ¶
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 ឡើងវិញ។ ឯកសារប៊ីណារីដែលបានចែកចាយមិនអាចជំនួសសាប់រូទីនអ្នកប្រើបានទេ ដូច្នេះពេលប្រើការពង្រីកដោយអ្នកប្រើ ត្រូវរៀបចំបរិស្ថានដែលអាចសាងសង់ពីប្រភពបាន។
ពុម្ពរបស់សាប់រូទីនអ្នកប្រើស្ថិតក្រោម 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