diff --git a/schemes/musica/musica_ccpp.F90 b/schemes/musica/musica_ccpp.F90 index 9a5871a1..1fb99c24 100644 --- a/schemes/musica/musica_ccpp.F90 +++ b/schemes/musica/musica_ccpp.F90 @@ -14,18 +14,22 @@ module musica_ccpp !> \section arg_table_musica_ccpp_register Argument Table !! \htmlinclude musica_ccpp_register.html - subroutine musica_ccpp_register(micm_solver_type, number_of_grid_cells, & - constituent_props, errmsg, errcode) + subroutine musica_ccpp_register(horizontal_loop_extent, & + vertical_layer_dimension, constituent_props, errmsg, & + errcode) use ccpp_constituent_prop_mod, only: ccpp_constituent_properties_t + use musica_ccpp_namelist, only: micm_solver_type - integer, intent(in) :: micm_solver_type - integer, intent(in) :: number_of_grid_cells + integer, intent(in) :: horizontal_loop_extent + integer, intent(in) :: vertical_layer_dimension type(ccpp_constituent_properties_t), allocatable, intent(out) :: constituent_props(:) character(len=512), intent(out) :: errmsg integer, intent(out) :: errcode type(ccpp_constituent_properties_t), allocatable :: constituent_props_subset(:) + integer :: number_of_grid_cells + number_of_grid_cells = horizontal_loop_extent * vertical_layer_dimension call micm_register(micm_solver_type, number_of_grid_cells, constituent_props_subset, & errmsg, errcode) if (errcode /= 0) return diff --git a/schemes/musica/musica_ccpp.meta b/schemes/musica/musica_ccpp.meta index 94c9d1b0..807ac20d 100644 --- a/schemes/musica/musica_ccpp.meta +++ b/schemes/musica/musica_ccpp.meta @@ -6,14 +6,14 @@ [ccpp-arg-table] name = musica_ccpp_register type = scheme -[ micm_solver_type ] - standard_name = micm_solver_type - units = none +[ horizontal_loop_extent ] + standard_name = horizontal_loop_extent + units = count type = integer dimensions = () intent = in -[ number_of_grid_cells ] - standard_name = number_of_grid_cells +[ vertical_layer_dimension ] + standard_name = vertical_layer_dimension units = count type = integer dimensions = () diff --git a/schemes/musica/musica_ccpp_namelist.xml b/schemes/musica/musica_ccpp_namelist.xml index 31999ef2..c36d1b81 100644 --- a/schemes/musica/musica_ccpp_namelist.xml +++ b/schemes/musica/musica_ccpp_namelist.xml @@ -75,16 +75,20 @@ units This is the CCPP unit specification of the variable (e.g., m s-1). --> -
- - integer - - - integer - -
- + + integer + musica_ccpp + musica_ccpp + micm_solver_type + none + + The type of MICM solver to use. + + + 1 + + char*512 musica_ccpp diff --git a/test/musica/musica_ccpp_namelist.F90 b/test/musica/musica_ccpp_namelist.F90 index d27cc754..0dcf3170 100644 --- a/test/musica/musica_ccpp_namelist.F90 +++ b/test/musica/musica_ccpp_namelist.F90 @@ -4,7 +4,8 @@ module musica_ccpp_namelist implicit none private - + + integer, public :: micm_solver_type = 1 character(len=250), public :: filename_of_micm_configuration = 'musica_configurations/chapman/micm/config.json' character(len=250), public :: filename_of_tuvx_configuration = 'musica_configurations/chapman/tuvx/config.json' character(len=250), public :: filename_of_tuvx_micm_mapping_configuration = 'musica_configurations/chapman/tuvx_micm_mapping.json' diff --git a/test/musica/test_musica_api.F90 b/test/musica/test_musica_api.F90 index 2393a303..99b95892 100644 --- a/test/musica/test_musica_api.F90 +++ b/test/musica/test_musica_api.F90 @@ -136,7 +136,6 @@ end subroutine get_wavelength_edges !> Tests the Chapman chemistry scheme subroutine test_chapman() - use musica_micm, only: Rosenbrock, RosenbrockStandardOrder use ccpp_constituent_prop_mod, only: ccpp_constituent_prop_ptr_t use ccpp_constituent_prop_mod, only: ccpp_constituent_properties_t use musica_ccpp_micm, only: micm @@ -155,7 +154,6 @@ subroutine test_chapman() integer, parameter :: NUM_LAYERS = 2 integer, parameter :: NUM_WAVELENGTH_BINS = 102 integer :: NUM_GRID_CELLS = NUM_COLUMNS * NUM_LAYERS - integer :: solver_type = Rosenbrock integer :: errcode character(len=512) :: errmsg real(kind_phys) :: time_step = 60._kind_phys ! s @@ -192,7 +190,6 @@ subroutine test_chapman() real(kind_phys) :: total_O, total_O_init call get_wavelength_edges(photolysis_wavelength_grid_interfaces) - solver_type = Rosenbrock time_step = 60._kind_phys geopotential_height_wrt_surface_at_midpoint(1,:) = (/ 2000.0_kind_phys, 500.0_kind_phys /) geopotential_height_wrt_surface_at_midpoint(2,:) = (/ 2000.0_kind_phys, -500.0_kind_phys /) @@ -225,7 +222,7 @@ subroutine test_chapman() filename_of_tuvx_configuration = 'musica_configurations/chapman/tuvx/config.json' filename_of_tuvx_micm_mapping_configuration = 'musica_configurations/chapman/tuvx_micm_mapping.json' - call musica_ccpp_register(solver_type, NUM_GRID_CELLS, constituent_props, errmsg, errcode) + call musica_ccpp_register(NUM_COLUMNS, NUM_LAYERS, constituent_props, errmsg, errcode) if (errcode /= 0) then write(*,*) trim(errmsg) stop 3 @@ -374,7 +371,6 @@ end subroutine test_chapman !> Tests the simple Terminator chemistry scheme subroutine test_terminator() - use musica_micm, only: Rosenbrock, RosenbrockStandardOrder use ccpp_constituent_prop_mod, only: ccpp_constituent_prop_ptr_t use ccpp_constituent_prop_mod, only: ccpp_constituent_properties_t use musica_ccpp_micm, only: micm @@ -393,7 +389,6 @@ subroutine test_terminator() integer, parameter :: NUM_LAYERS = 2 integer, parameter :: NUM_WAVELENGTH_BINS = 102 integer :: NUM_GRID_CELLS = NUM_COLUMNS * NUM_LAYERS - integer :: solver_type = Rosenbrock integer :: errcode character(len=512) :: errmsg real(kind_phys) :: time_step = 60._kind_phys ! s @@ -430,7 +425,6 @@ subroutine test_terminator() real(kind_phys) :: total_Cl, total_Cl_init call get_wavelength_edges(photolysis_wavelength_grid_interfaces) - solver_type = Rosenbrock time_step = 60._kind_phys geopotential_height_wrt_surface_at_midpoint(1,:) = (/ 2000.0_kind_phys, 500.0_kind_phys /) geopotential_height_wrt_surface_at_midpoint(2,:) = (/ 2000.0_kind_phys, -500.0_kind_phys /) @@ -463,7 +457,7 @@ subroutine test_terminator() filename_of_tuvx_configuration = 'musica_configurations/terminator/tuvx/config.json' filename_of_tuvx_micm_mapping_configuration = 'musica_configurations/terminator/tuvx_micm_mapping.json' - call musica_ccpp_register(solver_type, NUM_GRID_CELLS, constituent_props, errmsg, errcode) + call musica_ccpp_register(NUM_COLUMNS, NUM_LAYERS, constituent_props, errmsg, errcode) if (errcode /= 0) then write(*,*) trim(errmsg) stop 3