ミーゼス応力の計算スクリプトをDataset Adapter形式に書き換えたものである。本スクリプトを適用すると、6成分形式の応力テンソルが3×3行列形式に展開され、ミーゼス応力が計算される。
for文で逐一データを追加する方法に対し、Dataset Adapterを利用した方が圧倒的に高速である。
dataset_adapterモジュールの場所はVTKのバージョンによって異なるため、条件分岐を行っている。
動作確認バージョン
ParaView 4.3.1
ParaView 4.4.0
Output Data Set Type
任意
Script
from paraview.vtk import vtkVersion import math if int(vtkVersion.GetVTKMajorVersion()) >= 7 or (int(vtkVersion.GetVTKMajorVersion()) == 6 and int(vtkVersion.GetVTKMinorVersion()) >= 2): from paraview.vtk.numpy_interface.dataset_adapter import numpyTovtkDataArray as da from paraview.vtk.numpy_interface.dataset_adapter import vtkDataArrayToVTKArray as va else: from paraview.vtk.dataset_adapter import numpyTovtkDataArray as da from paraview.vtk.dataset_adapter import vtkDataArrayToVTKArray as va s6_name = 'NodalSTRESS' pdi = self.GetInput() pdo = self.GetOutput() pdo.ShallowCopy(pdi) s6 = va(pdi.GetPointData().GetArray(s6_name)) pdo.GetPointData().AddArray(da(s6[:, array((0, 3, 4, 3, 1, 5, 4, 5, 2))], s6_name + '_3x3')) pdo.GetPointData().AddArray(da(\ sqrt(0.5 * (\ (s6[:, 0] - s6[:, 1]) ** 2 + (s6[:, 1] - s6[:, 2]) ** 2 + (s6[:, 2] - s6[:, 0]) ** 2\ + 3.0 * (s6[:, 3] ** 2 + s6[:, 4] ** 2 + s6[:, 3] ** 2 + s6[:, 5] ** 2 + s6[:, 4] ** 2 + s6[:, 5] ** 2)\ )), 'Mises'))
コメントを残す