Skip to content

Commit

Permalink
Holzapfel Ogden Modified Anisotropy (HO-ma) Constitutive Model (#272)
Browse files Browse the repository at this point in the history
* Added the Holzapfel Ogden Modified Anisotropy (HO-ma) Constitutive Model to material models.
Updated Holzapfel Ogden Model.
Both HO and HO-ma models are taken from https://github.com/vvedula22/svFSI/blob/master/Code/Source/svFSI/MATMODELS.f and modified. Added additional terms containing the second derivative of smoothed heaviside funciton to the elasticity tensor to make it exact. Changed the approximate derivatives of heaviside function to exact. Removed fds (dot product of fiber directions in 8th invariant).
Tested it with the new framework of unit tests - the unit tests now test the order of convergence for finite difference estimates.
Added some integrated tests for struct and ustruct for both models.

* Changed input file names to svFSIplus.xml and responded to changes in comments.

* Added the Holzapfel Ogden Modified Anisotropy (HO-ma) Constitutive Model to material models.
Updated Holzapfel Ogden Model.
Both HO and HO-ma models are taken from https://github.com/vvedula22/svFSI/blob/master/Code/Source/svFSI/MATMODELS.f and modified. Added additional terms containing the second derivative of smoothed heaviside funciton to the elasticity tensor to make it exact. Changed the approximate derivatives of heaviside function to exact. Removed fds (dot product of fiber directions in 8th invariant).
Tested it with the new framework of unit tests - the unit tests now test the order of convergence for finite difference estimates.
Added some integrated tests for struct and ustruct for both models.

* Changed input file names to svFSIplus.xml and responded to changes in comments.

* Removed redundant norm function and updated result file without solid viscosity.

* Removed commented solid viscosity from input files

* Removing extra files and updating tests/README.md with the current version

* Removing extra files and updating README.md with the current version

* Undoing meaningless changes to README

---------

Co-authored-by: Martin R. Pfaller <[email protected]>
Co-authored-by: Aaron Brown <[email protected]>
  • Loading branch information
3 people authored Oct 16, 2024
1 parent 27e60d8 commit f9fe6fe
Show file tree
Hide file tree
Showing 56 changed files with 3,805 additions and 1,119 deletions.
3 changes: 3 additions & 0 deletions Code/Source/svFSI/ComMod.h
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,9 @@ class fibStrsType
// Constant steady value
double g = 0.0;

// Cross fiber stress parameter
double eta_s = 0.0;

// Unsteady time-dependent values
fcType gt;
};
Expand Down
12 changes: 9 additions & 3 deletions Code/Source/svFSI/Parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,8 @@ const std::string ConstitutiveModelParameters::xml_element_name_ = "Constitutive
// [TODO] Should use the types defined in consts.h.
const std::string ConstitutiveModelParameters::GUCCIONE_MODEL = "Guccione";
const std::string ConstitutiveModelParameters::HGO_MODEL = "HGO";
const std::string ConstitutiveModelParameters::HOLZAPFEL_MODEL = "Holzapfel";
const std::string ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MODEL = "HolzapfelOgden";
const std::string ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MA_MODEL = "HolzapfelOgden-ModifiedAnisotropy";
const std::string ConstitutiveModelParameters::LEE_SACKS = "Lee-Sacks";
const std::string ConstitutiveModelParameters::NEOHOOKEAN_MODEL = "neoHookean";
const std::string ConstitutiveModelParameters::STVENANT_KIRCHHOFF_MODEL = "stVenantKirchhoff";
Expand All @@ -479,7 +480,9 @@ const std::map<std::string, std::string> ConstitutiveModelParameters::constituti

{ConstitutiveModelParameters::HGO_MODEL, ConstitutiveModelParameters::HGO_MODEL},

{ConstitutiveModelParameters::HOLZAPFEL_MODEL, ConstitutiveModelParameters::HOLZAPFEL_MODEL},
{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MODEL, ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MODEL},

{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MA_MODEL, ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MA_MODEL},

{ConstitutiveModelParameters::LEE_SACKS, ConstitutiveModelParameters::LEE_SACKS},

