The methods associated with a LinMat object are the following.
*vfe_LinMatBegin - create an instance of a LinMat object vfe_LinMatEnd - destroy an instance of a LinMat object vfe_LinMatError - return LinMat object error flag
vfe_LinMatDef - define property type Inq - inquire property type vfe_LinMatMatlFun - fill MatlFun object vfe_LinMatSetDensity - set density vfe_LinMatSetElasProp - set elastic moduli vfe_LinMatSetParami - set material model parameters vfe_LinMatSetRefTemp - set reference temperature vfe_LinMatSetSpecHeat - set specific heat vfe_LinMatSetTemp - set temperature parameter vfe_LinMatSetThermCond - set thermal conductivities vfe_LinMatSetThermExp - set coefficients of thermal expansion
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.
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/EzAlso 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 | -- -- -- -- -- --
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 | -- -- -- -- -- --
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 | -- -- -- --
*vfe_LinMatBegin - create an instance of a LinMat object
vfe_LinMat *vfe_LinMatBegin ()
None
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 )
vfe_LinMatDef - define property type
void vfe_LinMatDef (vfe_LinMat *linmat, Vint type)
linmat Pointer to LinMat object. type Linear material type =SYS_MAT_ISOTROPIC Isotropic material =SYS_MAT_ORTHOTROPIC Orthotropic material =SYS_MAT_ANISOTROPIC Anisotropic material
None
Inquire of a defined type as an output argument using
void vfe_LinMatInq (vfe_LinMat *linmat, Vint *type)
vfe_LinMatMatlFun - fill MatlFun object
void vfe_LinMatMatlFun (vfe_LinMat *linmat, vfe_MatlFun *matlfun)
linmat Pointer to LinMat object. matlfun Pointer to MatlFun object to be filled with material functions
None
vfe_LinMatSetDensity - set density
void vfe_LinMatSetDensity (vfe_LinMat *linmat, Vdouble density)
linmat Pointer to LinMat object. density Density
None
vfe_LinMatSetElasProp - set elastic moduli
void vfe_LinMatSetElasProp (vfe_LinMat *linmat, Vdouble prop[])
linmat Pointer to LinMat object. prop Array of elastic moduli.
None
vfe_LinMatSetParami - set material model parameters
void vfe_LinMatSetParami (vfe_LinMat *linmat, Vint type, Vint iparam)
linmat Pointer to LinMat object. type Type of parameter to set =VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source iparam Integer parameter value. =SYS_OFF Disable =SYS_ON Enable
None
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.
vfe_LinMatSetRefTemp - set reference temperature
void vfe_LinMatSetRefTemp (vfe_LinMat *linmat, Vdouble reftemp)
linmat Pointer to LinMat object. reftemp Reference temperature
None
vfe_LinMatSetSpecHeat - set specific heat
void vfe_LinMatSetSpecHeat (vfe_LinMat *linmat, Vdouble specheat)
linmat Pointer to LinMat object. specheat Specific heat
None
vfe_LinMatSetTemp - set temperature parameter
void vfe_LinMatSetTemp (vfe_LinMat *linmat, Vdouble temp)
linmat Pointer to LinMat object. temp Current temperature of defined material properties
None
vfe_LinMatSetThermCond - set thermal conductivities
void vfe_LinMatSetThermCond (vfe_LinMat *linmat, Vdouble cond[])
linmat Pointer to LinMat object. cond Array of thermal conductivities
None
vfe_LinMatSetThermExp - set coefficients of thermal expansion
void vfe_LinMatSetThermExp (vfe_LinMat *linmat, Vdouble alpha[])
linmat Pointer to LinMat object. alpha Array of coefficients of thermal expansion
None
The methods associated with a PlasMat object are the following.
*vfe_PlasMatBegin - create an instance of a PlasMat object vfe_PlasMatEnd - destroy an instance of a PlasMat object vfe_PlasMatError - return PlasMat object error flag
vfe_PlasMatDef - define type of hardening law Inq - inquire type of hardening law vfe_PlasMatMatlFun - fill MatlFun object vfe_PlasMatSetDensity - set density vfe_PlasMatSetElasProp - set elastic moduli vfe_PlasMatSetExponent - set exponential hardening law vfe_PlasMatSetParami - set material model parameters vfe_PlasMatSetPiecewise - set piecewise linear hardening law vfe_PlasMatSetPower - set power hardening law vfe_PlasMatSetRefTemp - set reference temperature vfe_PlasMatSetThermExp - set coefficients of thermal expansion
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.
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.
Sy = hardmod * Ep**hardexp
Sy = hardmod * (1. - exp(-hardexp*Ep))
In the case of an isotropic material only a single coefficient of thermal expansion, alpha, is required.
*vfe_PlasMatBegin - create an instance of a PlasMat object
vfe_PlasMat *vfe_PlasMatBegin ()
None
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)
vfe_PlasMatMatlFun - fill MatlFun object
void vfe_PlasMatMatlFun (vfe_PlasMat *plasmat, vfe_MatlFun *matlfun)
plasmat Pointer to PlasMat object. matlfun Pointer to MatlFun object to be filled with material functions
None
vfe_PlasMatDef - define type of hardening law
void vfe_PlasMatDef (vfe_PlasMat *plasmat, Vint type)
plasmat Pointer to PlasMat object. type Plastic material hardening law =PLASMAT_PIECEWISE Piecewise linear curve =PLASMAT_POWER Power law =PLASMAT_EXPONENT Exponential law
None
Inquire of a defined type as an output argument using
void vfe_PlasMatInq (vfe_PlasMat *plasmat, Vint *type)
vfe_PlasMatSetDensity - set density
void vfe_PlasMatSetDensity (vfe_PlasMat *plasmat, Vdouble density)
plasmat Pointer to PlasMat object. density Density
None
vfe_PlasMatSetElasProp - set elastic moduli
void vfe_PlasMatSetElasProp (vfe_PlasMat *plasmat, Vdouble prop[])
plasmat Pointer to PlasMat object. prop Array of elastic properties.
None
vfe_PlasMatSetExponent - set exponential law stress-strain relationship
void vfe_PlasMatSetExponent (vfe_PlasMat *plasmat, Vdouble yield, Vdouble hardmod, Vdouble hardexp)
plasmat Pointer to PlasMat object. yield Yield stress hardmod Hardening modulus hardexp Hardening exponent
None
Sy = hardmod * (1. - exp(-hardexp*Ep))
vfe_PlasMatSetParami - set material model parameters
void vfe_PlasMatSetParami (vfe_PlasMat *plasmat, Vint type, Vint iparam)
plasmat Pointer to PlasMat object. type Type of parameter to set =VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source =VFE_STRAINTYPE Set small or large strain plasticity iparam Integer parameter value. =SYS_OFF Disable =SYS_ON Enable =VFE_LARGESTRAIN Large strain capability =VFE_SMALLSTRAIN Small strain capability
None
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.
vfe_PlasMatSetPiecewise - set piecewise linear stress-strain law
void vfe_PlasMatSetPiecewise (vfe_PlasMat *plasmat, Vdouble yield, Vint npts, Vdouble hard[][2])
plasmat Pointer to PlasMat object. yield Yield stress npts Number of points in stress-strain curve hard Hardening curve
None
vfe_PlasMatSetPower - set power law stress-strain relationship
void vfe_PlasMatSetPower (vfe_PlasMat *plasmat, Vdouble yield, Vdouble hardmod, Vdouble hardexp)
plasmat Pointer to PlasMat object. yield Yield stress hardmod Hardening modulus hardexp Hardening exponent
None
Sy = hardmod * Ep**hardexp
vfe_PlasMatSetRefTemp - set reference temperature
void vfe_PlasMatSetRefTemp (vfe_PlasMat *plasmat, Vdouble reftemp)
plasmat Pointer to PlasMat object. reftemp Reference temperature
None
vfe_PlasMatSetThermExp - set coefficient of thermal expansion
void vfe_PlasMatSetThermExp (vfe_PlasMat *plasmat, Vdouble alpha)
plasmat Pointer to PlasMat object. alpha Coefficient of thermal expansion
None
The methods associated with a HyperMat object are the following.
*vfe_HyperMatBegin - create an instance of a HyperMat object vfe_HyperMatEnd - destroy an instance of a HyperMat object vfe_HyperMatError - return HyperMat object error flag
vfe_HyperMatDef - define type of hyperelastic model Inq - inquire type of hyperelastic model vfe_HyperMatMatlFun - fill MatlFun object vfe_HyperMatSetDensity - set density vfe_HyperMatSetParami - set material model parameters vfe_HyperMatSetMooney - set Mooney-Rivlin material model vfe_HyperMatSetNeoHookean - set Neo-Hookean material model vfe_HyperMatSetOgden - set Ogden material model vfe_HyperMatSetRefTemp - set reference temperature vfe_HyperMatSetTemp - set temperature parameter vfe_HyperMatSetThermExp - set coefficients of thermal expansion
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.
In the case of an isotropic material only a single coefficient of thermal expansion, alpha, is required.
*vfe_HyperMatBegin - create an instance of a HyperMat object
vfe_HyperMat *vfe_HyperMatBegin ()
None
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)
vfe_HyperMatMatlFun - fill MatlFun object
void vfe_HyperMatMatlFun (vfe_HyperMat *hypermat, vfe_MatlFun *matlfun)
hypermat Pointer to HyperMat object. matlfun Pointer to MatlFun object to be filled with material functions
None
vfe_HyperMatDef - define type of hyperelastic material model
void vfe_HyperMatDef (vfe_HyperMat *hypermat, Vint type)
hypermat Pointer to HyperMat object. type Hyperelastic material type =HYPERMAT_OGDEN Ogden material model =HYPERMAT_NEOHOOKEAN Neo-Hookean material model =HYPERMAT_MOONEY Mooney-Rivlin material model
None
Inquire of a defined type as an output argument using
void vfe_HyperMatInq (vfe_HyperMat *hypermat, Vint *type)
vfe_HyperMatSetDensity - set density
void vfe_HyperMatSetDensity (vfe_HyperMat *hypermat, Vdouble density)
hypermat Pointer to HyperMat object. density Density
None
vfe_HyperMatSetMooney - set Mooney-Rivlin material model
void vfe_HyperMatSetMooney (vfe_HyperMat *hypermat, Vdouble bulk, Vdouble mooney[2])
hypermat Pointer to HyperMat object. bulk Initial bulk modulus mooney Two parameters for Mooney-Rivlin model
None
vfe_HyperMatSetParami - set material model parameters
void vfe_HyperMatSetParami (vfe_HyperMat *hypermat, Vint type, Vint iparam)
hypermat Pointer to HyperMat object. type Type of parameter to set =VFE_THERMALSTRAIN Toggle thermal strains =VFE_THERMALEXPREF Toggle reference temperature source iparam Integer parameter value. =SYS_OFF Disable =SYS_ON Enable
None
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.
vfe_HyperMatSetNeoHookean - set Neo-Hookean material model
void vfe_HyperMatSetNeoHookean (vfe_HyperMat *hypermat, Vdouble bulk, Vdouble shear)
hypermat Pointer to HyperMat object. bulk Initial bulk modulus shear Shear modulus
None
vfe_HyperMatSetOgden - set Ogden material model
void vfe_HyperMatSetOgden (vfe_HyperMat *hypermat, Vdouble bulk, Vint npts, Vdouble ogdencoeff[], Vdouble ogdenexp[])
hypermat Pointer to HyperMat object. bulk Initial bulk modulus npts Number of points in the Ogden expansion ogdencoeff Array of coefficients. ogdenexp Array of exponents.
None
vfe_HyperMatSetRefTemp - set reference temperature
void vfe_HyperMatSetRefTemp (vfe_HyperMat *hypermat, Vdouble reftemp)
hypermat Pointer to HyperMat object. reftemp Reference temperature
None
vfe_HyperMatSetTemp - set temperature parameter
void vfe_HyperMatSetTemp (vfe_HyperMat *hypermat, Vdouble temp)
hypermat Pointer to HyperMat object. temp Current temperature of defined material properties
None
vfe_HyperMatSetThermExp - set coefficient of thermal expansion
void vfe_HyperMatSetThermExp (vfe_HyperMat *hypermat, Vdouble alpha)
hypermat Pointer to HyperMat object. alpha Coefficient of thermal expansion
None