Kullanıcı Alt Yordam Uzantıları¶
FrontISTR, ana kaynak kodunu değiştirmeden işlevselliği genişletmek için bir dizi kullanıcı alt yordamı sağlar. Bunlar, bünye yasalarının kullanıcı tarafından uygulanmasını ve kullanıcı tanımlı dış yüklerin bütünleştirilmesini kapsar. Bu bölüm, kullanılabilir uzatma noktalarını ve her birini çağırmak için analiz kontrol dosyasında kullanılan anahtar sözcükleri listeler. Ayrıntılı alt yordam argümanları ve yeniden derleme prosedürleri için Kullanıcı Alt Yordamları (Kodlama Kılavuzu) bölümüne bakın.
Fonksiyonlara Genel Bakış¶
Kullanıcı alt yordamı uzatma noktaları iki kategoriye ayrılır: malzeme bünye yasaları ve dış yükler. Bünye yasası tarafında doğrusal elastisite, hiperelastisite, elastoplastisite ve genel amaçlı bünye yasası olmak üzere, her biri bağımsız bir anahtar sözcükle etkinleştirilen dört çağrı yolu vardır. Dış yük tarafında ise kullanıcının hazırladığı harici bir dosyadan yük bilgilerini okuyup global yük vektörüne ve artık vektörüne ekleyen bir yol sağlanır. Her uzantı, FrontISTR dağıtımıyla birlikte gelen şablon dosyası düzenlenip ana program yeniden derlendikten sonra kullanılabilir.
| Uzantı Kategorisi | Analiz Kontrol Anahtar Sözcüğü | Ana Kullanıcı Alt Yordamları | Düzenlenecek Şablon |
|---|---|---|---|
| Kullanıcı doğrusal elastisitesi | !ELASTIC, TYPE=USER |
uElasticMatrix, uElasticUpdate |
fistr1/src/lib/user/uelastic.f90 |
| Kullanıcı hiperelastisitesi | !HYPERELASTIC, TYPE=USER |
uElasticMatrix, uElasticUpdate |
fistr1/src/lib/user/uelastic.f90 |
| Kullanıcı elastoplastisitesi (akma fonksiyonu ve dönüş eşlemesi) | !PLASTIC, YIELD=USER |
uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus |
fistr1/src/lib/user/uyield.f90 |
| Genel amaçlı kullanıcı bünye yasası | !USER_MATERIAL |
uMatlMatrix, uUpdate |
fistr1/src/lib/user/umat.f90 |
| Kullanıcı tanımlı dış yük | !ULOAD, FILE=<fname> |
ureadload, uloading, uResidual |
fistr1/src/lib/user/uload.f90 |
Kullanıcı tanımlı pekleşme yasaları (yerleşik akma fonksiyonunu koruyup yalnızca pekleşme eğrisini kullanıcı uygulamasıyla değiştiren bir yol) desteklenmez. Kullanıcı tanımlı bir pekleşme eğrisi gerekiyorsa !PLASTIC, YIELD=USER seçin ve elastoplastik bünye yasasının tamamını kullanıcı uygulamasıyla değiştirin. Kullanıcı sınır koşulları ve yeniden başlatma sırasında kullanıcı işlemleri için uzatma noktaları desteklenmez.
TYPE=USER ile !CREEP desteklenmez. Zamana bağlı bir bünye yasasını kullanıcı uzantısı olarak uygulamak için !USER_MATERIAL kullanın.
Kullanıcı Bünye Yasaları¶
Kullanıcı bünye yasaları, yerleşik malzeme modelleriyle temsil edilemeyen gerilme-gerinim ilişkilerini harici bir alt yordamda uygulamak için giriş noktası sağlar. İlgili yerleşik bünye yasasının çerçevesine göre dört yol kullanılabilir: kullanıcı doğrusal elastisitesi, kullanıcı hiperelastisitesi, kullanıcı elastoplastisitesi ve genel amaçlı kullanıcı bünye yasası. Her yolda, analiz kontrol verilerindeki !MATERIAL bloğu içinde ilgili anahtar sözcükte TYPE=USER veya YIELD=USER belirtilir. En fazla 100 kullanıcı sabiti belirtilebilir ve bunlar alt yordama aktarılır.
Kullanıcı Doğrusal Elastisitesi¶
Kullanıcı doğrusal elastisitesi, kullanıcının sonsuz küçük deformasyon çerçevesinde elastik matrisi hesapladığı yoldur. Analiz kontrol verilerinde !ELASTIC, TYPE=USER belirtildiğinde FrontISTR bunu sonsuz küçük deformasyon bünye yasası olarak işler ve eleman rijitliği hesabı sırasında uElasticMatrix (elastik matris \(D\)'yi döndürür), gerilme güncellemesi sırasında ise uElasticUpdate (gerilmeyi döndürür) çağrılır. Mevcut bir hiperelastik veya elastoplastik modelle birlikte kullanmayın.
Kullanıcı Hiperelastisitesi¶
Kullanıcı hiperelastisitesi, büyük deformasyon (Total Lagrange) çerçevesinde bir gerinim-enerjisi fonksiyonunun türevlerinden gerilme ve teğet rijitliği hesaplama yoludur. Analiz kontrol verilerinde !HYPERELASTIC, TYPE=USER belirtin. Çağrılan alt yordamlar kullanıcı doğrusal elastisitesindeki aynı uElasticMatrix ve uElasticUpdate yordamlarıdır ve aynı fistr1/src/lib/user/uelastic.f90 şablonu paylaşılır. Anahtar sözcük belirtimi FrontISTR'ın uygulamayı sonsuz küçük deformasyon mu yoksa Total Lagrange olarak mı işleyeceğini değiştirdiğinden, aynı şablon hem sonsuz küçük hem büyük deformasyon uygulamaları için eşzamanlı kullanılamaz. İki bünye yasasından biri olarak uygulayın.
Kullanıcı Elastoplastisitesi¶
Kullanıcı elastoplastisitesi, kullanıcının akma fonksiyonunu ve dönüş-eşleme prosedürünü uyguladığı yoldur. Analiz kontrol verilerinde !PLASTIC, YIELD=USER belirtin. Bu, yerleşik Mises, Mohr-Coulomb ve Drucker-Prager akma fonksiyonlarından bağımsız bir dala girer. Eleman rijitliği hesabında uElastoPlasticMatrix (elastoplastik teğet rijitlik \(D\)'yi döndürür), gerilme güncellemesinde uBackwardEuler (deneme gerilmesini gerçek gerilmeye eşler ve durum değişkenlerini günceller), Gauss noktası başlatmasında ise uElastoPlasticNumStatus (saklanacak gerçek değerli durum değişkenlerinin sayısını döndürür) çağrılır. Yalnızca pekleşme eğrisini kullanıcı uygulamasıyla değiştiren bir yol desteklenmez. Yalnızca kullanıcı tanımlı bir pekleşme eğrisi gerekse bile, elastoplastik bünye yasasının tamamını kullanıcı uygulamasıyla değiştirmek için bu yolu kullanın.
Genel Amaçlı Kullanıcı Bünye Yasası¶
Genel amaçlı kullanıcı bünye yasası, elastik, hiperelastik veya elastoplastik çerçevelere uymayan bünye yasalarını uygulamak için bir yoldur. Analiz kontrol verilerinde !USER_MATERIAL belirtin. Varsayılan olarak Updated Lagrange çerçevesinde işlenir; KIRCHHOFF belirtildiğinde Total Lagrange olarak işlenir. Durum değişkenlerinin sayısı NSTATUS ile belirtilir. Eleman rijitliği hesabında uMatlMatrix (teğet rijitlik \(D\)'yi döndürür), gerilme güncellemesinde ise uUpdate (gerilme ve durum değişkenlerini günceller) çağrılır.
Kullanıcı Sabitlerinin ve Durum Değişkenlerinin Aktarılması¶
!ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER ve !USER_MATERIAL yollarının her birinde, analiz kontrol verilerinin veri satırlarına yazılan kullanıcı sabitleri (en fazla 100) doğrudan matl argümanı üzerinden alt yordama aktarılır. !PLASTIC, YIELD=USER için !ELASTIC ile belirtilen elastik sabitler ve !PLASTIC veri satırlarında verilen kullanıcı sabitleri aktarılır.
Genel amaçlı kullanıcı bünye yasası ve !PLASTIC, YIELD=USER için önceki adımdan gelen geçmiş bilgileri (plastik gerinim, geri gerilme ve hasar gibi) durum değişkeni fstat üzerinden kullanıcı uygulamasına aktarılabilir ve adım sonunda geri yazılabilir. Durum değişkenlerinin sayısı genel amaçlı kullanıcı bünye yasasında !USER_MATERIAL ve onun NSTATUS değeriyle, !PLASTIC, YIELD=USER için ise uElastoPlasticNumStatus dönüş değeriyle belirlenir.
Kullanıcı Tanımlı Dış Yükler¶
Kullanıcı tanımlı dış yükler, yerleşik tekil yüklar, dağıtılmış yüklar veya hacim kuvvetleriyle temsil edilemeyen dış kuvvetleri tanımlamak için bir yol sağlar. Analiz kontrol verilerinde !ULOAD, FILE=<fname> yazıldığında FrontISTR belirtilen dosya adını ureadload yordamına aktarır ve kullanıcı uygulaması tarafından okunan bilgiler modül verisi olarak tutulur.
Aşağıdaki üç alt yordam !ULOAD çağrısına karşılık gelir.
ureadload: Analiz başlangıcında, kontrol dosyasında belirtilen harici dosyadan kullanıcı tanımlı yükleri okur. Kullanıcı uygulaması dosyayı açar ve gerekli verileri modül değişkenlerinde saklar.uloading: Her adım için dış yük vektörü monte edilirken çağrılır ve kullanıcı yükünü global yük vektörüne ekler. Geçerli adım numarası ve yük faktörü argüman olarak aktarılır.uResidual: Her iterasyonda artık vektörü monte edilirken çağrılır ve kullanıcı yükünün katkısını global artık vektörüne ekler. Hem doğrusal olmayan iterasyonlardan hem de denge hesaplarından çağrılır.
Kullanıcı sınır koşulları (tanımlı yer değiştirme veya temas koşullarının kullanıcı uzantıları) için bir uzatma noktası sağlanmaz. Dış kuvvet dışında bir kullanıcı uzantısı gerekiyorsa ilgili yerleşik anahtar sözcüğü veya kullanıcı bünye yasası yolunu kullanın.
Kullanıcı Alt Yordamlarını Uygulama Prosedürü¶
Bir kullanıcı alt yordamını kullanmak için FrontISTR kaynak dağıtımıyla birlikte gelen şablon dosyasını düzenleyin ve ardından FrontISTR'ı yeniden derleyin. Dağıtılan ikili dosyalarda kullanıcı alt yordamları değiştirilemez; dolayısıyla kullanıcı uzantısı kullanmak FrontISTR'ın kaynaktan derlenebildiği bir ortam gerektirir.
Kullanıcı alt yordamı şablonları fistr1/src/lib/user/ altında bulunur ve her uzantı kategorisi için düzenlenecek belirli bir dosya vardır (dosya adları için Fonksiyonlara Genel Bakış bölümündeki tabloya bakın). Başlangıç durumunda dosyalar ya boş alt yordam gövdeleri ya da örnek bir doğrusal elastik uygulama içerir; kullanıcılar kendi bünye yasalarını veya yük tanımlarını buraya ekler. Şablonu düzenledikten sonra FrontISTR'ı normal şekilde CMake ile yeniden derleyin ve analizi oluşan fistr1 yürütülebilir dosyasıyla çalıştırın.
Alt yordam argümanlarının anlamı, durum-değişkeni dizilerinin işlenmesi ve yeniden derleme sırasındaki önlemler gibi ayrıntılar kodlama kılavuzunun ilgili sayfalarında verilmiştir.
- Kullanıcı Alt Yordamları (Genel Bakış)
- Genel Amaçlı Kullanıcı Bünye Yasası
umat.f - Kullanıcı Elastoplastisitesi
uyield.f - Kullanıcı Tanımlı Dış Yük
uload.f - Kullanıcı Doğrusal Elastisitesi ve Kullanıcı Hiperelastisitesi
uelastic.f
Ayrıca Bakınız¶
- Malzeme Verileri — Bünye yasası seçenekleri ve yerleşik modeller listesi
- Sınır Koşulları ve Yükler — Yerleşik sınır koşulları ve yükler
- Kullanıcı Alt Yordamları (Kodlama Kılavuzu) — Alt yordam argümanı belirtimleri ve uygulama kuralları
- !USER_MATERIAL — Genel amaçlı kullanıcı bünye yasasının anahtar sözcük sözdizimi
- !ELASTIC —
TYPE=USERdahil doğrusal elastik anahtar sözcük - !HYPERELASTIC —
TYPE=USERdahil hiperelastik anahtar sözcük - !PLASTIC —
YIELD=USERdahil elastoplastik anahtar sözcük