Cauchy Continuum Model#
The solid material model in SGIO is implemented by
sgio.model.CauchyContinuumModel. The legacy dataclass-based
CauchyContinuumModel has been removed; the Pydantic implementation that
was previously exposed as CauchyContinuumModelNew now owns the canonical
name. A temporary import alias CauchyContinuumModelNew is still provided to
ease migration, but it will be deprecated in a future release.
The model captures the standard Cauchy continuum kinematics with three displacements (\(u_1\), \(u_2\), \(u_3\)) and six strain components (\(\varepsilon_{11}\), \(\varepsilon_{22}\), \(\varepsilon_{33}\), \(\varepsilon_{23}\), \(\varepsilon_{13}\), \(\varepsilon_{12}\)).
Key Features#
Pydantic validation on construction and assignment (validate_assignment=True)
Explicit support for isotropic, orthotropic, and fully anisotropic materials
Backward-compatible
get/sethelpers mirroring the legacy APIFirst-class JSON serialization via
model_dump()andmodel_dump_json()
Creating a Material#
The constructor accepts keyword arguments for all engineering constants. Pydantic validators enforce units and admissible ranges (e.g., Poisson ratios).
from sgio.model.solid import CauchyContinuumModel
carbon_ud = CauchyContinuumModel(
name="UD Carbon/Epoxy",
isotropy=1,
density=1570.0,
e1=138e9,
e2=9e9,
e3=9e9,
g12=5.2e9,
g13=5.2e9,
g23=3.5e9,
nu12=0.32,
nu13=0.32,
nu23=0.45,
strength_constants=[
1500.0, 1200.0, 800.0,
900.0, 700.0, 600.0,
120.0, 110.0, 95.0,
],
cte=[2.5e-6, 2.5e-6, 2.4e-5, 0.0, 0.0, 0.0],
)
Legacy setter helpers remain available and run through the same validators:
carbon_ud.set('isotropy', 'orthotropic')
carbon_ud.set('elastic', [210e9, 0.29]) # switches to isotropic input
Loading from JSON#
The example at examples/load_cauchy_material_from_json/ demonstrates a
complete JSON round-trip. The core logic is straightforward:
import json
from pathlib import Path
from sgio.model.solid import CauchyContinuumModel
payload = json.loads(Path('material.json').read_text())
material = CauchyContinuumModel(**payload)
print(material.model_dump_json(indent=2))
This pattern works equally well when the JSON document comes from a database or an API response, making it easy to integrate SGIO materials into external pipelines.