plantFEM으로 만든 메쉬 객체를 matplotlib로 그립니다.

plantFEM에서 다음과 같은 스크립트를 실행하면 원통형 메쉬 객체가 만들어집니다.
! server.f90
program main
    use plantFEM
    implicit none

    type(FEMDomain_) :: domain

    call domain%create(meshtype="Cylinder",x_num=10,y_num=10,z_num=10,x_len=10.0d0,y_len=3.0d0,z_len=2.0d0)
    call domain%json(name="domain.json",endl=.true.)


end program main

실행 명령은 여기입니다.

./plantfem run

이 메쉬 객체는 json 형식으로 저장됩니다.
이것을 matplotlib로 그려 보겠습니다.

다음은 그리기 스크립트입니다.
import json
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

json_file = open('domain.json', 'r')
json_object = json.load(json_file)

# メッシュオブジェクト中の節点座標配列を取り出す

nodcoord = np.array(json_object["mesh"]["nodcoord"])

# 以下、matplotlibで描画
#x軸とy軸にラベル付け
fig = plt.figure()
ax = Axes3D(fig)

ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")

# 節点を描画

x = nodcoord[:,0]
y = nodcoord[:,1]
z = nodcoord[:,2]
ax.plot(x,y,z,marker="o",linestyle='None')

# 図を表示

plt.show()

여기서는 json 파일 이름을 domain.json으로 지정합니다.

스크립트를 실행하면 3차원 원통형 메시 노드가 그려집니다.




앞으로는
json_object["mesh"]["elemnod"]

에는 커넥티비티 정보가 격납되어 있으므로, 향후는 그쪽을 사용해 메쉬의 묘화를 실시하고 싶습니다.

좋은 웹페이지 즐겨찾기