diff --git a/.gitignore b/.gitignore index f4a77c2403534a879d05276fd19c475cac703523..e8df1add99cc25e5137741c66e654b1115d586fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /drag.exe /build/ /srcF/*.mod +/parser/*.mod .idea diff --git a/srcF/sfx_common.f90 b/srcF/sfx_common.f90 index 160758f9e8ec7094eb52ea80bc391fc16b2c1d81..dde8b8d8104a76c133dd80e458197d639dbadfc3 100644 --- a/srcF/sfx_common.f90 +++ b/srcF/sfx_common.f90 @@ -18,7 +18,24 @@ contains end subroutine str2int ! ---------------------------------------------------------------------------- + !> @brief character array to string conversion + function char_array2str(char_array) result(str) + ! ---------------------------------------------------------------------------- + implicit none + character, intent(in) :: char_array(:) + character(len=:), allocatable :: str + integer :: i + ! ---------------------------------------------------------------------------- + + str = "" + do i = 1, size(char_array) + str = str(:) // char_array(i) + end do + + end function + ! ---------------------------------------------------------------------------- + !> @brief check if value is finite elemental function is_finite(value) ! ---------------------------------------------------------------------------- diff --git a/srcF/sfx_main.f90 b/srcF/sfx_main.f90 index 8117357aae9c8ddfabe1927702ad77f0bde74fe1..31ca983d6af9b0df4f708ea246ff69eaa7dadc6a 100644 --- a/srcF/sfx_main.f90 +++ b/srcF/sfx_main.f90 @@ -110,7 +110,7 @@ program sfx_main #ifdef USE_CONFIG_PARSER character, allocatable :: config_model_name(:) character, allocatable :: config_dataset_name(:) - + character, allocatable :: fn_in_common(:), fn_in(:), fn_out(:) integer :: sfx_type real :: z0_m @@ -223,13 +223,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), size(config_model_name))) then + if (compare_char_arrays(config_model_name, trim(arg_key_model_esm))) then model_id = model_esm - else if (compare_char_arrays(config_model_name, trim(arg_key_model_log), size(config_model_name))) then + else if (compare_char_arrays(config_model_name, trim(arg_key_model_log))) then model_id = model_log - else if (compare_char_arrays(config_model_name, trim(arg_key_model_most), size(config_model_name))) then + else if (compare_char_arrays(config_model_name, trim(arg_key_model_most))) then model_id = model_most - else if (compare_char_arrays(config_model_name, trim(arg_key_model_sheba), size(config_model_name))) then + else if (compare_char_arrays(config_model_name, trim(arg_key_model_sheba))) then model_id = model_sheba else write(*, *) ' FAILURE! > unknown model [key]: ', config_model_name @@ -237,19 +237,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), size(config_dataset_name))) then + if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_mosaic))) then dataset_id = dataset_MOSAiC - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_irgason), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_irgason))) then dataset_id = dataset_IRGASON - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_sheba), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_sheba))) then dataset_id = dataset_SHEBA - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_lake), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_lake))) then dataset_id = dataset_LAKE - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_papa), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_papa))) then dataset_id = dataset_PAPA - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_toga), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_toga))) then dataset_id = dataset_TOGA - else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_user), size(config_dataset_name))) then + else if (compare_char_arrays(config_dataset_name, trim(arg_key_dataset_user))) then dataset_id = dataset_USER !call get_charf("dataset.filename"//C_NULL_CHAR, config_dataset_filename)