Material Properties
Overview
This class manages material properties such as elastic or thermal material properties. It is designed to hold properties for a defined material class such as linear isotropic, plastic, etc. Each material property of a given class has an associated number of components and data type such as integer or real. For example the elastic modulus property of a linear orthotropic material has 3 real valued components. Integer valued material properties are always scalar values. Optionally a material property may be defined to be a function of some independent variable such as temperature by relating an integer identifier with the material property. This integer identifier is assumed to be a key to a table or some function description which contains the material property as a function of temperature.
The functions associated with a MaterialProperty object are the following:
- Define and query material property type
define()- Define class of material propertyinquire()- Inquire class of material propertyredefine()- Redefine material property type
- Set material property values
setPropertyIntegerValue- Set integer propertysetPropertyDoubleValue()- Set real valued propertysetPropertyDoubleArray()- Set real valued propertiessetPropertyId()- Set property identifier valueunsetProperty()- Unset property
- Query material property information
getPropertyCount()- Query number of property typesgetIntegerPropertyTypes()- Query integer property typesgetDoublePropertyTypes()- Query double property typesgetPropertyInformation()- Query property parametersgetPropertyFlag()- Query property definedgetPropertyId()- Query property identifier valuegetPropertyName()- Query property name
- Get material property values
getPropertyDoubleValue()- Query property double valuegetPropertyIntegerValue- Query property integer value
- General functions
Instance a MaterialProperty object initially using the constructor.
The material property class is defined using define().
The property class is the type of material for which the properties are applicable such as linear
isotropic, anisotropic, etc. See Type for available types.
Specify integer or double valued material properties using setPropertyIntegerValue,
setPropertyDoubleValue(), or
setPropertyDoubleArray().
Each material property type is identified by a defined enum. See IntegerProperty and
DoubleProperty
for available property types. The user queries for the number and type of material properties defined
using getIntegerPropertyTypes() and getDoublePropertyTypes().
The number of components associated with a material property type are queried using
getPropertyInformation().
A long descriptive name which is hard-wired to each property type may be queried using
getPropertyName().
Finally the property values themselves may be recovered using
getPropertyIntegerValue or
getPropertyDoubleValue().
As an option to explicitly entering double values for a particular material property, a table identifier
may be associated with the property using setPropertyId().
This is useful when the material property values are not constant but instead are a function of an
independent variable such as temperature. The function getPropertyFlag()
is used to determine how a double valued material property has been defined, if at all. There are three
possibilities:
- Identifier defined -
IDENTIFIER - Values defined -
VALUE - Not defined -
UNDEFINED
If a property is defined using setPropertyDoubleValue() or
setPropertyDoubleArray() it is value defined, if it is defined
using setPropertyId() it is identifier defined.
Class Members Descriptions
The currently available MaterialProperty enumerations and functions are described in detail in this section.
-
class
MaterialProperty Material property class for managing material properties.
Public Types
-
enum class
PropertyFlag Material property value flag.
Values:
-
enumerator
UNDEFINED Property value is undefined.
-
enumerator
VALUE Property is specified by direct value.
-
enumerator
IDENTIFIER Property is specified by identifier reference.
-
enumerator
-
enum class
Type Material property type.
Values:
-
enumerator
ISOTROPIC Isotropic material.
-
enumerator
LAMINA Lamina material.
-
enumerator
ORTHOTROPIC Orthotropic material.
-
enumerator
ANISOTROPIC Anisotropic material.
-
enumerator
HYPERELASTIC Hyperelastic material.
-
enumerator
GENERIC Generic material.
-
enumerator
-
enum class
DoubleProperty Material property identifiers.
Values:
-
enumerator
DENSITY Material density.
-
enumerator
YOUNG_MODULUS Young’s modulus (elasticity modulus)
-
enumerator
POISSON_RATIO Poisson’s ratio.
-
enumerator
SHEAR_MODULUS Isotropic shear modulus, torsional shear modulus for 1D.
-
enumerator
THERMAL_EXPANSION_COEFFICIENT Coefficient of thermal expansion.
-
enumerator
STRUCTURAL_DAMPING_COEFFICIENT Structural damping coefficient.
-
enumerator
REFERENCE_TEMPERATURE Reference temperature.
-
enumerator
ORTHOTROPIC_ELASTIC_MODULI Orthotropic elasticity moduli in 3 directions [3].
-
enumerator
ORTHOTROPIC_POISSON_RATIOS Orthotropic Poisson ratios in 3 directions [3].
-
enumerator
ORTHOTROPIC_SHEAR_MODULI Orthotropic shear moduli in 3 directions [3].
-
enumerator
ORTHOTROPIC_EXPANSION_COEFFICIENT Orthotropic coefficients of thermal expansion in 3 directions [3].
-
enumerator
STIFFNESS_MATRIX Stiffness matrix 6x6 symmetric [21].
-
enumerator
THERMAL_EXPANSION_VECTOR Thermal expansion vector 6 components [6].
-
enumerator
STRESS_LIMIT_TENSILE_FIBER Tensile stress limit in fiber direction (Xt)
-
enumerator
STRESS_LIMIT_COMPRESSIVE_FIBER Compressive stress limit in fiber direction (Xc)
-
enumerator
STRESS_LIMIT_TENSILE_TRANSVERSE Tensile stress limit in transverse direction (Yt)
-
enumerator
STRESS_LIMIT_COMPRESSIVE_TRANSVERSE Compressive stress limit in transverse direction (Yc)
-
enumerator
STRESS_LIMIT_SHEAR_STRESS Shear strength in the X-Y plane (S)
-
enumerator
STRAIN_LIMIT_TENSILE_FIBER Tensile strain limit in fiber direction.
-
enumerator
STRAIN_LIMIT_COMPRESSIVE_FIBER Compressive strain limit in fiber direction.
-
enumerator
STRAIN_LIMIT_TENSILE_TRANSVERSE Tensile strain limit in transverse direction.
-
enumerator
STRAIN_LIMIT_COMPRESSIVE_TRANSVERSE Compressive strain limit in transverse direction.
-
enumerator
STRAIN_LIMIT_SHEAR_STRAIN Shear strain limit in the X-Y plane.
-
enumerator
THERMAL_CONDUCTIVITY Thermal conductivity (isotropic)
-
enumerator
SPECIFIC_HEAT Specific heat capacity.
-
enumerator
FILM_COEFFICIENT Film coefficient for convection.
-
enumerator
HEAT_GENERATION_CAPABILITY Heat generation capability.
-
enumerator
REFERENCE_ENTHALPY Reference enthalpy.
-
enumerator
EMISSIVITY Emissivity for radiation.
-
enumerator
ORTHOTROPIC_THERMAL_CONDUCTIVITY Thermal conductivity orthotropic (x,y,z) [3].
-
enumerator
ANISOTROPIC_THERMAL_CONDUCTIVITY Thermal conductivity matrix anisotropic [6].
-
enumerator
BULK_MODULUS Bulk modulus.
-
enumerator
SPEED_OF_SOUND Speed of sound in material.
-
enumerator
MOONEY_RIVLIN_DISTORTIONAL Material constants for distortional deformation (Mooney-Rivlin) [27].
-
enumerator
MOONEY_RIVLIN_VOLUMETRIC Material constants for volumetric deformation (Mooney-Rivlin) [6].
-
enumerator
TSAI_WU_INTERACTION_TERM Tsai-Wu interaction term for composite failure.
-
enumerator
VISCOSITY Viscosity.
-
enumerator
USER_PROPERTY User-defined property.
-
enumerator
Public Functions
-
ErrorCode
getErrorCode() Return the current
ErrorCodeof the MaterialProperty object.Returns: ErrorCode- The current error code, orNONEif no error.
-
Status
define(Type type) Define the material property type to be stored.
See Also
inquire().Parameters: type – TypeReturns: Status
-
Status
inquire(Type *type) Inquire of defined type as an output argument.
See Also
define().- Errors
-
NULLOBJECTis generated if type is NULL.
Parameters: type – [out] TypeReturns: Status
-
Status
redefine(Type type) Redefine the material property type without losing previously defined property values.
Parameters: type – TypeReturns: Status
-
Status
setPropertyDoubleValue(DoubleProperty property, double value) Set a real valued property. The real valued property is set for all components associated with the property type. See
DoublePropertyfor available property types.Use
getPropertyDoubleValue()to return real valued properties.Parameters: - property –
DoubleProperty - value – Property value
Returns: - property –
-
Status
setPropertyDoubleArray(DoubleProperty property, double values[]) Set real valued properties. The number of properties expected in value is equal to the number of components associated with the property type. For example, the property type
ORTHOTROPIC_ELASTIC_MODULIwould require 3 values - a value for each of 3 principal material directions.Use
getPropertyInformation()to query for the number of components assumed for a property type. UsegetPropertyDoubleValue()to return real valued properties.Parameters: - property –
DoubleProperty - value – Property values
Returns: - property –
-
Status
setPropertyId(DoubleProperty property, int id) Set an identifier value for real valued properties.
Parameters: - property –
DoubleProperty - id – Property identifier
Returns: - property –
-
Status
unsetProperty(IntegerProperty property) Unset an integer valued property.
Parameters: property – IntegerPropertyReturns: Status
-
Status
unsetProperty(DoubleProperty property) Unset a real valued property.
Parameters: property – DoublePropertyReturns: Status
-
Status
getPropertyCount(int *count) Return number of defined material property types.
Parameters: count – [out] Number of defined material property types Returns: Status
-
Status
getIntegerPropertyTypes(int *count, IntegerProperty properties[]) Return number and list of integer valued material properties.
Parameters: - count – [out] Number of integer valued properties
- properties – [out]
IntegerProperty: Array of integer valued properties
Returns:
-
Status
getDoublePropertyTypes(int *count, DoubleProperty properties[]) Return number and list of integer valued material properties.
Parameters: - count – [out] Number of real valued properties
- properties – [out]
DoubleProperty: Array of real valued properties
Returns:
-
Status
getPropertyInformation(IntegerProperty Property, int *componentCount) Query for the number of components associated with a integer valued property type.
Parameters: - property –
IntegerProperty - componentCount – [out] Number of components
Returns: - property –
-
Status
getPropertyInformation(DoubleProperty Property, int *componentCount) Query for the number of components associated with a real valued property type.
Parameters: - property –
DoubleProperty - componentCount – [out] Number of components
Returns: - property –
-
Status
getPropertyFlag(IntegerProperty property, PropertyFlag *flag) Query for integer valued material property definition. If a property value is not defined,
UNDEFINEDis returned. If the property has been defined by value usingsetPropertyDoubleValue()orsetPropertyDoubleArray()thenVALUEis returned. If the property is defined by an identifier value usingsetPropertyId()thenIDENTIFIERis returned.Parameters: - property –
IntegerProperty - flag – [out] Flag indicating if property type defined or not. See
PropertyFlag.
Returns: - property –
-
Status
getPropertyFlag(DoubleProperty property, PropertyFlag *flag) Query for real valued material property definition. If a property value is not defined,
UNDEFINEDis returned. If the property has been defined by value usingsetPropertyDoubleValue()orsetPropertyDoubleArray()thenVALUEis returned. If the property is defined by an identifier value usingsetPropertyId()thenIDENTIFIERis returned.Parameters: - property –
DoubleProperty - flag – [out] Flag indicating if property type defined or not. See
PropertyFlag.
Returns: - property –
-
Status
getPropertyId(DoubleProperty property, int *id) Return the identifier value of a property. If an identifier value has not been defined for the property nothing is returned.
Use
setPropertyId()to set an identifier value.Parameters: - property –
DoubleProperty - id – [out] Identifier property
Returns: - property –
-
Status
getPropertyName(IntegerProperty property, char name[]) Query for the built-in name associated with a property type. The character string will not exceed 64 characters including the terminating NULL character.
Parameters: - property –
IntegerProperty - name – [out] Property name
Returns: - property –
-
Status
getPropertyName(DoubleProperty property, char name[]) Query for the built-in name associated with a property type. The character string will not exceed 64 characters including the terminating NULL character.
Parameters: - property –
DoubleProperty - name – [out] Property name
Returns: - property –
-
Status
getPropertyDoubleValue(DoubleProperty property, double values[]) Return a defined real valued property as double. The number of values returned is equal to the number of components associated with the specified property. If the value has not been defined, nothing is returned.
Parameters: - property –
DoubleProperty - value – [out] Double property values
Returns: - property –
-
Status
setId(int id) Set the integer identifier for this object.
Parameters: id – Integer identifier Returns: Status
-
Status
getId(int *id) Get the integer identifier for this object.
Parameters: id – [out] Integer identifier Returns: Status
-
Status
setName(const char *name) Set the name for this object.
Parameters: name – Object name Returns: Status
-
Status
getName(char name[]) Get the name for this object.
Parameters: name – [out] Object name Returns: Status
-
Status
print() Print the contents of the MaterialProperty object to standard output.
Returns: Status
-
Status
copy(MaterialProperty *from) Make a copy of a MaterialProperty object. The private data from the from object is copied to this object. Any previous private data in this object is lost.
Parameters: from – Pointer to the MaterialProperty object to copy from Returns: Status
-
template<auto
IntegerPropertyValue, typenametypeValue>
StatussetPropertyIntegerValue(typeValue value) Set an integer valued property with compile-time type specification. The integer valued property is set for all components associated with the property type.
See Also getPropertyIntegerValue()
- Example
mprop.setPropertyIntegerValue<IntegerProperty::MOONEY_RIVLIN_STRAIN_ORDER>(5);
Template Parameters: - IntegerPropertyValue – The property type identifier (e.g.
MOONEY_RIVLIN_STRAIN_ORDER) - typeValue – The value type (int)
Parameters: value – Property value
Returns:
-
template<auto
IntegerPropertyValue, typenametypeValue>
StatusgetPropertyIntegerValue(typeValue values[]) Return a defined integer valued property with compile-time type specification. If the value has not been defined, nothing is returned.
See Also setPropertyIntegerValue()
- Example
int values[10]; mprop.getPropertyIntegerValue<IntegerProperty::PLASTICITY_TABULAR_DATA>(values);
Template Parameters: - IntegerPropertyValue – The property type identifier (e.g.
MOONEY_RIVLIN_STRAIN_ORDER) - typeValue – The value type (int array or pointer)
Parameters: values – [out] Integer property values array
Returns:
-
enum class