3.2. Materials

PyFEM provides a range of material models for linear and nonlinear analysis, including elastic, elastoplastic, and cohesive zone models. Material models define the constitutive behavior that relates stress to strain (or traction to displacement jump for cohesive elements).

3.2.1. Configuration in Input Files

Material models are configured within element definitions in the .pro input file. Each element group can have its own material definition, or materials can be defined globally and referenced by name.

3.2.1.1. Basic Syntax

The material block is nested inside an element definition:

ElementGroup =
{
  type = "SmallStrainContinuum";

  material =
  {
    type = "PlaneStress";
    E    = 100.0;
    nu   = 0.3;
  };
};

The type parameter specifies which material model to use, and subsequent parameters define the material properties (e.g., Young’s modulus E, Poisson’s ratio nu).

3.2.1.2. Material Types and State Models

PyFEM uses a hierarchical material system:

  1. State models (e.g., PlaneStress, PlaneStrain) - Define the stress state

  2. Constitutive models (e.g., HookesLaw, VonMises) - Define material behavior

For simple elastic materials, the state model can be specified directly:

material =
{
  type = "PlaneStress";  # State model only
  E    = 100.0;
  nu   = 0.3;
};

For complex behavior, nest a constitutive model inside a state model:

material =
{
  type = "PlaneStrain";
  E    = 210.0e3;
  nu   = 0.3;

  model =
  {
    type  = "IsotropicHardeningPlasticity";
    sY    = 250.0;
    hard  = 1000.0;
  };
};

3.2.1.3. Named Materials

For complex models or when using the same material in multiple elements, define materials by name and reference them:

Steel =
{
  type = "PlaneStress";
  E    = 210.0e3;
  nu   = 0.3;
};

Aluminum =
{
  type = "PlaneStress";
  E    = 70.0e3;
  nu   = 0.33;
};

Element1 =
{
  type     = "SmallStrainContinuum";
  material = "Steel";
};

Element2 =
{
  type     = "SmallStrainContinuum";
  material = "Aluminum";
};

3.2.1.4. Multi-Material Support

Some elements support spatially varying materials using MultiMaterial:

material =
{
  type      = "MultiMaterial";
  materials = ["Steel", "Aluminum"];
};

The material assignment is typically based on element IDs or integration point locations defined in the mesh file.

3.2.2. Material Categories

3.2.3. Material Categories

3.2.3.1. Constitutive Relations for Continua

These materials are used with continuum elements (2D, 3D, and axisymmetric):

  • Linear elastic models (Hooke’s law, isotropic, transverse isotropic)

  • Stress state wrappers (plane stress, plane strain)

  • Elastoplastic models (isotropic hardening, kinematic hardening)

  • Specialized models (sandwich cores, multi-material)

3.2.3.2. Cohesive Constitutive Relations

These materials model interface behavior and fracture mechanics:

  • Cohesive zone models for delamination and crack propagation

  • Traction-separation laws for interface elements

  • Mode I and mixed-mode fracture models

3.2.3.3. Failure Criteria

These models define yield surfaces and failure conditions:

  • Von Mises plasticity

  • Other stress-based failure criteria