diff --git a/doc/dev-doc/manual/appendix/material-parameters.rst b/doc/dev-doc/manual/appendix/material-parameters.rst deleted file mode 100644 index 622aef2cd..000000000 --- a/doc/dev-doc/manual/appendix/material-parameters.rst +++ /dev/null @@ -1,150 +0,0 @@ -.. _app-material-parameters: - -Material Parameters -=================== - -Linear elastic isotropic ------------------------- - -Keyword: :ref:`elastic ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``Plane_stress``: (*bool*) Plane stress simplification (only 2D problems) - -Energies: - -- ``potential``: elastic potential energy - - -Linear elastic anisotropic --------------------------- - -Keyword: :ref:`elastic_anisotropic ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``n1``: (*Vector*) Direction of main material axis -- ``n2``: (*Vector*) Direction of second material axis -- ``n3``: (*Vector*) Direction of third material axis -- ``C..``: (*Real*) Coefficient ij of material tensor C (all the 36 values in - Voigt notation can be entered) -- ``alpha``: (*Real*) Viscous propertion (default is 0) - - -Linear elastic orthotropic --------------------------- - -Keyword: :ref:`elastic_orthotropic ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``n1``: (*Vector*) Direction of main material axis -- ``n2``: (*Vector*) Direction of second material axis (if applicable) -- ``n3``: (*Vector*) Direction of third material axis (if applicable) -- ``E1``: (*Real*) Young's modulus (n1) -- ``E2``: (*Real*) Young's modulus (n2) -- ``E3``: (*Real*) Young's modulus (n3) -- ``nu1``: (*Real*) Poisson's ratio (n1) -- ``nu2``: (*Real*) Poisson's ratio (n2) -- ``nu3``: (*Real*) Poisson's ratio (n3) -- ``G12``: (*Real*) Shear modulus (12) -- ``G13``: (*Real*) Shear modulus (13) -- ``G23``: (*Real*) Shear modulus (23) - - -Neohookean (finite strains) ---------------------------- - -Keyword: :ref:`neohookean ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``Plane_stress``: (*bool*) Plane stress simplification (only 2D problems) - - -Standard linear solid ---------------------- - -Keyword: :ref:`sls_deviatoric ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``Plane_stress``: (*bool*) Plane stress simplification (only 2D problems) -- ``Eta``: (*Real*) Viscosity -- ``Ev``: (*Real*) Stiffness of viscous element - -Energies: - -- ``dissipated``: energy dissipated with viscosity - - -Elasto-plastic linear isotropic hardening ------------------------------------------ - -Keyword: :ref:`plastic_linear_isotropic_hardening ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``h``: (*Real*) Hardening modulus -- ``sigma_y``: (*Real*) Yield stress - -Energies: - -- ``potential``: elastic part of the potential energy -- ``plastic``: dissipated plastic energy (integrated over time) - - -Marigo ------- - -Keyword: :ref:`marigo ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``Plane_stress``: (*bool*) Plane stress simplification (only 2D problems) -- ``Yd``: (*Random*) Hardening modulus -- ``Sd``: (*Real*) Damage energy - -Energies: - -- ``dissipated``: energy dissipated in damage - - -Mazars ------- - -Keyword: :ref:`mazars ` - -Parameters: - -- ``rho``: (*Real*) Density -- ``E``: (*Real*) Young's modulus -- ``nu``: (*Real*) Poisson's ratio -- ``At``: (*Real*) Traction post-peak asymptotic value -- ``Bt``: (*Real*) Traction decay shape -- ``Ac``: (*Real*) Compression post-peak asymptotic value -- ``Bc``: (*Real*) Compression decay shape -- ``K0``: (*Real*) Damage threshold -- ``beta``: (*Real*) Shear parameter - -Energies: - -- ``dissipated``: energy dissipated in damage diff --git a/doc/dev-doc/manual/contactmechanicsmodel.rst b/doc/dev-doc/manual/contactmechanicsmodel.rst index 5b4c19c96..492731e3a 100644 --- a/doc/dev-doc/manual/contactmechanicsmodel.rst +++ b/doc/dev-doc/manual/contactmechanicsmodel.rst @@ -1,463 +1,463 @@ Contact Mechanics Model ======================= The contact mechanics model is a specific implementation of :cpp:class:`Model ` interface to handle contact between bodies. Theory ------ .. _fig-contactmechanicsmodel-schematic: .. figure:: figures/contact_mechanics_schematic.png :align: center :width: 90% Basic notation for the contact between two bodies. Let us consider two deformable bodies, represented as :math:`\Omega_\alpha`, :math:`\alpha=1, 2`. The boundary :math:`\Gamma_\alpha` of a body is divided into three non-intersecting regions : :math:`\Gamma^D_\alpha` with prescribed displacements, :math:`\Gamma^N_\alpha` with prescribed tractions and :math:`\Gamma^C_\alpha` where the two bodies :math:`\Omega_1` can potentially come into contact such that: .. math:: \Gamma^D_\alpha \cup \Gamma^N_\alpha \cup \Gamma^C_\alpha = \Gamma_\alpha, \quad \Gamma^D_\alpha \cap \Gamma^N_\alpha \cap \Gamma^C_\alpha = \emptyset The motion of the two bodies is described in a fixed spatial frame defined by orthonormal basis :math:`[\boldsymbol{e}_x, \boldsymbol{e}_y, \boldsymbol{e}_z]` by mapping :math:`\mathcal{M}_\alpha^t` in time interval :math:`t \in [0, T]`. In *reference* configuration :math:`i.e.~ t=0`, the position vector for an arbitrary point on body :math:`\Omega_\alpha` is represented as :math:`\boldsymbol{X}_\alpha` and in actual configuration the points are denoted by small letters for example :math:`\boldsymbol{x}`. :numref:`fig-contactmechanicsmodel-schematic` shows the motion of two bodies from the *reference* to actual configuration. During the motion, the bodies can potentially come in contact along :math:`\Gamma^C_\alpha` as shown in :numref:`fig-contactmechanicsmodel-schematic`, termed as *potential -contact zone*. Upon contact, two physical conditions needs to be +contact zone*. Upon contact, two physical conditions need to be satisfied :math:`(i)` the two surfaces :math:`\Gamma^C_\alpha` cannot interpenetrate at any time during motion :math:`(ii)` forces must be exerted by bodies along the :math:`\Gamma^C_\alpha` to resist the interpenetration as well as relative motion along the contacting surfaces. Of the two conditions, the non-penetration of bodies can be defined by a *gap function* :math:`g` which represents the separation between the two bodies: .. math:: g = (\boldsymbol{r} -\boldsymbol{\rho}).\boldsymbol{n} where :math:`\boldsymbol{r} \in \mathcal{M}[\Gamma^C_1]` is the position of point :math:`\boldsymbol{X}_1` at time :math:`t` , -:math:`\boldsymbol{\rho} \in \mathcal{M}[\Gamma^C_2]` is the closet +:math:`\boldsymbol{\rho} \in \mathcal{M}[\Gamma^C_2]` is the closest point projection of :math:`\boldsymbol{r}` and :math:`\boldsymbol{n}` is the outward normal at :math:`\boldsymbol{\rho}` (see :numref:`fig-contactmechanicsmodel-schematic` b). To preclude the -interpenetration, the *gap function*, :math:`g \geq 0` as shown in +interpenetration, the *gap function*, :math:`g \geq 0` is shown in \Cref{fig:body-contact}b. When the two bodies eventually come in contact, the gap ceases to exists :math:`i.e.~ g=0` which leads to the development of tractions :math:`\boldsymbol{T}_\alpha` along the contact interface. Thus, the boundary value problem can be formulated for the two bodies :math:`\Omega_\alpha` with contact constraint as an extra boundary condition: .. math:: \boldsymbol{T}\Big |_{{\Gamma^C}_{\alpha}} = \boldsymbol{T}_\alpha Solution spaces :math:`\mathcal{U}_\alpha` and weighting spaces :math:`\mathcal{W}_\alpha` are defined for each body: .. math:: \mathcal{U}_\alpha = \{ \boldsymbol{u}_\alpha: \Omega_\alpha \to \mathbb{R}^d ~|~ \boldsymbol{u}=\boldsymbol{u}[\boldsymbol{x}_\alpha]~ \forall~\boldsymbol{x}_\alpha \in \Gamma^D_\alpha \} .. math:: \mathcal{W}_\alpha = \{ \boldsymbol{w}_\alpha: \Omega_\alpha \to \mathbb{R}^d ~|~ \boldsymbol{w}=0~ \forall~ \boldsymbol{x}_\alpha \in \Gamma^D_\alpha \} The variational form for each body :math:`\alpha` is given as .. math:: \int_{\Omega_\alpha}\boldsymbol{\sigma}[\boldsymbol{u}_\alpha]:\boldsymbol{\epsilon}[\boldsymbol{w}_\alpha]~d\Omega_\alpha = \int_{\Omega_\alpha}\boldsymbol{b}_\alpha.\boldsymbol{w}_\alpha~d\Omega_\alpha + \int_{\Gamma^C_\alpha}\boldsymbol{T}_\alpha.\boldsymbol{w}_\alpha~d\Gamma_\alpha + \int_{\Gamma^N_\alpha}\boldsymbol{T}_\alpha^D.\boldsymbol{w}_\alpha~d\Gamma^N_\alpha In equilibrium state, following Newton's :math:`3^{rd}` law, it can be stated the forces exerted by two bodies along :math:`\Gamma^C_\alpha` are equal and opposite: .. math:: \boldsymbol{T}_1~d\Gamma^C_1 = - \boldsymbol{T}_2~d\Gamma^C_2 This allows to replace the two integrals over contact surfaces $\Gamma^C_\alpha$ with a single integral over any one of the surfaces: .. math:: \int_\alpha \boldsymbol{T}_\alpha.\delta\boldsymbol{u}_\alpha~d\Gamma^C_\alpha &= \int_{\Gamma^C_1}\boldsymbol{T}_1\delta\boldsymbol{u}_1~d\Gamma^C_1 + \int_{\Gamma^C_2} \boldsymbol{T}_2\delta\boldsymbol{u}_2~d\Gamma^C_2 \\ &= \int_{\Gamma^C_1} \boldsymbol{T}_1(\delta\boldsymbol{u}_1 - \delta\boldsymbol{u}_2)~d\Gamma^C_1 The contact traction :math:`\boldsymbol{T}_1` can be decomposed into -its normal and tangential component as: +its normal and tangential components as: .. math:: \boldsymbol{T}_\alpha = \boldsymbol{T}^n + \boldsymbol{T}^t = \sigma_n\boldsymbol{n}+ \boldsymbol{T}^t where :math:`\boldsymbol{T}^n` is the component along the normal vector :math:`\boldsymbol{n}` and :math:`\boldsymbol{T}^t` is the component tangential to :math:`\boldsymbol{n}` developed due to the friction along the surfaces. Upon contact , the normal pressure :math:`\sigma_n` associated to :math:`\boldsymbol{T}^n` must be compressive to preclude the interpenetration of bodies. In general, if a point is not in contact :math:`g > 0`, then :math:`\sigma_n=0` and in contact :math:`\sigma_n < 0`. This leads to the non-penetration condition: .. math:: \sigma_n g = 0 The above set of conditions care called *Hertz-Signorini-Moreau* or *Karush-Kuhn-Tucker* condition given as: .. math:: g \geq 0, \quad \sigma_n \leq 0 \quad g.\sigma_n = 0 The tangential component of the contact traction is defined as : .. math:: \boldsymbol{T}_t = (\boldsymbol{I} - \boldsymbol{n} \otimes \boldsymbol{n})\boldsymbol{\sigma} where :math:`\boldsymbol{\sigma}` is the Cauchy stress tensor and $\boldsymbol{n}$ is the outward normal at :math:`\boldsymbol{\rho}`. The direction of tangential traction, -:math:`\boldsymbol{s}` is determined the relative sliding velocity +:math:`\boldsymbol{s}` is determined by the relative sliding velocity :math:`\boldsymbol{v}_t` of the point :math:`\boldsymbol{r}` and its projection point :math:`\boldsymbol{\rho}` in contact and is given as: .. math:: \boldsymbol{s} = \begin{cases} \dfrac{\boldsymbol{v}_t}{\| \boldsymbol{v}_t \|}, & \text{ if } \| \boldsymbol{v}_t\| > 0 \\ & \\ 0, & \text{ if } \| \boldsymbol{v}_t\| = 0 \end{cases} According to the experimental observations of Amontons and~\cite{coulomb}, in presence of friction, the interface develops a frictional strength which governs the sliding between them and thus -constrains the tangential contact. In Akantu implmenetation, we +constrains the tangential contact. In Akantu implementation, we restrict to the classical non-associated Coulomb's friction law~\citep{coulomb} which is widely used in many physical and engineering applications. The Coulomb's friction law, as a first-order approximation, states that the frictional strength is proportional to the normal pressure: .. math:: \sigma_{fric} = \mu |\sigma_n| where :math:`\mu` is coefficient of friction between interfaces. If the tangential traction :math:`||\boldsymbol{T}^t||` developed is below the frictional strength, the relative tangential sliding is zero :math:`i.e.~\boldsymbol{v}_t = 0` : .. math:: ||\boldsymbol{T}^t|| < \mu| \sigma_n |, \quad \boldsymbol{v}_t=0 The above equation denotes a *stick state*. As soon as the tangential stress reaches the frictional strength, the two surfaces start slipping relative to each other :math:`i.e.~\boldsymbol{v}_t > 0`. The slipping of the surfaces ensures that the tangential stress does not exceeds the frictional strength, :math:`||\boldsymbol{\sigma}_t|| -\mu|\sigma_n| = 0`. This definition of *slip state* is defined as: .. math:: ||\boldsymbol{\sigma}_t|| -\mu|\sigma_n| = 0, \quad ||\boldsymbol{v}_t|| > 0 Similar to *Karush-Kuhn-Tucker* condition for normal contact, the above conditions formulate the necessary conditions for tangential contact: .. math:: ||\boldsymbol{v}_t|| \geq 0, \quad ||\boldsymbol{T}^t|| -\mu|\sigma_n| = 0, \quad ||\boldsymbol{v}_t|| \Big(||\boldsymbol{T}^t|| -\mu|\sigma_n| \Big) = 0 The above contact and frictional constraints are unilateral in nature *i.e.* they do not behave symmetrically with respect to *gap function, g*. This renders the balance of work as a variational inequality: .. math:: \sum_{\alpha=1}^2 \int_{\Omega_\alpha}\boldsymbol{\sigma}[\boldsymbol{u}_\alpha]:\boldsymbol{\epsilon}[\boldsymbol{w}_\alpha]~d\Omega_\alpha \geq \sum_{\alpha=1}^2 \Big \{ \int_{\Omega_\alpha}\boldsymbol{b}_\alpha.\boldsymbol{w}_\alpha~d\Omega_\alpha + \int_{\Gamma^Ct_\alpha}\boldsymbol{T}_\alpha.\boldsymbol{w}_\alpha~d\Gamma_\alpha + \int_{\Gamma^N_\alpha}\boldsymbol{T}_\alpha^D.\boldsymbol{w}_\alpha~d\Gamma_\alpha\Big \} which makes it a non-linear optimization problem. The strategy employed (optimization techniques) to find the solution of variational inequality depends on the choice of numerical framework employed to solve the B.V.P. To solve the minimization problem, FEM introduces the concept of active set strategy to overcome the problem. In active set strategy, it is assumed that at current solution step, the part of potential contact zone :math:`\Gamma^C_1` that are in contact are known, :math:`\Gamma^{C\star}_1 \subseteq \Gamma^C_1`. This is achieved by first allowing the two bodies to interpenetrate and finding the interpenetrated part of potential contact zone which will denote the active set. Knowing the active set, transforms the optimization problem to a variational equality where constraints are imposed along the active part of contacting interface: .. math:: \sum_{\alpha=1}^2 \int_{\Omega_\alpha}\boldsymbol{\sigma}[\boldsymbol{u}_\alpha]:\boldsymbol{\epsilon}[\delta\boldsymbol{u}_\alpha]~d\Omega_\alpha = \sum_{\alpha=1}^2 \Big \{ \int_{\Omega_\alpha}\boldsymbol{b}_\alpha.\delta\boldsymbol{u}_\alpha~d\Omega_\alpha + \int_{\Gamma^N_\alpha}\boldsymbol{T}_\alpha^D.\delta\boldsymbol{u}_\alpha~d\Gamma_\alpha\Big \} \\ + \int_{\Gamma^{C\star}_1 }\boldsymbol{T}_1(\delta\boldsymbol{u}_1 - \delta\boldsymbol{u}_2)~d\Gamma^{C\star}_1 Thus, the resolution of contact problem in FEM requires two steps: finding the active set along the contacting interface and then imposing the contact constraints along the active set only. In the following section, we describe the contact detection strategies employed to find the active set. Using the Contact Mechanics Model --------------------------------- The :cpp:class:`ContactMechanicsModel ` object solves the contact problem. An instance of the class can be created like this:: ContactMechanicsModel contact(mesh, spatial_dimension); while an existing mesh has been used (see \ref{sect:common:mesh}). To intialize the model object:: contact.initFull(_analysis_method = _explicit_lumped_mass); The contact mechanics model contains :cpp:class:`Arrays `: :cpp:func:`gaps ` contains the nodal interpenetrating value :math:`g` (positive for interpenetration, zero by default after initialization) :cpp:func:`normals ` contains the normal vector at the slave nodes (zero by default after initialization). In Akantu, the possible contact between surfaces is divided into 3 categories. - Physical Surfaces - The contact occurs between two pyhsically defined boundaries/surfaces of a body. - Cohesive Surfaces - The contact occurs between fracturing surfaces created using :cpp:class:`SolidMechanicsModelCohesive `. - All Surfaces - The contact can occur between physical as well as cohesive surfaces. To select the contacting surfaces, one must define a :cpp:class:`SurfaceSelector ` of one of the above defined types. To define contact between Physical surfaces, an instance of :cpp:class:`PhysicalSurfaceSelector ` is created where the mesh object (see \ref{sect:common:mesh}) is passed as an argument:: auto && surface_selector = std::make_shared(mesh); -To defind contact between cohesive surfaces, an instance of +To define contact between cohesive surfaces, an instance of :cpp:class:`CohesiveSurfaceSelector ` must be created. As the contact occurs between the cohesive facets, therefore the mesh facet object is passed as an argument:: auto && surface_selector = std::make_shared(mesh.getMeshFacets()); To defind contact between physical and cohesive surfaces, an instance of :cpp:class:`AllSurfaceSelector ` must be created. As the contact occurs between the cohesive facets, therefore the mesh facet object is passed as an argument:: auto && surface_selector = std::make_shared(mesh.getMeshFacets()); Once a surface selector is created it must be assigned to the :cpp:class:`ContactDetector ` class:: contact.getContactDetector().setSurfaceSelector(surface_selector); Contact detection ''''''''''''''''' .. code-block:: contact_detector [ type = explicit master = contact_bottom slave = contact_top projection_tolerance = 1e-10 max_iterations = 100 extension_tolerance = 1e-5 ] Contact resolution '''''''''''''''''' .. code-block:: contact_resolution penalty_linear [ name = contact_top mu = 0.0 epsilon_n = 4e5 epsilon_t = 1e5 is_master_deformable = false ] Coupling with :cpp:class:`SolidMechanicsModel ` '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' To couple the :cpp:class:`ContactMechancisModel` contact mechanics model with :cpp:class:`SolidMechanicsModel` a dedicated coupler class :cpp:class:`CouplerSolidContact` is provided. When an instance of a coupler class is created, it automatically creates the instances of solid mechanics model and contact mechanics model. The two objects can be retrived from the coupler class. .. code-block:: c++ CouplerSolidContact coupler(mesh); auto & solid = coupler.getSolidMechanicsModel(); auto & contact = coupler.getContactMechanicsModel(); Simply initializing the coupler initializes the two models. .. code-block:: c++ coupler.initFull( _analysis_method = _explicit_lumped_mass); However two set the material selector and the contact detector for the two models, one must set them using directly the instance of the two model classes. .. code-block:: c++ auto && selector = std::make_shared>( "physical_names",solid); solid.setMaterialSelector(selector); .. code-block:: c++ auto && surface_selector = std::make_shared(mesh); contact.getContactDetector().setSurfaceSelector(surface_selector); The dumping fields/vectors belonging to the solid mechanics model and contact mechanics model can directly be set through the coupler class. .. code-block:: c++ coupler.setBaseName("contact-explicit-dynamic"); coupler.addDumpFieldVector("displacement"); coupler.addDumpFieldVector("normal_force"); coupler.addDumpFieldVector("external_force"); coupler.addDumpFieldVector("internal_force"); coupler.addDumpField("gaps"); coupler.addDumpField("areas"); coupler.addDumpField("stress"); Finally to solve the two models :cpp:func:`solveStep ` function of coupler class must be invoked. .. code-block:: c++ coupler.solveStep(); Coupling with :cpp:class:`SolidMechanicsModelCohesive ` ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' To use the contact mechanics model with cohesive elements, one must use the :cpp:class:`CouplerSolidCohesiveContact` to coupler the :cpp:class:`ContactMechancisModel` with :cpp:class:`SolidMechanicsModelCohesive`. The initialization and invocation of the functions are similar to :cpp:class:`CouplerSolidContact` except a few changes. .. code-block:: c++ solid = coupler.getSolidMechanicsModelCohesive(); While initializing the coupler, the nature of cohesive elements -(extrinsic/intrinsic) should needs to be passed. +(extrinsic/intrinsic) should need to be passed. .. code-block:: c++ coupler.initFull( _analysis_method = _explicit_lumped_mass, _is_extrinsic=true); To ensure that cohesive elements break during an explicit insertion, one must call the function :cpp:func:`checkCohesiveStress() ` after :cpp:func:`solveStep() `. .. code-block:: c++ coupler.solveStep(); solid.checkCohesiveStress(); diff --git a/examples/python/contact-mechanics/mesh/compression.msh b/examples/python/contact-mechanics/mesh/compression.msh deleted file mode 100644 index 9b793b71f..000000000 --- a/examples/python/contact-mechanics/mesh/compression.msh +++ /dev/null @@ -1,589 +0,0 @@ -$MeshFormat -4 0 8 -$EndMeshFormat -$PhysicalNames -6 -1 1 "loading" -1 2 "fixed" -1 3 "sides" -1 4 "contact" -2 5 "lower" -2 6 "upper" -$EndPhysicalNames -$Entities -8 8 2 0 -1 -0.5 -1 0 -0.5 -1 0 0 -2 0.5 -1 0 0.5 -1 0 0 -3 0.5 0 0 0.5 0 0 0 -4 0.5 1 0 0.5 1 0 0 -5 -0.5 1 0 -0.5 1 0 0 -6 -0.5 0 0 -0.5 0 0 0 -7 0.5 0 0 0.5 0 0 0 -8 -0.5 0 0 -0.5 0 0 0 -1 -0.5 -1 0 0.5 -1 0 1 2 2 1 -2 -2 0.5 -1 0 0.5 0 0 1 3 2 2 -3 -3 0.5 0 0 0.5 1 0 1 3 2 7 -4 -4 -0.5 1 0 0.5 1 0 1 1 2 4 -5 -5 -0.5 0 0 -0.5 1 0 1 3 2 5 -6 -6 -0.5 0 0 0.5 0 0 1 4 2 6 -7 -7 -0.5 -1 0 -0.5 0 0 1 3 2 8 -1 -8 -0.5 0 0 0.5 0 0 1 4 2 3 -8 -1 -0.5 -1 0 0.5 0 0 1 5 4 1 2 8 7 -2 -0.5 0 0 0.5 1 0 1 6 4 3 4 5 6 -$EndEntities -$Nodes -18 242 -1 0 0 1 -1 -0.5 -1 0 -2 0 0 1 -2 0.5 -1 0 -3 0 0 1 -3 0.5 0 0 -4 0 0 1 -4 0.5 1 0 -5 0 0 1 -5 -0.5 1 0 -6 0 0 1 -6 -0.5 0 0 -7 0 0 1 -7 0.5 0 0 -8 0 0 1 -8 -0.5 0 0 -1 1 0 9 -9 -0.4000000000002772 -1 0 -10 -0.3000000000005547 -1 0 -11 -0.2000000000008318 -1 0 -12 -0.1000000000011089 -1 0 -13 -1.375122238300719e-12 -1 0 -14 0.09999999999889131 -1 0 -15 0.1999999999991684 -1 0 -16 0.2999999999994456 -1 0 -17 0.3999999999997228 -1 0 -2 1 0 9 -18 0.5 -0.8999999999995836 0 -19 0.5 -0.8 0 -20 0.5 -0.7000000000006938 0 -21 0.5 -0.6000000000013874 0 -22 0.5 -0.5000000000020595 0 -23 0.5 -0.400000000001665 0 -24 0.5 -0.3000000000012487 0 -25 0.5 -0.2000000000008325 0 -26 0.5 -0.1000000000004162 0 -3 1 0 9 -27 0.5 0.09999999999981414 0 -28 0.5 0.1999999999995569 0 -29 0.5 0.299999999999265 0 -30 0.5 0.3999999999989731 0 -31 0.5 0.4999999999986921 0 -32 0.5 0.599999999998945 0 -33 0.5 0.6999999999992088 0 -34 0.5 0.7999999999994725 0 -35 0.5 0.8999999999997362 0 -4 1 0 9 -36 0.4000000000002772 1 0 -37 0.3000000000005547 1 0 -38 0.2000000000008318 1 0 -39 0.1000000000011089 1 0 -40 1.375122238300719e-12 1 0 -41 -0.09999999999889131 1 0 -42 -0.1999999999991684 1 0 -43 -0.2999999999994456 1 0 -44 -0.3999999999997228 1 0 -5 1 0 9 -45 -0.5 0.8999999999995836 0 -46 -0.5 0.8 0 -47 -0.5 0.7000000000006938 0 -48 -0.5 0.6000000000013874 0 -49 -0.5 0.5000000000020595 0 -50 -0.5 0.400000000001665 0 -51 -0.5 0.3000000000012487 0 -52 -0.5 0.2000000000008325 0 -53 -0.5 0.1000000000004162 0 -6 1 0 9 -54 -0.4000000000002772 0 0 -55 -0.3000000000005547 0 0 -56 -0.2000000000008318 0 0 -57 -0.1000000000011089 0 0 -58 -1.375122238300719e-12 0 0 -59 0.09999999999889131 0 0 -60 0.1999999999991684 0 0 -61 0.2999999999994456 0 0 -62 0.3999999999997228 0 0 -7 1 0 9 -63 -0.5 -0.09999999999981414 0 -64 -0.5 -0.1999999999995569 0 -65 -0.5 -0.299999999999265 0 -66 -0.5 -0.3999999999989731 0 -67 -0.5 -0.4999999999986921 0 -68 -0.5 -0.599999999998945 0 -69 -0.5 -0.6999999999992088 0 -70 -0.5 -0.7999999999994725 0 -71 -0.5 -0.8999999999997362 0 -8 1 0 9 -72 0.4000000000002772 0 0 -73 0.3000000000005547 0 0 -74 0.2000000000008318 0 0 -75 0.1000000000011089 0 0 -76 1.375122238300719e-12 0 0 -77 -0.09999999999889131 0 0 -78 -0.1999999999991684 0 0 -79 -0.2999999999994456 0 0 -80 -0.3999999999997228 0 0 -1 2 0 81 -81 -0.4000000000002217 -0.899999999999721 0 -82 -0.4000000000001664 -0.7999999999995253 0 -83 -0.4000000000001109 -0.6999999999993571 0 -84 -0.4000000000000554 -0.5999999999991892 0 -85 -0.4 -0.4999999999990288 0 -86 -0.3999999999999445 -0.3999999999992423 0 -87 -0.3999999999998891 -0.2999999999994635 0 -88 -0.3999999999998336 -0.1999999999996845 0 -89 -0.3999999999997783 -0.09999999999987436 0 -90 -0.3000000000004438 -0.8999999999997057 0 -91 -0.3000000000003329 -0.7999999999995782 0 -92 -0.3000000000002219 -0.6999999999995058 0 -93 -0.3000000000001111 -0.5999999999994334 0 -94 -0.3000000000000002 -0.4999999999993656 0 -95 -0.2999999999998892 -0.3999999999995115 0 -96 -0.2999999999997782 -0.2999999999996618 0 -97 -0.2999999999996674 -0.199999999999812 0 -98 -0.2999999999995565 -0.09999999999993456 0 -99 -0.2000000000006655 -0.8999999999996904 0 -100 -0.2000000000004992 -0.7999999999996306 0 -101 -0.2000000000003328 -0.6999999999996542 0 -102 -0.2000000000001665 -0.5999999999996777 0 -103 -0.2000000000000001 -0.4999999999997022 0 -104 -0.1999999999998338 -0.3999999999997808 0 -105 -0.1999999999996674 -0.2999999999998602 0 -106 -0.1999999999995011 -0.1999999999999396 0 -107 -0.1999999999993348 -0.09999999999999476 0 -108 -0.1000000000008872 -0.8999999999996753 0 -109 -0.1000000000006654 -0.7999999999996834 0 -110 -0.1000000000004437 -0.699999999999803 0 -111 -0.1000000000002219 -0.5999999999999219 0 -112 -0.1000000000000001 -0.5000000000000391 0 -113 -0.09999999999977835 -0.4000000000000499 0 -114 -0.09999999999955657 -0.3000000000000586 0 -115 -0.09999999999933482 -0.2000000000000672 0 -116 -0.09999999999911308 -0.100000000000055 0 -117 -1.100083912851622e-12 -0.89999999999966 0 -118 -8.250455874048159e-13 -0.7999999999997363 0 -119 -5.500766508978114e-13 -0.6999999999999513 0 -120 -2.750244476639595e-13 -0.6000000000001662 0 -121 -5.664248491427568e-24 -0.5000000000003757 0 -122 2.750244476555647e-13 -0.4000000000003191 0 -123 5.500211397412378e-13 -0.3000000000002568 0 -124 8.251010985537575e-13 -0.2000000000001947 0 -125 1.100125546215046e-12 -0.1000000000001152 0 -126 0.09999999999911302 -0.8999999999996446 0 -127 0.09999999999933484 -0.7999999999997891 0 -128 0.09999999999955658 -0.7000000000000999 0 -129 0.09999999999977835 -0.6000000000004104 0 -130 0.1000000000000001 -0.5000000000007125 0 -131 0.1000000000002219 -0.4000000000005883 0 -132 0.1000000000004436 -0.3000000000004552 0 -133 0.1000000000006654 -0.2000000000003223 0 -134 0.1000000000008872 -0.1000000000001754 0 -135 0.1999999999993347 -0.8999999999996293 0 -136 0.1999999999995011 -0.7999999999998417 0 -137 0.1999999999996674 -0.7000000000002484 0 -138 0.1999999999998338 -0.6000000000006547 0 -139 0.2000000000000001 -0.5000000000010492 0 -140 0.2000000000001664 -0.4000000000008574 0 -141 0.2000000000003328 -0.3000000000006536 0 -142 0.2000000000004992 -0.2000000000004498 0 -143 0.2000000000006656 -0.1000000000002356 0 -144 0.2999999999995565 -0.8999999999996142 0 -145 0.2999999999996674 -0.7999999999998944 0 -146 0.2999999999997783 -0.7000000000003967 0 -147 0.2999999999998892 -0.6000000000008989 0 -148 0.3000000000000002 -0.500000000001386 0 -149 0.3000000000001111 -0.4000000000011267 0 -150 0.300000000000222 -0.3000000000008519 0 -151 0.3000000000003329 -0.2000000000005774 0 -152 0.3000000000004437 -0.1000000000002958 0 -153 0.3999999999997783 -0.8999999999995989 0 -154 0.3999999999998337 -0.7999999999999472 0 -155 0.3999999999998891 -0.7000000000005453 0 -156 0.3999999999999446 -0.6000000000011432 0 -157 0.4 -0.5000000000017228 0 -158 0.4000000000000554 -0.4000000000013959 0 -159 0.4000000000001109 -0.3000000000010504 0 -160 0.4000000000001664 -0.2000000000007049 0 -161 0.4000000000002217 -0.100000000000356 0 -2 2 0 81 -162 0.3999999999997782 0.09999999999987434 0 -163 0.2999999999995565 0.09999999999993456 0 -164 0.1999999999993348 0.09999999999999475 0 -165 0.09999999999911308 0.100000000000055 0 -166 -1.100092239525452e-12 0.1000000000001151 0 -167 -0.1000000000008871 0.1000000000001754 0 -168 -0.2000000000006655 0.1000000000002356 0 -169 -0.3000000000004437 0.1000000000002958 0 -170 -0.4000000000002218 0.100000000000356 0 -171 0.3999999999998338 0.1999999999996845 0 -172 0.2999999999996674 0.1999999999998121 0 -173 0.1999999999995011 0.1999999999999396 0 -174 0.09999999999933482 0.2000000000000672 0 -175 -8.250899963258007e-13 0.2000000000001947 0 -176 -0.1000000000006654 0.2000000000003223 0 -177 -0.2000000000004992 0.2000000000004499 0 -178 -0.3000000000003329 0.2000000000005774 0 -179 -0.4000000000001663 0.2000000000007049 0 -180 0.3999999999998891 0.2999999999994633 0 -181 0.2999999999997784 0.2999999999996616 0 -182 0.1999999999996675 0.2999999999998602 0 -183 0.09999999999955655 0.3000000000000584 0 -184 -5.500599975505338e-13 0.3000000000002569 0 -185 -0.1000000000004436 0.3000000000004553 0 -186 -0.2000000000003328 0.3000000000006536 0 -187 -0.3000000000002219 0.300000000000852 0 -188 -0.4000000000001109 0.3000000000010504 0 -189 0.3999999999999445 0.3999999999992424 0 -190 0.2999999999998891 0.3999999999995115 0 -191 0.1999999999998337 0.3999999999997806 0 -192 0.09999999999977838 0.4000000000000499 0 -193 -2.750299987752669e-13 0.400000000000319 0 -194 -0.1000000000002219 0.4000000000005883 0 -195 -0.2000000000001665 0.4000000000008575 0 -196 -0.3000000000001111 0.4000000000011266 0 -197 -0.4000000000000554 0.4000000000013959 0 -198 0.4 0.4999999999990288 0 -199 0.3000000000000002 0.4999999999993656 0 -200 0.2000000000000001 0.4999999999997023 0 -201 0.1000000000000001 0.5000000000000391 0 -202 0 0.5000000000003758 0 -203 -0.1000000000000001 0.5000000000007127 0 -204 -0.2000000000000001 0.5000000000010493 0 -205 -0.3 0.500000000001386 0 -206 -0.4 0.5000000000017226 0 -207 0.4000000000000555 0.5999999999991893 0 -208 0.3000000000001111 0.5999999999994333 0 -209 0.2000000000001664 0.5999999999996778 0 -210 0.1000000000002219 0.599999999999922 0 -211 2.750022431996513e-13 0.6000000000001663 0 -212 -0.09999999999977835 0.6000000000004105 0 -213 -0.1999999999998338 0.6000000000006546 0 -214 -0.2999999999998892 0.600000000000899 0 -215 -0.3999999999999446 0.6000000000011431 0 -216 0.4000000000001108 0.6999999999993574 0 -217 0.300000000000222 0.6999999999995059 0 -218 0.2000000000003329 0.6999999999996542 0 -219 0.1000000000004436 0.6999999999998028 0 -220 5.500738753383416e-13 0.6999999999999513 0 -221 -0.09999999999955661 0.7000000000000999 0 -222 -0.1999999999996674 0.7000000000002484 0 -223 -0.2999999999997783 0.7000000000003967 0 -224 -0.3999999999998891 0.7000000000005453 0 -225 0.4000000000001663 0.7999999999995253 0 -226 0.3000000000003328 0.7999999999995778 0 -227 0.2000000000004992 0.7999999999996306 0 -228 0.1000000000006654 0.7999999999996834 0 -229 8.250483629623773e-13 0.7999999999997363 0 -230 -0.09999999999933486 0.7999999999997891 0 -231 -0.1999999999995011 0.7999999999998419 0 -232 -0.2999999999996674 0.7999999999998944 0 -233 -0.3999999999998337 0.7999999999999472 0 -234 0.4000000000002218 0.8999999999997209 0 -235 0.3000000000004438 0.8999999999997058 0 -236 0.2000000000006655 0.8999999999996905 0 -237 0.1000000000008872 0.8999999999996751 0 -238 1.100113056207164e-12 0.8999999999996601 0 -239 -0.09999999999911305 0.8999999999996446 0 -240 -0.1999999999993347 0.8999999999996293 0 -241 -0.2999999999995565 0.8999999999996139 0 -242 -0.3999999999997782 0.8999999999995988 0 -$EndNodes -$Elements -10 280 -1 1 1 10 -9 1 9 -10 9 10 -11 10 11 -12 11 12 -13 12 13 -14 13 14 -15 14 15 -16 15 16 -17 16 17 -18 17 2 -2 1 1 10 -19 2 18 -20 18 19 -21 19 20 -22 20 21 -23 21 22 -24 22 23 -25 23 24 -26 24 25 -27 25 26 -28 26 3 -3 1 1 10 -29 7 27 -30 27 28 -31 28 29 -32 29 30 -33 30 31 -34 31 32 -35 32 33 -36 33 34 -37 34 35 -38 35 4 -4 1 1 10 -39 4 36 -40 36 37 -41 37 38 -42 38 39 -43 39 40 -44 40 41 -45 41 42 -46 42 43 -47 43 44 -48 44 5 -5 1 1 10 -49 5 45 -50 45 46 -51 46 47 -52 47 48 -53 48 49 -54 49 50 -55 50 51 -56 51 52 -57 52 53 -58 53 6 -6 1 1 10 -59 6 54 -60 54 55 -61 55 56 -62 56 57 -63 57 58 -64 58 59 -65 59 60 -66 60 61 -67 61 62 -68 62 7 -7 1 1 10 -69 8 63 -70 63 64 -71 64 65 -72 65 66 -73 66 67 -74 67 68 -75 68 69 -76 69 70 -77 70 71 -78 71 1 -8 1 1 10 -79 3 72 -80 72 73 -81 73 74 -82 74 75 -83 75 76 -84 76 77 -85 77 78 -86 78 79 -87 79 80 -88 80 8 -1 2 3 100 -89 1 9 81 71 -90 71 81 82 70 -91 70 82 83 69 -92 69 83 84 68 -93 68 84 85 67 -94 67 85 86 66 -95 66 86 87 65 -96 65 87 88 64 -97 64 88 89 63 -98 63 89 80 8 -99 9 10 90 81 -100 81 90 91 82 -101 82 91 92 83 -102 83 92 93 84 -103 84 93 94 85 -104 85 94 95 86 -105 86 95 96 87 -106 87 96 97 88 -107 88 97 98 89 -108 89 98 79 80 -109 10 11 99 90 -110 90 99 100 91 -111 91 100 101 92 -112 92 101 102 93 -113 93 102 103 94 -114 94 103 104 95 -115 95 104 105 96 -116 96 105 106 97 -117 97 106 107 98 -118 98 107 78 79 -119 11 12 108 99 -120 99 108 109 100 -121 100 109 110 101 -122 101 110 111 102 -123 102 111 112 103 -124 103 112 113 104 -125 104 113 114 105 -126 105 114 115 106 -127 106 115 116 107 -128 107 116 77 78 -129 12 13 117 108 -130 108 117 118 109 -131 109 118 119 110 -132 110 119 120 111 -133 111 120 121 112 -134 112 121 122 113 -135 113 122 123 114 -136 114 123 124 115 -137 115 124 125 116 -138 116 125 76 77 -139 13 14 126 117 -140 117 126 127 118 -141 118 127 128 119 -142 119 128 129 120 -143 120 129 130 121 -144 121 130 131 122 -145 122 131 132 123 -146 123 132 133 124 -147 124 133 134 125 -148 125 134 75 76 -149 14 15 135 126 -150 126 135 136 127 -151 127 136 137 128 -152 128 137 138 129 -153 129 138 139 130 -154 130 139 140 131 -155 131 140 141 132 -156 132 141 142 133 -157 133 142 143 134 -158 134 143 74 75 -159 15 16 144 135 -160 135 144 145 136 -161 136 145 146 137 -162 137 146 147 138 -163 138 147 148 139 -164 139 148 149 140 -165 140 149 150 141 -166 141 150 151 142 -167 142 151 152 143 -168 143 152 73 74 -169 16 17 153 144 -170 144 153 154 145 -171 145 154 155 146 -172 146 155 156 147 -173 147 156 157 148 -174 148 157 158 149 -175 149 158 159 150 -176 150 159 160 151 -177 151 160 161 152 -178 152 161 72 73 -179 17 2 18 153 -180 153 18 19 154 -181 154 19 20 155 -182 155 20 21 156 -183 156 21 22 157 -184 157 22 23 158 -185 158 23 24 159 -186 159 24 25 160 -187 160 25 26 161 -188 161 26 3 72 -2 2 3 100 -189 7 27 162 62 -190 62 162 163 61 -191 61 163 164 60 -192 60 164 165 59 -193 59 165 166 58 -194 58 166 167 57 -195 57 167 168 56 -196 56 168 169 55 -197 55 169 170 54 -198 54 170 53 6 -199 27 28 171 162 -200 162 171 172 163 -201 163 172 173 164 -202 164 173 174 165 -203 165 174 175 166 -204 166 175 176 167 -205 167 176 177 168 -206 168 177 178 169 -207 169 178 179 170 -208 170 179 52 53 -209 28 29 180 171 -210 171 180 181 172 -211 172 181 182 173 -212 173 182 183 174 -213 174 183 184 175 -214 175 184 185 176 -215 176 185 186 177 -216 177 186 187 178 -217 178 187 188 179 -218 179 188 51 52 -219 29 30 189 180 -220 180 189 190 181 -221 181 190 191 182 -222 182 191 192 183 -223 183 192 193 184 -224 184 193 194 185 -225 185 194 195 186 -226 186 195 196 187 -227 187 196 197 188 -228 188 197 50 51 -229 30 31 198 189 -230 189 198 199 190 -231 190 199 200 191 -232 191 200 201 192 -233 192 201 202 193 -234 193 202 203 194 -235 194 203 204 195 -236 195 204 205 196 -237 196 205 206 197 -238 197 206 49 50 -239 31 32 207 198 -240 198 207 208 199 -241 199 208 209 200 -242 200 209 210 201 -243 201 210 211 202 -244 202 211 212 203 -245 203 212 213 204 -246 204 213 214 205 -247 205 214 215 206 -248 206 215 48 49 -249 32 33 216 207 -250 207 216 217 208 -251 208 217 218 209 -252 209 218 219 210 -253 210 219 220 211 -254 211 220 221 212 -255 212 221 222 213 -256 213 222 223 214 -257 214 223 224 215 -258 215 224 47 48 -259 33 34 225 216 -260 216 225 226 217 -261 217 226 227 218 -262 218 227 228 219 -263 219 228 229 220 -264 220 229 230 221 -265 221 230 231 222 -266 222 231 232 223 -267 223 232 233 224 -268 224 233 46 47 -269 34 35 234 225 -270 225 234 235 226 -271 226 235 236 227 -272 227 236 237 228 -273 228 237 238 229 -274 229 238 239 230 -275 230 239 240 231 -276 231 240 241 232 -277 232 241 242 233 -278 233 242 45 46 -279 35 4 36 234 -280 234 36 37 235 -281 235 37 38 236 -282 236 38 39 237 -283 237 39 40 238 -284 238 40 41 239 -285 239 41 42 240 -286 240 42 43 241 -287 241 43 44 242 -288 242 44 5 45 -$EndElements diff --git a/src/model/model_couplers/cohesive_contact_solvercallback.hh b/src/model/model_couplers/cohesive_contact_solvercallback.hh index 3c0a5d561..9618de102 100644 --- a/src/model/model_couplers/cohesive_contact_solvercallback.hh +++ b/src/model/model_couplers/cohesive_contact_solvercallback.hh @@ -1,80 +1,91 @@ - /** * @file cohesive_contact_solvercallback.hh * * @author Mohit Pundir * * @date creation: Thu Jan 17 2019 * @date last modification: Thu Jan 17 2019 * * @brief class for coupling of solid mechanics and conatct mechanics * model via solvercallback * * @section LICENSE * * Copyright (©) 2010-2018 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "mesh_iterators.hh" #include "non_linear_solver.hh" #include "contact_mechanics_model.hh" #include "solid_mechanics_model_cohesive.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_COHESIVE_CONTACT_SOLVERCALLBACK_HH__ #define __AKANTU_COHESIVE_CONTACT_SOLVERCALLBACK_HH__ namespace akantu{ class CohesiveContactSolverCallback : public SolverCallback { public: CohesiveContactSolverCallback(SolidMechanicsModelCohesive &, ContactMechanicsModel &, AnalysisMethod &); public: + + /// implementation of SolverCallback::assembleMatrix void assembleMatrix(const ID &) override; + /// implementation of SolverCallback::assembleResidual void assembleResidual() override; + /// implementation of SolverCallback::assembleLumpedMatrix void assembleLumpedMatrix(const ID &) override; + /// implementation of SolverCallback::getMatrixType MatrixType getMatrixType(const ID &) override; + /// implementation of SolverCallback::predictor void predictor() override; + /// implementation of SolverCallback::corrector void corrector() override; + /// implementation of SolverCallback::beforeSolveStep void beforeSolveStep() override; + /// implementation of SolverCallback::afterSolveStep void afterSolveStep(bool converged=true) override; private: - SolidMechanicsModelCohesive &solid; + /// model for the solid mechanics part of the coupling + SolidMechanicsModelCohesive & solid; - ContactMechanicsModel &contact; + /// model for the contact resoluion of the coupling + ContactMechanicsModel & contact; + /// Method of resolution for the coupling solver AnalysisMethod & method; }; } #endif diff --git a/src/model/model_couplers/coupler_solid_cohesive_contact.hh b/src/model/model_couplers/coupler_solid_cohesive_contact.hh index 5c03e0b21..dd59bc4ce 100644 --- a/src/model/model_couplers/coupler_solid_cohesive_contact.hh +++ b/src/model/model_couplers/coupler_solid_cohesive_contact.hh @@ -1,56 +1,50 @@ /** * @file coupler_solid_cohesive_contact.hh * * @author Mohit Pundir * * @date creation: Thu Jan 17 2019 * @date last modification: Thu Jan 17 2019 * * @brief class for coupling of solid mechanics and conatct mechanics * model in explicit * * @section LICENSE * * Copyright (©) 2010-2018 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "coupler_solid_contact.hh" #include "solid_mechanics_model_cohesive.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_COUPLER_SOLID_COHESIVE_CONTACT_HH__ #define __AKANTU_COUPLER_SOLID_COHESIVE_CONTACT_HH__ /* -------------------------------------------------------------------------- */ namespace akantu { /* -------------------------------------------------------------------------- */ using CouplerSolidCohesiveContact = CouplerSolidContactTemplate; -// using MyFEEngineCohesiveType = -// FEEngineTemplate; -// using MyFEEngineFacetType = -// FEEngineTemplate; - } // namespace akantu #endif /* __COUPLER_SOLID_CONTACT_HH__ */