Advance the chemical concentrations from TimeStart to TimeEnd, based on the ODE derived from the chemical reactions in the mechanism.
User may choose between either of two solver schemes
- chemistry_driver_ros ↔ Rosenbrock (Similar to what is used in some WRF configurations)
- chemistry_driver_moz ↔ Mozart (Similar to what is used in CESM with an error control on timestep)
The inputs/outputs are identical for both of them, however runtime options will allow choices of tolerance and configurations of those solvers.
Source code locations
- MICM_chemistry/src/chemistry_driver_ros.F90
- MICM_chemistry/src/chemistry_driver_moz.F90
Metadata for chemistry_driver routines
chemistry_driver_xxx_init routine (will show mozart, but Rosenbrock values are identical)
!> \section arg_table_chemistry_driver_moz_init Argument Table
!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
!! |------------|--------------------------------------------------|-----------------------------------------|---------|------|-----------------|-----------|--------|----------|
!! | TimeStart | chem_step_start_time | Chem step start time | s | 0 | real | kind_phys | in | F |
!! | TimeEnd | chem_step_end_time | Chem step end time | s | 0 | real | kind_phys | in | F |
!! | dt | time_step_for_physics | time_step_for_physics | s | 0 | real | kind_phys | in | F |
!! | errmsg | ccpp_error_message | CCPP error message | none | 0 | character | len=512 | out | F |
!! | errflg | ccpp_error_flag | CCPP error flag | flag | 0 | integer | | out | F |
!!
chemistry_driver_xxx_run routine (will show mozart, but Rosenbrock values are identical)
!> \section arg_table_chemistry_driver_moz_run Argument Table
!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
!! |------------|--------------------------------------------------|-----------------------------------------|---------|------|--------------|-----------|--------|----------|
!! | vmr | concentration | species concentration | mole/mole | 1 |real | kind_phys | inout | F |
!! | TimeStart | chem_step_start_time | Chem step start time | s | 0 | real | kind_phys | in | F |
!! | TimeEnd | chem_step_end_time | Chem step end time | s | 0 | real | kind_phys | in | F |
!! | j_rateConst| photo_rate_constants | photochemical rates constants | s-1 | 1 | real | kind_phys | in | F |
!! | k_rateConst| gasphase_rate_constants | k rate constants | s-1 | 1 | real | kind_phys | in | F |
!! | errmsg | ccpp_error_message | CCPP error message | none | 0 | character | len=512 | out | F |
!! | errflg | ccpp_error_flag | CCPP error flag | flag | 0 | integer | | out | F |
!!
chemistry_driver_xxx_finalize routine (will show mozart, but Rosenbrock values are identical)
!> \section arg_table_chemistry_driver_moz_finalize Argument Table
!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
!! |------------|--------------------------------------------------|-----------------------------------------|---------|------|--------------|-----------|--------|----------|
!! | errmsg | ccpp_error_message | CCPP error message | none | 0 | character | len=512 | out | F |
!! | errflg | ccpp_error_flag | CCPP error flag | flag | 0 | integer | | out | F |
!!