diff --git a/includeF/sfx_def.fi b/includeF/sfx_def.fi
index 2a1077ca329a4cda062dcff5c49925b23467eb89..a9e0c6678055cc2b30fd475bd1bb0762df46af05 100644
--- a/includeF/sfx_def.fi
+++ b/includeF/sfx_def.fi
@@ -3,3 +3,4 @@
!#define SFX_FORCE_DEPRECATED_ESM_CODE
!#define SFX_CHECK_NAN
!#define USE_CONFIG_PARSER
+#define DATASET_DIR "data/"
diff --git a/srcF/sfx_config.f90 b/srcF/sfx_config.f90
index e7b0a6e064b5d03a4aafd79535d0d6c2d231aa95..319df77041340119c3b6312e9142963e4d882da0 100644
--- a/srcF/sfx_config.f90
+++ b/srcF/sfx_config.f90
@@ -1,3 +1,5 @@
+#include "../includeF/sfx_def.fi"
+
!> @brief surface flux model config subroutines
module sfx_config
@@ -40,6 +42,7 @@ module sfx_config
character(len = 16), parameter :: dataset_toga_tag = 'toga'
character(len = 16), parameter :: dataset_user_tag = 'user'
+
contains
function get_model_id(tag) result(id)
@@ -56,7 +59,7 @@ contains
id = model_most
else if (trim(tag) == trim(model_sheba_tag)) then
id = model_sheba
- endif
+ end if
end function
@@ -65,7 +68,7 @@ contains
integer :: id
character(len=:), allocatable :: tag
- tag = "undefined"
+ tag = 'undefined'
if (id == model_esm) then
tag = model_esm_tag
else if (id == model_log) then
@@ -74,7 +77,7 @@ contains
tag = model_most_tag
else if (id == model_sheba) then
tag = model_sheba_tag
- endif
+ end if
end function
@@ -98,7 +101,7 @@ contains
id = dataset_toga
else if (trim(tag) == trim(dataset_user_tag)) then
id = dataset_user
- endif
+ end if
end function
@@ -107,7 +110,7 @@ contains
integer :: id
character(len=:), allocatable :: tag
- tag = "undefined"
+ tag = 'undefined'
if (id == dataset_mosaic) then
tag = dataset_mosaic_tag
else if (id == dataset_irgason) then
@@ -122,7 +125,51 @@ contains
tag = dataset_toga_tag
else if (id == dataset_user) then
tag = dataset_user_tag
- endif
+ 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
diff --git a/srcF/sfx_main.f90 b/srcF/sfx_main.f90
index 4032782bb9256f0609be2b982be4ea06bd0efae2..f1e672c4ad51ab7f244246160ac819490bf55eff 100644
--- a/srcF/sfx_main.f90
+++ b/srcF/sfx_main.f90
@@ -249,32 +249,14 @@ program sfx_main
!< @brief set name & filenames for specific dataset
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'
- else if (dataset_id == dataset_irgason) then
- filename_in_common = 'data/IRGASON_zh.txt'
- filename_in = 'data/Irgason1.txt'
- else if (dataset_id == dataset_sheba) then
- filename_in_common = 'data/Sheba1_zh.txt'
- filename_in = 'data/Sheba1.txt'
- else if (dataset_id == dataset_lake) then
- filename_in_common = 'data/Kuivajarvi_zh.txt'
- filename_in = 'data/Kuivajarvi.txt'
- else if (dataset_id == dataset_papa) then
- filename_in_common = 'data/Papa_zh.txt'
- filename_in = 'data/Papa.txt'
- else if (dataset_id == dataset_toga) then
- filename_in_common = 'data/Toga_zh.txt'
- filename_in = 'data/Toga.txt'
- else if (dataset_id == dataset_user) then
- ! ---> skipping
- else
- write(*, *) ' FAILURE! > unknown dataset id: ', dataset_id
- stop
- end if
+ if (dataset_id /= dataset_user) then
+ filename_in_common = get_dataset_param_filename(dataset_id)
+ filename_in = get_dataset_filename(dataset_id)
+ end if
+
if (is_output_set == 0) filename_out = 'output-' // trim(dataset_name) // '.txt'
+
write(*, *) ' Running SFX model'
write(*, *) ' model = ', trim(model_name)
write(*, *) ' dataset = ', trim(dataset_name)