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.

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

See vfe_LinMatBegin()

Vint vfe_LinMatError(vfe_LinMat *p)

return the current value of a LinMat object error flag

See vfe_LinMatBegin()

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 default VFE_THERMALSTRAIN is set to SYS_OFF.

The source of the reference temperature used in thermal strain calculation is toggled by the VFE_THERMALEXPREF flag. If VFE_THERMALEXPREF is off then the reference temperature input with vfe_LinMatSetRefTemp() is used otherwise the reference temperature input by vfe_MatlFunProp() with type VFE_PROP_TEMPREF is used. By default VFE_THERMALEXPREF is set to SYS_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.

Parameters:
  • p – Pointer to LinMat object.

  • matlfun – Pointer to MatlFun object to be filled with material functions

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.

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

See vfe_PlasMatBegin()

Vint vfe_PlasMatError(vfe_PlasMat *p)

return the current value of a PlasMat object error flag

See vfe_PlasMatBegin()

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 default VFE_STRAINTYPE is set to VFE_SMALLSTRAIN.

The computation of thermal strains during stress calculation is activated with the VFE_THERMALSTRAIN flag. By default VFE_THERMALSTRAIN is set to SYS_OFF.

The source of the reference temperature used in thermal strain calculation is toggled by the VFE_THERMALEXPREF flag. If VFE_THERMALEXPREF is off then the reference temperature input with vfe_PlasMatSetRefTemp() is used otherwise the reference temperature input by vfe_MatlFunProp() with type VFE_PROP_TEMPREF is used. By default VFE_THERMALEXPREF is set to SYS_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 and vfe_PlasMatSetExponent() to input exponential law properties. By default the material type is PLASMAT_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.

Parameters:
  • p – Pointer to PlasMat object.

  • matlfun – Pointer to MatlFun object to be filled with material functions

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.

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

See vfe_HyperMatBegin()

Vint vfe_HyperMatError(vfe_HyperMat *p)

return the current value of a HyperMat object error flag

See vfe_HyperMatBegin()

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 default VFE_THERMALSTRAIN is set to SYS_OFF.

The source of the reference temperature used in thermal strain calculation is toggled by the VFE_THERMALEXPREF flag. If VFE_THERMALEXPREF is off then the reference temperature input with vfe_HyperMatSetRefTemp() is used otherwise the reference temperature input by vfe_MatlFunProp() with type VFE_PROP_TEMPREF is used. By default VFE_THERMALEXPREF is set to SYS_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 and vfe_HyperMatSetMooney() to input Mooney-Rivlin properties. By default the material type is HYPERMAT_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

See vfe_HyperMatDef()

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.

Parameters:
  • p – Pointer to HyperMat object.

  • matlfun – Pointer to MatlFun object to be filled with material functions