Moertel provides fundamental construction routines and services that are required for serial and parallel mesh-tying and contact formulations using Mortar methods.
This package supplies capabilities for nonconforming mesh tying and contact formulations in 2 and 3 dimensions using Mortar methods. Mortar methods are a type of Lagrange Multiplier constraints that can be used in contact formulations and in non-conforming or conforming mesh tying as well as in domain decomposition techniques. Originally introduced as a domain decomposition method for spectral elements, Mortar methods are used in a large class of nonconforming situations such as the surface coupling of different physical models, discretization schemes or non-matching triangulations along interior interfaces of a domain.
Suitable conditions at interfaces are formulated as weak continuity conditions in dual variables introducing Lagrange multipliers on the interface. By an approbiate choice of the function space of the Lagrange multipliers on an interface it is possible to locally condense Lagrange multipliers such that a sparse and definite system of equations can be formed which is equivalent to the saddle point system resulting from the Lagrange multiplier formulation.
Moreover if the problems on subdomains are symmetric positive definite (spd) or symmetric positive indefinite and the complete problem is known to be spd, then a spd system of equations can be recovered that leads to the same solution as the saddle point system of equations. This way, unmodfied standard solution techniques such as multigrid can be applied and the reduction in the solution costs can be expected to over-compensate costs for the Mortar formulation of the problem.
This package currently has the following capabilities and features:
Construction of one or several non-conforming interfaces in a 2D/3D problem, where each side of an interface is discretized independently with low order finite elements.
Handling of 'corner nodes' and 'edge nodes' in the case of several interfaces sharing common nodes.
Construction of a discrete Lagrange multiplier space on interfaces, were the space is determined by the choice of the user and the trace spaces of the underlying finite element functions on the interfaces.
Construction of corresponding coupling matrices and construction of a saddle point system of equations if the user provides the stiffness matrices of the subdomains.
Construction of an equivalent sparse symmetric or unsymmetric definite system of equations if the user provides the stiffness matrices of the subdomains and depending on the user's choice of the Lagrange multiplier space.
Full support interfaces to Trilinos packages Amesos (direct solvers), AztecOO (preconditioned iterative methods) and ML (algebraic multigrid preconditioners) for the solution of resulting systems of equations.
The user for example might supply subdomain stiffness matrices, left and right hand side vectors, choose solver options, define interfaces among subdomains and then use the Moertel package and its solver interfaces to obtain the solution of the tied problem.
Access to internal data to let the user build his/her own contact formulation or domain decomposition method based on Mortar formulations without the neccessity to actually implement core Mortar functionality.
Easy extensibility due to a modular and object orientated implementation.
Support for parallel and serial applications, where in the parallel case the interfaces are not expected to meet any partitioning requirements among processors, as most application will focuse on the partitioning of subdomains and not on interfaces. Partitioning of one or more interfaces is completely arbitrary.
This package does not feature:
Black box contact formulations though it provides substantial building blocks for the construction of such methods.
Moertel severely depends on the other Trilinos packages Epetra, EpetraExt, Teuchos, Amesos, AztecOO and ML.
To use Moertel one has to use at least the following enabled when configuring Trilinos:
--enable-moertel --enable-epetra --enable-epetraext --enable-teuchos --enable-ml --enable-ifpack --enable-ifpack-teuchos --enable-aztecoo --enable-aztecoo-teuchos --enable-amesos
Described here briefly is what would be the typical usage of Moertel for a mesh tying problem.
One would first construct an empty MOERTEL::Interface instance. This is a collective operation as all processors have to at least know about all existing interfaces.
Any MOERTEL::Interface instance has 2 sides which can be constructed independently and nonconforming. For more detailed information about restrictions and capabilities for Interfaces, see MOERTEL::Interface
Then it is neccessary to supply information about the geometry and connectivity of that Interface. This is done by defining an arbitrary number of MOERTEL::Node and MOERTEL::Segment instances and adding them to either side of the Interface.
After adding all segments and nodes to the Interface that are neccessary to define both sides of it the user has to indicate the completeness of the interface instance by calling MOERTEL::Interface::Complete() on it. Upon MOERTEL::Interface::Complete(), the parallel computation of that interface is organized and reasonability test upon the connectivity of the interface are performed.
The base class for the user interface is the MOERTEL::Manager.
It supplies all methods neccessary to perform the Mortar integration and to solve resulting systems of equations.
Once a MOERTEL::Interface is complete it can be added to a MOERTEL::Manager instance. A MOERTEL::Manager can hold an arbitrary number of interfaces.
Note that a Manager instance can not hold 2D (3D problem) and 1D (2D problem) interfaces at the same time. The integration of all interfaces and the assembly of constraint matrices is performed by MOERTEL::Manager::Mortar_Integrate().
After integration, the Manager instance supplies a variety of access and solution methods to the user, as e.g. full support interfaces to the solution packages Amesos, AztecOO and ML.
A simple serial example demonstrating usage of Moertel and its interfaces to other Trilinos packages is given in TwoSquares.cpp .
For more detailed documentation please browse the Moertel website and the
Flemish, B., Puso, M.A., Wohlmuth, B.I. (2005): "A new dual mortar method for curved interfaces: linear elasticity. IJNME, Vol 63, pp. 813-832.
Lamichhane, B.P., Wohlmuth, B.I. (2005): "Mortar finite Elements for Interface Problems", technical report, IANS, University of Stuttgart.
Puso, M.A., Laursen T.A. (2004): "A mortar segment-to-segment contact method for large deformation solid mechanics", CMAME, Vol. 193, pp. 601-629.
Puso, M.A., Laursen T.A. (2004): "A mortar segment-to-segment contact method for large deformations", CMAME, Vol 193, pp. 4891-4913.
Wohlmuth, B.I. (2001): "Discretization Methods and Iterative Solvers Based on Domain Decomposition", Springer Press.
Moertel was conceived and developed by Michael W. Gee
I would like to thank Barbara Wohlmuth, Stefan Huuber, Raymond Tuminaro and Pavel Bochev for discussions and support in creating this work.
Moertel is currently being maintained and extended by: