====== Reading SAMCEF files ======
===== Introduction =====
{{:doc:user:ico-advanced.png?40 |Advanced}}
Due to historical reasons, the preprocessor of [[http://www.plm.automation.siemens.com/fr_be/products/lms/samtech/|SAMCEF]] (called BACON) can be used to generate a mesh and geometrical entities. The module ''toolbox.samcef'' defines functions that convert a ''.fdb'' file (''fdb'' stands for "formatted database") to commands that Metafor understands. If a ''.dat'' file (i.e. a BACON script file) is provided, Metafor automatically runs BACON first as a background process in order to create the missing ''.fdb'' file. In this case, a SAMCEF license is required.
Using BACON is not recommended! The user who wants to use a another preprocessor should have a look at [[:doc:user:geometry:import:importgmsh|gmsh]] which is modern, free, and sometimes more robust than BACON.
===== BACON ''.dat'' file =====
The example simulation consists of a sheared cube (lower and upper faces and fixed and moved one with respect to another). The figure below shows the geometry:
{{ doc:user:cube_geo.png?400 |Geometry of the model}}
The BACON input file named ''cubeCG.dat'' (located in ''apps/ale'') contains the commands used to create the geometry, the mesh and node groups (selections).
__Geometry__
The geometry is created with the following BACON commands (see BACON manual for details):
* ''.3POI'' for the 8 points.
* ''.3DRO'' for the 12 edges.
* ''.CON'' for the 6 wires.
* ''.FACE'' for the 6 sides.
* ''.PLAN'' to create a surface (required for the 2D domain, see below).
* ''.VPEAU'' for the skin.
* ''.DOM'' for the domain (one 3D domain - the cube - and one 2D domain - the lower side which will be meshed and extruded).
__Mesh Generation__
* Performed with ''.GEN''.
* Lines are meshed with the command "''MODIFIE LIGNE''".
* The lower side is meshed with a transfinite mapping (command "''transfini''") and extruded with the command "''EXTRUSION''".
* An attribute number must then be defined.
__Choice of Element Type__
* The command ''.HYP VOLUME'' is used (in 2D and 3D).
__Definition of node/element groups (selections)__
* The command ''.SEL'' is used
* If ''.REN'' is used to change the numbering of nodes and mesh elements, it should be done before the ''.SEL''.
* Node selections will be used to define boundary conditions (fixations, contact, ...) in the Metafor model.
__Manual Creation of the ''.fdb'' file__
BACON can be started manually with the command:
samcef ba aleCubeCg n 1
From the ''.dat'' file, a ''.fdb'' is created with BACON with the commands:
INPUT
.SAUVE DB FORMAT
.STO
__Summary:__ What can be imported from BACON?
* Points
* Curves: ''Line'' - ''Arc'' (points generated automatically with a negative numbed in Metafor are shifted (''numPoint = numMaxPoints-numPoint'')
* Surface: ''Plan'' - ''Ruled'' - ''Coons'' (Only planes defined using three numbers are imported (other planes generate cpoints outside db) ).
* Wire
* Sides: Imported (even if not treated by Bacon)
* Skins: If ''MultiProjSkin'' objects are created, it is best to create them in the Python data set.
* Nodes: (imported as ''MeshedPoints'')
* Mesh elements: Triangle - Quad - Tetra - Hexa (with recovery in Metafor)
* Selections: only groups of nodes are imported (other have no use in Metafor)
* "DAO -- Mesh" relations are not read again (''nodeOnLine'', ...)
===== Metafor input file =====
__Reading the BACON file from Metafor__
In Metafor, the file ''.dat'' is converted thanks to a conversion module named ''toolbox.samcef'' (see ''apps.ale.cubeCG''):
import toolbox.samcef
bi = toolbox.samcef.BaconImporter(domain, os.path.splitext(__file__)[0]+'.dat' )
bi.execute()
where ''domain'' is the domain that should be filled with the converted mesh and geometry. The second argument corresponds to the full path to the file ''cubeCG.dat'' (it is computed from the full path of the python input file).
If all goes well, a file ''cubeCG.fdb'' is then created in the folder ''workspace/apps_ale_cubeCG''
__Element Generation in Metafor__
The BACON attributes are converted to ''Groups'' in Metafor. For example, if attribute #99 has been used when generating mesh in BACON, all the elements are stored in ''groupset(99)'' in Metafor.
app = FieldApplicator(1)
app.push(groupset(99))
interactionset.add(app)
__Boundary conditions in Metafor__
Selections in BACON are translated into ''Groups'' with the same number. Boundary conditions such as prescribed displacements or contact can be thus defined easily in Metafor. For example, a selection such as ''.SEL GROUPE 4 NOEUDS'' can lead to the following command in the input file:
loadingset.define(groupset(4), Field1D(TX,RE))
Consequence: Groups should be defined with a different number from attributes