From 8e7a25563d261978109d57338a979fa6cbc336ca Mon Sep 17 00:00:00 2001 From: George Faykin <pofnutsy@gmail.com> Date: Thu, 24 Apr 2025 20:58:58 +0300 Subject: [PATCH] Automation for date selection, checking_1 --- source/config.f90 | 94 +++++++++---------- .../environment/environment_data_station.f90 | 16 ++-- source/grid.f90 | 4 +- station_config.nml | 8 +- ui1_config.nml | 6 +- 5 files changed, 67 insertions(+), 61 deletions(-) diff --git a/source/config.f90 b/source/config.f90 index f1ab5c2..984d2d7 100644 --- a/source/config.f90 +++ b/source/config.f90 @@ -17,7 +17,7 @@ module config character(len_default) :: station_name character(len_default) :: station_opt -! пространственная сетка + ! пространственная сетка character(len_default) :: spatial_grid_mode real :: spatial_grid_res(2) character(len_default) :: spatial_sample_mode @@ -26,7 +26,7 @@ module config real :: point(2) real :: polygon(4) -! продолжительность расчета + ! продолжительность расчета character(len_default) :: dt_mode integer :: dt character(len_default) :: datetime_init_mode @@ -36,7 +36,7 @@ module config character(len_default) :: datetime_last integer :: UTC = 0 -! продвинутые настройки + ! продвинутые настройки logical :: if_datafile_read_at_first logical :: if_out_yearly logical :: if_standard_print @@ -45,7 +45,7 @@ module config integer :: nv_singlecolumn character(len_default) :: environment_model_type -! Данные для станций наблюдения за климатом + ! Данные для станций наблюдения за климатом character(len_default) :: datetime_init_1 character(len_default) :: datetime_last_1 character(len_default) :: datetime_init_2 @@ -57,38 +57,38 @@ module config character(len_default) :: datetime_init_5 character(len_default) :: datetime_last_5 - namelist /config_namelist/ & - & carbon_model_type, & - & environment_data_type, & - & lsm_datafile, & - & lsm_dataformat, & - & station_name, & - & station_opt, & - & spatial_grid_mode, & - & spatial_grid_res, & - & spatial_sample_mode, & - & id, & - & ich, & - & point, & - & polygon, & - & dt_mode, & - & dt, & - & datetime_init_mode, & - & datetime_init, & - & ntime_mode, & - & ntime, & - & datetime_last, & - & UTC, & - & if_datafile_read_at_first, & - & if_out_yearly, & - & if_standard_print, & - & if_standard_output, & - & testing_log_mode, & - & nv_singlecolumn, & + namelist /config_namelist/ & + & carbon_model_type, & + & environment_data_type, & + & lsm_datafile, & + & lsm_dataformat, & + & station_name, & + & station_opt, & + & spatial_grid_mode, & + & spatial_grid_res, & + & spatial_sample_mode, & + & id, & + & ich, & + & point, & + & polygon, & + & dt_mode, & + & dt, & + & datetime_init_mode, & + & datetime_init, & + & ntime_mode, & + & ntime, & + & datetime_last, & + & UTC, & + & if_datafile_read_at_first,& + & if_out_yearly, & + & if_standard_print, & + & if_standard_output, & + & testing_log_mode, & + & nv_singlecolumn, & & environment_model_type namelist /station_config_namelist/ & - & datetime_init_1, & + & datetime_init_1, & & datetime_last_1, & & datetime_init_2, & & datetime_last_2, & @@ -123,21 +123,21 @@ module config character(len_default) :: isoil end type type(namespace_type) :: nc_namespace - + contains subroutine config_init() - open(1, file='ui1_config.nml', status='old') - read(1, nml=config_namelist) - close(1) - - open(1, file='station_config.nml', status='old') - read(1, nml=station_config_namelist) + open(1, file = 'ui1_config.nml', status = 'old', action = 'read') + read(1, nml = config_namelist) close(1) call config_check() - + + open(10, file = 'station_config.nml', status = 'old', action = 'read') + read(10, nml = station_config_namelist) + close(10) + select case (lsm_dataformat) case('inmcm') nc_namespace%lon = 'lon' @@ -273,13 +273,13 @@ module config stop "check failed : dt_mode == 'auto' requires environment_data_type == 'lsm_offline'" endif - if (datetime_init_mode == 'auto' .and. environment_data_type /= 'lsm_offline') then - stop "check failed : datetime_init_mode == 'auto' requires environment_data_type == 'lsm_offline'" - endif + ! if (datetime_init_mode == 'auto' .and. environment_data_type /= 'lsm_offline') then + ! stop "check failed : datetime_init_mode == 'auto' requires environment_data_type == 'lsm_offline'" + ! endif - if (ntime_mode == 'auto' .and. environment_data_type /= 'lsm_offline') then - stop "check failed : ntime_mode == 'auto' requires environment_data_type == 'lsm_offline'" - endif + ! if (ntime_mode == 'auto' .and. environment_data_type /= 'lsm_offline') then + ! stop "check failed : ntime_mode == 'auto' requires environment_data_type == 'lsm_offline'" + ! endif end subroutine diff --git a/source/environment/environment_data_station.f90 b/source/environment/environment_data_station.f90 index dd628d7..f3d2e9a 100644 --- a/source/environment/environment_data_station.f90 +++ b/source/environment/environment_data_station.f90 @@ -94,32 +94,32 @@ contains end select ! External carbon intake - open (unit = 1, file = 'initial_value/'//'carbon_intake/'//trim(station_name)//'_org_'//trim(station_opt)//'.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'carbon_intake/'//trim(station_name)//'_org_'//trim(station_opt)//'.txt', status='old', action = 'read') read(1,*) in_organic(1:mnc) close (1) - open (unit = 1, file = 'initial_value/'//'carbon_intake/'//trim(station_name)//'_FYM_'//trim(station_opt)//'.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'carbon_intake/'//trim(station_name)//'_FYM_'//trim(station_opt)//'.txt', status='old', action = 'read') read(1,*) in_FYM(1:mnc) close (1) ! External climate intake - open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Temp.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Temp.txt', status='old', action = 'read') read(1,*) in_temp(1:mnc) close (1) - open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_MOI.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_MOI.txt', status='old', action = 'read') read(1,*) in_wsoil(1:mnc) close (1) - open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Veg.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Veg.txt', status='old', action = 'read') read(1,*) in_veg(1:mnc) close (1) - open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Rainfall.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Rainfall.txt', status='old', action = 'read') read(1,*) in_rainfall(1:mnc) close (1) - open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Evpar.txt', status='unknown') + open (unit = 1, file = 'initial_value/'//'climate_intake/'//trim(station_name)//'_Evpar.txt', status='old', action = 'read') read(1,*) in_Evpar(1:mnc) close (1) @@ -150,7 +150,7 @@ contains mncX = (date_fst%y - mnclot_fst(station_n))*nmonth + date_lst%m end if -! Набор переменных которые должны быть, но не данны через качественные внешние данные +! Набор переменных которые должны быть, но не даны через качественные внешние данные p(:,:) = 980. !< pressure Rlwd(:,:) = 350. !< longwave radiation ra(:,:) = 20. !< aerodynamical resistance diff --git a/source/grid.f90 b/source/grid.f90 index b613fc9..14e834c 100644 --- a/source/grid.f90 +++ b/source/grid.f90 @@ -416,7 +416,7 @@ contains case('TRGK') DI = datetime_init_3 DL = datetime_last_3 - case('VLDR') + case('VLDMR') DI = datetime_init_4 DL = datetime_last_4 case('Rostov') @@ -429,7 +429,7 @@ contains dt_nc = miss_v jday0_nc = miss_v end select - + select case(dt_mode) case('auto') dt = dt_nc diff --git a/station_config.nml b/station_config.nml index 57b39cc..9f24d29 100644 --- a/station_config.nml +++ b/station_config.nml @@ -11,17 +11,23 @@ !> station_name = 'DAO4': datetime_init_1 = '1937-01-01 00:00:00' datetime_last_1 = '2012-01-01 00:00:00' + !> station_name = 'DAO3': datetime_init_2 = '1939-01-01 00:00:00' datetime_last_2 = '2012-01-01 00:00:00' + !> station_name = 'TRGK': datetime_init_3 = '1956-01-01 00:00:00' datetime_last_3 = '2018-01-01 00:00:00' + !> station_name = 'VLDR': datetime_init_4 = '1968-01-01 00:00:00' datetime_last_4 = '2018-01-01 00:00:00' + !> station_name = 'Rostov': datetime_init_5 = '1975-01-01 00:00:00' datetime_last_5 = '2018-01-01 00:00:00' -/ \ No newline at end of file + +! ----------------------------------------------------------------- +/ diff --git a/ui1_config.nml b/ui1_config.nml index 7d99118..7016f81 100644 --- a/ui1_config.nml +++ b/ui1_config.nml @@ -12,7 +12,7 @@ ! ----------------------------------------------------------------- !> Углеродная модель: - carbon_model_type = 'rothc' + carbon_model_type = 'socs' ! ! 'inmcm' - модель inmc [1,2] ! 'socs' - модель SOCS [3] @@ -100,13 +100,13 @@ ! '2629800' - 1 месяц !> Дата и время на момент старта: - datetime_init_mode = 'manual' + datetime_init_mode = 'auto' ! ! 'auto' - получить из входного файла (для lsm_offline) ! 'manual' - задать вручную [yyyy-mm-dd hh:mm:ss] datetime_init = '1975-01-01 00:00:00' !> Продолжительность расчета: - ntime_mode = 'datetime_last' + ntime_mode = 'auto' ! ! 'auto' - до конца входного файла (для lsm_offline) ! 'ntime' - указанное число шагов -- GitLab