Shell Results
This code exports shell results to CSV and VTK on location (TOP,BOTTOM,MID,…) = shell_side.
import wbjn
import mech_dpf
import Ans.DataProcessing as dpf
mech_dpf.setExtAPI(ExtAPI)
#SHELL SIDE 0 --> TOP, 1 --> BOT, 2 --> BOT_TOP, 3 --> MID, 4 --> BOT_TOP_MID
shell_side = 0
export = True
cmd = 'returnValue(GetUserFilesDirectory())'
UserFilesPath = wbjn.ExecuteCommand(ExtAPI,cmd)
rst= Model.Analyses[0].ResultFileName
dataSource = dpf.DataSources(rst)
model = dpf.Model(rst)
mesh_set = model.Mesh
ns_op = dpf.operators.scoping.on_mesh_property(
property_name = 'shell_elements',
requested_location = 'Nodal',
mesh = mesh_set).outputs.mesh_scoping
#Time list
timelist = dpf.operators.metadata.time_freq_provider(
data_sources = dataSource).outputs.time_freq_support.GetData().TimeFreqs.Data
stress = dpf.operators.result.stress(
data_sources = dataSource,
time_scoping = timelist,
mesh_scoping = ns_op).outputs.fields_container
# e_shell_layer = 0 --> TOP, 1 --> BOT, 2 --> BOT_TOP, 3 --> MID, 4 --> BOT_TOP_MID
stress_data = dpf.operators.utility.change_shell_layers(
fields_container = stress,
e_shell_layer = shell_side).outputs.fields_container.GetDataT1()
op = dpf.operators.serialization.vtk_export()
op.inputs.file_path.Connect(UserFilesPath + r'\vtkresults.vtk')
op.inputs.mesh.Connect(mesh_set)
if export:
for index in range(stress_data.FieldCount): op.Connect(index+2, stress_data[index])
else: op.inputs.fields1.Connect(stress_data)
op.Run()
csv_ = dpf.operators.serialization.field_to_csv(
field_or_fields_container = stress_data,
file_path = UserFilesPath + r'\csvresults.csv')
csv_.Run()