問題タブ [finite-element-analysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
simulation - 降伏点前の Solidworks 変形
Solidworks の落下試験シミュレーションを実行していますが、結果を理解するのに苦労しています。アイデアは基本的に、5 m/s で地面に衝突するアルミニウム製の中空シェルです。モデル化する方法がわからないので、カスタム材料を作成し、AL 6061 とまったく同じ特性を持っているが、密度が高く、質量が現実世界の質量に出てくると言いました。シェル+内部質量。これだけでもいくつかの問題が発生する可能性がありますが、シェルが質量を運んでいると他にどのように言うべきかわかりません (おそらく重力を増やすことを考えましたが、それはさらに遠回りのようです)。
私の主な関心事は変位と関係があります。下の図では、重いシェルが地面に衝突し、応力が波のように上向きに伝播していることがわかります。横の目盛りは、最大応力が 273 MPa であり、降伏が275MPa。
したがって、シェルには永続的な変形はありませんが、「変形結果」を表示すると、次のようになります。
Solidworks は、この大きな変位を示しています (実際の 1:1 スケールであり、誇張されていないことを確認しました)。3.5mm相当ですが、よく見ると実際はこの倍の変位になります。これは、変形していないモデルを白いシルエットに重ね合わせることで気付きました。図のようにパーツ全体を下に移動し、ノーズを上にへこませて、差を差し引いていますが、実際にはノーズは元の位置から 2 倍離れています。基本的に、現在の 3.5 mm に加えて、モデル全体を下に移動して、下部のノーズが互いに一致するようにすることも考慮に入れる必要があります。つまり、変位はほぼ 1 センチメートルになります。
私の混乱は、このすべてが塑性変形するにはあまりにも多くの変位のように見えるという事実から生じていますが、前に述べたように、降伏点を超えていないため、理論的には衝撃後にすべてが所定の位置に戻るはずです. YP ストレスに達していないので、シェルは無傷で出てくると信じるべきですか?
optimization - CAD での自動設計、FEA での解析、および最適化
オプティマイザが CAD ファイルに変更を加えて設計を最適化し、それを FEM で解析し、その結果をオプティマイザにフィードバックして、FEM に基づいて設計を変更し、解が最適 (質量、剛性、その他)。
これは私が想像するものです:
- CAD ソフトウェア (CATIA など) で部品の設計図を作成します。
- プログラミング言語 (Python など) 内から最適化コード (fmincon など) を実行します。オプティマイザーのパラメーターは、CAD モデルのパラメーター (角度、長さ、厚さなど) です。
- オプティマイザーは、特定の設計 (パラメーター セット) を評価します。プログラミング言語が CAD ソフトウェアを呼び出し、それに応じて設計を変更します。
- プログラミング言語は、いくつかの情報 (質量など) を抽出します。
- 次に、プログラミング言語が STEP ファイルを抽出し、定義済みの解析が実行される FEA ソルバー (Abaqus など) に渡します。
- プログラミング言語が結果を読み取ります (例: max van Mises 応力)。
- CAD と FEM からの結果 (質量と応力など) がオプティマイザーに送られ、それに応じて設計が変更されます。
- 収束するまで。
これがクローズド アーキテクチャ (isight など) 内から存在することはわかっていますが、オプティマイザがオープン プログラミング言語 (理想的には Python) 内から呼び出されるオープン アーキテクチャを使用したいと考えています。
最後に、ここに私の質問があります:
- 私が説明したように、それを行うことはできますか?
- リファレンス、チュートリアルをお願いします。
- プログラミング、CAD、FEM のどのソフトウェアをお勧めしますか?
python - アダプティブ メッシュ リファインメント - Python
私は現在、自分のコードで機能していないものに非常にこだわっており、何時間も見つめています。有限要素法を使用してラプラス方程式の解を適応的に近似し、二重加重残差を使用してその誤差を推定する関数をいくつか作成しました。エラー関数は、エラーのベクトル (要素ごとに 1 つのエラー) を提供する必要があります。次に、最大のエラーを選択し、それらの周りにさらに要素を追加し、再度解決してエラーを再チェックします。しかし、エラーの見積もりが変わらない理由がわかりません!
私の最初の 4 つの関数は正しいですが、誰かがコードを試してみたい場合に備えてそれらを含めます。
私のエラー インジケーター関数は、解決されたメッシュを使用して近似値を取得し、eta = (f - Bu)z を見つけます。
私の次の関数は、メッシュを指定されたエラー インジケーターに非常にうまく適合させているようです! なぜインジケーターが変わらないように見えるのか、まったくわかりませんか?
これに対する入力例は次のようになります: Mesh_Refinement(np.linspace(0,1,3),0.1,0.2,np.linspace(0,1,60),20)
ここにはたくさんのコードがあることは理解していますが、途方に暮れています。どこに向かうべきかわかりません!
python - アダプティブ メッシュのエラー推定インジケーター
私はラプラス方程式の有限要素法の適応メッシュを設定しようとしてきました (したがって、A は剛性マトリックスである AU = F) が、エラー推定でいくつかの問題に遭遇しているため、メッシュになってしまいます。次のように:
[ 0. 0.11111111 0.22222222 0.27777778 0.33333333 0.44444444 0.47222222 0.47916667 0.48090278 0.48111979 0.48133681 0.48177083 0.48263889 0.48611111 0.5 0.55555556 0.66666667 0.77777778 0.88888889 1. ]
ご覧のように、多くのノードが同じ場所にグループ化されているのは、この時点で誤差推定値が減少していないためです。誤差推定値の非常に基本的な考え方は、適応メッシュとリッチ/より大きなメッシュの 2 つのメッシュがあるということです。 . A、Z、およびリッチ メッシュ上の F とアダプティブ メッシュ上の U の近似値を見つけ、それを細かいメッシュ上で補間し、以下を計算します。
eta_i = (f_i - sum_j (A[i,j]U[j]))*z[i]
また、大きな eta_i は、element_i を改良する必要があることを意味します。これは、Poisson_Stiffness (A を見つける)、Nodal_Quadrature (F を見つける)、Solver (U を見つける)、および DualSolution (Z を見つける) がすべて正しいと確信している私のコードです。問題が SubdivisionIndicators 関数にあるのか、Mesh リファインメントにあるのかはわかりませんが、通常、問題はエラーが減少せず、同じ場所の周りに要素が蓄積されていることに起因するため、前者を想定しています。
Mesh_refine(np.linspace(0,1,10),10,np.linspace(0,1,100),0.5)
finite-element-analysis - ABAQUS: 自重の下でエッジ中央にある 2 つのフィクスチャによって薄板のバランスをとる
寸法のプレート(200x200x5mm)を作成しました。密度=5000。プレートは x 軸に対して 30 度傾いています。ここで、自重の影響下で、図に示すように、面の中間点にある 2 つのサポートを使用して、プレートを平衡状態にします。サポートで mgsin30 と mgcos30 の理想的な反力を得るために使用する必要がある重力値 (+1 または +9.81) と境界条件。
PS: 面の 2 つの中間点でプレートを固定 (encaster) し、(Static,General) でシミュレーションを実行しました。反力を 6.15 & 4.02 N にしました (x 方向の g=+10 の場合)。しかし、理想的には、体に作用する法線力は mgcos30 と mgsin30 でなければなりません。
境界条件と、上記のプロセスでうまくいかなかった点について教えてください。ありがとう 図: 2 つの中点は図で丸で囲まれています
fortran - および要素の辺の数を生成するためのメッシュ オプション (tetgen-triangle)
Fortran 90 で有限要素コードを書きました。
このコードは、メッシング プロセスを除けば非常に高速です。
2D と 3D のメッシュにはそれぞれ三角形とtetgenを使用したので、もちろんこのプロセスは高速です。
たとえば、2D の単位正方形 [0,1]x[0,1] の場合、そのノードの座標を含むファイルがあります (たとえば、5 つのノードを持つメッシュ)。
と呼ばれcoordinate.dat
、ノードが呼び出された 4 つの要素 (三角形) があります。element.dat
また、各行i
が最初の最終ノードの番号であるファイルもありedge.dat
ます。
このファイルを使用して、次の情報を生成する必要があります。
(1) 要素 (三角形または四面体) が与えられた場合、その辺 (それぞれ辺と面) の数を知る必要があります。たとえば、次のような構造体またはファイルを生成する必要がありますstruct1.dat
。
(2) さらに、辺 (辺または面) が与えられた場合、その辺が共有する 2 つの要素 (辺が境界上にある場合は 1 つだけ) の要素番号を知る必要があります。たとえば、次のような構造 (またはファイル) を生成する必要がありますstruct2.dat
。
これらの構造 と の両方でstruct1.dat
、struct2.dat
多くのループを伴う力ずくのアプローチを使用したため、私のコードは非常に遅くなります。
これに最適化されたアルゴリズム (紙、またはそれ以上: ダウンロード可能な fortran のサブルーチン) を探していますか? 三角形と tetgen を使い続けたいと思っていますが、他のオプションも喜んで聞いています。
python - Fenics ヘルプ: データのリストを fenics の非線形部分の Expression に書き込みますか?
フェニクスの非線形問題を解こうとしています。非線形関数を式として知る代わりに、データの形での値しか知りません。
言い換えれば、nabla(k(u).nabla(u)) = C を解いている場合、k(u) がわからないか、x[0] などで記述できない場合、対応する値しかわかりません。 u のすべての値に対して k。
現時点では、いくつかの補間関数を作成し、それを関数空間に射影できる 'k' に呼び出しましたが、それを変分形式に入れて解決すると機能しないようです。
以下は、問題を明確にするためのコードです。テストとして、u=x^2 で k=1+u^2 の製造ソリューションの方法を使用していました。ここで、k_data = u=[0,(1+xmax のデータのリスト) ^2)]。
Expression でサブクラスを調べることができると言われましたが、x[0] に関して知らずにこれを行う方法がわかりません。助けてください!
python - Pythonが大きなファイルに正規表現を適用しない
以下は、完全なファイルに正規表現を適用しようとしているコードです。1MB 未満の小さなファイルでこのコードをテストすると、コードは正常に動作しますが、大きなファイルでは動作せず、空の配列が返されます。以下は、解析しようとしているデータのサンプルです。通常、このようなデータの 3M 行が含まれます。