How To: Units and Geometry¶
The scenario json format shares a lot of structure between the different physics. The common components are detailed here. All scenario json files start with a top-level object, which contains a few common attributes.
{
"boundary_conditions": [ ],
"geometry": { },
"materials": { },
"metadata": { },
"scenario_name": "Name_for_output_files",
"type": "<physics type>"
}
Units¶
The default Unit System is MKS or MeterKilogramSecond. We allow the following customizations:
Specify custom unit for geometry through the
metadataobject (default MKS)Specify custom unit for loads in individual boundary conditions (default MKS)
Material properties are always specified in MKS units
Unit System Keywords |
Mass |
Force |
Stress |
Length |
Temperature |
Energy |
|---|---|---|---|---|---|---|
MeterKilogramSecond |
kg |
N |
Pa |
m |
K |
J |
CentimeterGramSecond |
g |
dyne |
dyne/cm² |
cm |
K |
dyne·cm |
MillimeterMegagramSecond |
Mg |
N |
MPa |
mm |
K |
mJ |
FootPoundSecond |
slug |
lbf |
lbf/ft² |
ft |
Ra |
lbf·ft |
InchPoundSecond |
lbf s²/in (slinch) |
lbf |
psi |
in |
Ra |
lbf·in |
The possible unit values in JSON format are:
"MeterKilogramSecond"
"CentimeterGramSecond"
"MillimeterMegagramSecond"
"FootPoundSecond"
"InchPoundSecond"
Geometry¶
Specifying geometry in scenario JSON requires two pieces: components and an assembly.
Components and Assembly Structure¶
Components: A collection of geometry objects, each with:
A geometry type (
MeshorVDB)A file to load
A material ID (must match a material defined in the
materialsobject)A unique integer component ID
Assembly: Links components together by referencing their IDs. Components in an assembly are bonded together.
Here’s how these are organized in the JSON structure:
{
"geometry": {
"assembly": [
{
"component": 0,
"instance_id": "part_1",
"type": "Component"
},
{
"component": 1,
"instance_id": "part_2",
"type": "Component"
}
],
"components": [
{
"file": "part.stl",
"geometry_type": "Mesh",
"id": 0,
"material": "Steel AISI 1020"
},
{ "file": "part.vdb",
"geometry_type": "VDB",
"id": 1,
"material": "Acrylic, Cast" }
]
}
}
Geometry::Mesh¶
The most common geometry type uses a triangle mesh to specify the surface of a volume. These triangle meshes can be loaded from both PLY and STL files.
{
"file": "block.ply",
"geometry_type": "Mesh",
"id": 1,
"material": "Steel AISI 1020"
}
Geometry::VDB¶
Geometry can be specified with an OpenVDB double grid file.
{
"file": "demo.vdb",
"geometry_type": "VDB",
"id": 2,
"material": "Acrylic, Cast"
}
Materials¶
Materials are specified in the materials object. All materials are specified in MKS units unless otherwise noted.
Structural Materials¶
Isotropic¶
Isotropic materials have uniform properties in all directions. Material properties are specified in MKS unit system.
type: Must be"Isotropic"density: Material density (kg/m³)youngs_modulus: Elastic modulus (Pa)poisson_ratio: Poisson’s ratiofailure_criterion: Type of failure criterion (required for danger level calculations)Options:
"VonMises","MaximumShearStress","Rankine","CoulombMohr","ModifiedMohr","Unspecified"
yield_strength: Yield strength (Pa)tensile_strength: Tensile strength (Pa)compressive_strength: Compressive strength (Pa)
{
"materials": {
"Steel AISI 1020": {
"id": 71,
"failure_criterion": "VonMises",
"density": 7900.0,
"youngs_modulus": 200000000000.0,
"poisson_ratio": 0.29,
"yield_strength": 330000000.0,
"tensile_strength": 0.0,
"compressive_strength": 0.0,
"specific_heat": 420.0,
"thermal_conductivity": 47.0,
"category": "Ferrous Metals",
"type": "Isotropic"
}
}
}
Orthotropic¶
Orthotropic materials have material properties that vary depending on the orientation. Often used to represent composites and wood, where the material properties along one axis are significantly different from the properties along the other axes.
type: Must be"Orthotropic"density: Material density (kg/m³)Ex,Ey,Ez: Elastic modulus in the x, y, and z directions (Pa)Gxy,Gxz,Gyz: Shear modulus in the xy, xz, and yz planes (Pa)vxy,vxz,vyz: Poisson’s ratio in the xy, xz, and yz planestransform: Optional 3x3 matrix to rotate the material axes (9 floating point numbers, row-major order)
{
"materials": {
"composite": {
"type": "Orthotropic",
"density": 1350,
"Ex": 85000000000.0,
"Ey": 5600000000.0,
"Ez": 5600000000.0,
"Gxy": 2100000000.0,
"Gxz": 2100000000.0,
"Gyz": 2280000000.0,
"vxy": 0.34,
"vxz": 0.23,
"vyz": 0.34,
"transform": [
-0.7071067811865476,
-0.7071067811865476,
0.0,
-0.7071067811865476,
0.7071067811865476,
0.0,
0.0,
0.0,
-1.0
]
}
}
}
This example shows a 45 degree rotation about the +Z axis.
Thermal Materials¶
Thermal materials must specify conductivity and specific heat. A coefficient of thermal expansion can be optionally specified.
type: Must be"Thermal"density: Material density (kg/m³)thermal_conductivity: Thermal conductivity (W/(m·K))specific_heat: Specific heat (J/(kg·K))expansion_coefficient: Optional coefficient of thermal expansion (1/K)
{
"materials": {
"thermal_steel": {
"type": "Thermal",
"density": 1200.0,
"thermal_conductivity": 0.17,
"specific_heat": 1100.0
}
}
}