Langkau tajuk talian

Sambungan Subrutin Pengguna

FrontISTR menyediakan satu set subrutin pengguna untuk melanjutkan fungsi tanpa mengubah kod sumber utama. Subrutin ini meliputi pelaksanaan hukum konstitutif oleh pengguna dan penyepaduan beban luaran yang ditakrifkan pengguna. Bab ini menyenaraikan titik sambungan yang tersedia serta kata kunci dalam fail kawalan analisis yang digunakan untuk memanggil setiap satu. Untuk butiran argumen subrutin dan prosedur bina semula, lihat Subrutin Pengguna (Panduan Pengekodan).

Gambaran Keseluruhan Fungsi

Titik sambungan subrutin pengguna dibahagikan kepada dua kategori: hukum konstitutif bahan dan beban luaran. Pada bahagian hukum konstitutif, terdapat empat laluan panggilan—keanjalan linear, hiperkeanjalan, elastoplastisiti, dan hukum konstitutif kegunaan umum—yang masing-masing diaktifkan oleh kata kunci bebas. Pada bahagian beban luaran, disediakan laluan yang membaca maklumat beban daripada fail luaran yang disediakan pengguna dan menambahnya kepada vektor beban global serta vektor baki. Setiap sambungan tersedia selepas fail templat yang disertakan dalam pengedaran FrontISTR diedit dan program utama dibina semula.

Kategori Sambungan Kata Kunci Kawalan Analisis Subrutin Pengguna Utama Templat untuk Diedit
Keanjalan linear pengguna !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Hiperkeanjalan pengguna !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
Elastoplastisiti pengguna (fungsi luluh dan pemetaan kembali) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
Hukum konstitutif pengguna kegunaan umum !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
Beban luaran takrifan pengguna !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

Hukum pengerasan takrifan pengguna (laluan yang mengekalkan fungsi luluh terbina dalam tetapi hanya menggantikan lengkung pengerasan dengan pelaksanaan pengguna) tidak disokong. Jika lengkung pengerasan takrifan pengguna diperlukan, pilih !PLASTIC, YIELD=USER dan gantikan keseluruhan hukum konstitutif elastoplastik dengan pelaksanaan pengguna. Syarat sempadan pengguna dan titik sambungan untuk pemprosesan pengguna semasa restart tidak disokong.

!CREEP dengan TYPE=USER tidak disokong. Gunakan !USER_MATERIAL untuk melaksanakan hukum konstitutif bergantung masa sebagai sambungan pengguna.

Hukum Konstitutif Pengguna

Hukum konstitutif pengguna menyediakan titik masuk untuk melaksanakan hubungan tegasan-terikan yang tidak boleh diwakili oleh model bahan terbina dalam melalui subrutin luaran. Empat laluan tersedia mengikut rangka kerja hukum konstitutif terbina dalam yang sepadan: keanjalan linear pengguna, hiperkeanjalan pengguna, elastoplastisiti pengguna, dan hukum konstitutif pengguna kegunaan umum. Dalam setiap laluan, di dalam blok !MATERIAL data kawalan analisis, nyatakan TYPE=USER atau YIELD=USER pada kata kunci yang sepadan. Sehingga 100 pemalar pengguna boleh dinyatakan dan dihantar kepada subrutin.

Keanjalan Linear Pengguna

Keanjalan linear pengguna ialah laluan yang membolehkan pengguna mengira matriks elastik dalam rangka kerja ubah bentuk infinitesimal. Apabila !ELASTIC, TYPE=USER dinyatakan dalam data kawalan analisis, FrontISTR menganggapnya sebagai hukum konstitutif ubah bentuk infinitesimal dan memanggil uElasticMatrix (yang mengembalikan matriks elastik \(D\)) semasa pengiraan kekakuan unsur serta uElasticUpdate (yang mengembalikan tegasan) semasa kemas kini tegasan. Jangan gunakannya bersama model hiperelastik atau elastoplastik sedia ada.

Hiperkeanjalan Pengguna

Hiperkeanjalan pengguna ialah laluan untuk mengira tegasan dan kekakuan tangen daripada terbitan fungsi tenaga terikan dalam rangka kerja ubah bentuk besar (Total Lagrange). Nyatakan !HYPERELASTIC, TYPE=USER dalam data kawalan analisis. Subrutin yang dipanggil ialah uElasticMatrix dan uElasticUpdate yang sama seperti bagi keanjalan linear pengguna, dan templat fistr1/src/lib/user/uelastic.f90 yang sama dikongsi. Oleh sebab spesifikasi kata kunci menukar sama ada FrontISTR menganggap pelaksanaan sebagai ubah bentuk infinitesimal atau Total Lagrange, templat yang sama tidak boleh digunakan serentak untuk kedua-dua pelaksanaan ubah bentuk infinitesimal dan besar. Laksanakan sebagai salah satu daripada dua hukum konstitutif tersebut.

Elastoplastisiti Pengguna

