===== =====
==== General Information ====
* **Solver Fortran File:** ''MMG2DSolver.F90''
* **Solver Name:** ''ElmerIce_MeshAdapt2D(MMG2DSolver)''
* **Required Output Variable(s):**
* (1) ''dumy''
* **Required Input Variable(s):**
* (1) ''Metric''
* **Optional Output Variable(s):** None
* **Optional Input Variable(s):** None
==== General Description ====
This is a pseudo solver (i.e. it is not solving an equation). This solver is used for the mesh adaptation ([[mesh:meshadaptation|Mesh Adaptation]]).
This solver call the Mmg library (http://www.mmgtools.org/) to perform the mesh adaptation. This require to separately install the Mmg code (https://github.com/MmgTools/mmg).
This solver is included only if the //cmake// arguments “MMG_INCLUDE_DIR” and “MMG_LIBRARY” are provided when compiling //elmerice//.
It will performed isotropic or anisotropic 2D mesh adaptation depending on the //dofs// of the //Input Variable//:
* If //dofs//=1, it must contain the required element size at the current node location
* If //dofs//=3, it must contain the components (M11,M22,M12) of the anisotropic metric (see [[mesh:meshadaptation|Mesh Adaptation]])
Our implementation is actually restricted to the adaptation of plane-view 2D meshes comprised of linear 3-nodes triangular elements.
Tested with Mmg master branch commit (6acfa9e7b20e41134d56af10eba1bb8fd1283f8f).
==== SIF contents ====
Solver 1
Exec Solver = after timestep
Equation = "MMG"
Variable = -nooutput dumy
Procedure = "ElmerIce_MeshAdapt2D" "MMG2DSolver"
!! Name of the adapted mesh (will be used to save the mesh on disk)
Output file name = "square_aniso"
!! Name of the variable that contain the metric;
!! Anisotropic 2D mesh adaptation if M is of size 3 (M11,M22,M12)
!! Isotropic 2D mesh adaptation if M is of size 1
Metric Variable Name = String "M"
!! Mmg parameters (see Mmg documentation for more information)
hausd = Real 1000.0 !Hausdorff parameter (controls the refinement near boundaries)
hgrad = Real 1.3 !gradation value (controls the ratio between two adjacent edges)
verbosity = Integer 10 !Mmg verbosity
End
Boundary condition sections must be present to affect a boundary condition //Id// to the new boundary elements.
Boundary Condition X
!! The adapted mesh boundary elements will receive the //Id//: **X**
Target Boundaries = Y
End
==== Example ====
An example for isotropic mesh adaptation can be found under ''[ELMER_TRUNK]/elmerice/Tests/MMG2D_Iso''. \\
Examples for anisotropic mesh adaptation can be found under ''[ELMER_TRUNK]/elmerice/Tests/MMG2D_Aniso1'' and ''[ELMER_TRUNK]/elmerice/Tests/MMG2D_Aniso2'', where the mesh size is adapted using 1 or 2 variables (i.e. combining metric informations), respectively.