From 474e03eca8c38ef959572b3917ca4494e692b26b Mon Sep 17 00:00:00 2001 From: George Faykin <pofnutsy@gmail.com> Date: Thu, 12 Jun 2025 07:40:56 +0300 Subject: [PATCH] Little fix: the year_min and year_max variables are now set in the grid file --- source/carbon/carbon.f90 | 64 +++++++++---------- source/carbon/carbon_model_to_core.f90 | 2 +- .../carbon/carbon_model_to_core_arg_kit.f90 | 13 +--- .../carbon/carbon_model_to_core_par_kit.f90 | 14 ++-- .../carbon_models/carbon_model_INMCM.f90 | 4 +- source/config.f90 | 7 +- source/grid.f90 | 6 +- source/main.f90 | 19 +++--- ui1_config.nml | 6 +- ui3_carbon_model_aux.f90 | 4 +- 10 files changed, 62 insertions(+), 77 deletions(-) diff --git a/source/carbon/carbon.f90 b/source/carbon/carbon.f90 index cd33fca..aba3e24 100644 --- a/source/carbon/carbon.f90 +++ b/source/carbon/carbon.f90 @@ -4,9 +4,9 @@ module carbon !< @details главный модуль, маршрутизация вызовов подпрограмм use config, only : carbon_model_type, & - & if_standard_print, & - & if_standard_output, & - & testing_log_mode + & if_standard_print, & + & if_standard_output, & + & testing_log_mode use carbon_solver, only : carbon_solver_fluxes, & & carbon_solver_pools use carbon_postprocessing, only : carbon_standard_print, & @@ -33,10 +33,10 @@ module carbon & carbon_model_postprocessing_rothc => carbon_model_postprocessing use carbon_model_user, only : carbon_model_assembly_user => carbon_model_assembly use carbon_model_user_aux, only : carbon_model_init_user => carbon_model_init, & - & carbon_model_calc_at_timestep_user => carbon_model_calc_at_timestep, & - & carbon_model_calc_at_cell_user => carbon_model_calc_at_cell, & - & carbon_model_calc_at_tile_user => carbon_model_calc_at_tile, & - & carbon_model_postprocessing_user => carbon_model_postprocessing + & carbon_model_calc_at_timestep_user => carbon_model_calc_at_timestep, & + & carbon_model_calc_at_cell_user => carbon_model_calc_at_cell, & + & carbon_model_calc_at_tile_user => carbon_model_calc_at_tile, & + & carbon_model_postprocessing_user => carbon_model_postprocessing implicit none @@ -64,12 +64,12 @@ module carbon end subroutine end interface - procedure(interface_init), pointer :: carbon_model_init - procedure(interface_assembly), pointer :: carbon_model_assembly + procedure(interface_init), pointer :: carbon_model_init + procedure(interface_assembly), pointer :: carbon_model_assembly procedure(interface_calc_at_timestep), pointer :: carbon_model_calc_at_timestep - procedure(interface_calc_at_cell), pointer :: carbon_model_calc_at_cell - procedure(interface_calc_at_tile), pointer :: carbon_model_calc_at_tile - procedure(interface_postprocessing), pointer :: carbon_model_postprocessing + procedure(interface_calc_at_cell), pointer :: carbon_model_calc_at_cell + procedure(interface_calc_at_tile), pointer :: carbon_model_calc_at_tile + procedure(interface_postprocessing), pointer :: carbon_model_postprocessing contains @@ -78,33 +78,33 @@ contains select case(carbon_model_type) case('inmcm') - carbon_model_init => carbon_model_init_inmcm - carbon_model_assembly => carbon_model_assembly_inmcm + carbon_model_init => carbon_model_init_inmcm + carbon_model_assembly => carbon_model_assembly_inmcm carbon_model_calc_at_timestep => carbon_model_calc_at_timestep_inmcm - carbon_model_calc_at_cell => carbon_model_calc_at_cell_inmcm - carbon_model_calc_at_tile => carbon_model_calc_at_tile_inmcm - carbon_model_postprocessing => carbon_model_postprocessing_inmcm + carbon_model_calc_at_cell => carbon_model_calc_at_cell_inmcm + carbon_model_calc_at_tile => carbon_model_calc_at_tile_inmcm + carbon_model_postprocessing => carbon_model_postprocessing_inmcm case('rothc') - carbon_model_init => carbon_model_init_rothc - carbon_model_assembly => carbon_model_assembly_rothc + carbon_model_init => carbon_model_init_rothc + carbon_model_assembly => carbon_model_assembly_rothc carbon_model_calc_at_timestep => carbon_model_calc_at_timestep_rothc - carbon_model_calc_at_cell => carbon_model_calc_at_cell_rothc - carbon_model_calc_at_tile => carbon_model_calc_at_tile_rothc - carbon_model_postprocessing => carbon_model_postprocessing_rothc + carbon_model_calc_at_cell => carbon_model_calc_at_cell_rothc + carbon_model_calc_at_tile => carbon_model_calc_at_tile_rothc + carbon_model_postprocessing => carbon_model_postprocessing_rothc case('socs') - carbon_model_init => carbon_model_init_socs - carbon_model_assembly => carbon_model_assembly_socs + carbon_model_init => carbon_model_init_socs + carbon_model_assembly => carbon_model_assembly_socs carbon_model_calc_at_timestep => carbon_model_calc_at_timestep_socs - carbon_model_calc_at_cell => carbon_model_calc_at_cell_socs - carbon_model_calc_at_tile => carbon_model_calc_at_tile_socs - carbon_model_postprocessing => carbon_model_postprocessing_socs + carbon_model_calc_at_cell => carbon_model_calc_at_cell_socs + carbon_model_calc_at_tile => carbon_model_calc_at_tile_socs + carbon_model_postprocessing => carbon_model_postprocessing_socs case('other') - carbon_model_init => carbon_model_init_user - carbon_model_assembly => carbon_model_assembly_user + carbon_model_init => carbon_model_init_user + carbon_model_assembly => carbon_model_assembly_user carbon_model_calc_at_timestep => carbon_model_calc_at_timestep_user - carbon_model_calc_at_cell => carbon_model_calc_at_cell_user - carbon_model_calc_at_tile => carbon_model_calc_at_tile_user - carbon_model_postprocessing => carbon_model_postprocessing_user + carbon_model_calc_at_cell => carbon_model_calc_at_cell_user + carbon_model_calc_at_tile => carbon_model_calc_at_tile_user + carbon_model_postprocessing => carbon_model_postprocessing_user end select call carbon_model_init() diff --git a/source/carbon/carbon_model_to_core.f90 b/source/carbon/carbon_model_to_core.f90 index 1251e39..4c17de0 100644 --- a/source/carbon/carbon_model_to_core.f90 +++ b/source/carbon/carbon_model_to_core.f90 @@ -28,7 +28,7 @@ contains !< @brief установить число тайлов (типов растительности) use carbon_core, only : ntile_core => ntile, & - & tile_weight_core => tile_weight + & tile_weight_core => tile_weight use grid, only : i0, i1, j0, j1 integer, intent(in) :: ntile !< число тайлов (по умолчанию 1) diff --git a/source/carbon/carbon_model_to_core_arg_kit.f90 b/source/carbon/carbon_model_to_core_arg_kit.f90 index f54a272..abfbfdc 100644 --- a/source/carbon/carbon_model_to_core_arg_kit.f90 +++ b/source/carbon/carbon_model_to_core_arg_kit.f90 @@ -7,13 +7,13 @@ module carbon_model_to_core_arg_kit ! --------------------------------------------------------------------------------- use carbon_core, only: arg_kit_type, narg_default - use grid, only: date_c, date_fst, date_lst,first_date,last_date + use grid, only: year_min, year_max implicit none private public :: set_args public :: get_args - public :: year_min, year_max, nmonth + public :: nmonth ! параметры ! --------------------------------------------------------------------------------- @@ -22,15 +22,6 @@ module carbon_model_to_core_arg_kit integer, parameter :: nmonth = 12 - integer, parameter :: year_min = 1900 !< предусмотренный диапазон лет @todo прописать allocatable, т.к. требуется для типа переменной x_year, иначе ошибка - integer, parameter :: year_max = 2025 !< - - ! Для случая Rostov: 1975 - 2018 - ! Для случая DAO3: 1937 - 2012 - ! Для случая DAO4: 1935 - 2012 - ! Для случая TRGK: 1956 - 2018 - ! Для случая VLDMR: 1968 - 2018 - contains diff --git a/source/carbon/carbon_model_to_core_par_kit.f90 b/source/carbon/carbon_model_to_core_par_kit.f90 index f6a57d3..ac7b0f3 100644 --- a/source/carbon/carbon_model_to_core_par_kit.f90 +++ b/source/carbon/carbon_model_to_core_par_kit.f90 @@ -34,19 +34,19 @@ contains ! --------------------------------------------------------------------------------- subroutine set_pars(par_kit, & - & c, c_n, c_ij, & - & y0, y0_n, y0_ij, & - & x0, x0_n, x0_ij, & - & k, k_n, k_ij, & - & a, a_n, a_ij, & + & c, c_n, c_ij, & + & y0, y0_n, y0_ij, & + & x0, x0_n, x0_ij, & + & k, k_n, k_ij, & + & a, a_n, a_ij, & & amp, amp_n, amp_ij, & & c01, c01_n, c01_ij, & & c02, c02_n, c02_ij) ! --------------------------------------- !< @brief установка вида функций и их параметров - use const, only : miss_v - use grid, only : i0, i1, j0, j1 + use const, only : miss_v + use grid, only : i0, i1, j0, j1 use carbon_core, only : ntile type(par_kit_type), intent(inout) :: par_kit(npar_default) diff --git a/source/carbon/carbon_models/carbon_model_INMCM.f90 b/source/carbon/carbon_models/carbon_model_INMCM.f90 index db89543..45c98be 100644 --- a/source/carbon/carbon_models/carbon_model_INMCM.f90 +++ b/source/carbon/carbon_models/carbon_model_INMCM.f90 @@ -34,8 +34,8 @@ contains call set_pool(pid = n_Catm, name = 'catm' ) call set_pool(pid = n_Cveg, name = 'cveg' , alias = Cveg ) - call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 2.983218, alias = Csoil ) - call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.060882, alias = Csoilb ) + call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 8.730624, alias = Csoil ) + call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.178176, alias = Csoilb ) ! station: opt: С1: С2: ! ROST 1 8.730624 0.178176 diff --git a/source/config.f90 b/source/config.f90 index 984d2d7..35c6587 100644 --- a/source/config.f90 +++ b/source/config.f90 @@ -242,12 +242,7 @@ module config end select ! тест на сочетания настроек - ! ----------------------------------------------------------------------------- - - !if (carbon_model_type == 'socs' .and. environment_data_type == 'station' & - ! & .and. (station_name == 'VLDMR' .or. station_name == 'TRGK' )) then - ! stop "check failed : this carbon_model_type can't work with this station name" - !endif + ! ----------------------------------------------------------------------------- if ((station_name == 'Rostov' .or. station_name == 'VLDMR' .or. station_name == 'TRGK' ) .and. station_opt == '4') then stop "check failed : this station name can't work with this station_opt" diff --git a/source/grid.f90 b/source/grid.f90 index edcbb76..059365e 100644 --- a/source/grid.f90 +++ b/source/grid.f90 @@ -55,7 +55,7 @@ module grid character(len_default) :: DL character(len_default) :: DI type(date_type) :: date_c, date_fst, date_lst - integer :: last_date, first_date + integer :: year_min, year_max ! текущие индексы в циклах: integer :: tt @@ -481,8 +481,8 @@ contains date_c = date_fst - first_date = date_fst%y - last_date = date_lst%y + year_min = date_fst%y + year_max = date_lst%y end subroutine diff --git a/source/main.f90 b/source/main.f90 index 523f602..a906c0a 100644 --- a/source/main.f90 +++ b/source/main.f90 @@ -3,20 +3,19 @@ program main !< @brief главная программа !< @details максимально обобщенный аналог tm.f90 из модели land - use config, only : config_init, & - & carbon_model_type, environment_data_type, lsm_datafile - use grid, only : grid_init, & - & i0, i1, j0, j1, ntime, ii, jj, tt, nn, mask, date_c, dt, & - & dlon, dlat, dlon_nc, dlat_nc, dt_nc, date_fst, date_lst, ncell_tot, ncell_mask + use config, only : config_init, carbon_model_type, environment_data_type, lsm_datafile + use grid, only : grid_init, & + & i0, i1, j0, j1, ntime, ii, jj, tt, nn, mask, date_c, dt, & + & dlon, dlat, dlon_nc, dlat_nc, dt_nc, date_fst, date_lst, ncell_tot, ncell_mask use environment, only : environment_init, & & environment_calc_at_timestep, & & environment_calc_at_cell, & & environment_calc_at_tile - use carbon, only : carbon_init, & - & carbon_calc_at_timestep, & - & carbon_calc_at_cell, & - & carbon_calc_at_tile, & - & carbon_postprocessing + use carbon, only : carbon_init, & + & carbon_calc_at_timestep, & + & carbon_calc_at_cell, & + & carbon_calc_at_tile, & + & carbon_postprocessing use carbon_core, only : ntile, tile_weight implicit none diff --git a/ui1_config.nml b/ui1_config.nml index f8c8650..e3a718e 100644 --- a/ui1_config.nml +++ b/ui1_config.nml @@ -12,7 +12,7 @@ ! ----------------------------------------------------------------- !> Углеродная модель: - carbon_model_type = 'rothc' + carbon_model_type = 'inmcm' ! ! 'inmcm' - модель inmc [1,2] ! 'socs' - модель SOCS [3] @@ -33,7 +33,7 @@ ! дополнительно для environment_data_type = 'station': !> Имя станции: - station_name = 'DAO4' + station_name = 'Rostov' ! 'DAO4' - Станция в Долгопрудном 2 ! 'DAO3' - Станция в Долгопрудном 1 ! 'TRGK' - Данные Торжок @@ -133,7 +133,7 @@ testing_log_mode = 'read' ! none, write, read - nv_singlecolumn = 1 ! Для модели INMCM нужно поставить 12, для RothC и SOCS 1 + nv_singlecolumn = 12 ! Для модели INMCM нужно поставить 12, для RothC и SOCS 1 environment_model_type = 'inmcm' ! inmcm diff --git a/ui3_carbon_model_aux.f90 b/ui3_carbon_model_aux.f90 index 2addf73..cc57e17 100644 --- a/ui3_carbon_model_aux.f90 +++ b/ui3_carbon_model_aux.f90 @@ -17,8 +17,8 @@ module carbon_model_user_aux use const, only : yrs, day2sec, pi - use carbon_model_to_core_arg_kit, only : year_min, year_max, nmonth - use grid, only : dt + use carbon_model_to_core_arg_kit, only : nmonth + use grid, only : dt, year_min, year_max implicit none ! ------- Pools ------- -- GitLab