How to calculate Centroids of a volume mesh using DPF?

Member, Moderator, Employee Posts: 479
100 Answers 250 Likes 100 Comments Second Anniversary
✭✭✭✭
edited April 2024 in General Language Questions

How to calculate Centroids of a volume mesh using DPF?

Tagged:

Comments

  • Member, Moderator, Employee Posts: 479
    100 Answers 250 Likes 100 Comments Second Anniversary
    ✭✭✭✭
    1. import mech_dpf
    2. import Ans.DataProcessing as dpf
    3.  
    4. # ACT Mesh
    5. mesh = ExtAPI.DataModel.MeshDataByName('Global')
    6.  
    7. # Convert to DPF Mesh
    8. mesh_op = dpf.operators.mesh.acmo_mesh_provider()
    9. mesh_op.inputs.assembly_mesh.Connect(dpf.AnsDispatchHolder(mesh.InternalObject))
    10. dpf_mesh = mesh_op.outputs.getmeshes_container()[0]
    11.  
    12. # Element volume
    13. el_vol = dpf.operators.geo.elements_volume(mesh=dpf_mesh)
    14.  
    15. # Get nodes
    16. n_coord = dpf.operators.mesh.node_coordinates(mesh=dpf_mesh)
    17.  
    18. # Integrate coordinates over element volume
    19. vol_int = dpf.operators.geo.integrate_over_elements(field=n_coord, mesh=dpf_mesh)
    20.  
    21. # Select Components
    22. vol_int_x = dpf.operators.logic.component_selector(field=vol_int, component_number=0)
    23. vol_int_y = dpf.operators.logic.component_selector(field=vol_int, component_number=1)
    24. vol_int_z = dpf.operators.logic.component_selector(field=vol_int, component_number=2)
    25.  
    26. # Get centroid fields
    27. cent_x = dpf.operators.math.component_wise_divide(fieldA=vol_int_x, fieldB=el_vol)
    28. cent_f_x = cent_x.outputs.field.GetData()
    29.  
    30. cent_y = dpf.operators.math.component_wise_divide(fieldA=vol_int_y, fieldB=el_vol)
    31. cent_f_y = cent_y.outputs.field.GetData()
    32.  
    33. cent_z = dpf.operators.math.component_wise_divide(fieldA=vol_int_z, fieldB=el_vol)
    34. cent_f_z = cent_z.outputs.field.GetData()

Welcome!

It looks like you're new here. Sign in or register to get started.