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        |
!!



  • No labels