The material Class

The material class contains information regarding block material properties. This includes whether the block is linear elastic or elastic-plastic in its deformation style, density, elastic modulii, and plastic failure criteria such as the internal friction coefficient, cohesion, dilatancy, and a viscoplastic “viscosity.”

Each block in the domain is assigned a material with default properties when it is initialized. This can be changed by assigning a new material to a particular block using the interface provided in the problem class. The density and elastic modulii can also be overridden by creating a heterogeneous array of material properties that varies in a point-by-point fashion rather than having block material properties.

class fdfault.material(mattype, rho=2.67, lam=32.04, g=32.04, mu=0.5735, c=0.0, beta=0.2867, eta=0.2775)

Class describing block material properties

When a new block is initialized, one is created with the following default properties. When creating a new material yourself, you must select whether the block is elastic or plastic by specifying the mattype attribute, but the other values will be given default values (see below) if they are not specified.

Variables:
  • mattype (str) – Specifies if a block is elastic or plastic (value must be 'elastic' or 'plastic')
  • rho (float) – Density (default 2.67 MPa s^2 / km / m, see note below about funny units)
  • lam (float) – First Lame parameter (default is 32.04 GPa)
  • g (float) – Shear modulus (default is 32.04 GPa)
  • mu (float) – Internal friction coefficient (only relevant for plastic materials, default is 0.5735)
  • c (float) – Cohesion (default is 0.)
  • beta (float) – Plastic dilatancy, determines ratio of dilational to shear strain (default 0.2867)
  • eta (float) – Plastic viscosity, determines time scale over which stresses in excees of the yield surface decay back to the yield surface (default 0.2775 GPa s)

You are free to choose any self-consistent unit system that you like. For practical purposes, it is best to have all parameters be of order unity to reduce round-off errors when dealing with quantities of vastly different magnitudes. To facilitate this, the default parameters measure distance in km but slip in m, and elastic modulii in GPa but stresses in MPa, which result in quantities of order unity in all fields calculated in the solution for typical values found in simulating earthquake rupture on seismogenic faults. The extra factor of $10^3$ cancels correctly in Hooke’s law, but does not in the momentum conservation eqaution, meaning that the density must have funny units of MPa s^2 / km / m to correct for this.

__init__(mattype, rho=2.67, lam=32.04, g=32.04, mu=0.5735, c=0.0, beta=0.2867, eta=0.2775)

Create a new instance of the material class

Initialize a new material. The user must specify whether the material type is elastic or plastic, but all other parameters are optional (any not specified will take default values). All parameters must be positive (rho, lam, g, mu) or nonnegative (beta, eta, c).

Parameters:
  • mattype (str) – Material type, must be 'elastic' or 'plastic'
  • rho (float) – Density
  • lam (float) – First Lame parameter
  • g (float) – Shear modulus
  • mu (float) – Internal friction coefficient
  • c (float) – Cohesion
  • beta (float) – Plastic dilatancy
  • eta (float) – Plastic viscosity
Returns:

New material instance

Return type:

material

get_beta()

Returns plastic dilatancy (ratio of dilataional to shear strain)

Returns:Plastic dilatancy
Return type:float
get_c()

Returns cohesion

Returns:Cohesion
Return type:float
get_cp()

Returns compressional wave speed

Returns:Compressional wave speed
Return type:float
get_cs()

Returns shear wave speed

Returns:Shear wave speed
Return type:float
get_eta()

Returns plastic “viscosity”

Viscosity determines the time scale over which stresses can exceed the yield stress

:returns:Plastic “viscosity” :rtype: float

get_g()

returns shear modulus

get_lam()

Returns first Lame parameter

Returns:First Lame parameter
Return type:float
get_mu()

Returns internal friction coefficient

Returns:Internal friction coefficient
Return type:float
get_rho()

Returns Density

Returns:Density
Return type:float
get_type()

Returns material type

Returns:Material type ('elastic' or 'plastic')
Return type:str
get_zp()

Returns compressional impedance

Returns:Compressional impedance
Return type:float
get_zs()

Returns shear impedance

Returns:Shear impedance
Return type:float
set_beta(beta)

Sets plastic dilatancy to a new value

Parameters:beta (float) – New value of plastic dilatancy
Returns:None
set_c(c)

Sets cohesion to a new value

Parameters:c (float) – New value of cohesion
Returns:None
set_eta(eta)

Sets plastic “viscosity” to a new value

Parameters:eta (float) – New value of plastic viscosity
Returns:None
set_g(g)

Sets shear modulus to a new value

Parameters:g (float) – New value of shear modulus
Returns:None
set_lam(lam)

Sets first Lame parameter to a new value

Parameters:lam (float) – New value of first Lame parameter
Returns:None
set_mu(mu)

Sets internal friction to a new value

Parameters:mu (float) – New value of internal friction coefficient
Returns:None
set_rho(rho)

Sets density to a new value

Parameters:rho (float) – New value of density
Returns:None
set_type(mattype)

Sets material type (must be either 'elastic' or 'plastic')

Parameters:mattype (str) – New material type (must be either 'elastic' or 'plastic')
Returns:None
write_input(f)

Writes material properties to input file

This method is called when writing each block to the input file. It is called automatically, and writes the material properties in the correct location within the inputs for each block. It also automatically handles whether or not the simulation is elastic or plastic, writing out the plastic parameters only if needed.

Parameters:f (file) – Input file handle
Returns:None