From bb9b30b3f8c0031f960fa041acdd8df56e99fc38 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 14 Feb 2019 17:06:37 +0100 Subject: [PATCH] Philippe 14/02/2019: move UPCASE function to tools.f90 --- src/LIB/SURCOUCHE/src/mode_io.f90 | 24 +++----------- src/MNH/ini_deep_convection.f90 | 22 ++---------- src/MNH/ini_lb.f90 | 26 +++------------ src/MNH/read_all_data_grib_case.f90 | 2 +- src/MNH/read_chem_data_netcdf_case.f90 | 2 +- src/MNH/read_field.f90 | 2 +- src/MNH/spawn_field2.f90 | 6 ++-- src/MNH/tools.f90 | 46 ++++++++++++++++++++++++++ src/MNH/write_lbn.f90 | 2 +- src/MNH/write_lfifm1_for_diag.f90 | 7 ++-- src/MNH/write_lfin.f90 | 2 +- 11 files changed, 68 insertions(+), 73 deletions(-) create mode 100644 src/MNH/tools.f90 diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index f42f0b08e..b4f6ba125 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -28,6 +28,7 @@ ! P. Wautelet 06/02/2019: simplify OPEN_ll and do somme assignments at a more logical place ! P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines ! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST) +! P. Wautelet 14/02/2019: move UPCASE function to tools.f90 ! !----------------------------------------------------------------- MODULE MODE_IO_ll @@ -43,29 +44,11 @@ MODULE MODE_IO_ll LOGICAL,SAVE :: GCONFIO = .FALSE. ! Turn TRUE when SET_CONFIO_ll is called. - PUBLIC UPCASE,INITIO_ll,OPEN_ll,CLOSE_ll + PUBLIC INITIO_ll,OPEN_ll,CLOSE_ll PUBLIC SET_CONFIO_ll,GCONFIO CONTAINS - FUNCTION UPCASE(HSTRING) - CHARACTER(LEN=*) :: HSTRING - CHARACTER(LEN=LEN(HSTRING)) :: UPCASE - - INTEGER :: JC - INTEGER, PARAMETER :: IAMIN = IACHAR("a") - INTEGER, PARAMETER :: IAMAJ = IACHAR("A") - - DO JC=1,LEN(HSTRING) - IF (HSTRING(JC:JC) >= "a" .AND. HSTRING(JC:JC) <= "z") THEN - UPCASE(JC:JC) = ACHAR(IACHAR(HSTRING(JC:JC)) - IAMIN + IAMAJ) - ELSE - UPCASE(JC:JC) = HSTRING(JC:JC) - END IF - END DO - - END FUNCTION UPCASE - SUBROUTINE SET_CONFIO_ll() USE MODN_CONFIO @@ -161,6 +144,7 @@ CONTAINS use mode_io_file_lfi, only: io_create_file_lfi, io_open_file_lfi USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST, IO_FILE_FIND_BYNAME use mode_io_tools, only: io_rank + use mode_tools, only: upcase TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE INTEGER, INTENT(OUT) :: IOSTAT @@ -194,7 +178,7 @@ CONTAINS IF (PRESENT(MODE)) THEN YMODE = MODE YMODE = UPCASE(TRIM(ADJUSTL(YMODE))) - ELSE + ELSE YMODE = 'GLOBAL' ! Default Mode END IF diff --git a/src/MNH/ini_deep_convection.f90 b/src/MNH/ini_deep_convection.f90 index 476199193..1622565cc 100644 --- a/src/MNH/ini_deep_convection.f90 +++ b/src/MNH/ini_deep_convection.f90 @@ -109,6 +109,7 @@ END MODULE MODI_INI_DEEP_CONVECTION !! for a correct restart this variable has to be writen in FM file !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables +! P. Wautelet 14/02/2019: move UPCASE function to tools.f90 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -134,6 +135,7 @@ USE MODD_SALT, ONLY : CSALTNAMES USE MODE_FIELD USE MODE_FM USE MODE_FMREAD +USE MODE_TOOLS, ONLY: UPCASE ! IMPLICIT NONE ! @@ -336,25 +338,5 @@ ELSE ! ! END IF -! -CONTAINS -FUNCTION UPCASE(HSTRING) - -CHARACTER(LEN=*) :: HSTRING -CHARACTER(LEN=LEN(HSTRING)) :: UPCASE - -INTEGER :: JC -INTEGER, PARAMETER :: IAMIN = IACHAR("a") -INTEGER, PARAMETER :: IAMAJ = IACHAR("A") - -DO JC=1,LEN(HSTRING) - IF (HSTRING(JC:JC) >= "a" .AND. HSTRING(JC:JC) <= "z") THEN - UPCASE(JC:JC) = ACHAR(IACHAR(HSTRING(JC:JC)) - IAMIN + IAMAJ) - ELSE - UPCASE(JC:JC) = HSTRING(JC:JC) - END IF -END DO - -END FUNCTION UPCASE ! END SUBROUTINE INI_DEEP_CONVECTION diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90 index eb93466cf..004e340ec 100644 --- a/src/MNH/ini_lb.f90 +++ b/src/MNH/ini_lb.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -132,6 +132,7 @@ SUBROUTINE INI_LB(TPINIFILE,OLSOURCE,KSV, & !! J.-P. Pinty 09/02/16 Add LIMA that is LBC for CCN and IFN !! M.Leriche 09/02/16 Treat gas and aq. chemicals separately !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 14/02/2019: move UPCASE function to tools.f90 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -158,6 +159,7 @@ USE MODD_SALT USE MODE_FIELD, ONLY: TFIELDDATA,TYPELOG,TYPEREAL USE MODE_FMREAD USE MODE_MSG +USE MODE_TOOLS, ONLY: UPCASE ! IMPLICIT NONE ! @@ -1623,27 +1625,7 @@ IF (OLSOURCE) THEN PLBYSVM(:,:,:,JSV) = (PLBYSVM(:,:,:,JSV) - PLBYSVMM(:,:,:,JSV)) / PLENG ENDIF END DO -! +! ENDIF - -CONTAINS -FUNCTION UPCASE(HSTRING) - -CHARACTER(LEN=*) :: HSTRING -CHARACTER(LEN=LEN(HSTRING)) :: UPCASE - -INTEGER :: JC -INTEGER, PARAMETER :: IAMIN = IACHAR("a") -INTEGER, PARAMETER :: IAMAJ = IACHAR("A") - -DO JC=1,LEN(HSTRING) - IF (HSTRING(JC:JC) >= "a" .AND. HSTRING(JC:JC) <= "z") THEN - UPCASE(JC:JC) = ACHAR(IACHAR(HSTRING(JC:JC)) - IAMIN + IAMAJ) - ELSE - UPCASE(JC:JC) = HSTRING(JC:JC) - END IF -END DO - -END FUNCTION UPCASE ! END SUBROUTINE INI_LB diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index fdcbbf4e4..8d26d8f74 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -135,10 +135,10 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE ! USE MODE_DATETIME USE MODE_FM, ONLY: IO_FILE_CLOSE_ll -USE MODE_IO_ll, ONLY: UPCASE USE MODE_MSG USE MODE_TIME USE MODE_THERMO +USE MODE_TOOLS, ONLY: UPCASE ! USE MODI_READ_HGRID_n USE MODI_READ_VER_GRID diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index c230fd1f5..1ba217830 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -111,10 +111,10 @@ USE MODD_TIME USE MODD_TIME_n ! USE MODE_FM -USE MODE_IO_ll USE MODE_MPPDB USE MODE_THERMO USE MODE_TIME +USE MODE_TOOLS, ONLY: UPCASE ! USE MODI_CH_AER_INIT_SOA USE MODI_CH_INIT_SCHEME_n diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90 index da3a813fc..819595627 100644 --- a/src/MNH/read_field.f90 +++ b/src/MNH/read_field.f90 @@ -279,8 +279,8 @@ USE MODD_TIME ! for type DATE_TIME ! USE MODE_FIELD, ONLY: TFIELDDATA,TFIELDLIST,FIND_FIELD_ID_FROM_MNHNAME,TYPEDATE,TYPEREAL USE MODE_FMREAD -USE MODE_IO_ll, ONLY: UPCASE USE MODE_MSG +USE MODE_TOOLS, ONLY: UPCASE ! USE MODI_INI_LB USE MODI_INI_LS diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index b083a03d6..69346e7ba 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1995-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !####################### MODULE MODI_SPAWN_FIELD2 @@ -185,11 +185,11 @@ USE MODD_SPAWN ! USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODE_FMREAD -USE MODE_IO_ll, ONLY: UPCASE USE MODE_ll USE MODE_MODELN_HANDLER USE MODE_MPPDB USE MODE_THERMO +USE MODE_TOOLS, ONLY: UPCASE ! USE MODI_BIKHARDT ! diff --git a/src/MNH/tools.f90 b/src/MNH/tools.f90 new file mode 100644 index 000000000..68a195fac --- /dev/null +++ b/src/MNH/tools.f90 @@ -0,0 +1,46 @@ +!MNH_LIC Copyright 2019-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +!----------------------------------------------------------------- + +!################ +module mode_tools +!################ +! +! Purpose +! ------- +! +! The Purpose of this module is to provide useful tools for MesoNH +! +! Author +! ------ +! P. Wautelet 14/02/2019 +! + +implicit none + +private + +public :: upcase + +contains + +function upcase(hstring) + character(len=*), intent(in) :: hstring + character(len=len(hstring)) :: upcase + + integer :: jc + integer, parameter :: iamin = iachar("a") + integer, parameter :: iamaj = iachar("A") + + do jc = 1,len(hstring) + if ( hstring(jc:jc) >= "a" .and. hstring(jc:jc) <= "z" ) then + upcase(jc:jc) = achar( iachar( hstring(jc:jc) ) - iamin + iamaj ) + else + upcase(jc:jc) = hstring(jc:jc) + end if + end do +end function upcase + +end module mode_tools diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index b9378bd92..88fc2bf91 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -94,9 +94,9 @@ USE MODD_PARAM_n ! USE MODE_FMWRIT USE MODE_ll -USE MODE_IO_ll, ONLY: UPCASE USE MODE_MSG USE MODE_MODELN_HANDLER +USE MODE_TOOLS, ONLY: UPCASE ! USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES USE MODD_ICE_C1R3_DESCR, ONLY: C1R3NAMES diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 150421cb6..ab6f980b4 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- !################################ @@ -236,9 +236,10 @@ USE MODE_FIELD USE MODE_FMWRIT USE MODE_GATHER_ll USE MODE_ll -USE MODE_IO_ll +! USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT,ONLY: IO_FILE_ADD2LIST USE MODE_THERMO +USE MODE_TOOLS, ONLY: UPCASE USE MODE_MODELN_HANDLER USE MODI_LIDAR USE MODI_CLUSTERING diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 6ae1a2e70..19576446c 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -242,12 +242,12 @@ USE MODE_FM, ONLY: IO_FILE_CLOSE_ll USE MODE_FMWRIT USE MODE_ll USE MODD_IO_ll, ONLY: TFILEDATA -USE MODE_IO_ll, ONLY: UPCASE USE MODE_FIELD USE MODE_GATHER_ll USE MODE_GRIDPROJ USE MODE_MSG USE MODE_MODELN_HANDLER +USE MODE_TOOLS, ONLY: UPCASE ! USE MODI_WRITE_LB_n USE MODI_WRITE_BALLOON_n -- GitLab