Materials¶
Classes and functions for the definition of materials are provided in
the janus.material
package. This package is structured in three
levels
the physical model (e.g. elasticity, thermal conductivity, …),
linear/nonlinear constitutive law,
material symmetries (isotropic, transverse isotropic, …).
Regardless of the actual constitutive law, an attempt is made to expose
a unified interface. For example, a new instance of a specific material
can be created through the function create()
of the corresponding
module.
Elastic materials¶
Isotropic, linear, elastic materials¶
Such materials are defined in the module janus.material.elastic.linear.isotropic
. They are created from their shear modulus (μ) and Poisson ratio (ν) as follows
>>> import janus.material.elastic.linear.isotropic as material
>>> mat = material.create(1.0, 0.3, 3)
>>> mat
IsotropicLinearElasticMaterial(g=1.0, nu=0.3, dim=3)
>>> mat.g # Shear modulus
1.0
>>> mat.nu # Poisson ratio
0.3
>>> mat.k # Bulk modulus
2.1666666666666665
The function janus.material.elastic.linear.isotropic.create()
takes two positional arguments: the shear modulus and the Poisson ratio, and one optional argument: the dimension of the physical space, which can be 2 (plane strain elasticity) or 3 (3D elasticity); the default value is 3. To create a plane stress (μ, ν) material, a plane strain (μ, ν’) material should be created, with ν’ = ν / (1 + ν).
A helper function, janus.material.elastic.linear.isotropic.poisson_from_bulk_and_shear_moduli()
is also provided. It returns the Poisson ratio, computed from the bulk and shear moduli.
Green operators for strains associated with a given material are instanciated with the green_operator()
method, like so
>>> green = mat.green_operator()
>>> green
Green Operator(IsotropicLinearElasticMaterial(g=1.0, nu=0.3, dim=3))
The returned operator can then be manipulated frequency-wise
>>> import numpy as np
>>> k = np.array([1.0, 2.0, 3.0])
>>> green.set_frequency(k)
>>> np.asarray(green.to_memoryview())
array([[ 0.06778426, -0.01457726, -0.03279883, -0.03092304, 0.13606136,
0.09070758],
[-0.01457726, 0.22740525, -0.13119534, 0.17935362, -0.06184607,
0.05978454],
[-0.03279883, -0.13119534, 0.34766764, 0.02473843, 0.01236921,
-0.09276911],
[-0.03092304, 0.17935362, 0.02473843, 0.20189504, -0.05976676,
0.0196793 ],
[ 0.13606136, -0.06184607, 0.01236921, -0.05976676, 0.29154519,
0.17055394],
[ 0.09070758, 0.05978454, -0.09276911, 0.0196793 , 0.17055394,
0.14941691]])