Expand All @@ -498,7 +501,8 @@ using SetConstitutiveModelParamMapType = std::map<std::string, std::function<voi
SetConstitutiveModelParamMapType SetConstitutiveModelParamMap = {
{ConstitutiveModelParameters::GUCCIONE_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->guccione.set_values(params);}},
{ConstitutiveModelParameters::HGO_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->holzapfel_gasser_ogden.set_values(params);}},
{ConstitutiveModelParameters::HOLZAPFEL_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->holzapfel.set_values(params);}},
{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->holzapfel.set_values(params);}},
{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MA_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->holzapfel.set_values(params);}},
{ConstitutiveModelParameters::LEE_SACKS, [](CmpType cp, CmpXmlType params) -> void {cp->lee_sacks.set_values(params);}},
{ConstitutiveModelParameters::NEOHOOKEAN_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->neo_hookean.set_values(params);}},
{ConstitutiveModelParameters::STVENANT_KIRCHHOFF_MODEL, [](CmpType cp, CmpXmlType params) -> void {cp->stvenant_kirchhoff.set_values(params);}},
Expand All @@ -510,6 +514,8 @@ using PrintConstitutiveModelParamMapType = std::map<std::string, std::function<v
PrintConstitutiveModelParamMapType PrintConstitutiveModelParamMap = {
{ConstitutiveModelParameters::GUCCIONE_MODEL, [](CmpType cp) -> void {cp->guccione.print_parameters();}},
{ConstitutiveModelParameters::HGO_MODEL, [](CmpType cp) -> void {cp->holzapfel_gasser_ogden.print_parameters();}},
{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MODEL, [](CmpType cp) -> void {cp->holzapfel.print_parameters();}},
{ConstitutiveModelParameters::HOLZAPFEL_OGDEN_MA_MODEL, [](CmpType cp) -> void {cp->holzapfel.print_parameters();}},
{ConstitutiveModelParameters::LEE_SACKS, [](CmpType cp) -> void {cp->lee_sacks.print_parameters();}},
{ConstitutiveModelParameters::NEOHOOKEAN_MODEL, [](CmpType cp) -> void {cp->neo_hookean.print_parameters();}},
{ConstitutiveModelParameters::STVENANT_KIRCHHOFF_MODEL, [](CmpType cp) -> void {cp->stvenant_kirchhoff.print_parameters();}},
Expand Down
3 changes: 2 additions & 1 deletion Code/Source/svFSI/Parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,8 @@ class ConstitutiveModelParameters : public ParameterLists
// Model types supported.
static const std::string GUCCIONE_MODEL;
static const std::string HGO_MODEL;
static const std::string HOLZAPFEL_MODEL;
static const std::string HOLZAPFEL_OGDEN_MODEL;
static const std::string HOLZAPFEL_OGDEN_MA_MODEL;
static const std::string LEE_SACKS;
static const std::string NEOHOOKEAN_MODEL;
static const std::string STVENANT_KIRCHHOFF_MODEL;
Expand Down
5 changes: 4 additions & 1 deletion Code/Source/svFSI/consts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,10 @@ const std::map<std::string,ConstitutiveModelType> constitutive_model_name_to_typ
{"Gucci", ConstitutiveModelType::stIso_Gucci},

{"HO", ConstitutiveModelType::stIso_HO},
{"Holzapfel", ConstitutiveModelType::stIso_HO},
{"HolzapfelOgden", ConstitutiveModelType::stIso_HO},

{"HO_ma", ConstitutiveModelType::stIso_HO_ma},
{"HolzapfelOgden-ModifiedAnisotropy", ConstitutiveModelType::stIso_HO_ma},

{"quad", ConstitutiveModelType::stVol_Quad},
{"Quad", ConstitutiveModelType::stVol_Quad},
Expand Down
2 changes: 1 addition & 1 deletion Code/Source/svFSI/distribute.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1221,7 +1221,7 @@ void dist_mat_consts(const ComMod& com_mod, const CmMod& cm_mod, const cmType& c
cm.bcast(cm_mod, lStM.Tf.gt.r, "lStM.Tf.gt.r");
cm.bcast(cm_mod, lStM.Tf.gt.i, "lStM.Tf.gt.i");
}

cm.bcast(cm_mod, &lStM.Tf.eta_s);
}


Expand Down
1 change: 1 addition & 0 deletions Code/Source/svFSI/mat_fun_carray.h
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ double norm(const Vector<double>& u, const double v[N])
}



template <size_t N>
void mat_symm(const double A[N][N], double S[N][N])
{
Expand Down
Loading

0 comments on commit f9fe6fe

Please sign in to comment.