diff --git a/src/Mod/Fem/FemInputWriter.py b/src/Mod/Fem/FemInputWriter.py index 4eb31e24d0..e887a353ea 100644 --- a/src/Mod/Fem/FemInputWriter.py +++ b/src/Mod/Fem/FemInputWriter.py @@ -86,6 +86,7 @@ class FemInputWriter(): def get_constraints_fixed_nodes(self): # get nodes for femobj in self.fixed_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint fixed: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) # add nodes to constraint_conflict_nodes, needed by constraint plane rotation for node in femobj['Nodes']: @@ -94,6 +95,7 @@ class FemInputWriter(): def get_constraints_displacement_nodes(self): # get nodes for femobj in self.displacement_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint displacement: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) # add nodes to constraint_conflict_nodes, needed by constraint plane rotation for node in femobj['Nodes']: @@ -102,26 +104,31 @@ class FemInputWriter(): def get_constraints_planerotation_nodes(self): # get nodes for femobj in self.planerotation_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint plane rotation: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) def get_constraints_transform_nodes(self): # get nodes for femobj in self.transform_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint transform nodes: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) def get_constraints_temperature_nodes(self): # get nodes for femobj in self.temperature_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint temperature: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) def get_constraints_fluidsection_nodes(self): # get nodes for femobj in self.fluidsection_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint fluid section: " + femobj['Object'].Name) femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj) def get_constraints_force_nodeloads(self): # check shape type of reference shape for femobj in self.force_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] + print("Constraint force: " + femobj['Object'].Name) frc_obj = femobj['Object'] if femobj['RefShapeType'] == 'Vertex': # print("load on vertices --> we do not need the femelement_table and femnodes_mesh for node load calculation") @@ -167,6 +174,7 @@ class FemInputWriter(): 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'] + print("Constraint pressure: " + femobj['Object'].Name) 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)] @@ -174,18 +182,21 @@ class FemInputWriter(): def get_element_geometry2D_elements(self): # get element ids and write them into the objects + print("Shell thicknesses") if not self.femelement_table: self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh) FemMeshTools.get_femelement_sets(self.femmesh, self.femelement_table, self.shellthickness_objects) def get_element_geometry1D_elements(self): # get element ids and write them into the objects + print("Beam sections") if not self.femelement_table: self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh) FemMeshTools.get_femelement_sets(self.femmesh, self.femelement_table, self.beamsection_objects) def get_element_fluid1D_elements(self): # get element ids and write them into the objects + print("Fluid sections") if not self.femelement_table: self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh) FemMeshTools.get_femelement_sets(self.femmesh, self.femelement_table, self.fluidsection_objects) @@ -193,6 +204,7 @@ class FemInputWriter(): def get_material_elements(self): # it only works if either Volumes or Shellthicknesses or Beamsections are in the material objects # it means it does not work for mixed meshes and multiple materials, this is checked in check_prerequisites + print("Materials") if self.femmesh.Volumes: # we only could do this for volumes, if a mesh contains volumes we're going to use them in the analysis # but a mesh could contain the element faces of the volumes as faces and the edges of the faces as edges, diff --git a/src/Mod/Fem/FemMeshTools.py b/src/Mod/Fem/FemMeshTools.py index 3628cc887c..e6363afd85 100644 --- a/src/Mod/Fem/FemMeshTools.py +++ b/src/Mod/Fem/FemMeshTools.py @@ -35,9 +35,13 @@ def get_femnodes_by_femobj_with_references(femmesh, femobj): if femmesh.GroupCount: node_set = get_femmesh_groupdata_sets_by_name(femmesh, femobj, 'Node') # print('node_set_group: ', node_set) + if node_set: + print(" nodes where retrieved from existent FEM mesh group data") if not node_set: + print(" nodes will be retrieved by searching the appropriate nodes in the FEM mesh") node_set = get_femnodes_by_references(femmesh, femobj['Object'].References) # print('node_set_nogroup: ', node_set) + return node_set @@ -73,7 +77,7 @@ def get_femnodes_by_refshape(femmesh, ref): nodes = [] for refelement in ref[1]: r = get_element(ref[0], refelement) # the method getElement(element) does not return Solid elements - print(' ReferenceShape : ', r.ShapeType, ', ', ref[0].Name, ', ', ref[0].Label, ' --> ', refelement) + print(' ReferenceShape ... Type: ' + r.ShapeType + ', Object name: ' + ref[0].Name + ', Object label: ' + ref[0].Label + ', Element name: ' + refelement) if r.ShapeType == 'Vertex': nodes += femmesh.getNodesByVertex(r) elif r.ShapeType == 'Edge': @@ -332,6 +336,7 @@ def get_femelement_sets(femmesh, femelement_table, fem_objects, femnodes_ele_tab has_remaining_femelements = None for fem_object_i, fem_object in enumerate(fem_objects): obj = fem_object['Object'] + print("Constraint: " + obj.Name + " --> " + "We gone search in the mesh for the element ID's.") fem_object['ShortName'] = get_elset_short_name(obj, fem_object_i) # unique short identifier if obj.References: ref_shape_femelements = [] @@ -369,7 +374,6 @@ def get_femmesh_groupdata_sets_by_name(femmesh, fem_object, group_data_type): if grp_name.startswith(obj.Name + "_"): if femmesh.getGroupElementType(g) == group_data_type: print(" found mesh group for the IDs: " + grp_name + ', Type: ' + group_data_type) - # print("Constraint: " + obj.Name + " --> " + "IDs are in mesh group: " + grp_name) return femmesh.getGroupElements(g) # == ref_shape_femelements return () # an empty tuple is returned if no group data IDs where found @@ -380,6 +384,7 @@ def get_femelement_sets_from_group_data(femmesh, fem_objects): sum_group_elements = [] for fem_object_i, fem_object in enumerate(fem_objects): obj = fem_object['Object'] + print("Constraint: " + obj.Name + " --> " + "We have mesh groups. We will search for appropriate group data.") fem_object['ShortName'] = get_elset_short_name(obj, fem_object_i) # unique short identifier group_elements = get_femmesh_groupdata_sets_by_name(femmesh, fem_object, 'Volume') # see comments over there ! sum_group_elements += group_elements