30 gsMatrix<T> gsCompositeMatrix(
const T Exx,
37 GISMO_ASSERT(nuyx*Exx == nuxy*Eyy,
"No symmetry in material properties for ply! (nu12*E2!=nu21*E1):\n"<<
38 "\tnu12 = "<<nuxy<<
"\t E22 = "<<Eyy<<
"\t nu12*E22 = "<<nuxy*Eyy<<
"\n"
39 <<
"\tnu21 = "<<nuyx<<
"\t E11 = "<<Exx<<
"\t nu21*E11 = "<<nuyx*Exx);
44 G(0,0) = Exx / (1-nuxy*nuyx);
45 G(1,1) = Eyy / (1-nuxy*nuyx);
47 G(0,1) = nuyx*Exx / (1-nuxy*nuyx);
48 G(1,0) = nuxy*Eyy / (1-nuxy*nuyx);
49 G(2,0) = G(0,2) = G(2,1) = G(1,2) = 0.0;
54 gsMatrix<T> gsCompositeMatrixRaw(
const T G11,
80 gsMatrix<T> gsCompositeMatrixRaw(
const T G11,
93 G(1,0) = G(0,1) = G12;
94 G(0,2) = G(2,0) = G13;
95 G(1,2) = G(2,1) = G23;
116 template<
short_t d,
class T>
126 bool compressibility = options.
askSwitch(
"Compressibility",
false);
132 if (mat==Material::SvK)
134 if (impl==Implementation::Composite)
135 GISMO_ERROR(
"Construct composite material models using the constructor of gsMaterialMatrixComposite directly.");
141 if (impl==Implementation::Composite)
142 GISMO_ERROR(
"Hyperelastic composites not available");
144 else if ((mat==Material::NH) && (impl==Implementation::Analytical) && (!compressibility))
149 else if ((mat==Material::NH) && (impl==Implementation::Generalized) && (!compressibility))
154 else if ((mat==Material::NH) && (impl==Implementation::Spectral) && (!compressibility))
160 else if ((mat==Material::NH) && (impl==Implementation::Analytical) && (compressibility))
165 else if ((mat==Material::NH) && (impl==Implementation::Generalized) && (compressibility))
170 else if ((mat==Material::NH) && (impl==Implementation::Spectral) && (compressibility))
177 else if ((mat==Material::NH_ext) && (!compressibility))
179 GISMO_ERROR(
"Incompressible Extended NH with not available");
182 else if ((mat==Material::NH_ext) && (impl==Implementation::Analytical) && (compressibility))
187 else if ((mat==Material::NH_ext) && (impl==Implementation::Generalized) && (compressibility))
192 else if ((mat==Material::NH_ext) && (impl==Implementation::Spectral) && (compressibility))
199 else if ((mat==Material::MR) && (impl==Implementation::Analytical) && (!compressibility))
204 else if ((mat==Material::MR) && (impl==Implementation::Generalized) && (!compressibility))
209 else if ((mat==Material::MR) && (impl==Implementation::Spectral) && (!compressibility))
215 else if ((mat==Material::MR) && (impl==Implementation::Analytical) && (compressibility))
220 else if ((mat==Material::MR) && (impl==Implementation::Generalized) && (compressibility))
225 else if ((mat==Material::MR) && (impl==Implementation::Spectral) && (compressibility))
232 else if ((mat==Material::OG) && (impl==Implementation::Analytical) && (!compressibility))
234 GISMO_ERROR(
"Incompressible Ogden with analytical implementation not available");
236 else if ((mat==Material::OG) && (impl==Implementation::Generalized) && (!compressibility))
238 GISMO_ERROR(
"Incompressible Ogden with generalized implementation not available");
240 else if ((mat==Material::OG) && (impl==Implementation::Spectral) && (!compressibility))
246 else if ((mat==Material::OG) && (impl==Implementation::Analytical) && (compressibility))
248 GISMO_ERROR(
"Compressible Ogden with analytical implementation not available");
250 else if ((mat==Material::OG) && (impl==Implementation::Generalized) && (compressibility))
252 GISMO_ERROR(
"Compressible Ogden with generalized implementation not available");
254 else if ((mat==Material::OG) && (impl==Implementation::Spectral) && (compressibility))
280 template<
short_t d,
class T>
289 bool compressibility = options.
askSwitch(
"Compressibility",
false);
295 if (mat==Material::SvK)
297 if (impl==Implementation::Composite)
298 GISMO_ERROR(
"Construct composite material models using the constructor of gsMaterialMatrixComposite directly.");
304 if (impl==Implementation::Composite)
305 GISMO_ERROR(
"Hyperelastic composites not available");
307 else if ((mat==Material::NH) && (impl==Implementation::Analytical) && (!compressibility))
312 else if ((mat==Material::NH) && (impl==Implementation::Generalized) && (!compressibility))
317 else if ((mat==Material::NH) && (impl==Implementation::Spectral) && (!compressibility))
323 else if ((mat==Material::NH) && (impl==Implementation::Analytical) && (compressibility))
328 else if ((mat==Material::NH) && (impl==Implementation::Generalized) && (compressibility))
333 else if ((mat==Material::NH) && (impl==Implementation::Spectral) && (compressibility))
340 else if ((mat==Material::NH_ext) && (!compressibility))
342 GISMO_ERROR(
"Incompressible Extended NH with not available");
345 else if ((mat==Material::NH_ext) && (impl==Implementation::Analytical) && (compressibility))
350 else if ((mat==Material::NH_ext) && (impl==Implementation::Generalized) && (compressibility))
355 else if ((mat==Material::NH_ext) && (impl==Implementation::Spectral) && (compressibility))
362 else if ((mat==Material::MR) && (impl==Implementation::Analytical) && (!compressibility))
367 else if ((mat==Material::MR) && (impl==Implementation::Generalized) && (!compressibility))
372 else if ((mat==Material::MR) && (impl==Implementation::Spectral) && (!compressibility))
378 else if ((mat==Material::MR) && (impl==Implementation::Analytical) && (compressibility))
383 else if ((mat==Material::MR) && (impl==Implementation::Generalized) && (compressibility))
388 else if ((mat==Material::MR) && (impl==Implementation::Spectral) && (compressibility))
395 else if ((mat==Material::OG) && (impl==Implementation::Analytical) && (!compressibility))
397 GISMO_ERROR(
"Incompressible Ogden with analytical implementation not available");
399 else if ((mat==Material::OG) && (impl==Implementation::Generalized) && (!compressibility))
401 GISMO_ERROR(
"Incompressible Ogden with generalized implementation not available");
403 else if ((mat==Material::OG) && (impl==Implementation::Spectral) && (!compressibility))
409 else if ((mat==Material::OG) && (impl==Implementation::Analytical) && (compressibility))
411 GISMO_ERROR(
"Compressible Ogden with analytical implementation not available");
413 else if ((mat==Material::OG) && (impl==Implementation::Generalized) && (compressibility))
415 GISMO_ERROR(
"Compressible Ogden with generalized implementation not available");
417 else if ((mat==Material::OG) && (impl==Implementation::Spectral) && (compressibility))
gsMaterialMatrixBase< T > * getMaterialMatrix(const gsMultiPatch< T > &mp, const gsFunctionSet< T > &thickness, const std::vector< gsFunctionSet< T > * > ¶meters, const gsFunctionSet< T > &rho, const gsOptionList &options)
Gets a material matrix based on options.
Definition: getMaterialMatrix.h:117
Provides linear material matrices.
This class defines hyperelastic material matrices.
Definition: gsMaterialMatrixNonlinear.h:47
#define index_t
Definition: gsConfig.h:32
#define GISMO_ASSERT(cond, message)
Definition: gsDebug.h:89
Implementation
This class describes the way material models are implemented.
Definition: gsMaterialMatrixUtils.h:70
This class defines the base class for material matrices.
Definition: gsMaterialMatrixBase.h:32
Provides a list of labeled parameters/options that can be set and accessed easily.
Encodes the material model and implementation.
Definition: gsMaterialMatrixUtils.h:155
This class defines a linear material.
Definition: gsMaterialMatrixLinear.h:39
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition: gsFuncData.h:23
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition: gsMultiPatch.h:33
Provides material matrix utilities.
Provides hyperelastic material matrices.
Provides a material matrix for laminates.
index_t askInt(const std::string &label, const index_t &value=0) const
Reads value for option label from options.
Definition: gsOptionList.cpp:117
Provides a base class for material matrices.
#define GISMO_ERROR(message)
Definition: gsDebug.h:118
bool askSwitch(const std::string &label, const bool &value=false) const
Reads value for option label from options.
Definition: gsOptionList.cpp:128
Class which holds a list of parameters/options, and provides easy access to them. ...
Definition: gsOptionList.h:32
Material
This class describes a material model.
Definition: gsMaterialMatrixUtils.h:50