FEM Maillage FEM à maillage

From FreeCAD Documentation
Revision as of 19:55, 12 June 2022 by David69 (talk | contribs)

FEM Maillage à maillage FEM

Emplacement du menu
Maillage → Maillage à maillage FEM
Ateliers
FEM
Raccourci par défaut
Aucun
Introduit dans la version
-
Voir aussi
FEM Tutoriel

Description

Cet outil convertit les surfaces des éléments 3D d'un maillage FEM sélectionné en maillage. En interne, il choisit les faces des éléments du maillage FEM qui sont uniques (non partagées par deux éléments) et les utilise pour créer les faces d'un maillage. En option, il permet de créer un maillage déformé par l'action des forces définies. Ceci est fait en ajoutant le déplacement des résultats FEM aux nœuds du maillage.

Les éléments bidimensionnels du maillage FEM ne sont pas pris en compte. Si vous devez les convertir, vous pouvez utiliser le script python ci-dessous.

Utilisation

  1. Sélectionnez un objet de maillage MEF.
  2. En option, sélectionnez également les résultats FEM.
  3. Il existe plusieurs façons d'appeler la commande:

Script

Exemple: Téléchargez l'exemple 3D FEM de FreeCAD à partir de l'atelier Start et exécutez le code suivant

femmesh_obj = App.ActiveDocument.getObject("Result_mesh").FemMesh
result = App.ActiveDocument.getObject("CalculiX_static_results")
import femmesh.femmesh2mesh
out_mesh = femmesh.femmesh2mesh.femmesh_2_mesh(femmesh_obj, result)
import Mesh
Mesh.show(Mesh.Mesh(out_mesh))

Convertir 2D éléments

Sélectionnez un maillage et lancez le code suivant dans la fenêtre Python de FreeCAD

import Mesh

def extend_by_triangle(i, j, k):
    triangle = [input_mesh.getNodeById(element_nodes[i]),
                input_mesh.getNodeById(element_nodes[j]),
                input_mesh.getNodeById(element_nodes[k])]
    return output_mesh.extend(triangle) 

selection = FreeCADGui.Selection.getSelection()
input_mesh = App.ActiveDocument.getObject(selection[0].Name).FemMesh
output_mesh = []
for element in input_mesh.Faces:
    element_nodes = input_mesh.getElementNodes(element)
    if len(element_nodes) in [3, 6]:  # tria3 or tria6 (ignoring mid-nodes)
        extend_by_triangle(0, 1, 2)
    elif len(element_nodes) in [4, 8]:  # quad4 or quad8 (ignoring mid-nodes)
        extend_by_triangle(0, 1, 2)
        extend_by_triangle(2, 3, 0)

obj = Mesh.Mesh(output_mesh)
Mesh.show(obj)