diff --git a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.cc b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.cc index 27e4eaf52..1a948663d 100644 --- a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.cc +++ b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.cc @@ -1,120 +1,240 @@ /** * @file material_cohesive_bilinear.cc * * @author Marco Vocialta <marco.vocialta@epfl.ch> * * @date Wed Feb 22 16:31:20 2012 * * @brief Bilinear cohesive constitutive law * * @section LICENSE * * Copyright (©) 2010-2011 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 <http://www.gnu.org/licenses/>. * */ /* -------------------------------------------------------------------------- */ #include "material_cohesive_bilinear.hh" #include "solid_mechanics_model_cohesive.hh" #include "sparse_matrix.hh" #include "dof_synchronizer.hh" __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ template<UInt spatial_dimension> MaterialCohesiveBilinear<spatial_dimension>::MaterialCohesiveBilinear(SolidMechanicsModel & model, const ID & id) : - MaterialCohesiveLinear<spatial_dimension>(model,id) { + MaterialCohesive(model,id) { AKANTU_DEBUG_IN(); - this->registerParam("delta_0", delta_0, 0., _pat_parsable, "Elastic limit displacement"); + this->registerParam("delta_0", delta_0, 0. , _pat_parsable, "Elastic limit displacement"); + this->registerParam("beta" , beta , 0. , _pat_parsable, "Beta parameter" ); + this->registerParam("G_cI" , G_cI , 0. , _pat_parsable, "Mode I fracture energy" ); + this->registerParam("G_cII" , G_cII , 0. , _pat_parsable, "Mode II fracture energy"); + this->registerParam("kappa" , kappa , 0. , _pat_readable, "Kappa parameter" ); + this->registerParam("delta_c", delta_c, 0. , _pat_readable, "Critical displacement" ); + this->registerParam("penalty", penalty, 0. , _pat_parsable, "Penalty coefficient" ); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template<UInt spatial_dimension> MaterialCohesiveBilinear<spatial_dimension>::~MaterialCohesiveBilinear() { AKANTU_DEBUG_IN(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template<UInt spatial_dimension> void MaterialCohesiveBilinear<spatial_dimension>::initMaterial() { AKANTU_DEBUG_IN(); - MaterialCohesiveLinear<spatial_dimension>::initMaterial(); + MaterialCohesive::initMaterial(); + + kappa = G_cII / G_cI; + delta_c = 2 * G_cI / sigma_c; /** * Recompute sigma_c as * @f$ {\sigma_c}_\textup{new} = * \frac{{\sigma_c}_\textup{old} \delta_c} {\delta_c - \delta_0} @f$ */ AKANTU_DEBUG_ASSERT(std::abs((this->delta_c - delta_0) / delta_0) >= std::numeric_limits<Real>::epsilon(), "Check your material.dat"); this->sigma_c *= this->delta_c / (this->delta_c - delta_0); updateDeltaMax(_ghost); updateDeltaMax(_not_ghost); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template<UInt spatial_dimension> void MaterialCohesiveBilinear<spatial_dimension>::resizeCohesiveVectors() { - MaterialCohesiveLinear<spatial_dimension>::resizeCohesiveVectors(); + MaterialCohesive::resizeCohesiveVectors(); updateDeltaMax(_ghost); updateDeltaMax(_not_ghost); } /* -------------------------------------------------------------------------- */ template<UInt spatial_dimension> void MaterialCohesiveBilinear<spatial_dimension>::updateDeltaMax(GhostType ghost_type) { AKANTU_DEBUG_IN(); const Mesh & mesh = this->model->getFEM("CohesiveFEM").getMesh(); Mesh::type_iterator it = mesh.firstType(spatial_dimension, ghost_type, _ek_cohesive); Mesh::type_iterator last_type = mesh.lastType(spatial_dimension, ghost_type, _ek_cohesive); for(; it != last_type; ++it) { Vector<Real>::iterator<Real>delta_max_it = this->delta_max(*it, ghost_type).begin(); Vector<Real>::iterator<Real>delta_max_end = this->delta_max(*it, ghost_type).end(); for (; delta_max_it != delta_max_end; ++delta_max_it) { *delta_max_it = delta_0; } } AKANTU_DEBUG_OUT(); } +/* -------------------------------------------------------------------------- */ +template<UInt spatial_dimension> +void MaterialCohesiveBilinear<spatial_dimension>::computeTraction(const Vector<Real> & normal, + ElementType el_type, + GhostType ghost_type) { + AKANTU_DEBUG_IN(); + + /// define iterators + Vector<Real>::iterator<types::RVector> traction_it = + tractions(el_type, ghost_type).begin(spatial_dimension); + + Vector<Real>::iterator<types::RVector> opening_it = + opening(el_type, ghost_type).begin(spatial_dimension); + + Vector<Real>::const_iterator<types::RVector> normal_it = + normal.begin(spatial_dimension); + + Vector<Real>::iterator<types::RVector>traction_end = + tractions(el_type, ghost_type).end(spatial_dimension); + + Vector<Real>::iterator<Real>delta_max_it = + delta_max(el_type, ghost_type).begin(); + + Vector<Real>::iterator<Real>damage_it = + damage(el_type, ghost_type).begin(); + + /// compute scalars + Real beta2_kappa2 = beta*beta/kappa/kappa; + Real beta2_kappa = beta*beta/kappa; + + Real epsilon = std::numeric_limits<Real>::epsilon(); + + Real * memory_space = new Real[2*spatial_dimension]; + types::Vector<Real> normal_opening(memory_space, spatial_dimension); + types::Vector<Real> tangential_opening(memory_space + spatial_dimension, + spatial_dimension); + + /// loop on each quadrature point + for (; traction_it != traction_end; + ++traction_it, ++opening_it, ++normal_it, ++delta_max_it, ++damage_it) { + + /// compute normal and tangential opening vectors + Real normal_opening_norm = opening_it->dot(*normal_it); + normal_opening = (*normal_it); + normal_opening *= normal_opening_norm; + + tangential_opening = *opening_it; + tangential_opening -= normal_opening; + + Real tangential_opening_norm = tangential_opening.norm(); + + /** + * compute effective opening displacement + * @f$ \delta = \sqrt{ + * \frac{\beta^2}{\kappa^2} \Delta_t^2 + \Delta_n^2 } @f$ + */ + Real delta = tangential_opening_norm; + delta *= delta * beta2_kappa2; + + /// don't consider penetration contribution + if (normal_opening_norm > 0) + delta += normal_opening_norm * normal_opening_norm; + + delta = sqrt(delta); + + + /// full damage case or zero displacement case + if (delta >= delta_c || delta <= epsilon) { + /// set traction to zero + (*traction_it).clear(); + + if (normal_opening_norm < 0) { + normal_opening *= penalty; + *traction_it += normal_opening; + } + else { + *damage_it = delta >= delta_c; + *delta_max_it = *damage_it * delta_c; + } + } + /// element not fully damaged + else { + /** + * Compute traction @f$ \mathbf{T} = \left( + * \frac{\beta^2}{\kappa} \Delta_t \mathbf{t} + \Delta_n + * \mathbf{n} \right) \frac{\sigma_c}{\delta} \left( 1- + * \frac{\delta}{\delta_c} \right)@f$ + */ + + *traction_it = tangential_opening; + *traction_it *= beta2_kappa; + + /// update maximum displacement + *delta_max_it = std::max(*delta_max_it, delta); + *damage_it = *delta_max_it / delta_c; + + Real k = sigma_c / *delta_max_it * (1. - *damage_it); + *traction_it *= k; + + /// use penalty coefficient in case of penetration + if (normal_opening_norm < 0) k = penalty; + + normal_opening *= k; + *traction_it += normal_opening; + } + } + + delete [] memory_space; + AKANTU_DEBUG_OUT(); +} + /* -------------------------------------------------------------------------- */ INSTANSIATE_MATERIAL(MaterialCohesiveBilinear); __END_AKANTU__ diff --git a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.hh b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.hh index 04f27ae53..9087228e2 100644 --- a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.hh +++ b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_bilinear.hh @@ -1,113 +1,141 @@ /** * @file material_cohesive_bilinear.hh * * @author Marco Vocialta <marco.vocialta@epfl.ch> * * @date Wed Feb 22 16:31:20 2012 * * @brief Bilinear cohesive constitutive law * * @section LICENSE * * Copyright (©) 2010-2011 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 <http://www.gnu.org/licenses/>. * */ /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_MATERIAL_COHESIVE_BILINEAR_HH__ #define __AKANTU_MATERIAL_COHESIVE_BILINEAR_HH__ /* -------------------------------------------------------------------------- */ -#include "material_cohesive_linear.hh" +#include "material_cohesive.hh" #include "aka_common.hh" __BEGIN_AKANTU__ /** * Cohesive material bilinear * * parameters in the material files : * - delta_0 : elastic limit displacement (default: 0) + * - sigma_c : critical stress sigma_c (default: 0) + * - beta : weighting parameter for sliding and normal opening (default: 0) + * - G_cI : fracture energy for mode I (default: 0) + * - G_cII : fracture energy for mode II (default: 0) + * - penalty : stiffness in compression to prevent penetration */ template<UInt spatial_dimension> -class MaterialCohesiveBilinear : public MaterialCohesiveLinear<spatial_dimension> { +class MaterialCohesiveBilinear : public MaterialCohesive { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: MaterialCohesiveBilinear(SolidMechanicsModel & model, const ID & id = ""); virtual ~MaterialCohesiveBilinear(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// initialize the material computed parameter virtual void initMaterial(); /// update delta_max values with delta_0 virtual void updateDeltaMax(GhostType ghost_type); /// resize vectors for new cohesive elements virtual void resizeCohesiveVectors(); protected: + /// constitutive law + void computeTraction(const Vector<Real> & normal, + ElementType el_type, + GhostType ghost_type = _not_ghost); + void computeTangentStiffness(__attribute__((unused)) const ElementType & el_type, __attribute__((unused)) Vector<Real> & tangent_matrix, __attribute__((unused)) GhostType ghost_type = _not_ghost) { AKANTU_DEBUG_TO_IMPLEMENT(); } // void computeTangentStiffness(__attribute__((unused)) Vector<Real> & tangent_matrix, // __attribute__((unused)) const Vector<Real> & normal, // __attribute__((unused)) const ElementType & el_type, // __attribute__((unused)) GhostType ghost_type = _not_ghost) { // AKANTU_DEBUG_TO_IMPLEMENT(); // } /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: /// elastic limit displacement Real delta_0; + /// beta parameter + Real beta; + + /// mode I fracture energy + Real G_cI; + + /// mode II fracture energy + Real G_cII; + + /// kappa parameter + Real kappa; + + /// critical displacement + Real delta_c; + + /// penalty coefficient + Real penalty; + }; /* -------------------------------------------------------------------------- */ /* inline functions */ /* -------------------------------------------------------------------------- */ //#include "material_cohesive_elastic_inline_impl.cc" __END_AKANTU__ #endif /* __AKANTU_MATERIAL_COHESIVE_ELASTIC_HH__ */ diff --git a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.cc b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.cc deleted file mode 100644 index 9e329f26a..000000000 --- a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.cc +++ /dev/null @@ -1,178 +0,0 @@ -/** - * @file material_cohesive_linear.cc - * - * @author Marco Vocialta <marco.vocialta@epfl.ch> - * - * @date Wed Feb 22 16:31:20 2012 - * - * @brief Linear irreversible cohesive law of mixed mode loading - * - * @section LICENSE - * - * Copyright (©) 2010-2011 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 <http://www.gnu.org/licenses/>. - * - */ - -/* -------------------------------------------------------------------------- */ -#include "material_cohesive_linear.hh" -#include "solid_mechanics_model.hh" -#include "sparse_matrix.hh" -#include "dof_synchronizer.hh" - -__BEGIN_AKANTU__ - -/* -------------------------------------------------------------------------- */ -template<UInt spatial_dimension> -MaterialCohesiveLinear<spatial_dimension>::MaterialCohesiveLinear(SolidMechanicsModel & model, - const ID & id) : - MaterialCohesive(model,id) { - AKANTU_DEBUG_IN(); - - this->registerParam("beta" , beta , 0. , _pat_parsable, "Beta parameter" ); - this->registerParam("G_cI" , G_cI , 0. , _pat_parsable, "Mode I fracture energy" ); - this->registerParam("G_cII" , G_cII , 0. , _pat_parsable, "Mode II fracture energy"); - this->registerParam("kappa" , kappa , 0. , _pat_readable, "Kappa parameter" ); - this->registerParam("delta_c", delta_c, 0. , _pat_readable, "Critical displacement" ); - - AKANTU_DEBUG_OUT(); -} - -/* -------------------------------------------------------------------------- */ -template<UInt spatial_dimension> -MaterialCohesiveLinear<spatial_dimension>::~MaterialCohesiveLinear() { - AKANTU_DEBUG_IN(); - - AKANTU_DEBUG_OUT(); -} - -/* -------------------------------------------------------------------------- */ -template<UInt spatial_dimension> -void MaterialCohesiveLinear<spatial_dimension>::initMaterial() { - AKANTU_DEBUG_IN(); - - MaterialCohesive::initMaterial(); - - kappa = G_cII / G_cI; - delta_c = 2 * G_cI / sigma_c; - - AKANTU_DEBUG_OUT(); -} - -/* -------------------------------------------------------------------------- */ -template<UInt spatial_dimension> -void MaterialCohesiveLinear<spatial_dimension>::computeTraction(const Vector<Real> & normal, - ElementType el_type, - GhostType ghost_type) { - AKANTU_DEBUG_IN(); - - /// define iterators - Vector<Real>::iterator<types::RVector> traction_it = - tractions(el_type, ghost_type).begin(spatial_dimension); - - Vector<Real>::iterator<types::RVector> opening_it = - opening(el_type, ghost_type).begin(spatial_dimension); - - Vector<Real>::const_iterator<types::RVector> normal_it = - normal.begin(spatial_dimension); - - Vector<Real>::iterator<types::RVector>traction_end = - tractions(el_type, ghost_type).end(spatial_dimension); - - Vector<Real>::iterator<Real>delta_max_it = - delta_max(el_type, ghost_type).begin(); - - Vector<Real>::iterator<Real>damage_it = - damage(el_type, ghost_type).begin(); - - /// compute scalars - Real beta2_kappa2 = beta*beta/kappa/kappa; - Real beta2_kappa = beta*beta/kappa; - - Real epsilon = std::numeric_limits<Real>::epsilon(); - - Real * memory_space = new Real[2*spatial_dimension]; - types::Vector<Real> normal_opening(memory_space, spatial_dimension); - types::Vector<Real> tangential_opening(memory_space + spatial_dimension, - spatial_dimension); - - /// loop on each quadrature point - for (; traction_it != traction_end; - ++traction_it, ++opening_it, ++normal_it, ++delta_max_it, ++damage_it) { - - /// compute normal and tangential opening vectors - Real normal_opening_norm = opening_it->dot(*normal_it); - normal_opening = (*normal_it); - normal_opening *= normal_opening_norm; - - tangential_opening = *opening_it; - tangential_opening -= normal_opening; - - Real tangential_opening_norm = tangential_opening.norm(); - - /** - * compute effective opening displacement - * @f$ \delta = \sqrt{ - * \frac{\beta^2}{\kappa^2} \Delta_t^2 + \Delta_n^2 } @f$ - */ - Real delta = tangential_opening_norm; - delta *= delta * beta2_kappa2; - - /// don't consider penetration contribution - if (normal_opening_norm > 0) - delta += normal_opening_norm * normal_opening_norm; - - delta = sqrt(delta); - - - /// full damage case or zero displacement case - if (delta >= delta_c || delta <= epsilon) { - /// set traction to zero - (*traction_it).clear(); - *damage_it = delta >= delta_c; - } - /// element not fully damaged - else { - /** - * Compute traction @f$ \mathbf{T} = \left( - * \frac{\beta^2}{\kappa} \Delta_t \mathbf{t} + \Delta_n - * \mathbf{n} \right) \frac{\sigma_c}{\delta} \left( 1- - * \frac{\delta}{\delta_c} \right)@f$ - */ - - *traction_it = tangential_opening; - *traction_it *= beta2_kappa; - *traction_it += normal_opening; - - /// update maximum displacement - *delta_max_it = std::max(*delta_max_it, delta); - *damage_it = *delta_max_it / delta_c; - - Real k = sigma_c / *delta_max_it * (1. - *damage_it); - *traction_it *= k; - } - } - - delete [] memory_space; - AKANTU_DEBUG_OUT(); -} - -/* -------------------------------------------------------------------------- */ - -INSTANSIATE_MATERIAL(MaterialCohesiveLinear); - - -__END_AKANTU__ diff --git a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.hh b/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.hh deleted file mode 100644 index 8ec674c3f..000000000 --- a/src/model/solid_mechanics/materials/material_cohesive/constitutive_laws/material_cohesive_linear.hh +++ /dev/null @@ -1,115 +0,0 @@ -/** - * @file material_cohesive_linear.hh - * - * @author Marco Vocialta <marco.vocialta@epfl.ch> - * - * @date Wed Feb 22 16:31:20 2012 - * - * @brief Linear irreversible cohesive law of mixed mode loading - * - * @section LICENSE - * - * Copyright (©) 2010-2011 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 <http://www.gnu.org/licenses/>. - * - */ - -/* -------------------------------------------------------------------------- */ -#include "material_cohesive.hh" -#include "aka_common.hh" - -/* -------------------------------------------------------------------------- */ - -#ifndef __AKANTU_MATERIAL_COHESIVE_LINEAR_HH__ -#define __AKANTU_MATERIAL_COHESIVE_LINEAR_HH__ - -/* -------------------------------------------------------------------------- */ - - -__BEGIN_AKANTU__ - -/** - * Cohesive material linear damage - * - * parameters in the material files : - * - sigma_c : critical stress sigma_c (default: 0) - * - beta : weighting parameter for sliding and normal opening (default: 0) - * - G_cI : fracture energy for mode I (default: 0) - * - G_cII : fracture energy for mode II (default: 0) - */ -template<UInt spatial_dimension> -class MaterialCohesiveLinear : public MaterialCohesive { - /* ------------------------------------------------------------------------ */ - /* Constructors/Destructors */ - /* ------------------------------------------------------------------------ */ -public: - - MaterialCohesiveLinear(SolidMechanicsModel & model, const ID & id = ""); - virtual ~MaterialCohesiveLinear(); - - /* ------------------------------------------------------------------------ */ - /* Methods */ - /* ------------------------------------------------------------------------ */ -public: - - /// initialize the material computed parameter - virtual void initMaterial(); - -protected: - - /// constitutive law - void computeTraction(const Vector<Real> & normal, - ElementType el_type, - GhostType ghost_type = _not_ghost); - - /* ------------------------------------------------------------------------ */ - /* Accessors */ - /* ------------------------------------------------------------------------ */ -public: - - /* ------------------------------------------------------------------------ */ - /* Class Members */ - /* ------------------------------------------------------------------------ */ -protected: - - /// beta parameter - Real beta; - - /// mode I fracture energy - Real G_cI; - - /// mode II fracture energy - Real G_cII; - - /// kappa parameter - Real kappa; - - /// critical displacement - Real delta_c; - -}; - - -/* -------------------------------------------------------------------------- */ -/* inline functions */ -/* -------------------------------------------------------------------------- */ - -//#include "material_cohesive_linear_inline_impl.cc" - - -__END_AKANTU__ - -#endif /* __AKANTU_MATERIAL_COHESIVE_LINEAR_HH__ */ diff --git a/src/model/solid_mechanics/materials/material_cohesive_includes.hh b/src/model/solid_mechanics/materials/material_cohesive_includes.hh index bdc7f3c3a..22d644b5b 100644 --- a/src/model/solid_mechanics/materials/material_cohesive_includes.hh +++ b/src/model/solid_mechanics/materials/material_cohesive_includes.hh @@ -1,44 +1,42 @@ /** * @file material_cohesive_includes.hh * * @author Nicolas Richart <nicolas.richart@epfl.ch> * * @date Wed Oct 31 16:24:42 2012 * * @brief List of includes for cohesive elements * * @section LICENSE * * Copyright (©) 2010-2011 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 <http://www.gnu.org/licenses/>. * */ /* -------------------------------------------------------------------------- */ #include "material_cohesive.hh" -#include "material_cohesive_linear.hh" #include "material_cohesive_bilinear.hh" #include "material_cohesive_linear_extrinsic.hh" #include "material_cohesive_exponential.hh" #include "material_cohesive_linear_exponential_extrinsic.hh" #define AKANTU_COHESIVE_MATERIAL_LIST \ ((2, (cohesive_bilinear , MaterialCohesiveBilinear ))) \ - ((2, (cohesive_linear , MaterialCohesiveLinear ))) \ ((2, (cohesive_linear_extrinsic, MaterialCohesiveLinearExtrinsic ))) \ ((2, (cohesive_linear_exponential_extrinsic, MaterialCohesiveLinearExponentialExtrinsic ))) \ ((2, (cohesive_exponential , MaterialCohesiveExponential )))