Newer
Older
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
!> @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
end function
function get_model_tag(id) result(tag)
implicit none
integer :: id
character(len=:), allocatable :: tag
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
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
end function
function get_dataset_tag(id) result(tag)
implicit none
integer :: id
character(len=:), allocatable :: tag
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
end if
end function
function get_dataset_filename(id) result(filename)
implicit none
integer :: id
character(len=:), allocatable :: filename
filename = ''
if (id == dataset_mosaic) then
filename = DATASET_DIR // 'MOSAiC.txt'
else if (id == dataset_irgason) then
filename = DATASET_DIR // 'Irgason1.txt'
else if (id == dataset_sheba) then
filename = DATASET_DIR // 'Sheba1.txt'
else if (id == dataset_lake) then
filename = DATASET_DIR // 'Kuivajarvi.txt'
else if (id == dataset_papa) then
filename = DATASET_DIR // 'Papa.txt'
else if (id == dataset_toga) then
filename = DATASET_DIR // 'Toga.txt'
end if
end function
function get_dataset_param_filename(id) result(filename)
implicit none
integer :: id
character(len=:), allocatable :: filename
filename = ""
if (id == dataset_mosaic) then
filename = DATASET_DIR // 'MOSAiC_zh.txt'
else if (id == dataset_irgason) then
filename = DATASET_DIR // 'IRGASON_zh.txt'
else if (id == dataset_sheba) then
filename = DATASET_DIR // 'Sheba1_zh.txt'
else if (id == dataset_lake) then
filename = DATASET_DIR // 'Kuivajarvi_zh.txt'
else if (id == dataset_papa) then
filename = DATASET_DIR // 'Papa_zh.txt'
else if (id == dataset_toga) then
filename = DATASET_DIR // 'Toga_zh.txt'
end if
end function
end module sfx_config