Skip to content

Property Methods

Introduction

Property methods define material properties in a flexible and reusable way. mufem uses them to describe quantities such as:

  • Thermal conductivity
  • Density
  • Heat capacity
  • Magnetic permeability
  • Other material parameters

Property methods describe how a material property depends on quantities such as temperature. They give values automatically during the simulation. You attach material properties to materials. The corresponding models then consume them.

Property methods exist for both:

  • Scalar properties
  • Tensor properties

Each model does not support all of these property methods. Individual models can also give their own specialized property methods.

Scalar Property Methods

Scalar property methods describe material properties that use a single value. Typical examples are density and heat capacity. You can also use them for tensor properties when the material is isotropic.

Constant

The material property \(y\) is uniform and independent of temperature or any other state:

\[ y = y_0 \]

Use this when the property variation is negligible. The property stays constant within the region of interest.

thermal_conductivity_my_material = 100.0

Linear Temperature Coefficient

The material property \(y\) varies linearly with temperature:

\[ y(T) = y_0 + \alpha (T - T_{\text{ref}}) \]

where:

  • \(T\) - local temperature
  • \(y_0\) - property value at the reference temperature
  • \(\alpha\) - temperature coefficient
  • \(T_{\text{ref}}\) - reference temperature

Use this to capture a moderate temperature dependence with a simple model.

thermal_conductivity_my_material = mufem.methods.LinearTemperatureCoefficient(
    reference_value=25.0,
    temperature_coefficient=2.5,
    reference_temperature=300.0,
)

Note that this method needs temperature to be present in the model.

Temperature Table

Discrete data points define the material property \(y\). mufem interpolates it linearly:

\[ y(T) = y([T_0, T_1, \dots, T_{n-1}], [y_0, y_1, \dots, y_{n-1}]) \]

Use this when you have experimental or literature data, or when the property is nonlinear.

thermal_conductivity_method = mufem.methods.TemperatureTable(
    temperature=[300, 400, 500, 600],
    values=[40, 100, 80, 70]
)

Note that this method needs temperature to be present in the model.

Function

An arbitrary scalar coefficient defines the material property \(y\). The property can then depend on space and other field variables (such as temperature or magnetic flux density).

$$ y(\mathbf{x}) = e{-x2} $$ Use this method mainly for benchmarking, or for dependencies that other property methods do not cover.

thermal_conductivity = mufem.methods.ScalarCoefficient("exp(-x()^2)")

Note that this method gives no automatic linearization, which can slow convergence.

Tensor Property Methods

Tensor property methods describe matrix-valued material properties. These are usually symmetric. Use them for anisotropic materials such as:

  • Thermal conductivity
  • Electrical conductivity
  • Magnetic permeability
  • Elasticity

Isotropic

\[ \mathbf{Y} = \begin{pmatrix} y & 0 & 0 \\ 0 & y & 0 \\ 0 & 0 & y \end{pmatrix} = y \mathbf{I} \]

You specify an isotropic tensor with a scalar property method.

electric_conductivity_my_material = 5.6e7

Transverse (Transverse Isotropic)

The tensor has one value along a preferred (parallel) direction and another value in the transverse plane:

\[ \mathbf{Y} = \begin{pmatrix} y_{\parallel} & 0 & 0 \\ 0 & y_{\perp} & 0 \\ 0 & 0 & y_{\perp} \end{pmatrix} \]

where: - \(y_\parallel\) - property along the preferred (parallel) direction - \(y_\perp\) - property along the perpendicular (transverse) direction

This form is common in layered materials, laminates, and strongly oriented media.

electric_conductivity_my_material = mufem.methods.Transverse(
    parallel=5.6e7,
    transverse=1.0e4
)

Orthotropic

The tensor has different values along three orthogonal directions:

\[ \mathbf{Y} = \begin{pmatrix} y_{xx} & 0 & 0 \\ 0 & y_{yy} & 0 \\ 0 & 0 & y_{zz} \end{pmatrix} \]

This represents materials where the property:

  • Is anisotropic but constant in space and temperature
  • Does not depend on the solution field
  • Remains fixed throughout the simulation
electric_conductivity_my_material = mufem.methods.Orthotropic(
    xx=5.6e7,
    yy=5.6e7,
    zz=1.0e4
)

General Symmetric

A fully symmetric tensor:

\[ \mathbf{Y} = \begin{pmatrix} y_{xx} & y_{xy} & y_{xz} \\ y_{xy} & y_{yy} & y_{yz} \\ y_{xz} & y_{yz} & y_{zz} \end{pmatrix} \]

This is the most general symmetric tensor. Use it for anisotropic but reciprocal materials.

electric_conductivity_my_material = mufem.methods.SymmetricTensor(
    xx=5.6e7, xy=3.0e5, xz=3.0e5,
              yy=5.6e7, yz=4.0e5,
                        zz=1.0e4,
)

Note that any symmetric tensor can be diagonalized $$ \mathbf{Y}{\textrm{g}} = \mathbf{R} \mathbf{Y}^T $$ where: - }} \mathbf{R\(\mathbf{Y}_{\textrm{g}}\) - tensor in global coordinates - \(\mathbf{Y}_{\textrm{p}}\) - principal (orthotropic) tensor - \(\mathbf{R}\) - rotation/coordinate transform

For this reason, it is often better to use the orthotropic representation with an appropriate coordinate transformation.

General (Non-Symmetric)

Under certain conditions, non-symmetric tensors describe materials (for example Hall conductivity):

\[ \mathbf{Y} = \begin{pmatrix} y_{xx} & y_{xy} & y_{xz} \\ y_{yx} & y_{yy} & y_{yz} \\ y_{zx} & y_{zy} & y_{zz} \end{pmatrix} \]

This is the most general tensor form with no symmetry assumptions.

electric_conductivity_my_material = mufem.methods.Tensor(
    xx=5.6e7, xy=1.0e5, xz=1.0e5,
    yx=1.0e4, yy=5.6e7, yz=3.2e3,
    zx=1.2e2, zy=2.2e4, zz=1.0e4,
)