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]])