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()