Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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
         )
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)