Skip to content
Snippets Groups Projects
Commit 6d2c8445 authored by Evgeny Mortikov's avatar Evgeny Mortikov
Browse files

moving model and dataset definitions in separate module

parent d8a4b4bd
No related branches found
No related tags found
No related merge requests found
......@@ -57,6 +57,7 @@ set(SOURCES_F
srcF/sfx_io.f90
srcF/sfx_data.f90
srcF/sfx_common.f90
srcF/sfx_config.f90
srcF/sfx_esm.f90
srcF/sfx_esm_param.f90
srcF/sfx_log.f90
......
!> @brief surface flux model config subroutines
module sfx_config
! modules used
! --------------------------------------------------------------------------------
! --------------------------------------------------------------------------------
! directives list
! --------------------------------------------------------------------------------
implicit none
! --------------------------------------------------------------------------------
public
!> @brief model enum def.
integer, parameter :: model_esm = 0 !< ESM model
integer, parameter :: model_log = 1 !< LOG simplified model
integer, parameter :: model_most = 2 !< MOST simplified model
integer, parameter :: model_sheba = 3 !< SHEBA simplified model
character(len = 16), parameter :: model_esm_tag = 'esm'
character(len = 16), parameter :: model_log_tag = 'log'
character(len = 16), parameter :: model_most_tag = 'most'
character(len = 16), parameter :: model_sheba_tag = 'sheba'
!> @brief dataset enum def.
integer, parameter :: dataset_mosaic = 1 !< MOSAiC campaign
integer, parameter :: dataset_irgason = 2 !< IRGASON data
integer, parameter :: dataset_sheba = 3 !< please spell 'SHIBA'
integer, parameter :: dataset_lake = 4 !< Kuivajarvi data
integer, parameter :: dataset_papa = 5 !< Papa station (ocean) data
integer, parameter :: dataset_toga = 6 !< Toga (ocean) data
integer, parameter :: dataset_user = 7 !< used defined dataset
character(len = 16), parameter :: dataset_mosaic_tag = 'mosaic'
character(len = 16), parameter :: dataset_irgason_tag = 'irgason'
character(len = 16), parameter :: dataset_sheba_tag = 'sheba'
character(len = 16), parameter :: dataset_lake_tag = 'lake'
character(len = 16), parameter :: dataset_papa_tag = 'papa'
character(len = 16), parameter :: dataset_toga_tag = 'toga'
character(len = 16), parameter :: dataset_user_tag = 'user'
contains
function get_model_id(tag) result(id)
implicit none
character(len=*), intent(in) :: tag
integer :: id
id = - 1
if (trim(tag) == trim(model_esm_tag)) then
id = model_esm
else if (trim(tag) == trim(model_log_tag)) then
id = model_log
else if (trim(tag) == trim(model_most_tag)) then
id = model_most
else if (trim(tag) == trim(model_sheba_tag)) then
id = model_sheba
endif
end function
function get_model_tag(id) result(tag)
implicit none
integer :: id
character(len=:), allocatable :: tag
tag = "undefined"
if (id == model_esm) then
tag = model_esm_tag
else if (id == model_log) then
tag = model_log_tag
else if (id == model_most) then
tag = model_most_tag
else if (id == model_sheba) then
tag = model_sheba_tag
endif
end function
function get_dataset_id(tag) result(id)
implicit none
character(len=*), intent(in) :: tag
integer :: id
id = - 1
if (trim(tag) == trim(dataset_mosaic_tag)) then
id = dataset_mosaic
else if (trim(tag) == trim(dataset_irgason_tag)) then
id = dataset_irgason
else if (trim(tag) == trim(dataset_sheba_tag)) then
id = dataset_sheba
else if (trim(tag) == trim(dataset_lake_tag)) then
id = dataset_lake
else if (trim(tag) == trim(dataset_papa_tag)) then
id = dataset_papa
else if (trim(tag) == trim(dataset_toga_tag)) then
id = dataset_toga
else if (trim(tag) == trim(dataset_user_tag)) then
id = dataset_user
endif
end function
function get_dataset_tag(id) result(tag)
implicit none
integer :: id
character(len=:), allocatable :: tag
tag = "undefined"
if (id == dataset_mosaic) then
tag = dataset_mosaic_tag
else if (id == dataset_irgason) then
tag = dataset_irgason_tag
else if (id == dataset_sheba) then
tag = dataset_sheba_tag
else if (id == dataset_lake) then
tag = dataset_lake_tag
else if (id == dataset_papa) then
tag = dataset_papa_tag
else if (id == dataset_toga) then
tag = dataset_toga_tag
else if (id == dataset_user) then
tag = dataset_user_tag
endif
end function
end module sfx_config
......@@ -11,6 +11,7 @@ program sfx_main
use sfx_phys_const
use sfx_common
use sfx_config
use sfx_io
use sfx_data
......@@ -36,21 +37,9 @@ program sfx_main
integer :: dataset_id !< dataset ID:
character(len = 256) :: dataset_name
integer, parameter :: dataset_MOSAiC = 1 !< MOSAiC campaign
integer, parameter :: dataset_IRGASON = 2 !< IRGASON data
integer, parameter :: dataset_SHEBA = 3 !< please spell 'SHIBA'
integer, parameter :: dataset_LAKE = 4 !< Kuivajarvi data
integer, parameter :: dataset_PAPA = 5 !< Papa station (ocean) data
integer, parameter :: dataset_TOGA = 6 !< Toga (ocean) data
integer, parameter :: dataset_USER = 7 !< used defined dataset
integer :: model_id !< sfx model ID:
integer :: model_id !< sfx model ID
character(len = 256) :: model_name
integer, parameter :: model_esm = 0 !< ESM model
integer, parameter :: model_log = 1 !< LOG simplified model
integer, parameter :: model_most = 2 !< MOST simplified model
integer, parameter :: model_sheba = 3 !< SHEBA simplified model
! input/output data
! --------------------------------------------------------------------------------
......@@ -84,19 +73,6 @@ program sfx_main
character(len = 128), parameter :: arg_key_nmax = '--nmax'
character(len = 128), parameter :: arg_key_help = '--help'
character(len = 128), parameter :: arg_key_model_esm = 'esm'
character(len = 128), parameter :: arg_key_model_log = 'log'
character(len = 128), parameter :: arg_key_model_most = 'most'
character(len = 128), parameter :: arg_key_model_sheba = 'sheba'
character(len = 128), parameter :: arg_key_dataset_mosaic = 'mosaic'
character(len = 128), parameter :: arg_key_dataset_irgason = 'irgason'
character(len = 128), parameter :: arg_key_dataset_sheba = 'sheba'
character(len = 128), parameter :: arg_key_dataset_lake = 'lake'
character(len = 128), parameter :: arg_key_dataset_papa = 'papa'
character(len = 128), parameter :: arg_key_dataset_toga = 'toga'
character(len = 128), parameter :: arg_key_dataset_user = 'user'
integer :: is_output_set
integer :: nmax
! --------------------------------------------------------------------------------
......@@ -119,7 +95,7 @@ program sfx_main
!< @brief define model & dataset
model_id = model_esm !< default = ESM
dataset_id = dataset_MOSAiC !< default = MOSAiC
dataset_id = dataset_mosaic !< default = MOSAiC
is_output_set = 0
nmax = 0
......@@ -148,15 +124,8 @@ program sfx_main
stop
end if
call get_command_argument(i + 1, arg)
if (trim(arg) == trim(arg_key_model_esm)) then
model_id = model_esm
else if (trim(arg) == trim(arg_key_model_log)) then
model_id = model_log
else if (trim(arg) == trim(arg_key_model_most)) then
model_id = model_most
else if (trim(arg) == trim(arg_key_model_sheba)) then
model_id = model_sheba
else
model_id = get_model_id(arg)
if (model_id == -1) then
write(*, *) ' FAILURE! > unknown model [key]: ', trim(arg)
stop
end if
......@@ -167,20 +136,13 @@ program sfx_main
stop
end if
call get_command_argument(i + 1, arg)
if (trim(arg) == trim(arg_key_dataset_mosaic)) then
dataset_id = dataset_MOSAiC
else if (trim(arg) == trim(arg_key_dataset_irgason)) then
dataset_id = dataset_IRGASON
else if (trim(arg) == trim(arg_key_dataset_sheba)) then
dataset_id = dataset_SHEBA
else if (trim(arg) == trim(arg_key_dataset_lake)) then
dataset_id = dataset_LAKE
else if (trim(arg) == trim(arg_key_dataset_papa)) then
dataset_id = dataset_PAPA
else if (trim(arg) == trim(arg_key_dataset_toga)) then
dataset_id = dataset_TOGA
else if (trim(arg) == trim(arg_key_dataset_user)) then
dataset_id = dataset_USER
dataset_id = get_dataset_id(arg)
if (dataset_id == -1) then
write(*, *) ' FAILURE! > unknown dataset [key]: ', trim(arg)
stop
end if
if (dataset_id == dataset_user) then
if (i + 4 > num_args) then
write(*, *) ' FAILURE! > incorrect arguments for [user] dataset'
stop
......@@ -188,9 +150,6 @@ program sfx_main
call get_command_argument(i + 2, filename_in_common)
call get_command_argument(i + 3, filename_in)
call get_command_argument(i + 4, filename_out)
else
write(*, *) ' FAILURE! > unknown dataset [key]: ', trim(arg)
stop
end if
end if
if (trim(arg) == trim(arg_key_output)) then
......@@ -223,13 +182,13 @@ program sfx_main
call run("config.txt"//C_NULL_CHAR)
call get_charf("model.type"//C_NULL_CHAR, config_model_name)
if (compare_char_arrays(config_model_name, trim(arg_key_model_esm))) then
if (compare_char_arrays(config_model_name, trim(model_esm_tag))) then
model_id = model_esm
else if (compare_char_arrays(config_model_name, trim(arg_key_model_log))) then
else if (compare_char_arrays(config_model_name, trim(model_log_tag))) then
model_id = model_log
else if (compare_char_arrays(config_model_name, trim(arg_key_model_most))) then
else if (compare_char_arrays(config_model_name, trim(model_most_tag))) then
model_id = model_most
else if (compare_char_arrays(config_model_name, trim(arg_key_model_sheba))) then
else if (compare_char_arrays(config_model_name, trim(model_sheba_tag))) then
model_id = model_sheba
else
write(*, *) ' FAILURE! > unknown model [key]: ', config_model_name
......@@ -237,19 +196,19 @@ program sfx_main
end if
call get_charf("dataset.type"//C_NULL_CHAR, config_dataset_name)
if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_mosaic))) then
if (compare_char_arrays(config_dataset_name, trim(dataset_mosaic_tag))) then
dataset_id = dataset_MOSAiC
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_irgason))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_irgason_tag))) then
dataset_id = dataset_IRGASON
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_sheba))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_sheba_tag))) then
dataset_id = dataset_SHEBA
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_lake))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_lake_tag))) then
dataset_id = dataset_LAKE
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_papa))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_papa_tag))) then
dataset_id = dataset_PAPA
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_toga))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_toga_tag))) then
dataset_id = dataset_TOGA
else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_user))) then
else if (compare_char_arrays(config_dataset_name, trim(dataset_user_tag))) then
dataset_id = dataset_USER
!call get_charf("dataset.filename"//C_NULL_CHAR, config_dataset_filename)
......@@ -285,58 +244,36 @@ program sfx_main
#endif
!< @brief set name for specific model
if (model_id == model_esm) then
model_name = "ESM"
else if (model_id == model_log) then
model_name = "LOG"
else if (model_id == model_most) then
model_name = "MOST"
else if (model_id == model_sheba) then
model_name = "SHEBA"
else
write(*, *) ' FAILURE! > unknown model id: ', model_id
stop
end if
model_name = get_model_tag(model_id)
!< @brief set name & filenames for specific dataset
if (dataset_id == dataset_MOSAiC) then
dataset_name = 'MOSAiC'
dataset_name = get_dataset_tag(dataset_id)
if (dataset_id == dataset_mosaic) then
filename_in_common = 'data/MOSAiC_zh.txt'
filename_in = 'data/MOSAiC.txt'
if (is_output_set == 0) filename_out = 'out_MOSAiC.txt'
else if (dataset_id == dataset_IRGASON) then
dataset_name = 'IRGASON'
else if (dataset_id == dataset_irgason) then
filename_in_common = 'data/IRGASON_zh.txt'
filename_in = 'data/Irgason1.txt'
if (is_output_set == 0) filename_out = 'out_IRGASON1.txt'
else if (dataset_id == dataset_SHEBA) then
dataset_name = 'SHEBA'
else if (dataset_id == dataset_sheba) then
filename_in_common = 'data/Sheba1_zh.txt'
filename_in = 'data/Sheba1.txt'
if (is_output_set == 0) filename_out = 'out_Sheba.txt'
else if (dataset_id == dataset_LAKE) then
dataset_name = 'LAKE'
else if (dataset_id == dataset_lake) then
filename_in_common = 'data/Kuivajarvi_zh.txt'
filename_in = 'data/Kuivajarvi.txt'
if (is_output_set == 0) filename_out = 'out_Kuivajarvi.txt'
else if (dataset_id == dataset_PAPA) then
dataset_name = 'PAPA'
else if (dataset_id == dataset_papa) then
filename_in_common = 'data/Papa_zh.txt'
filename_in = 'data/Papa.txt'
if (is_output_set == 0) filename_out = 'out_Papa.txt'
else if (dataset_id == dataset_TOGA) then
dataset_name = 'TOGA'
else if (dataset_id == dataset_toga) then
filename_in_common = 'data/Toga_zh.txt'
filename_in = 'data/Toga.txt'
if (is_output_set == 0) filename_out = 'out_Toga.txt'
else if (dataset_id == dataset_USER) then
dataset_name = 'USER'
else if (dataset_id == dataset_user) then
! ---> skipping
else
write(*, *) ' FAILURE! > unknown dataset id: ', dataset_id
stop
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment