10. Primitive Material Models - LinMat, PlasMat, HyperMat
Primitive materials are characterized by a material response which excludes any element geometry. The LinMat module can be used to model linear material response for structural and thermal analysis. The PlasMat module models either small strain or large strain elasto-plasticity for structural analysis. The HyperMat module models large strain hyperelastic material response for structural analysis.
10.1. Linear Materials - LinMat
The LinMat module is used to define linear material behavior for structural and thermal analysis. Linear material properties may be isotropic, orthotropic or fully anisotropic. Material properties include elastic moduli, thermal conductivities, coefficients of thermal expansion, reference temperature, density and specific heat.
The methods associated with a LinMat object are the following.
Begin and end an instance of an object, generic object functions
vfe_LinMatBegin()
- create an instance of a LinMat objectvfe_LinMatEnd()
- destroy an instance of a LinMat objectvfe_LinMatError()
- return LinMat object error flag
Specify material properties
vfe_LinMatDef()
- define property typevfe_LinMatInq()
- inquire property typevfe_LinMatMatlFun()
- fill MatlFun objectvfe_LinMatSetDensity()
- set densityvfe_LinMatSetElasProp()
- set elastic modulivfe_LinMatSetParami()
- set material model parametersvfe_LinMatSetRefTemp()
- set reference temperaturevfe_LinMatSetSpecHeat()
- set specific heatvfe_LinMatSetTemp()
- set temperature parametervfe_LinMatSetThermCond()
- set thermal conductivitiesvfe_LinMatSetThermExp()
- set coefficients of thermal expansion
Instance a LinMat object using vfe_LinMatBegin()
.
Once a LinMat is instanced,
define the material type using vfe_LinMatDef()
. Possible material types
are isotropic, orthotropic and anisotropic.
The linear material properties may then be entered. For example elastic
moduli which relate stress and strain are entered using
vfe_LinMatSetElasProp()
. The density for mass calculations is entered using
vfe_LinMatSetDensity()
.
The elastic moduli, thermal conductivities and coefficients of thermal
expansion depend upon the defined isotropy of the material - note that
the defined isotropy of the material applies equally to all these properties.
Material properties in LinMat may be temperature dependent.
The current temperature for which material properties are to be defined
is set using vfe_LinMatSetTemp()
.
All subsequently defined properties are assumed to be at the current
temperature.
If material properties have been defined for more than one temperature,
all material computations for material stiffness, thermal conductivity, etc.
become temperature dependent. The material properties are evaluted
at the temperture set by vfe_MatlFunProp()
with type VFE_PROP_TEMPERATURE.
Material property evaluations are performed as a piecewise linear function
of the input temperature dependent properties. Any material property
evaluation at a temperature outside of the range of temperatures for which
the properties have been defined are clamped to the appropriate
extreme property value.
Use vfe_LinMatMatlFun()
to fill a MatlFun object with function pointers
which can then be set
as an attribute object for any element formulation module, such
as Solid2D, or any
element material model module, such as ShellProp,
which accepts primitive material models.
Destroy an instance of a LinMat object using vfe_LinMatEnd()
.
10.2. Elastic Moduli
Elastic properties must be defined for all structural analysis. The simplest form of linear elasticity is isotropic. In this case only Young’s modulus, E, and Poisson’s ratio, Nu, need be defined. The shear modulus, G, is computed from E and Nu as follows:
G = E/(2*(1+Nu))
For the case of linear orthotropic elastic materials the material is defined by entering the Young’s moduli, Ex, Ey, Ez, Poisson’s ratios, Nuxy, Nuyz, Nuxz, and the shear moduli, Gxy, Gyz, Gxz. These elastic moduli together define the material compliance matrix which relates the engineering strain (exx, eyy, ezz, gxy, gyz, gzx) to the stress tensor (sxx, syy, szz, sxy, syz, szx) as follows:
-- -- -- -- -- --
| exx | | 1./Ex -Nuyx/Ey -Nuzx/Ez 0. 0. 0. | | sxx |
| eyy | | -Nuxy/Ex 1./Ey -Nuzy/Ez 0. 0. 0. | | syy |
| ezz | = | -Nuxz/Ex -Nuyz/Ey 1./Ez 0. 0. 0. | | szz |
| gxy | | 0. 0. 0. 1./Gxy 0. 0. | | sxy |
| gyz | | 0. 0. 0. 0. 1./Gyz 0. | | syz |
| gzx | | 0. 0. 0. 0. 0. 1./Gxz | | szx |
-- -- -- -- -- --
Note the relationship:
Nuxy/Ex = Nuyx/Ey
Nuyz/Ey = Nuzy/Ez
Nuxz/Ex = Nuzx/Ez
Also note that the engineering shear strain components, (gxy, gyz, gzx) are equal to twice the corresponding tensor strain components (exy, eyz, ezx).
For the case of linear anisotropic elastic materials the lower triangle of the symmetric material stiffness matrix is entered. The lower triangle consists of 21 constants which relate stress to strain as follows:
-- -- -- -- -- --
| sxx | | D1 | | exx |
| syy | | D2 D3 | | eyy |
| szz | = | D4 D5 D6 | | ezz |
| sxy | | D7 D8 D9 D10 | | gxy |
| syz | | D11 D12 D13 D14 D15 | | gyz |
| szx | | D16 D17 D18 D19 D20 D21 | | gzx |
-- -- -- -- -- --
10.3. Thermal Conductivity
Thermal conductivities must be defined for all thermal analysis. For the case of isotropic conductivity only the conductivity, K need be defined.
For the case of orthotropic materials the material is defined by entering the three conductivities, Kxx, Kyy, Kzz. These conductivities together define the conductivity matrix which relates the heat flux (qx, qy, qz) to the temperature gradient (gtx, gty, gtz) as follows:
-- -- -- -- -- --
| qx | | Kxx 0. 0. | | gtx |
| qy | = - | 0. Kyy 0. | | gty |
| qz | | 0. 0. Kzz | | gtz |
-- -- -- -- -- --
For the case of anisotropic materials the lower triangle of the symmetric conductivity matrix is entered. The lower triangle consists of 6 constants which relate heat flux to temperature gradient as follows:
-- -- -- -- -- --
| qx | | K1 | | gtx |
| qy | = - | K2 K3 | | gty |
| qz | | K4 K5 K6 | | gtz |
-- -- -- -- -- --
10.4. Thermal Expansions and Reference Temperature
The coefficients of thermal expansion and associated reference temperature are required if the effects of thermal strain in structural analysis are desired. The thermal strains are directly proportional to the difference between the given temperature, T, and the reference temperature, TRef. The proportionality factor is the coefficient of thermal expansion.
In the case of an isotropic material only a single coefficient of thermal expansion, alpha, is required.
For the case of orthotropic materials the three coefficients of thermal expansion, alphax, alphay, alphaz, are entered. These coefficients and the given temperature and reference temperature relate to the thermal strain as follows:
-- -- -- --
| exx | | alphax |
| eyy | | alphax |
| ezz | = (T - TRef) | alphax |
| gxy | | 0. |
| gyz | | 0. |
| gzx | | 0. |
-- -- -- --
For the case of anisotropic materials 6 coefficients of thermal expansion are entered. These coefficients and the given temperature and reference temperature relate to the thermal strain as follows:
-- -- -- --
| exx | | alpha1 |
| eyy | | alpha2 |
| ezz | = (T - TRef) | alpha3 |
| gxy | | alpha4 |
| gyz | | alpha5 |
| gzx | | alpha6 |
-- -- -- --
10.5. Density and Specific Heat
The density is required for the calculation of mass in structural analysis. Both the density and specific heat are required for the calculation of capacitance in thermal analysis.
10.6. Function Descriptions
The currently available LinMat functions are described in detail in this section.
-
vfe_LinMat *vfe_LinMatBegin(void)
create an instance of a LinMat object
Create an instance of a LinMat object. Memory is allocated for the object private data and the pointer to the object is returned. By default the material model assumes isotropic materials.
Destroy an instance of a LinMat object using
void vfe_LinMatEnd (vfe_LinMat *linmat )
Return the current value of a LinMat object error flag using
Vint vfe_LinMatError (vfe_LinMat *linmat )
- Returns:
The function returns a pointer to the newly created LinMat object. If the object creation fails, NULL is returned.
-
void vfe_LinMatEnd(vfe_LinMat *p)
destroy an instance of a LinMat object
-
Vint vfe_LinMatError(vfe_LinMat *p)
return the current value of a LinMat object error flag
-
void vfe_LinMatDef(vfe_LinMat *p, Vint type)
define property type
Define the type of linear material to be specified. By default the material type is
SYS_MAT_ISOTROPIC
.Inquire of a defined type as an output argument using
void vfe_LinMatInq (vfe_LinMat *linmat, Vint *type)
- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.
- Parameters:
p – Pointer to LinMat object.
type – Linear material type
x=SYS_MAT_ISOTROPIC Isotropic material =SYS_MAT_ORTHOTROPIC Orthotropic material =SYS_MAT_ANISOTROPIC Anisotropic material
-
void vfe_LinMatInq(vfe_LinMat *p, Vint *type)
inquire of a defined type as an output argument
See
vfe_LinMatDef()
-
void vfe_LinMatSetElasProp(vfe_LinMat *p, Vdouble prop[])
set elastic moduli
Define elastic moduli. The number and type of elastic moduli input in the prop array depend upon the material isotropy. For isotropic materials input 2 values, E and Nu where E > 0. and -1. < Nu < .5 . For orthotropic materials input 9 values, Ex, Ey, Ez, Nuxy, Nuyz, Nuxz, Gxy, Gyz, Gxz. For anisotropic materials input 21 values, D1, D2, … , D21.
- Errors
SYS_ERROR_VALUE
is generated if an improper prop is specified.
- Parameters:
p – Pointer to LinMat object.
prop – Array of elastic moduli.
-
void vfe_LinMatSetDensity(vfe_LinMat *p, Vdouble density)
set density
Define density where density >= 0.
- Errors
SYS_ERROR_VALUE
is generated if an improper density is specified.
- Parameters:
p – Pointer to LinMat object.
density – Density
-
void vfe_LinMatSetThermCond(vfe_LinMat *p, Vdouble cond[])
set thermal conductivities
Define thermal conductivities. The number and type of conductivities input in the cond array depend upon the material isotropy. For isotropic materials input 1 value, K, where K > 0. For orthotropic materials input 3 values, Kxx, Kyy, Kzz. For anisotropic materials input 6 values, K1, K2, … , K6.
- Errors
SYS_ERROR_VALUE
is generated if an improper cond is specified.
- Parameters:
p – Pointer to LinMat object.
cond – Array of thermal conductivities
-
void vfe_LinMatSetThermExp(vfe_LinMat *p, Vdouble alpha[])
set coefficients of thermal expansion
Define coefficients of thermal expansion. The number and type of coefficients input in the alpha array depend upon the material isotropy. For isotropic materials input 1 value, alpha. For orthotropic materials input 3 values, alphax, alphay, alphaz. For anisotropic materials input 6 values, alpha1, alpha2, … , alpha6.
- Parameters:
p – Pointer to LinMat object.
alpha – Array of coefficients of thermal expansion
-
void vfe_LinMatSetSpecHeat(vfe_LinMat *p, Vdouble specheat)
set specific heat
Define specific heat where specheat >= 0.
- Errors
SYS_ERROR_VALUE
is generated if an improper specheat is specified.
- Parameters:
p – Pointer to LinMat object.
specheat – Specific heat
-
void vfe_LinMatSetRefTemp(vfe_LinMat *p, Vdouble reftemp)
set reference temperature
Define reference temperature.
- Parameters:
p – Pointer to LinMat object.
reftemp – Reference temperature
-
void vfe_LinMatSetTemp(vfe_LinMat *p, Vdouble temp)
set temperature parameter
Specify the current temperature for which all subsequent material properties, until another call to
vfe_LinMatSetTemp()
is encountered, are defined. By default the current temperature is zero.- Parameters:
p – Pointer to LinMat object.
temp – Current temperature of defined material properties
-
void vfe_LinMatSetParami(vfe_LinMat *p, Vint type, Vint iparam)
set material model parameters
Set material model parameters. The computation of thermal strains during stress calculation is activated with the
VFE_THERMALSTRAIN
flag. By defaultVFE_THERMALSTRAIN
is set toSYS_OFF
.The source of the reference temperature used in thermal strain calculation is toggled by the
VFE_THERMALEXPREF
flag. IfVFE_THERMALEXPREF
is off then the reference temperature input withvfe_LinMatSetRefTemp()
is used otherwise the reference temperature input byvfe_MatlFunProp()
with typeVFE_PROP_TEMPREF
is used. By defaultVFE_THERMALEXPREF
is set toSYS_OFF
.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.SYS_ERROR_VALUE
is generated if an improper iparam is specified.
- Parameters:
p – Pointer to LinMat object.
type – Type of parameter to set
x=VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source
iparam – Integer parameter value.
x=SYS_OFF Disable =SYS_ON Enable
-
void vfe_LinMatMatlFun(vfe_LinMat *p, vfe_MatlFun *matlfun)
fill MatlFun object
Fill a MatlFun object with material model functions. Use the MatlFun object as an attribute object for any element formulation module, such as Solid2D, or any element material model module which accepts primitive material models.
10.7. Elasto-Plastic Materials - PlasMat
The PlasMat module is used to model small strain or large strain elasto-plastic materials for structural analysis. The finite strain J2 plasticity formulation is based upon a multiplicative decomposition of the deformation gradient and hyperelastic constitutive equations.
The methods associated with a PlasMat object are the following.
Begin and end an instance of an object, generic object functions
vfe_PlasMatBegin()
- create an instance of a PlasMat objectvfe_PlasMatEnd()
- destroy an instance of a PlasMat objectvfe_PlasMatError()
- return PlasMat object error flag
Specify material properties
vfe_PlasMatDef()
- define type of hardening lawvfe_PlasMatInq()
- inquire type of hardening lawvfe_PlasMatMatlFun()
- fill MatlFun objectvfe_PlasMatSetDensity()
- set densityvfe_PlasMatSetElasProp()
- set elastic modulivfe_PlasMatSetExponent()
- set exponential hardening lawvfe_PlasMatSetParami()
- set material model parametersvfe_PlasMatSetPiecewise()
- set piecewise linear hardening lawvfe_PlasMatSetPower()
- set power hardening lawvfe_PlasMatSetRefTemp()
- set reference temperaturevfe_PlasMatSetThermExp()
- set coefficients of thermal expansion
Instance a PlasMat object using vfe_PlasMatBegin()
.
Once a PlasMat is instanced,
the basic type of hardening law must be defined using
vfe_PlasMatDef()
.
The PlasMat module currently uses an isotropic hardening rule.
The available hardening laws are piecewise linear, power and exponential.
The isotropic linear elastic properties are entered using
vfe_PlasMatSetElasProp()
.
If the hardening law is piecewise linear, the hardening curve is input using
vfe_PlasMatSetPiecewise()
; if it is a power law use vfe_PlasMatSetPower()
;
and if it is an exponential law use vfe_PlasMatSetExponent()
.
The density for mass calculations is entered using
vfe_PlasMatSetDensity()
.
The reference temperature and coefficient of thermal expansion are entered
using vfe_PlasMatSetRefTemp()
and vfe_PlasMatSetThermExp()
respectively.
Certain parameters which modify certain aspects of
the material model may be set using vfe_PlasMatSetParami()
.
For example the user may toggle small or large strain plasticity, toggle
the calculation of thermal strain, etc.
Use vfe_PlasMatMatlFun()
to fill a MatlFun object with function pointers
which can then be set
as an attribute object for any element formulation module, such
as Solid2D, or any
element material model module, such as ShellProp,
which accepts primitive material models.
Destroy an instance of a PlasMat object using vfe_PlasMatEnd()
.
10.8. Elastic Moduli and Hardening Laws
Isotropic elastic properties must be defined for all hardening laws.
The Young’s modulus, E, and Poisson’s ratio, Nu, must be defined using
vfe_PlasMatSetElasProp()
. The hardening law is defined as an initial yield
stress and a hardening curve. The hardening curve represents the relationship
between the uniaxial stress minus the initial yield, Sy,
and the equivalent plastic strain, Ep.
Assuming elastic strains are very small, which is the case for metals, the plastic strain is defined as the logarithmic strain (which is equivalent to the infinitesimal strain for small deformations) minus the elastic strain. The elastic strain is defined as the total Cauchy stress/E.
The hardening curve may be represented in one of three ways termed hardening laws. The three hardening laws currently available are piecewise linear, power, and exponential.
A piecewise linear law is entered as a set of points describing a piecewise linear fit to the hardening curve. At each point the equivalent plastic strain and “additional” uniaxial yield stress is input. Use
vfe_PlasMatSetPiecewise()
to define the hardening curve. The first point in the curve must be (0,0), as it indicates that at a plastic strain value of zero, the yield stress is the initial yield stress.A power law is entered as a hardening modulus, hardmod, and a hardening exponent, hardexp. Use
vfe_PlasMatSetPower()
to define the hardening curve. The hardening curve is then given by:Sy = hardmod * Ep**hardexp
An exponential law is entered hardening modulus, hardmod, and a hardening exponent, hardexp. Use
vfe_PlasMatSetExponent()
to define the hardening curve. The hardening curve is then given by:Sy = hardmod * (1. - exp(-hardexp*Ep))
10.9. Thermal Expansions and Reference Temperature
The coefficients of thermal expansion and associated reference temperature are required if the effects of thermal strain in structural analysis are desired. The thermal strains are directly proportional to the difference between the given temperature, T, and the reference temperature, TRef. The proportionality factor is the coefficient of thermal expansion.
In the case of an isotropic material only a single coefficient of thermal expansion, alpha, is required.
10.10. Function Descriptions
The currently available PlasMat functions are described in detail in this section.
-
vfe_PlasMat *vfe_PlasMatBegin(void)
create an instance of a PlasMat object
Create an instance of a PlasMat object. Memory is allocated for the object private data and the pointer to the object is returned. By default the material model assumes isotropic materials.
Destroy an instance of a PlasMat object using
void vfe_PlasMatEnd (vfe_PlasMat *plasmat)
Return the current value of a PlasMat object error flag using
Vint vfe_PlasMatError (vfe_PlasMat *plasmat)
- Returns:
The function returns a pointer to the newly created PlasMat object. If the object creation fails, NULL is returned.
-
void vfe_PlasMatEnd(vfe_PlasMat *p)
destroy an instance of a PlasMat object
-
Vint vfe_PlasMatError(vfe_PlasMat *p)
return the current value of a PlasMat object error flag
-
void vfe_PlasMatSetParami(vfe_PlasMat *p, Vint type, Vint iparam)
set material model parameters
Set plastic material parameters.
The parameter
VFE_STRAINTYPE
is used to select a small or large strain plasticity model. By defaultVFE_STRAINTYPE
is set toVFE_SMALLSTRAIN
.The computation of thermal strains during stress calculation is activated with the
VFE_THERMALSTRAIN
flag. By defaultVFE_THERMALSTRAIN
is set toSYS_OFF
.The source of the reference temperature used in thermal strain calculation is toggled by the
VFE_THERMALEXPREF
flag. IfVFE_THERMALEXPREF
is off then the reference temperature input withvfe_PlasMatSetRefTemp()
is used otherwise the reference temperature input byvfe_MatlFunProp()
with typeVFE_PROP_TEMPREF
is used. By defaultVFE_THERMALEXPREF
is set toSYS_OFF
.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.SYS_ERROR_VALUE
is generated if an improper iparam is specified.
- Parameters:
p – Pointer to PlasMat object.
type – Type of parameter to set
x=VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source =VFE_STRAINTYPE Set small or large strain plasticity
iparam – Integer parameter value.
x=SYS_OFF Disable =SYS_ON Enable =VFE_LARGESTRAIN Large strain capability =VFE_SMALLSTRAIN Small strain capability
-
void vfe_PlasMatSetElasProp(vfe_PlasMat *p, Vdouble prop[])
set elastic moduli
Define isotropic elastic Young’s modulus, prop[0]=E, and Poisson’s ratio, prop[1]=Nu, where E > 0. and -1. < Nu < .5 .
- Errors
SYS_ERROR_VALUE
is generated if an improper prop is specified.
- Parameters:
p – Pointer to PlasMat object.
prop – Array of elastic properties.
-
void vfe_PlasMatDef(vfe_PlasMat *p, Vint type)
define type of hardening law
Define the type of plastic hardening law to be specified. Use
vfe_PlasMatSetPiecewise()
to input piecewise linear properties,vfe_PlasMatSetPower()
to input power law properties andvfe_PlasMatSetExponent()
to input exponential law properties. By default the material type isPLASMAT_PIECEWISE
.Inquire of a defined type as an output argument using
void vfe_PlasMatInq (vfe_PlasMat *plasmat, Vint *type)
- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.
- Parameters:
p – Pointer to PlasMat object.
type – Plastic material hardening law
x=PLASMAT_PIECEWISE Piecewise linear curve =PLASMAT_POWER Power law =PLASMAT_EXPONENT Exponential law
-
void vfe_PlasMatInq(vfe_PlasMat *p, Vint *type)
inquire of a defined type as an output argument
See
vfe_PlasMatDef()
-
void vfe_PlasMatSetPiecewise(vfe_PlasMat *p, Vdouble yield, Vint npts, Vdouble hard[][2])
set piecewise linear stress-strain law
Set piecewise linear stress-strain relationship. The hardening curve, hard, consists of npts pairs of equivalent plastic strain and corresponding incremental yield stress.
- Errors
SYS_ERROR_VALUE
is generated if an improper npts is specified.
- Parameters:
p – Pointer to PlasMat object.
yield – Yield stress
npts – Number of points in stress-strain curve
hard – Hardening curve
-
void vfe_PlasMatSetPower(vfe_PlasMat *p, Vdouble yield, Vdouble hardmod, Vdouble hardexp)
set power law stress-strain relationship
Set power law stress-strain relationship. The hardening curve is given by:
Sy = hardmod * Ep**hardexp
- Errors
SYS_ERROR_VALUE
is generated if yield, hardmod or hardexp are not strictly positive.
- Parameters:
p – Pointer to PlasMat object.
yield – Yield stress
hardmod – Hardening modulus
hardexp – Hardening exponent
-
void vfe_PlasMatSetExponent(vfe_PlasMat *p, Vdouble yield, Vdouble hardmod, Vdouble hardexp)
set exponential law stress-strain relationship
Set exponential law stress-strain relationship. The hardening curve is given by:
Sy = hardmod * (1. - exp(-hardexp*Ep))
- Errors
SYS_ERROR_VALUE
is generated if yield, hardmod or hardexp are not strictly positive.
- Parameters:
p – Pointer to PlasMat object.
yield – Yield stress
hardmod – Hardening modulus
hardexp – Hardening exponent
-
void vfe_PlasMatSetDensity(vfe_PlasMat *p, Vdouble density)
set density
Define density where density >= 0.
- Errors
SYS_ERROR_VALUE
is generated if an improper density is specified.
- Parameters:
p – Pointer to PlasMat object.
density – Density
-
void vfe_PlasMatSetThermExp(vfe_PlasMat *p, Vdouble alpha)
set coefficient of thermal expansion
Define the coefficient of thermal expansion, alpha. Use
vfe_PlasMatSetRefTemp()
to set the reference temperature.- Parameters:
p – Pointer to PlasMat object.
alpha – Coefficient of thermal expansion
-
void vfe_PlasMatSetRefTemp(vfe_PlasMat *p, Vdouble reftemp)
set reference temperature
Define reference temperature, reftemp. Use
vfe_PlasMatSetThermExp()
to set the coefficient of thermal expansion- Parameters:
p – Pointer to PlasMat object.
reftemp – Reference temperature
-
void vfe_PlasMatMatlFun(vfe_PlasMat *p, vfe_MatlFun *matlfun)
fill MatlFun object
Fill a MatlFun object with material model functions. Use the MatlFun object as an attribute object for any element formulation module, such as Solid2D, or any element material model module which accepts primitive material models.
10.11. Hyperelastic Materials - HyperMat
The HyperMat module is used to model the behavior of materials in structural analysis that respond elastically at large strains. The stress-strain relations of an isotropic hyperelastic material are derived from a strain energy per unit volume which is a function of either the principal invariants of the Cauchy-Green strain or a symmetric function of the principal stretches.
The methods associated with a HyperMat object are the following.
Begin and end an instance of an object, generic object functions
vfe_HyperMatBegin()
- create an instance of a HyperMat objectvfe_HyperMatEnd()
- destroy an instance of a HyperMat objectvfe_HyperMatError()
- return HyperMat object error flag
Specify material properties
vfe_HyperMatDef()
- define type of hyperelastic modelvfe_HyperMatInq()
- inquire type of hyperelastic modelvfe_HyperMatMatlFun()
- fill MatlFun objectvfe_HyperMatSetDensity()
- set densityvfe_HyperMatSetParami()
- set material model parametersvfe_HyperMatSetMooney()
- set Mooney-Rivlin material modelvfe_HyperMatSetNeoHookean()
- set Neo-Hookean material modelvfe_HyperMatSetOgden()
- set Ogden material modelvfe_HyperMatSetRefTemp()
- set reference temperaturevfe_HyperMatSetTemp()
- set temperature parametervfe_HyperMatSetThermExp()
- set coefficients of thermal expansion
Instance a HyperMat object using vfe_HyperMatBegin()
.
Once a HyperMat is instanced,
the basic type of hyperelastic model must be defined using
vfe_HyperMatDef()
.
The available models are Mooney-Rivlin, Neo-Hookean and Ogden.
If the hyperelastic model is Mooney-Rivlin, the material parameters
are entered using vfe_HyperMatSetMooney()
; if it is Neo-Hookean
use vfe_HyperMatSetNeoHookean()
; and if it is Ogden use vfe_HyperMatSetOgden()
.
The density for mass calculations is entered using
vfe_HyperMatSetDensity()
.
The reference temperature and coefficient of thermal expansion are entered
using vfe_HyperMatSetRefTemp()
and vfe_HyperMatSetThermExp()
respectively.
Certain parameters which modify certain aspects of
the material model may be set using vfe_HyperMatSetParami()
.
Material properties in HyperMat may be temperature dependent.
The current temperature for which material properties are to be defined
is set using vfe_HyperMatSetTemp()
.
All subsequently defined properties are assumed to be at the current
temperature.
If material properties have been defined for more than one temperature,
all material computations for material stiffness, etc.
become temperature dependent.
The material properties are evaluted
at the temperture set by vfe_MatlFunProp()
with type VFE_PROP_TEMPERATURE.
Material property evaluations are performed as a piecewise linear function
of the input temperature dependent properties. Any material property
evaluation at a temperature outside of the range of temperatures for which
the properties have been defined are clamped to the appropriate
extreme property value.
Use vfe_HyperMatMatlFun()
to fill a MatlFun object with function pointers
which can then be set
as an attribute object for any element formulation module, such
as Solid2D, or any
element material model module, such as ShellProp,
which accepts primitive material models.
Destroy an instance of a HyperMat object using vfe_HyperMatEnd()
.
10.12. Hyperelastic Models
Currently three hyperelastic models are implemented, Heo-Hookean, Mooney-Rivlin and Ogden. Each model is designed to efficiently model hyperelastic material response depending upon the magnitude of the expected strain.
The Neo-Hookean model is able to describe the stress-strain response of a rubber like material for moderate strains. Use
vfe_HyperMatSetNeoHookean()
to define the material parameters.The Mooney-Rivlin model is able to describe the stress-strain response of a rubber like material for large strains. Use
vfe_HyperMatSetMooney()
to define the material parameters.The Ogden model is able to describe the stress-strain response of a rubber like material for very large strains. Use
vfe_HyperMatSetOgden()
to define the material parameters.
10.13. Thermal Expansions and Reference Temperature
The coefficients of thermal expansion and associated reference temperature are required if the effects of thermal strain in structural analysis are desired. The thermal strains are directly proportional to the difference between the given temperature, T, and the reference temperature, TRef. The proportionality factor is the coefficient of thermal expansion.
In the case of an isotropic material only a single coefficient of thermal expansion, alpha, is required.
10.14. Function Descriptions
The currently available HyperMat functions are described in detail in this section.
-
vfe_HyperMat *vfe_HyperMatBegin(void)
create an instance of a HyperMat object
Create an instance of a HyperMat object. Memory is allocated for the object private data and the pointer to the object is returned.
Destroy an instance of a HyperMat object using
void vfe_HyperMatEnd (vfe_HyperMat *hypermat)
Return the current value of a HyperMat object error flag using
Vint vfe_HyperMatError (vfe_HyperMat *hypermat)
- Returns:
The function returns a pointer to the newly created HyperMat object. If the object creation fails, NULL is returned.
-
void vfe_HyperMatEnd(vfe_HyperMat *p)
destroy an instance of a HyperMat object
-
Vint vfe_HyperMatError(vfe_HyperMat *p)
return the current value of a HyperMat object error flag
-
void vfe_HyperMatSetTemp(vfe_HyperMat *p, Vdouble temp)
set temperature parameter
Specify the current temperature for which all subsequent material properties, until another call to
vfe_HyperMatSetTemp()
is encountered, are defined. By default the current temperature is zero.- Parameters:
p – Pointer to HyperMat object.
temp – Current temperature of defined material properties
-
void vfe_HyperMatSetParami(vfe_HyperMat *p, Vint type, Vint iparam)
set material model parameters
Set material model parameters. The computation of thermal strains during stress calculation is activated with the
VFE_THERMALSTRAIN
flag. By defaultVFE_THERMALSTRAIN
is set toSYS_OFF
.The source of the reference temperature used in thermal strain calculation is toggled by the
VFE_THERMALEXPREF
flag. IfVFE_THERMALEXPREF
is off then the reference temperature input withvfe_HyperMatSetRefTemp()
is used otherwise the reference temperature input byvfe_MatlFunProp()
with typeVFE_PROP_TEMPREF
is used. By defaultVFE_THERMALEXPREF
is set toSYS_OFF
.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.SYS_ERROR_VALUE
is generated if an improper iparam is specified.
- Parameters:
p – Pointer to HyperMat object.
type – Type of parameter to set
x=VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source
iparam – Integer parameter value.
x=SYS_OFF Disable =SYS_ON Enable
-
void vfe_HyperMatDef(vfe_HyperMat *p, Vint type)
define type of hyperelastic material model
Define the type of hyperelastic material model to be specified. Use
vfe_HyperMatSetOgden()
to input Ogden properties,vfe_HyperMatSetNeoHookean()
to input Neo-Hookean properties andvfe_HyperMatSetMooney()
to input Mooney-Rivlin properties. By default the material type isHYPERMAT_MOONEY
.Inquire of a defined type as an output argument using
void vfe_HyperMatInq (vfe_HyperMat *hypermat, Vint *type)
- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.
- Parameters:
p – Pointer to HyperMat object.
type – Hyperelastic material type
x=HYPERMAT_OGDEN Ogden material model =HYPERMAT_NEOHOOKEAN Neo-Hookean material model =HYPERMAT_MOONEY Mooney-Rivlin material model
-
void vfe_HyperMatInq(vfe_HyperMat *p, Vint *type)
inquire of a defined type as an output argument
-
void vfe_HyperMatSetMooney(vfe_HyperMat *p, Vdouble bulk, Vdouble mooney[])
set Mooney-Rivlin material model
Set the material parameters for a Mooney-Rivlin material.
- Errors
SYS_ERROR_VALUE
is generated if bulk or mooney[0] are not strictly positive.
- Parameters:
p – Pointer to HyperMat object.
bulk – Initial bulk modulus
mooney – Two parameters for Mooney-Rivlin model
-
void vfe_HyperMatSetNeoHookean(vfe_HyperMat *p, Vdouble bulk, Vdouble shear)
set Neo-Hookean material model
Set Neo-Hookean material parameters.
- Errors
SYS_ERROR_VALUE
is generated if bulk or shear are not positive.
- Parameters:
p – Pointer to HyperMat object.
bulk – Initial bulk modulus
shear – Shear modulus
-
void vfe_HyperMatSetOgden(vfe_HyperMat *p, Vdouble bulk, Vint npts, Vdouble ogdencoeff[], Vdouble ogdenexp[])
set Ogden material model
Set Ogden material parameters.
- Errors
SYS_ERROR_VALUE
is generated if an improper npts is specified or bulk is not positive.
- Parameters:
p – Pointer to HyperMat object.
bulk – Initial bulk modulus
npts – Number of points in the Ogden expansion
ogdencoeff – Array of coefficients.
ogdenexp – Array of exponents.
-
void vfe_HyperMatSetDensity(vfe_HyperMat *p, Vdouble density)
set density
Define density where density >= 0.
- Errors
SYS_ERROR_VALUE
is generated if an improper density is specified.
- Parameters:
p – Pointer to HyperMat object.
density – Density
-
void vfe_HyperMatSetThermExp(vfe_HyperMat *p, Vdouble alpha)
set coefficient of thermal expansion
Define the coefficient of thermal expansion, alpha. Use
vfe_HyperMatSetRefTemp()
to set the reference temperature.- Parameters:
p – Pointer to HyperMat object.
alpha – Coefficient of thermal expansion
-
void vfe_HyperMatSetRefTemp(vfe_HyperMat *p, Vdouble reftemp)
set reference temperature
Define reference temperature, reftemp. Use
vfe_HyperMatSetThermExp()
to set the coefficient of thermal expansion- Parameters:
p – Pointer to HyperMat object.
reftemp – Reference temperature
-
void vfe_HyperMatMatlFun(vfe_HyperMat *p, vfe_MatlFun *matlfun)
fill MatlFun object
Fill a MatlFun object with material model functions. Use the MatlFun object as an attribute object for any element formulation module, such as Solid2D, or any element material model module which accepts primitive material models.