FEM Maillage FEM à maillage

From FreeCAD Documentation
Revision as of 08:53, 11 April 2017 by Mario52 (talk | contribs) (Created page with "== Description == Cet outil converti une surface un élément 3D ou un élément FEM maille sélectionné en un élément maille . En interne, l'élément FEM maille choisi es...")

FEM FemMesh2Mesh

Emplacement du menu
FEM → Utilities → FEM mesh to mesh
Ateliers
FEM
Raccourci par défaut
Aucun
Introduit dans la version
-
Voir aussi
FEM tutorial

Description

Cet outil converti une surface un élément 3D ou un élément FEM maille sélectionné en un élément maille . En interne, l'élément FEM maille choisi est unique (non partagé entre deux éléments) et l'utilise pour créer une face ou un élément maille. Optionnellement il permet de créer un maillage déformé causé par les forces établies . Ceci est fait par ajout du déplacement de FEM résultant des nœuds du maillage.

Two dimensional elements from the FEM mesh are not taken into account. If you need to convert them, you can use a python script below.

How to use

  1. Select a FEM mesh object (optionally select additionally the FEM results)
  2. Press the FEM mesh to mesh button

Scripting

Example:

  • Load FreeCAD's 3D FEM example from the Start Workbench and run the following code
femmesh = App.ActiveDocument.getObject("Box_Mesh").FemMesh
result = App.ActiveDocument.getObject("CalculiX_static_results")
import FemMesh2Mesh
out_mesh = FemMesh2Mesh.femmesh_2_mesh(femmesh, result)
import Mesh
Mesh.show(Mesh.Mesh(out_mesh))

Converting 2D elements

Select a mesh and run the following python script

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)