A Chrono YAML SPH model file defines a fluid system for Chrono::FSI-SPH and contains two main objects:
- [required] The Chrono version (
chrono-version) that is compatible with the YAML model specification. This is a string of the formM.m(major.minor) orM.m.p(major-minor-patch), although only the two fields are verified for compatibility. - [required] The
modelobject that defines the fluid phase, its material properties, and the problem geometry.
An SPH model with CRM physics and a Cartesian box fluid domain can also be used for the CRM terrain of a wheel test rig simulation. The settings it then uses and ignores are listed on the wheel test rig terrain page.
Model specification
An SPH model defines the fluid (or granular) phase: its material properties, the region initially filled with SPH particles, the boundaries that confine it, and the extent of the computational domain. The model object supports the following properties:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
physics_problem | Fluid physics type: incompressible fluid (CFD) or homogenized granular dynamics (CRM) | enum | CFD,CRM | Yes | – |
geometry_type | Coordinate geometry used for the domain definitions | enum | CARTESIAN,CYLINDRICAL | Yes | – |
name | Name of the model | string | – | No | empty string |
angle_degrees | Whether angles are specified in degrees (true) or radians (false) | boolean | – | No | true |
data_path | Location of the data files referenced in this specification | object | – | No | absolute paths |
fluid_properties | Physical parameters of the fluid (CFD physics) | object | – | No | see below |
soil_properties | Physical parameters of the soil (CRM physics) | object | – | No | see below |
initial_states | Initialization of the SPH particle states | object | – | No | zero pressure and velocity |
wave_tank | A wave tank with a wave maker mechanism | object | – | No | – |
fluid_domain | Region initially filled with SPH particles | object | – | Yes, unless wave_tank is present | – |
container | Boundary of the fluid container | object | – | No | – |
computational_domain | Extent of the computational domain and its boundary condition types | object | – | No | unbounded |
A wave_tank is an alternative to specifying the domain explicitly: if wave_tank is present, then fluid_domain, container, and computational_domain are all ignored.
The data_path key, if present, specifies the following properties:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
type | Mode for data file location | enum | ABSOLUTE,RELATIVE | Yes | ABSOLUTE |
root | Root of data files, relative to the location of this file | string | – | No | . |
Material properties
For a CFD problem, the fluid_properties key specifies:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
density | Fluid density | double | – | No | 1000.0 |
viscosity | Laminar viscosity | double | – | No | 0.1 |
characteristic_length | Characteristic length for Reynolds number calculation | double | – | No | 1.0 |
For a CRM problem, the soil_properties key specifies:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
density | Bulk density | double | – | No | 1000.0 |
Young_modulus | Young's modulus | double | – | No | 1e6 |
Poisson_ratio | Poisson's ratio | double | – | No | 0.3 |
mu_I0 | Reference inertia number | double | – | No | 0.03 |
mu_fric_s | Static friction coefficient mu_s in mu = mu(I) | double | – | No | 0.7 |
mu_fric_2 | Limit friction coefficient mu_2 in mu = mu(I) | double | – | No | 0.7 |
average_diam | Average granular particle diameter | double | – | No | 0.005 |
cohesion_coefficient | Cohesion coefficient (not used by the MCC rheology) | double | – | No | 0 |
rheology_model | CRM rheology model | enum | MU_OF_I,MCC | No | MU_OF_I |
mcc_M | Cam-Clay critical state line slope, q = M p (MCC only) | double | – | No | 0 |
mcc_kappa | Cam-Clay swelling index: slope of the elastic unload/reload line in v-ln(p) (MCC only) | double | – | No | 0 |
mcc_lambda | Cam-Clay compression index: slope of the normal consolidation line in v-ln(p) (MCC only) | double | – | No | 0 |
mcc_v_lambda | Cam-Clay specific volume at the reference pressure of 1000 Pa (MCC only) | double | – | No | 2.0 |
The MCC rheology requires mcc_M > 0, mcc_kappa > 0, and mcc_lambda > mcc_kappa; these are checked when the SPH system is initialized. The initial pre-consolidation pressure is set to 1.01 times the initial particle pressure, which is the hydrostatic pressure if initial_states.depth_based_pressure is enabled and 1 kPa otherwise.
Initial particle states
The initial_states key, if present, specifies:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
depth_based_pressure | Whether to initialize particle pressure from hydrostatic depth | boolean | – | No | false |
zero_height | Height of the zero-pressure level | double | – | Yes, if depth_based_pressure is present | – |
initial_velocity | Uniform initial velocity applied to all SPH particles | array[3] | – | No | [0, 0, 0] |
Fluid domain and container
The fluid_domain key defines the region initially filled with SPH particles. The container key defines a (typically larger) region whose walls confine the fluid. Both use the same properties, which depend on the model geometry_type.
For CARTESIAN geometry:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
dimensions | Dimensions of the box | array[3] | – | Yes | – |
box_origin | Origin of the box | array[3] | – | No | [0, 0, 0] |
box_walls | Boundary walls of the box | object | – | No | no walls |
For CYLINDRICAL geometry:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
inner_radius | Inner radius of the cylindrical annulus | double | – | Yes | – |
outer_radius | Outer radius of the cylindrical annulus | double | – | Yes | – |
height | Height of the cylindrical annulus | double | – | Yes | – |
cyl_origin | Origin of the cylindrical annulus | array[3] | – | No | [0, 0, 0] |
cyl_walls | Boundary walls of the annulus | object | – | No | no walls |
Walls are specified as a pair of flags per direction, ordered [negative side, positive side]. For box_walls, all three of the following are required:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
x | Walls normal to the X direction | array[2] of boolean | – | Yes | – |
y | Walls normal to the Y direction | array[2] of boolean | – | Yes | – |
z | Walls normal to the Z direction | array[2] of boolean | – | Yes | – |
For cyl_walls, both of the following are required:
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
side | Cylindrical surfaces [inner, outer] | array[2] of boolean | – | Yes | – |
z | End caps normal to the Z direction | array[2] of boolean | – | Yes | – |
Note that walls may be defined on the fluid domain or on a container, but not both: specifying a container after fluid_domain has already declared walls is an error.
Computational domain
The computational_domain key, if present, bounds the region in which SPH particles are tracked and sets the boundary condition type in each direction.
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
aabb_min | Min corner of the computational domain AABB | array[3] | – | Yes | – |
aabb_max | Max corner of the computational domain AABB | array[3] | – | Yes | – |
x_bc_type | BC type in the X direction (negative and positive X) | enum | NONE,PERIODIC,INLET_OUTLET | No | NONE |
y_bc_type | BC type in the Y direction (negative and positive Y) | enum | NONE,PERIODIC,INLET_OUTLET | No | NONE |
z_bc_type | BC type in the Z direction (negative and positive Z) | enum | NONE,PERIODIC,INLET_OUTLET | No | NONE |
For CARTESIAN geometry, a boundary condition type other than NONE in a given direction requires that no fluid domain wall was defined normal to that direction.
Wave tank
A wave_tank is a self-contained alternative to the domain definitions above. It requires physics_problem: CFD and geometry_type: CARTESIAN.
| Property | Description | Type | Available Values | Required | Default |
|---|---|---|---|---|---|
type | Wave maker mechanism type | enum | PISTON,FLAP | Yes | – |
tank_dimensions | Dimensions of the wave tank container | array[3] | – | Yes | – |
water_depth | Initial water depth in the tank | double | – | Yes | – |
actuation_function | Function of time defining actuation of the wave maker | object | – | Yes | – |
tank_origin | Origin of the wave tank container | array[3] | – | No | [0, 0, 0] |
end_wall | Whether to create a wall at the far end of the tank | boolean | – | No | true |
profile | Profile of the tank bottom, as [[x, z], ...] data points | array | – | No | flat bottom |
The actuation_function is a generic function object (see the MBS model schema for the available function types). In addition, it accepts an optional delay property specifying a time offset in seconds before wave maker actuation begins (default: 0).
Example
Below is an example of an SPH model configuration:
YAML schema
The YAML SPH model specification file must follow the data/yaml/schema/fsisph_model.schema.yaml provided in the Chrono data directory: