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:

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:

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.

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.

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.

enum class IntegerProperty

Material property identifiers.

Values:

enumerator MOONEY_RIVLIN_STRAIN_ORDER

Order of strain energy potential.

enumerator PLASTICITY_HARDENING_TYPE

Plastic hardening type: isotropic or kinematic.

enumerator PLASTICITY_TABULAR_DATA

Plastic hardening tabular data.

Public Functions

ErrorCode getErrorCode()

Return the current ErrorCode of the MaterialProperty object.

Returns: ErrorCode - The current error code, or NONE if no error.
Status define(Type type)

Define the material property type to be stored.

See Also inquire() .

Parameters:type Type
Returns:Status
Status inquire(Type *type)

Inquire of defined type as an output argument.

See Also define() .

Errors
NULLOBJECT is generated if type is NULL.

Parameters:type[out] Type
Returns:Status
Status redefine(Type type)

Redefine the material property type without losing previously defined property values.

Parameters:type Type
Returns: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 DoubleProperty for available property types.

Use getPropertyDoubleValue() to return real valued properties.

Parameters:
Returns:

Status

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_MODULI would 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. Use getPropertyDoubleValue() to return real valued properties.

Parameters:
Returns:

Status

Status setPropertyId(DoubleProperty property, int id)

Set an identifier value for real valued properties.

Parameters:
Returns:

Status

Status unsetProperty(IntegerProperty property)

Unset an integer valued property.

Parameters:property IntegerProperty
Returns:Status
Status unsetProperty(DoubleProperty property)

Unset a real valued property.

Parameters:property DoubleProperty
Returns: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

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

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:

Status

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:

Status

Status getPropertyFlag(IntegerProperty property, PropertyFlag *flag)

Query for integer valued material property definition. If a property value is not defined, UNDEFINED is returned. If the property has been defined by value using setPropertyDoubleValue() or setPropertyDoubleArray() then VALUE is returned. If the property is defined by an identifier value using setPropertyId() then IDENTIFIER is returned.

Parameters:
Returns:

Status

Status getPropertyFlag(DoubleProperty property, PropertyFlag *flag)

Query for real valued material property definition. If a property value is not defined, UNDEFINED is returned. If the property has been defined by value using setPropertyDoubleValue() or setPropertyDoubleArray() then VALUE is returned. If the property is defined by an identifier value using setPropertyId() then IDENTIFIER is returned.

Parameters:
Returns:

Status

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:
Returns:

Status

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:
Returns:

Status

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:
Returns:

Status

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:
Returns:

Status

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, typename typeValue>
Status setPropertyIntegerValue(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:
 
Parameters:

value – Property value

Returns:

Status

template<auto IntegerPropertyValue, typename typeValue>
Status getPropertyIntegerValue(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:

Status