FEM: ccx input writer, make use of the new faster binary search method for getting the pressure faces
This commit is contained in:
parent
894d79a57c
commit
8b24da477a
|
@ -85,6 +85,7 @@ class FemInputWriter():
|
|||
self.femnodes_mesh = {}
|
||||
self.femelement_table = {}
|
||||
self.constraint_conflict_nodes = []
|
||||
self.femnodes_ele_table = {}
|
||||
|
||||
def get_constraints_fixed_nodes(self):
|
||||
# get nodes
|
||||
|
@ -159,9 +160,25 @@ class FemInputWriter():
|
|||
def get_constraints_pressure_faces(self):
|
||||
# TODO see comments in get_constraints_force_nodeloads(), it applies here too. Mhh it applies to all constraints ...
|
||||
|
||||
'''
|
||||
# depreciated version
|
||||
# get the faces and face numbers
|
||||
for femobj in self.pressure_objects: # femobj --> dict, FreeCAD document object is femobj['Object']
|
||||
femobj['PressureFaces'] = FemMeshTools.get_pressure_obj_faces(self.femmesh, femobj)
|
||||
# print femobj['PressureFaces']
|
||||
femobj['PressureFaces'] = FemMeshTools.get_pressure_obj_faces_depreciated(self.femmesh, femobj)
|
||||
# print(femobj['PressureFaces'])
|
||||
'''
|
||||
|
||||
if not self.femnodes_mesh:
|
||||
self.femnodes_mesh = self.femmesh.Nodes
|
||||
if not self.femelement_table:
|
||||
self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh)
|
||||
if not self.femnodes_ele_table:
|
||||
self.femnodes_ele_table = FemMeshTools.get_femnodes_ele_table(self.femnodes_mesh, self.femelement_table)
|
||||
|
||||
for femobj in self.pressure_objects: # femobj --> dict, FreeCAD document object is femobj['Object']
|
||||
pressure_faces = FemMeshTools.get_pressure_obj_faces(self.femmesh, self.femelement_table, self.femnodes_ele_table, femobj)
|
||||
# print(len(pressure_faces))
|
||||
femobj['PressureFaces'] = [(femobj['Object'].Name + ': face load', pressure_faces)]
|
||||
# print(femobj['PressureFaces'])
|
||||
|
||||
# @}
|
||||
|
|
|
@ -491,7 +491,7 @@ def get_force_obj_edge_nodeload_table(femmesh, femelement_table, femnodes_mesh,
|
|||
return force_obj_node_load_table
|
||||
|
||||
|
||||
def get_pressure_obj_faces(femmesh, femobj):
|
||||
def get_pressure_obj_faces_depreciated(femmesh, femobj):
|
||||
pressure_faces = []
|
||||
for o, elem_tup in femobj['Object'].References:
|
||||
for elem in elem_tup:
|
||||
|
@ -503,6 +503,16 @@ def get_pressure_obj_faces(femmesh, femobj):
|
|||
return pressure_faces
|
||||
|
||||
|
||||
def get_pressure_obj_faces(femmesh, femelement_table, femnodes_ele_table, femobj):
|
||||
# get the nodes
|
||||
prs_face_node_set = get_femnodes_by_femobj_with_references(femmesh, femobj) # sorted and duplicates removed
|
||||
# print('prs_face_node_set: ', prs_face_node_set)
|
||||
# fill the bit_pattern_dict and search for the faces
|
||||
bit_pattern_dict = get_bit_pattern_dict(femelement_table, femnodes_ele_table, prs_face_node_set)
|
||||
pressure_faces = get_ccxelement_faces_from_binary_search(bit_pattern_dict)
|
||||
return pressure_faces
|
||||
|
||||
|
||||
def get_force_obj_face_nodeload_table(femmesh, femelement_table, femnodes_mesh, frc_obj):
|
||||
# force_obj_node_load_table = [('refshape_name.elemname',node_load_table), ..., ('refshape_name.elemname',node_load_table)]
|
||||
force_obj_node_load_table = []
|
||||
|
|
Loading…
Reference in New Issue
Block a user