How to extract contact reaction forces using DPF from inside mechanical

Member, Employee Posts: 222
100 Comments 100 Likes Second Anniversary Name Dropper
✭✭✭✭
edited March 2024 in Structures
Tagged:

Comments

  • Member, Employee Posts: 222
    100 Comments 100 Likes Second Anniversary Name Dropper
    ✭✭✭✭
    edited May 2023

    below is a function which does this extraction.

    You need to pass the object name as the argument to this function.


    1. def get_cont_reaction(contact_obj_name):
    2.     """    
    3.     Use like below:    get_cont_reaction("Contact Region")    
    4.     """    
    5.     first_solution = ExtAPI.DataModel.Project.Model.Analyses[0].Solution    
    6.     solver_data = first_solution.SolverData    
    7.     contact_object = ExtAPI.DataModel.GetObjectsByName(contact_obj_name)[0]
    8.     contact_object_data = solver_data.GetObjectData(contact_object)
    9.     cont_elem_type_id = contact_object_data.SourceId    
    10.     cont_elems = solver_data.ElementIdsByMaterialId(str(cont_elem_type_id))
    11.     import mech_dpf    
    12.     import Ans.DataProcessing as dpf    
    13.     #Result Data    
    14.     analysis1 = ExtAPI.DataModel.Project.Model.Analyses[0]
    15.     dataSource = dpf.DataSources(analysis1.Solution.ResultFilePath)
    16.     #model    
    17.     my_model = dpf.Model(analysis1.Solution.ResultFilePath)
    18.     #my mesh    
    19.     my_mesh = my_model.Mesh    
    20.     #time scoping    
    21.     my_time_scoping = [1]
    22.     #scoping    
    23.     my_scoping = dpf.Scoping()
    24.     my_scoping.Location = "Elemental"    
    25.     my_scoping.Ids = cont_elems    
    26.     CX = dpf.operators.result.mapdl.nmisc(time_scoping=my_time_scoping,mesh=my_mesh,data_sources=dataSource,item_index = 43,mesh_scoping=my_scoping).outputs.fields_container.GetData()[0]
    27.     CY = dpf.operators.result.mapdl.nmisc(time_scoping=my_time_scoping,mesh=my_mesh,data_sources=dataSource,item_index = 44,mesh_scoping=my_scoping).outputs.fields_container.GetData()[0]
    28.     CZ = dpf.operators.result.mapdl.nmisc(time_scoping=my_time_scoping,mesh=my_mesh,data_sources=dataSource,item_index = 45,mesh_scoping=my_scoping).outputs.fields_container.GetData()[0]
    29.     #Release Locked RST    
    30.     my_model.ReleaseStreams()
    31.     return [-sum(CX.Data),-sum(CY.Data),-sum(CZ.Data)]
    32.  
    33.  
    34.  
  • Member, Employee Posts: 222
    100 Comments 100 Likes Second Anniversary Name Dropper
    ✭✭✭✭

    The nmisc result operator is updated in recent releases like below:

    1. dpf.operators.result.nmisc

Welcome!

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