def get_constraints_fixed_nodes(self): # get nodes for femobj in self.fixed_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] FreeCAD.Console.PrintMessage("Constraint fixed: " + femobj['Object'].Name + '\n') 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']: self.constraint_conflict_nodes.append(node) # if mixed mesh with solids the node set needs to be split because solid nodes do not have rotational degree of freedom if self.femmesh.Volumes and (len(self.shellthickness_objects) > 0 or len(self.beamsection_objects) > 0): print('We need to find the solid nodes.') if not self.femelement_volumes_table: self.femelement_volumes_table = FemMeshTools.get_femelement_volumes_table(self.femmesh) for femobj in self.fixed_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] nds_solid = [] nds_faceedge = [] for n in femobj['Nodes']: solid_node = False for ve in self.femelement_volumes_table: if n in self.femelement_volumes_table[ve]: solid_node = True nds_solid.append(n) break if not solid_node: nds_faceedge.append(n) femobj['NodesSolid'] = set(nds_solid) femobj['NodesFaceEdge'] = set(nds_faceedge)
def get_constraints_displacement_nodes(self): # get nodes for femobj in self.displacement_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] FreeCAD.Console.PrintMessage("Constraint displacement: " + femobj['Object'].Name + '\n') 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']: self.constraint_conflict_nodes.append(node)
def get_constraints_planerotation_nodes(self): # get nodes for femobj in self.planerotation_objects: # femobj --> dict, FreeCAD document object is femobj["Object"] print_obj_info(femobj["Object"]) femobj["Nodes"] = meshtools.get_femnodes_by_femobj_with_references( self.femmesh, femobj )
def get_constraints_displacement_nodes(self): # get nodes for femobj in self.displacement_objects: # femobj --> dict, FreeCAD document object is femobj["Object"] print_obj_info(femobj["Object"]) femobj["Nodes"] = meshtools.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"]: self.constraint_conflict_nodes.append(node)
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']: self.constraint_conflict_nodes.append(node)
def get_constraints_displacement_nodes(self): # get nodes for femobj in self.displacement_objects: # femobj --> dict, FreeCAD document object is femobj["Object"] FreeCAD.Console.PrintMessage("Constraint displacement:" + " " + femobj["Object"].Name + "\n") femobj["Nodes"] = meshtools.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"]: self.constraint_conflict_nodes.append(node)
def get_constraints_fixed_nodes(self): # get nodes for femobj in self.fixed_objects: # femobj --> dict, FreeCAD document object is femobj["Object"] print_obj_info(femobj["Object"]) femobj["Nodes"] = meshtools.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"]: self.constraint_conflict_nodes.append(node) # if mixed mesh with solids the node set needs to be split # because solid nodes do not have rotational degree of freedom if self.femmesh.Volumes \ and (len(self.shellthickness_objects) > 0 or len(self.beamsection_objects) > 0): FreeCAD.Console.PrintMessage("We need to find the solid nodes.\n") if not self.femelement_volumes_table: self.femelement_volumes_table = meshtools.get_femelement_volumes_table( self.femmesh ) for femobj in self.fixed_objects: # femobj --> dict, FreeCAD document object is femobj["Object"] nds_solid = [] nds_faceedge = [] for n in femobj["Nodes"]: solid_node = False for ve in self.femelement_volumes_table: if n in self.femelement_volumes_table[ve]: solid_node = True nds_solid.append(n) break if not solid_node: nds_faceedge.append(n) femobj["NodesSolid"] = set(nds_solid) femobj["NodesFaceEdge"] = set(nds_faceedge)
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_fluidsection_nodes(self): # get nodes for femobj in self.fluidsection_objects: # femobj --> dict, FreeCAD document object is femobj['Object'] FreeCAD.Console.PrintMessage("Constraint fluid section: " + femobj['Object'].Name + '\n') 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'] FreeCAD.Console.PrintMessage("Constraint temperature:" + ' ' + femobj['Object'].Name + '\n') femobj['Nodes'] = FemMeshTools.get_femnodes_by_femobj_with_references(self.femmesh, femobj)