Elastoplastisiti pengguna ialah laluan yang membolehkan pengguna melaksanakan fungsi luluh dan prosedur pemetaan kembali. Nyatakan !PLASTIC, YIELD=USER dalam data kawalan analisis. Ini memasuki cabang yang bebas daripada fungsi luluh Mises, Mohr-Coulomb dan Drucker-Prager terbina dalam. uElastoPlasticMatrix (yang mengembalikan kekakuan tangen elastoplastik \(D\)) dipanggil semasa pengiraan kekakuan unsur, uBackwardEuler (yang memetakan tegasan percubaan kepada tegasan sebenar dan mengemas kini pemboleh ubah keadaan) semasa kemas kini tegasan, dan uElastoPlasticNumStatus (yang mengembalikan bilangan pemboleh ubah keadaan bernilai nyata yang perlu dikekalkan) semasa pengawalan awal titik Gauss. Laluan yang hanya menggantikan lengkung pengerasan dengan pelaksanaan pengguna tidak disokong. Walaupun hanya lengkung pengerasan takrifan pengguna diperlukan, gunakan laluan ini untuk menggantikan keseluruhan hukum konstitutif elastoplastik dengan pelaksanaan pengguna.

Hukum Konstitutif Pengguna Kegunaan Umum

Hukum konstitutif pengguna kegunaan umum ialah laluan untuk melaksanakan hukum konstitutif yang tidak sesuai dengan rangka kerja elastik, hiperelastik atau elastoplastik. Nyatakan !USER_MATERIAL dalam data kawalan analisis. Secara lalai ia dikendalikan dalam rangka kerja Updated Lagrange; apabila KIRCHHOFF dinyatakan, ia dikendalikan sebagai Total Lagrange. Bilangan pemboleh ubah keadaan ditentukan oleh NSTATUS. uMatlMatrix (yang mengembalikan kekakuan tangen \(D\)) dipanggil semasa pengiraan kekakuan unsur, dan uUpdate (yang mengemas kini tegasan dan pemboleh ubah keadaan) semasa kemas kini tegasan.

Penghantaran Pemalar Pengguna dan Pemboleh Ubah Keadaan

Bagi setiap laluan !ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER, dan !USER_MATERIAL, pemalar pengguna yang ditulis pada baris data dalam data kawalan analisis (sehingga 100) dihantar terus kepada subrutin melalui argumen matl. Bagi !PLASTIC, YIELD=USER, pemalar elastik yang ditentukan oleh !ELASTIC dan pemalar pengguna yang dibekalkan melalui baris data !PLASTIC dihantar.

Bagi hukum konstitutif pengguna kegunaan umum dan !PLASTIC, YIELD=USER, maklumat sejarah daripada langkah sebelumnya (seperti terikan plastik, tegasan belakang dan kerosakan) boleh dihantar kepada pelaksanaan pengguna melalui pemboleh ubah keadaan fstat dan ditulis semula pada akhir langkah. Bilangan pemboleh ubah keadaan ditentukan, bagi hukum konstitutif pengguna kegunaan umum, oleh !USER_MATERIAL dan NSTATUS-nya, dan bagi !PLASTIC, YIELD=USER, oleh nilai pulangan uElastoPlasticNumStatus.

Beban Luaran Takrifan Pengguna

Beban luaran takrifan pengguna menyediakan laluan untuk mentakrifkan daya luaran yang tidak boleh diwakili oleh beban tertumpu, beban teragih atau daya jasad terbina dalam. Apabila !ULOAD, FILE=<fname> ditulis dalam data kawalan analisis, FrontISTR menghantar nama fail yang ditentukan kepada ureadload, dan maklumat yang dibaca oleh pelaksanaan pengguna disimpan sebagai data modul.

Tiga subrutin berikut sepadan dengan panggilan !ULOAD.

  • ureadload: Pada permulaan analisis, membaca beban takrifan pengguna daripada fail luaran yang ditentukan dalam fail kawalan. Pelaksanaan pengguna membuka fail dan menyimpan data yang diperlukan dalam pemboleh ubah modul.
  • uloading: Dipanggil semasa pemasangan vektor beban luaran bagi setiap langkah dan menambahkan beban pengguna kepada vektor beban global. Nombor langkah semasa dan faktor beban dihantar sebagai argumen.
  • uResidual: Dipanggil semasa pemasangan vektor baki pada setiap lelaran dan menambahkan sumbangan beban pengguna kepada vektor baki global. Ia dipanggil daripada lelaran tak linear dan pengiraan keseimbangan.

Tiada titik sambungan disediakan untuk syarat sempadan pengguna (sambungan pengguna bagi sesaran yang ditetapkan atau syarat sentuhan). Jika sambungan pengguna selain daya luaran diperlukan, gunakan kata kunci terbina dalam yang sepadan atau laluan hukum konstitutif pengguna.

Prosedur Melaksanakan Subrutin Pengguna

Untuk menggunakan subrutin pengguna, edit fail templat yang disertakan dalam pengedaran sumber FrontISTR dan kemudian bina semula FrontISTR. Subrutin pengguna tidak boleh diganti dalam binari yang diedarkan, maka penggunaan sambungan pengguna memerlukan persekitaran yang membolehkan FrontISTR dibina daripada sumber.

Templat subrutin pengguna terletak di bawah fistr1/src/lib/user/, dengan fail khusus untuk diedit bagi setiap kategori sambungan (lihat jadual dalam Gambaran Keseluruhan Fungsi untuk nama fail). Dalam keadaan awal, fail-fail tersebut mengandungi sama ada badan subrutin kosong atau contoh pelaksanaan elastik linear; pengguna menambahkan hukum konstitutif atau takrifan beban mereka sendiri di situ. Selepas mengedit templat, bina semula FrontISTR seperti biasa dengan CMake dan jalankan analisis menggunakan boleh laku fistr1 yang terhasil.

Butiran seperti makna argumen subrutin, pengendalian tatasusunan pemboleh ubah keadaan dan langkah berjaga-jaga semasa bina semula diberikan pada halaman yang sepadan dalam panduan pengekodan.

Topik Berkaitan