How to extract contact reaction forces using DPF from inside mechanical
Vishnu
Member, Employee Posts: 219
✭✭✭✭
Comments
-
below is a function which does this extraction.
You need to pass the object name as the argument to this function.
def get_cont_reaction(contact_obj_name): """ Use like below: get_cont_reaction("Contact Region") """ first_solution = ExtAPI.DataModel.Project.Model.Analyses[0].Solution solver_data = first_solution.SolverData contact_object = ExtAPI.DataModel.GetObjectsByName(contact_obj_name)[0] contact_object_data = solver_data.GetObjectData(contact_object) cont_elem_type_id = contact_object_data.SourceId cont_elems = solver_data.ElementIdsByMaterialId(str(cont_elem_type_id)) import mech_dpf import Ans.DataProcessing as dpf #Result Data analysis1 = ExtAPI.DataModel.Project.Model.Analyses[0] dataSource = dpf.DataSources(analysis1.Solution.ResultFilePath) #model my_model = dpf.Model(analysis1.Solution.ResultFilePath) #my mesh my_mesh = my_model.Mesh #time scoping my_time_scoping = [1] #scoping my_scoping = dpf.Scoping() my_scoping.Location = "Elemental" my_scoping.Ids = cont_elems 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] 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] 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] #Release Locked RST my_model.ReleaseStreams() return [-sum(CX.Data),-sum(CY.Data),-sum(CZ.Data)]
0 -
The nmisc result operator is updated in recent releases like below:
dpf.operators.result.nmisc
0