matplotlibで2次元FEM(有限要素法)の結果を可視化する方法
2次元FEM結果をmatplotlibでプロットする方法
有限要素法(FEM:Finite Element Method)は、さまざまな材料タイプのモデリングや複雑な形状の解析、設計の一部に作用する局所的な影響の可視化など、幅広い用途で活用されている数値解析手法です。FEMの基本的な考え方は、大きな空間領域を「有限要素」と呼ばれる単純な部分に分割し、各要素を記述する簡単な方程式を組み合わせて、領域全体を表す大規模な連立方程式系を構築するというものです。
この記事では、Pythonのmatplotlibライブラリを使って、2次元FEMの計算結果をコンター図(等高線図)として可視化する手順を解説します。
実装の手順
matplotlibで2次元FEMの結果をプロットするには、以下のステップを実行します。
- 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
- numpyを使って、節点(ノード)、要素、節点値のデータポイントを作成します。
- 節点データポイントを転置して、x座標とy座標に分解します。
- tricontourf()関数を使って、塗りつぶしの三角グリッドコンタープロット(3D塗りつぶし等高線図)を作成します。
- show()メソッドを呼び出して、図を表示します。
コード例
以下は、7つの節点と6つの三角形要素からなる簡単なメッシュに対して、各節点の値をコンター図として描画するサンプルコードです。
import numpy as np import matplotlib.pyplot as plt # 図のサイズとレイアウトを設定 plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 節点の座標を定義 nodes = np.array([ [0.0, 0.0], [1.0, 0.0], [2.0, 0.5], [0.0, 1.0], [1.0, 1.0], [1.7, 1.3], [1.0, 1.7]]) # 三角形要素を定義(節点番号の組み合わせ) elements = np.array([ [1, 2, 5], [5, 4, 1], [2, 3, 6], [6, 5, 2], [4, 5, 7], [5, 6, 7]]) # 各節点における値 cvalues = [1, 2, 1, 2, 7, 4, 5] # 節点配列を転置してx座標・y座標を取得 x, y = nodes.T # 三角形要素を使った塗りつぶしコンタープロットを描画 plt.tricontourf(x, y, elements - 1, values, 12, cmap='copper') plt.show()
ここでのポイントは、elements - 1という処理です。numpy配列のインデックスは0始まりであるため、1始まりで定義した節点番号を0始まりに変換しています。また、cmap='copper'を指定することで、銅色を基調としたカラーマップで値の分布が表現されます。第5引数の12は、コンターのレベル数(等高線の分割数)を意味します。
実行結果
上記のコードを実行すると、三角形メッシュ上の節点値の分布が、滑らかに補間された塗りつぶしコンター図として表示されます。値が大きい領域ほど明るい色で、小さい領域ほど暗い色で表現され、FEM解析における物理量(温度、応力など)の空間分布を直感的に把握できます。
実際のFEM解析では、このように得られた節点値をもとに、tricontourf()を利用することで、市販のポストプロセッサーのようなカラーコンタープロットを簡単に作成できるため、解析結果の確認やプレゼンテーション資料の作成に非常に便利です。
-
MatplotlibでグラフのX軸とY軸を入れ替える方法
Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。 手順 NumPyを使って、xとyのデータポイントを作成します。 図を作成し、2つのサブプロットを追加します。 両方のサブプロットにタイトルを設定します。 plot()メソッドを使って、xとyのデータポイントをプロットします。 get_xdata()とget_ydata()を使
-
Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説
Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線