Solids model
============

Solids settings
---------------

Enabling the SOLIDS solver and specifying options common to both DEM and PIC
models. The following inputs must be preceded by the "solids." root

+------------------------------------------+-------------------------------------------------------------+----------+----------+
|                                          | Description                                                 |   Type   | Default  |
+==========================================+=============================================================+==========+==========+
| types                                    | Specified name(s) of the SOLIDS types or None to disable    | String   |  None    |
|                                          | the SOLIDS solver. The user defined names are used to       |          |          |
|                                          | specify DEM and/or PIC model inputs.                        |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| molecular_weight                         | Value of constant solid molecular                           |  Real    |  0       |
|                                          | weight                                                      |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| specific_heat                            | Specify which specific heat model to                        |  String  |  None    |
|                                          | use for solid. Available options                            |          |          |
|                                          | include:                                                    |          |          |
|                                          |                                                             |          |          |
|                                          | * 'constant' for constant specific heat                     |          |          |
|                                          |   model                                                     |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| specific_heat.constant                   | Value of species molecular weight.                          |  Real    |  0       |
|                                          | [required if fluid.specific_heat =                          |          |          |
|                                          | 'constant'].                                                |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| reference_temperature                    | Value of the reference temperature used                     |  Real    |  0       |
|                                          | for specific enthalpy                                       |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| species                                  | Specify which species can constitute                        |  String  |  None    |
|                                          | the fluid phase [defined species must                       |          |          |
|                                          | be a subset of the species.solve                            |          |          |
|                                          | arguments].                                                 |          |          |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| newton_solver.absolute_tol               | Define absolute tolerance for Damped-Newton solver          |  Real    |  1.e-6   |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| newton_solver.relative_tol               | Define relative tolerance for Damped-Newton solver          |  Real    |  1.e-6   |
+------------------------------------------+-------------------------------------------------------------+----------+----------+
| newton_solver.max_iterations             | Define max number of iterations for Damped-Newton solver    |  int     |  100     |
+------------------------------------------+-------------------------------------------------------------+----------+----------+

Below is an example for specifying the solids solver model options.

.. code-block:: none

   solids.types = my_solid0  my_solid1

   solids.reference_temperature = 298.15

   solids.specific_heat = mixture

   solids.species = Fe2O3  FeO


DEM model settings
------------------

Enabling the DEM solver and specifying model options.

+-------------------------+-------------------------------------------------------------------------+----------+-----------+
|                         | Description                                                             |   Type   | Default   |
+=========================+=========================================================================+==========+===========+
| dem.solve               | Specified name(s) of the DEM types or None to disable the DEM solver.   | String   |  None     |
|                         | The user defined names are used to specify DEM model inputs.            |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.friction_coeff.pp   | Friction coefficient :: particle to particle collisions [required]      | Real     |  0        |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.friction_coeff.pw   | Friction coefficient :: particle to wall collisions [required]          | Real     |  0        |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.spring_const.pp     | Normal spring constant :: particle to particle collisions [required]    | Real     |  0        |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.spring_const.pw     | Normal spring constant :: particle to wall collisions [required]        | Real     |  0        |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.spring_tang_fac.pp  | Tangential-to-normal spring constant factor :: particle to particle     | Real     |  0        |
|                         | collisions [required]                                                   |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.spring_tang_fac.pw  | Tangential-to-normal spring constant factor :: particle to wall         | Real     |  0        |
|                         | collisions [required]                                                   |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.damping_tang_fac.pp | Factor relating the tangential damping coefficient to the normal        | Real     |  0        |
|                         | damping coefficient :: particle to particle collisions [required]       |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| dem.damping_tang_fac.pw | Factor relating the tangential damping coefficient to the normal        | Real     |  0        |
|                         | damping coefficient :: particle to wall collisions [required]           |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+

The following inputs use the DEM type names specified using the `dem.solve` input to define restitution coefficients and
are proceeded with `dem.restitution_coeff`. These must be defined for all solid-solid and solid-wall combinations.

+-------------------------+-------------------------------------------------------------------------+----------+-----------+
|                         | Description                                                             |   Type   | Default   |
+=========================+=========================================================================+==========+===========+
| [solid0].[solid1]       | Specifies the restitution coefficient between solid0 and solid1. Here   | Real     |  0        |
|                         | the order is not important and could be defined as [solid1].[solid0]    |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+
| [solid0].wall           | Specifies the restitution coefficient between solid0 and the wall.      | Real     |  0        |
|                         | Order is not important and this could be defined as wall.[solid0]       |          |           |
+-------------------------+-------------------------------------------------------------------------+----------+-----------+

Below is an example for specifying the inputs for two DEM solids.

.. code-block:: none

   dem.solve = sand  char

   dem.friction_coeff.pp     =     0.25
   dem.friction_coeff.pw     =     0.15

   dem.spring_const.pp       =   100.0
   dem.spring_const.pw       =   100.0

   dem.spring_tang_fac.pp    =     0.2857
   dem.spring_tang_fac.pw    =     0.2857

   dem.damping_tang_fac.pp   =     0.5
   dem.damping_tang_fac.pw   =     0.5

   dem.restitution_coeff.sand.sand =  0.85
   dem.restitution_coeff.sand.char =  0.88
   dem.restitution_coeff.char.char =  0.90

   dem.restitution_coeff.sand.wall =  0.85
   dem.restitution_coeff.char.wall =  0.89


PIC model settings
------------------

.. todo:: Add PIC inputs
