diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 index bb8534b6dedc4aa9b89775f7106dd6a45efef4ca..5abc98b1e2e5663dc251939d12f7067d84d7a6b4 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 @@ -13,6 +13,7 @@ program LFI2CDF USE MODE_FIELD, ONLY: INI_FIELD_LIST USE MODE_IO, ONLY: IO_Init, IO_Config_set + use mode_ll USE mode_options USE MODE_SPLITTINGZ_ll, ONLY: INI_PARAZ_ll USE mode_util diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 1713d2e6561be3a206a1714f42433ee7121e76c6..bc20c05b2071d54f387c251078c5cc336e8f2322 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 @@ -957,7 +957,7 @@ END DO USE MODD_GRID, ONLY: XBETA, XRPK, XLAT0, XLON0, XLATORI, XLONORI USE MODD_GRID_n, ONLY: LSLEVE, XXHAT, XYHAT, XZHAT USE MODD_IO, ONLY: LIOCDF4 - USE MODD_PARAMETERS, ONLY: JPHEXT + USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT USE MODD_PARAMETERS_ll, ONLY: JPHEXT_ll=>JPHEXT, JPVEXT_ll=>JPVEXT USE MODD_TIME_n, ONLY: TDTCUR, TDTMOD diff --git a/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90 b/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90 deleted file mode 100644 index 77e2211f4a04e6ba584cd8300d9217df388472f7..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/extern_usersurc_ll.f90 +++ /dev/null @@ -1,1427 +0,0 @@ -!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. -!----------------------------------------------------------------- -!! Authors -!! ------- -! -! R. Guivarch, D. Lugato * CERFACS * -! Ph. Kloos * CERFACS - CNRM * -! -!! Modifications -!! ------------- -! Original 01/05/98 -! Juan 19/08/2005: modification INTENT -> INTENT(INOUT) -! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine -!----------------------------------------------------------------- - -! -!! ################################################# - SUBROUTINE ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll ) -!! ################################################# -! - USE MODE_ARGSLIST2_ll, ONLY : E_ADD_FIELD2_ll => ADD_FIELD2_ll -! - USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll - TYPE(HALO2_ll), TARGET :: TPHALO2_ll -! - CALL E_ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll ) -! - END SUBROUTINE ADD_FIELD2_ll -! -!! ######################################################## - SUBROUTINE DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO ) -!! ######################################################## -! - USE MODE_ARGSLIST2_ll, ONLY : E_DEL_FIELD2_ll => DEL_FIELD2_ll -! - USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll - TYPE(HALO2_ll), TARGET :: TPHALO2_ll - INTEGER :: KINFO -! - CALL E_DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO ) -! - END SUBROUTINE DEL_FIELD2_ll - -! -!! ####################################################### - SUBROUTINE ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME ) -!! ####################################################### -! - USE MODE_ARGSLIST_ll, ONLY : E_ADD1DFIELD_ll => ADD1DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll -! - CHARACTER(LEN=1), INTENT(IN) :: HDIR - TYPE(LIST1D_ll), POINTER :: TPLIST - REAL, DIMENSION(:), TARGET :: PFIELD - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - CALL E_ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME ) -! - END SUBROUTINE ADD1DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD2DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_ADD2DFIELD_ll => ADD2DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - REAL, DIMENSION(:,:), TARGET :: PFIELD - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - CALL E_ADD2DFIELD_ll( TPLIST, PFIELD, HNAME ) -! - END SUBROUTINE ADD2DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD3DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_ADD3DFIELD_ll => ADD3DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - REAL, DIMENSION(:,:,:), TARGET :: PFIELD - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - CALL E_ADD3DFIELD_ll( TPLIST, PFIELD, HNAME ) -! - END SUBROUTINE ADD3DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD4DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_ADD4DFIELD_ll => ADD4DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - type(list_ll), pointer :: tplist ! list of fields - real, dimension(:,:,:,:), intent(in) :: pfield ! field to be added to the list of fields - character(len=*), intent(in) :: hname ! name of the field to be added -! - CALL E_ADD4DFIELD_ll( TPLIST, PFIELD, HNAME ) -! - END SUBROUTINE ADD4DFIELD_ll -! -!! ################################################# - SUBROUTINE DEL1DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_DEL1DFIELD_ll => DEL1DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll -! - TYPE(LIST1D_ll), POINTER :: TPLIST - REAL, DIMENSION(:), TARGET :: PFIELD - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_DEL1DFIELD_ll( TPLIST, PFIELD, KINFO ) -! - END SUBROUTINE DEL1DFIELD_ll -! -!! ################################################# - SUBROUTINE DEL2DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_DEL2DFIELD_ll => DEL2DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - REAL, DIMENSION(:,:), TARGET :: PFIELD - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_DEL2DFIELD_ll( TPLIST, PFIELD, KINFO ) -! - END SUBROUTINE DEL2DFIELD_ll -! -!! ################################################# - SUBROUTINE DEL3DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_DEL3DFIELD_ll => DEL3DFIELD_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - REAL, DIMENSION(:,:,:), TARGET :: PFIELD - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_DEL3DFIELD_ll( TPLIST, PFIELD, KINFO ) -! - END SUBROUTINE DEL3DFIELD_ll -! -!! ################################# - SUBROUTINE CLEANLIST_ll( TPLIST ) -!! ################################# -! - USE MODE_ARGSLIST_ll, ONLY : E_CLEANLIST_ll => CLEANLIST_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST -! - CALL E_CLEANLIST_ll( TPLIST ) -! - END SUBROUTINE CLEANLIST_ll -! -!! ################################## - SUBROUTINE END_PARA_ll( KINFO_ll ) -!! ################################## -! - USE MODE_INIT_ll, ONLY : E_END_PARA_ll => END_PARA_ll -! - INTEGER, INTENT(OUT) :: KINFO_ll -! - CALL E_END_PARA_ll( KINFO_ll ) -! - END SUBROUTINE END_PARA_ll -! -!! ################################################## - SUBROUTINE GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM ) -!! ################################################## -! - USE MODE_TOOLS_ll, ONLY : E_GET_DIM_EXT_ll => GET_DIM_EXT_ll -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXDIM, KYDIM -! - CALL E_GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM ) -! - END SUBROUTINE GET_DIM_EXT_ll -! -!! ################################################### - SUBROUTINE GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM ) -!! ################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_DIM_PHYS_ll => GET_DIM_PHYS_ll -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXDIM, KYDIM -! - CALL E_GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM ) -! - END SUBROUTINE GET_DIM_PHYS_ll -! -!! ########################################## - SUBROUTINE GET_OR_ll( HSPLIT, KXOR, KYOR ) -!! ########################################## -! - USE MODE_TOOLS_ll, ONLY : E_GET_OR_ll => GET_OR_ll -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXOR, KYOR -! - CALL E_GET_OR_ll( HSPLIT, KXOR, KYOR ) -! - END SUBROUTINE GET_OR_ll -! -!! #################################################### - SUBROUTINE GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND ) -!! #################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_INDICE_ll => GET_INDICE_ll -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND -! - CALL E_GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND ) -! - END SUBROUTINE GET_INDICE_ll -! -!! ############################################ - SUBROUTINE GET_GLOBALDIMS_ll( KIMAX, KJMAX ) -!! ############################################ -! - USE MODE_TOOLS_ll, ONLY : E_GET_GLOBALDIMS_ll => GET_GLOBALDIMS_ll -! - INTEGER, INTENT(OUT) :: KIMAX, KJMAX -! - CALL E_GET_GLOBALDIMS_ll( KIMAX, KJMAX ) -! - END SUBROUTINE GET_GLOBALDIMS_ll -! -!! ###################################################### - SUBROUTINE GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND ) -!! ###################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_PHYSICAL_ll => GET_PHYSICAL_ll -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND -! - CALL E_GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND ) -! - END SUBROUTINE GET_PHYSICAL_ll -! -!! ############################################################### - SUBROUTINE GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, & - KXORI, KYORI, KXENDI, KYENDI, & - HDOM, KINFO, KIP ) -!! ############################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_INTERSECTION_ll => GET_INTERSECTION_ll -! - CHARACTER(LEN=4), INTENT(IN) :: HDOM - INTEGER, INTENT(IN) :: KXOR, KYOR, KXEND, KYEND - INTEGER, INTENT(OUT) :: KXORI, KYORI, KXENDI, KYENDI - INTEGER, INTENT(OUT) :: KINFO - INTEGER, INTENT(IN), OPTIONAL :: KIP -! - CALL E_GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, & - KXORI, KYORI, KXENDI, KYENDI, & - HDOM, KINFO, KIP ) -! - END SUBROUTINE GET_INTERSECTION_ll -! -!! #################################################################### - SUBROUTINE GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, & - KB, KE, KERR ) -!! #################################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_1DGLOBALSLICE_ll => GET_1DGLOBALSLICE_ll -! - REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY - CHARACTER(LEN=1), INTENT(IN) :: HDIR - INTEGER, INTENT(IN) :: KLOC - REAL, DIMENSION(:), INTENT(OUT) :: PGLOBALSLICE - INTEGER, OPTIONAL :: KB, KE, KERR -! - CALL E_GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, KB, KE, KERR ) -! - END SUBROUTINE GET_1DGLOBALSLICE_ll -! -!! #################################################################### - SUBROUTINE GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, & - KB, KE, KKB, KKE, KERR ) -!! #################################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_2DGLOBALSLICE_ll => GET_2DGLOBALSLICE_ll -! - REAL, DIMENSION(:,:,:) :: PARRAY - CHARACTER(LEN=1) :: HDIR - INTEGER :: KLOC - REAL, DIMENSION(:,:) :: PGLOBALSLICE - INTEGER, OPTIONAL :: KB, KE, KKB, KKE, KERR -! - CALL E_GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, & - KB, KE, KKB, KKE, KERR ) -! - END SUBROUTINE GET_2DGLOBALSLICE_ll -! -!! ##################################################################### - SUBROUTINE GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR ) -!! ##################################################################### -! - USE MODE_TOOLS_ll, ONLY : E_GET_1DSLICE_ll => GET_1DSLICE_ll -! - REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY - CHARACTER(LEN=1), INTENT(IN) :: HDIR - INTEGER, INTENT(IN) :: KLOC - REAL, DIMENSION(:), INTENT(OUT) :: PSLICE - INTEGER, OPTIONAL :: KB, KE, KERR -! - CALL E_GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR ) -! - END SUBROUTINE GET_1DSLICE_ll -! -!! ######################################################## - SUBROUTINE GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, & - KB, KE, KKB, KKE, KERR ) -!! ######################################################## -! - USE MODE_TOOLS_ll, ONLY : E_GET_2DSLICE_ll => GET_2DSLICE_ll -! - REAL, DIMENSION(:,:,:) :: PARRAY - CHARACTER(LEN=1) :: HDIR - INTEGER :: KLOC - REAL, DIMENSION(:,:) :: PSLICE - INTEGER, OPTIONAL :: KB, KE, KKB, KKE, KERR -! - CALL E_GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, & - KB, KE, KKB, KKE, KERR ) -! - END SUBROUTINE GET_2DSLICE_ll -! -!! ################################## - SUBROUTINE INI_PARA_ll( KINFO_ll ) -!! ################################## -! - USE MODE_INIT_ll, ONLY : E_INI_PARA_ll => INI_PARA_ll -! - INTEGER, INTENT(OUT) :: KINFO_ll -! - CALL E_INI_PARA_ll( KINFO_ll ) -! - END SUBROUTINE INI_PARA_ll -! -! ######################################### - SUBROUTINE SET_SPLITTING_ll( HSPLITTING ) -! ######################################### -! - USE MODE_INIT_ll, ONLY : E_SET_SPLITTING_ll=>SET_SPLITTING_ll -! - CHARACTER(LEN=*) :: HSPLITTING -! - CALL E_SET_SPLITTING_ll(HSPLITTING) -! - END SUBROUTINE SET_SPLITTING_ll -! -! ################################## - SUBROUTINE SET_LBX_ll( KLBX, KMI ) -! ################################## -! - USE MODE_INIT_ll, ONLY : E_SET_LBX_ll=>SET_LBX_ll -! - CHARACTER(LEN=*) :: KLBX - INTEGER :: KMI -! - CALL E_SET_LBX_ll(KLBX, KMI) -! - END SUBROUTINE SET_LBX_ll -! -! ################################## - SUBROUTINE SET_LBY_ll( KLBY, KMI ) -! ################################### -! - USE MODE_INIT_ll, ONLY : E_SET_LBY_ll=>SET_LBY_ll -! - CHARACTER(LEN=*) :: KLBY - INTEGER :: KMI -! - CALL E_SET_LBY_ll(KLBY, KMI) -! - END SUBROUTINE SET_LBY_ll -! -! ############################################ - SUBROUTINE SET_LBSIZEX_ll( KNBRIM, KRIMTAB ) -! ############################################ -! - USE MODE_LB_ll, ONLY : E_SET_LBSIZEX_ll => SET_LBSIZEX_ll -! - INTEGER :: KNBRIM - INTEGER, DIMENSION(:) :: KRIMTAB -! - CALL E_SET_LBSIZEX_ll(KNBRIM, KRIMTAB) -! - END SUBROUTINE SET_LBSIZEX_ll -! -! ############################################ - SUBROUTINE SET_LBSIZEY_ll( KNBRIM, KRIMTAB ) -! ############################################ -! - USE MODE_LB_ll, ONLY : E_SET_LBSIZEY_ll => SET_LBSIZEY_ll -! - INTEGER :: KNBRIM - INTEGER, DIMENSION(:) :: KRIMTAB -! - CALL E_SET_LBSIZEY_ll(KNBRIM, KRIMTAB) -! - END SUBROUTINE SET_LBSIZEY_ll -! -! ################################### - SUBROUTINE SET_DIM_ll( KX, KY, KZ ) -! ################################### -! - USE MODE_INIT_ll, ONLY : E_SET_DIM_ll=>SET_DIM_ll -! - INTEGER :: KX,KY,KZ -! - CALL E_SET_DIM_ll(KX, KY, KZ) -! - END SUBROUTINE SET_DIM_ll -! -! ####################################################### - SUBROUTINE SET_JP_ll( KMODELMAX, KHEXT, KVEXT, KPHALO ) -! ####################################################### -! - USE MODE_INIT_ll, ONLY : E_SET_JP_ll=>SET_JP_ll - IMPLICIT NONE -! - INTEGER :: KMODELMAX, KHEXT, KVEXT, KPHALO -! - CALL E_SET_JP_ll(KMODELMAX, KHEXT, KVEXT, KPHALO) -! - END SUBROUTINE SET_JP_ll -! -! ######################################## - SUBROUTINE SET_XRATIO_ll( KXRATIO, KMI ) -! ######################################## -! - USE MODE_INIT_ll, ONLY : E_SET_XRATIO_ll=>SET_XRATIO_ll -! - INTEGER :: KXRATIO, KMI -! - CALL E_SET_XRATIO_ll(KXRATIO, KMI) -! - END SUBROUTINE SET_XRATIO_ll -! -! ######################################## - SUBROUTINE SET_YRATIO_ll( KYRATIO, KMI ) -! ######################################## -! - USE MODE_INIT_ll, ONLY : E_SET_YRATIO_ll=>SET_YRATIO_ll -! - INTEGER :: KYRATIO, KMI -! - CALL E_SET_YRATIO_ll(KYRATIO, KMI) -! - END SUBROUTINE SET_YRATIO_ll -! -! ################################## - SUBROUTINE SET_DAD_ll( KDAD, KMI ) -! ################################## -! - USE MODE_INIT_ll, ONLY : E_SET_DAD_ll=>SET_DAD_ll -! - INTEGER :: KDAD, KMI -! - CALL E_SET_DAD_ll(KDAD, KMI) -! - END SUBROUTINE SET_DAD_ll -! -! ################################## - SUBROUTINE SET_XOR_ll( KXOR, KMI ) -! ################################## -! - USE MODE_INIT_ll, ONLY : E_SET_XOR_ll=>SET_XOR_ll -! - INTEGER :: KXOR, KMI -! - CALL E_SET_XOR_ll(KXOR, KMI) -! - END SUBROUTINE SET_XOR_ll -! -! #################################### - SUBROUTINE SET_XEND_ll( KXEND, KMI ) -! #################################### -! - USE MODE_INIT_ll, ONLY : E_SET_XEND_ll=>SET_XEND_ll -! - INTEGER :: KXEND, KMI -! - CALL E_SET_XEND_ll(KXEND, KMI) -! - END SUBROUTINE SET_XEND_ll -! -! ################################## - SUBROUTINE SET_YOR_ll( KYOR, KMI ) -! ################################## -! - USE MODE_INIT_ll, ONLY : E_SET_YOR_ll=>SET_YOR_ll -! - INTEGER :: KYOR, KMI -! - CALL E_SET_YOR_ll(KYOR, KMI) -! - END SUBROUTINE SET_YOR_ll -! -! #################################### - SUBROUTINE SET_YEND_ll( KYEND, KMI ) -! #################################### -! - USE MODE_INIT_ll, ONLY : E_SET_YEND_ll=>SET_YEND_ll -! - INTEGER :: KYEND, KMI -! - CALL E_SET_YEND_ll(KYEND, KMI) -! - END SUBROUTINE SET_YEND_ll -! -! ######################## - SUBROUTINE SET_DAD0_ll() -! ######################## -! - USE MODE_INIT_ll, ONLY : E_SET_DAD0_ll=>SET_DAD0_ll -! - CALL E_SET_DAD0_ll() -! - END SUBROUTINE SET_DAD0_ll -! -! ####################### - SUBROUTINE INIT_LB_ll() -! ####################### -! - USE MODE_LB_ll, ONLY : E_INIT_LB_ll => INIT_LB_ll -! - CALL E_INIT_LB_ll() -! - END SUBROUTINE INIT_LB_ll -! -! ####################### - SUBROUTINE SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, & - SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ) -! ####################### -! - USE MODE_LB_ll, ONLY : E_SET_LB_FIELD_ll => SET_LB_FIELD_ll -! - CHARACTER(LEN=*),INTENT(IN) :: HLBTYPE ! LB type : 'LB','LBU' - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! field on the whole domain (or subdomain) - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBXFIELD ! LB field - X direction - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBYFIELD ! LB field - Y direction - !beginning and end of the local physical subdomain - INTEGER, INTENT(IN) :: IIB ! indice I Beginning in x direction - INTEGER, INTENT(IN) :: IJB ! indice J Beginning in y direction - INTEGER, INTENT(IN) :: IIE ! indice I End in x direction - INTEGER, INTENT(IN) :: IJE ! indice J End in y direction - INTEGER, INTENT(IN) :: SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ! shifting applied to the indices copied from PFIELD in each direction - ! it is used for LBXUM et LBXVM - ! I do not know why... -! - CALL E_SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, & - SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ) -! - END SUBROUTINE SET_LB_FIELD_ll -! -!! ################################### - FUNCTION LNORTH_ll( K, HSPLITTING ) -!! ################################### -! - USE MODE_TOOLS_ll, ONLY : E_LNORTH_ll => LNORTH_ll -! - LOGICAL :: LNORTH_ll - INTEGER, INTENT(IN), OPTIONAL :: K - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING -! - LNORTH_ll=E_LNORTH_ll( K, HSPLITTING ) -! - END FUNCTION LNORTH_ll -! -!! ################################## - FUNCTION LWEST_ll( K, HSPLITTING ) -!! ################################## -! - USE MODE_TOOLS_ll, ONLY : E_LWEST_ll => LWEST_ll -! - LOGICAL :: LWEST_ll - INTEGER, INTENT(IN), OPTIONAL :: K - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING -! - LWEST_ll=E_LWEST_ll( K, HSPLITTING ) -! - END FUNCTION LWEST_ll -! -!! ################################## - FUNCTION LEAST_ll( K, HSPLITTING ) -!! ################################## -! - USE MODE_TOOLS_ll, ONLY : E_LEAST_ll => LEAST_ll -! - LOGICAL :: LEAST_ll - INTEGER, INTENT(IN), OPTIONAL :: K - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING -! - LEAST_ll=E_LEAST_ll( K, HSPLITTING ) -! - END FUNCTION LEAST_ll -! -!! ########################################### - FUNCTION LSOUTH_ll( K, HSPLITTING ) -!! ########################################### -! - USE MODE_TOOLS_ll, ONLY : E_LSOUTH_ll => LSOUTH_ll -! - LOGICAL :: LSOUTH_ll - INTEGER, INTENT(IN), OPTIONAL :: K - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING -! - LSOUTH_ll=E_LSOUTH_ll( K, HSPLITTING ) -! - END FUNCTION LSOUTH_ll -! -! ############################################### - SUBROUTINE GET_MODEL_NUMBER_ll( KMODEL_NUMBER ) -! ############################################### -! - USE MODE_NEST_ll, ONLY : E_GET_MODEL_NUMBER_ll => GET_MODEL_NUMBER_ll -! - INTEGER :: KMODEL_NUMBER -! - CALL E_GET_MODEL_NUMBER_ll( KMODEL_NUMBER ) -! - END SUBROUTINE GET_MODEL_NUMBER_ll -! -! #################################################### - SUBROUTINE GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO ) -! #################################################### -! - USE MODE_NEST_ll, ONLY : E_GET_CHILD_DIM_ll => GET_CHILD_DIM_ll -! - INTEGER, INTENT(IN) :: KCHILD -! - INTEGER, INTENT(OUT) :: KX, KY -! - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO ) -! - END SUBROUTINE GET_CHILD_DIM_ll -! -! ################################################################### - SUBROUTINE GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO ) -! ################################################################### -! - USE MODE_NEST_ll, ONLY : E_GET_FEEDBACK_COORD_ll => GET_FEEDBACK_COORD_ll -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO ) -! - END SUBROUTINE GET_FEEDBACK_COORD_ll -! -! ############################################################# - SUBROUTINE SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL ) -! ############################################################# -! - USE MODE_LS_ll, ONLY : E_SET_LS2DFIELD_1WAY_ll => SET_LS2DFIELD_1WAY_ll -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KMODEL -! - CALL E_SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL ) -! - END SUBROUTINE SET_LS2DFIELD_1WAY_ll -! -! ############################################################# - SUBROUTINE SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL ) -! ############################################################# -! - USE MODE_LS_ll, ONLY : E_SET_LS3DFIELD_1WAY_ll => SET_LS3DFIELD_1WAY_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KMODEL -! - CALL E_SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL ) -! - END SUBROUTINE SET_LS3DFIELD_1WAY_ll -! -! ################################## - SUBROUTINE UNSET_LSFIELD_1WAY_ll() -! ################################## -! - USE MODE_LS_ll, ONLY : E_UNSET_LSFIELD_1WAY_ll => UNSET_LSFIELD_1WAY_ll -! - CALL E_UNSET_LSFIELD_1WAY_ll() -! - END SUBROUTINE UNSET_LSFIELD_1WAY_ll -! -! ##################################################### - SUBROUTINE SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD ) -! ##################################################### -! - USE MODE_LS_ll, ONLY : E_SET_LS2DFIELD_2WAY_ll => SET_LS2DFIELD_2WAY_ll -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD -! - CALL E_SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD ) -! - END SUBROUTINE SET_LS2DFIELD_2WAY_ll -! -! ##################################################### - SUBROUTINE SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD ) -! ##################################################### -! - USE MODE_LS_ll, ONLY : E_SET_LS3DFIELD_2WAY_ll => SET_LS3DFIELD_2WAY_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD -! - CALL E_SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD ) -! - END SUBROUTINE SET_LS3DFIELD_2WAY_ll -! -! ########################################## - SUBROUTINE UNSET_LSFIELD_2WAY_ll( KMODEL ) -! ########################################## -! - USE MODE_LS_ll, ONLY : E_UNSET_LSFIELD_2WAY_ll => UNSET_LSFIELD_2WAY_ll -! - INTEGER, INTENT(IN) :: KMODEL -! - CALL E_UNSET_LSFIELD_2WAY_ll( KMODEL ) -! - END SUBROUTINE UNSET_LSFIELD_2WAY_ll -! -! ######################################### - SUBROUTINE LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL ) -! ######################################### -! - USE MODE_LS_ll, ONLY : E_LS_FORCING_ll => LS_FORCING_ll -! - INTEGER, INTENT(IN) :: KCHILD - INTEGER, INTENT(OUT) :: KINFO - LOGICAL, OPTIONAL, INTENT(IN) :: OEXTRAPOL - LOGICAL, OPTIONAL, INTENT(IN) :: OCYCLIC_EXTRAPOL -! - IF ( PRESENT(OEXTRAPOL) .AND. PRESENT(OCYCLIC_EXTRAPOL) ) THEN - CALL E_LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL ) - ELSEIF ( PRESENT(OEXTRAPOL) ) THEN - CALL E_LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL ) - ELSE - CALL E_LS_FORCING_ll( KCHILD, KINFO ) - ENDIF -! - END SUBROUTINE LS_FORCING_ll -! -! ################################### - SUBROUTINE LS_FEEDBACK_ll( KINFO ) -! ################################### -! - USE MODE_LS_ll, ONLY : E_LS_FEEDBACK_ll => LS_FEEDBACK_ll -! - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_LS_FEEDBACK_ll( KINFO ) -! - END SUBROUTINE LS_FEEDBACK_ll -! -! ############################################################## - SUBROUTINE SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! ############################################################## -! - USE MODE_LB_ll, ONLY : E_SET_LB2DFIELD_ll => SET_LB2DFIELD_ll -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL - CHARACTER(LEN=*), INTENT(IN) :: HSIDE -! - CALL E_SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! - END SUBROUTINE SET_LB2DFIELD_ll -! -! ############################################################## - SUBROUTINE SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! ############################################################## -! - USE MODE_LB_ll, ONLY : E_SET_LB3DFIELD_ll => SET_LB3DFIELD_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL - CHARACTER(LEN=*), INTENT(IN) :: HSIDE -! - CALL E_SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! - END SUBROUTINE SET_LB3DFIELD_ll -! -! ############################# - SUBROUTINE UNSET_LBFIELD_ll() -! ############################# -! - USE MODE_LB_ll, ONLY : E_UNSET_LBFIELD_ll => UNSET_LBFIELD_ll -! - CALL E_UNSET_LBFIELD_ll() -! - END SUBROUTINE UNSET_LBFIELD_ll -! -! ######################################### - SUBROUTINE LB_FORCING_ll( KCHILD, KINFO ) -! ######################################### -! - USE MODE_LB_ll, ONLY : E_LB_FORCING_ll => LB_FORCING_ll -! - INTEGER, INTENT(IN) :: KCHILD - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_LB_FORCING_ll( KCHILD, KINFO ) -! - END SUBROUTINE LB_FORCING_ll -! -!! ########################################################### - FUNCTION LBFINE2COARSE( KRATIO, KLBSIZE ) RESULT( KCOARSE ) -!! ########################################################### -! - USE MODE_NEST_ll, ONLY : E_LBFINE2COARSE => LBFINE2COARSE - IMPLICIT NONE -! - INTEGER :: KCOARSE - INTEGER :: KRATIO, KLBSIZE -! - KCOARSE = E_LBFINE2COARSE( KRATIO, KLBSIZE ) -! - END FUNCTION LBFINE2COARSE -! -! ######################################### - SUBROUTINE GO_TOMODEL_ll( KMODEL, KINFO ) -! ######################################### -! - USE MODE_NEST_ll, ONLY : E_GO_TOMODEL_ll => GO_TOMODEL_ll - IMPLICIT NONE -! - INTEGER :: KMODEL, KINFO -! - CALL E_GO_TOMODEL_ll( KMODEL, KINFO ) -! - END SUBROUTINE GO_TOMODEL_ll -! -!! ######################################################## - SUBROUTINE REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -!! ######################################################## -! - USE MODE_EXCHANGE_ll, ONLY : E_REMAP_2WAY_X_ll => REMAP_2WAY_X_ll -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDIN - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT - INTEGER :: KINFO -! - CALL E_REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -! - END SUBROUTINE REMAP_2WAY_X_ll -! -! ######################################################## - SUBROUTINE REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ######################################################## -! - USE MODE_EXCHANGE_ll, ONLY : E_REMAP_X_2WAY_ll => REMAP_X_2WAY_ll -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDIN - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT - INTEGER :: KINFO -! - CALL E_REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO ) -! - END SUBROUTINE REMAP_X_2WAY_ll -! -! ##################################################### - SUBROUTINE REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ##################################################### -! - USE MODE_EXCHANGE_ll, ONLY : E_REMAP_X_Y_ll => REMAP_X_Y_ll -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDIN - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT - INTEGER :: KINFO -! - CALL E_REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO ) -! - END SUBROUTINE REMAP_X_Y_ll -! -! ##################################################### - SUBROUTINE REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ##################################################### -! - USE MODE_EXCHANGE_ll, ONLY : E_REMAP_Y_X_ll => REMAP_Y_X_ll -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDIN - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFIELDOUT - INTEGER :: KINFO -! - CALL E_REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -! - END SUBROUTINE REMAP_Y_X_ll -! -!! ####################################################### - FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ####################################################### -! - USE MODE_SUM_ll, ONLY : E_EXTRACT_ll => EXTRACT_ll -! - REAL, DIMENSION(:,:,:), POINTER :: EXTRACT_ll - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - EXTRACT_ll => E_EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION EXTRACT_ll -! -!! ########################################################### - FUNCTION SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ########################################################### -! - USE MODE_SUM_ll, ONLY : E_SUM1D_ll => SUM1D_ll -! - REAL, DIMENSION(:,:), POINTER :: SUM1D_ll - INTEGER, INTENT(IN) :: KDIR - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - SUM1D_ll => E_SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION SUM1D_ll -! -!! ################################################################### - FUNCTION SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ################################################################### -! - USE MODE_SUM_ll, ONLY : E_SUM2D_ll => SUM2D_ll -! - REAL, DIMENSION(:), POINTER :: SUM2D_ll - INTEGER, INTENT(IN) :: KDIR1, KDIR2 - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - SUM2D_ll => E_SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION SUM2D_ll -! -!! ##################################################### - FUNCTION SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ##################################################### -! - USE MODE_SUM_ll, ONLY : E_SUM3D_ll => SUM3D_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - SUM3D_ll = E_SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION SUM3D_ll -! -!! ####################################################################### - FUNCTION SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR ) RESULT( ZSUM ) -!! ####################################################################### -! - USE MODE_SUM_ll, ONLY : E_SUM_1DFIELD_ll => SUM_1DFIELD_ll -! - REAL, DIMENSION(:), INTENT(IN) :: PFIELD - CHARACTER(LEN=1) :: HDIR - INTEGER, OPTIONAL, INTENT(OUT) :: KERR - INTEGER, OPTIONAL, INTENT(IN) :: KOR, KEND - REAL :: ZSUM -! - ZSUM = E_SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR ) -! - END FUNCTION SUM_1DFIELD_ll -! -!! ################################################### - FUNCTION MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ################################################### -! - USE MODE_SUM_ll, ONLY : E_MAX_ll => MAX_ll -! - REAL :: MAX_ll - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - MAX_ll = E_MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION MAX_ll -! -!! ################################################### - FUNCTION MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ################################################### -! - USE MODE_SUM_ll, ONLY : E_MIN_ll => MIN_ll -! - REAL :: MIN_ll - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - INTEGER, INTENT(OUT) :: KINFO - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND -! - MIN_ll = E_MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -! - END FUNCTION MIN_ll -! -!! ########################################### - FUNCTION SUMMASK_ll( PFIELD, OMASK, KINFO ) -!! ########################################### -! - USE MODE_SUM_ll, ONLY : E_SUMMASK_ll => SUMMASK_ll -! - REAL, DIMENSION(:), POINTER :: SUMMASK_ll - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK - INTEGER, INTENT(OUT) :: KINFO -! - SUMMASK_ll => E_SUMMASK_ll( PFIELD, OMASK, KINFO ) -! - END FUNCTION SUMMASK_ll -! -!! ############################################### - FUNCTION SUMMASKCOMP_ll( PFIELD, OMASK, KINFO ) -!! ############################################### -! - USE MODE_SUM_ll, ONLY : E_SUMMASKCOMP_ll => SUMMASKCOMP_ll -! - REAL :: SUMMASKCOMP_ll - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK - INTEGER, INTENT(OUT) :: KINFO -! - SUMMASKCOMP_ll = E_SUMMASKCOMP_ll( PFIELD, OMASK, KINFO ) -! - END FUNCTION SUMMASKCOMP_ll -! -!! ############################################# - SUBROUTINE SUM_DIM1_ll( PFIELD, PRES, KINFO ) -!! ############################################# -! - USE MODE_SUM_ll, ONLY : E_SUM_DIM1_ll => SUM_DIM1_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - REAL, DIMENSION(:,:), INTENT(OUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_SUM_DIM1_ll( PFIELD, PRES, KINFO ) -! - END SUBROUTINE SUM_DIM1_ll -! -!! ############################################# - SUBROUTINE SUM_DIM2_ll( PFIELD, PRES, KINFO ) -!! ############################################# -! - USE MODE_SUM_ll, ONLY : E_SUM_DIM2_ll => SUM_DIM2_ll -! - REAL, DIMENSION(:), INTENT(IN) :: PFIELD - REAL, DIMENSION(:), INTENT(OUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_SUM_DIM2_ll( PFIELD, PRES, KINFO ) -! - END SUBROUTINE SUM_DIM2_ll -! -!! ####################################################### - FUNCTION GMAXLOC3D_ll( PARRAY, MASK ) RESULT( KMAXLOC ) -!! ####################################################### -! - USE MODE_SUM2_ll, ONLY : E_GMAXLOC3D_ll => GMAXLOC3D_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK - INTEGER, DIMENSION(3) :: KMAXLOC -! - KMAXLOC = E_GMAXLOC3D_ll( PARRAY, MASK ) -! - END FUNCTION GMAXLOC3D_ll -! -!! ############################################################## - FUNCTION GMAXLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC ) -!! ############################################################## -! - USE MODE_SUM2_ll, ONLY : E_GMAXLOC2D_ll => GMAXLOC2D_ll -! - REAL, DIMENSION(:,:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK - INTEGER, DIMENSION(2) :: KMAXLOC - INTEGER, DIMENSION(2), OPTIONAL :: KDIMS -! - KMAXLOC = E_GMAXLOC2D_ll( PARRAY, KDIMS, MASK ) -! - END FUNCTION GMAXLOC2D_ll -! -!! ############################################################## - FUNCTION GMAXLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC ) -!! ############################################################## -! - USE MODE_SUM2_ll, ONLY : E_GMAXLOC1D_ll => GMAXLOC1D_ll -! - REAL, DIMENSION(:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK - INTEGER :: KMAXLOC - INTEGER, OPTIONAL :: KDIMS -! - KMAXLOC = E_GMAXLOC1D_ll( PARRAY, KDIMS, MASK ) -! - END FUNCTION GMAXLOC1D_ll -! -!! ####################################################### - FUNCTION GMINLOC3D_ll( PARRAY, MASK ) RESULT( KMINLOC ) -!! ####################################################### -! - USE MODE_SUM2_ll, ONLY : E_GMINLOC3D_ll => GMINLOC3D_ll -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK - INTEGER, DIMENSION(3) :: KMINLOC -! - KMINLOC = E_GMINLOC3D_ll( PARRAY, MASK ) -! - END FUNCTION GMINLOC3D_ll -! -!! ############################################################## - FUNCTION GMINLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC ) -!! ############################################################## -! - USE MODE_SUM2_ll, ONLY : E_GMINLOC2D_ll => GMINLOC2D_ll -! - REAL, DIMENSION(:,:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK - INTEGER, DIMENSION(2) :: KMINLOC - INTEGER, DIMENSION(2), OPTIONAL :: KDIMS -! - KMINLOC = E_GMINLOC2D_ll( PARRAY, KDIMS, MASK ) -! - END FUNCTION GMINLOC2D_ll -! -!! ############################################################## - FUNCTION GMINLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC ) -!! ############################################################## -! - USE MODE_SUM2_ll, ONLY : E_GMINLOC1D_ll => GMINLOC1D_ll -! - REAL, DIMENSION(:), INTENT(IN) :: PARRAY - LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK - INTEGER :: KMINLOC - INTEGER, OPTIONAL :: KDIMS -! - KMINLOC = E_GMINLOC1D_ll( PARRAY, KDIMS, MASK ) -! - END FUNCTION GMINLOC1D_ll -! - -!! ########################################## - SUBROUTINE REDUCE_SUM_0DD_ll( PRES, KINFO ) -!! ########################################## -! - USE MODD_REPRO_SUM , ONLY : DOUBLE_DOUBLE - USE MODE_SUM_ll , ONLY : E_REDUCE_SUM_0DD_ll => REDUCE_SUM_0DD_ll - ! - TYPE(DOUBLE_DOUBLE) , INTENT(INOUT) :: PRES - INTEGER , INTENT(OUT) :: KINFO - ! - CALL E_REDUCE_SUM_0DD_ll(PRES, KINFO) -! - END SUBROUTINE REDUCE_SUM_0DD_ll - -! -!! ########################################## - SUBROUTINE REDUCE_SUM_0D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_0D_ll => REDUCE_SUM_0D_ll -! - REAL, INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_0D_ll(PRES, KINFO) -! - END SUBROUTINE REDUCE_SUM_0D_ll -! - -!! ########################################## - SUBROUTINE REDUCE_SUM_1DD_ll( PRES, KINFO ) -!! ########################################## -! - USE MODD_REPRO_SUM , ONLY : DOUBLE_DOUBLE - USE MODE_SUM_ll , ONLY : E_REDUCE_SUM_1DD_ll => REDUCE_SUM_1DD_ll - ! - TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES - INTEGER , INTENT(OUT) :: KINFO - ! - CALL E_REDUCE_SUM_1DD_ll( PRES, KINFO ) -! - - END SUBROUTINE REDUCE_SUM_1DD_ll - -!! ########################################## - SUBROUTINE REDUCE_SUM_1D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_1D_ll => REDUCE_SUM_1D_ll -! - REAL, DIMENSION(:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_1D_ll( PRES, KINFO ) -! - END SUBROUTINE REDUCE_SUM_1D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_2D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_2D_ll => REDUCE_SUM_2D_ll -! - REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_2D_ll( PRES, KINFO ) -! - END SUBROUTINE REDUCE_SUM_2D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_3D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_3D_ll => REDUCE_SUM_3D_ll -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_3D_ll(PRES, KINFO) -! - END SUBROUTINE REDUCE_SUM_3D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I0D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I0D_ll => REDUCE_SUM_I0D_ll -! - INTEGER, INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_I0D_ll(PRES, KINFO) -! - END SUBROUTINE REDUCE_SUM_I0D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I1D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I1D_ll => REDUCE_SUM_I1D_ll -! - INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_I1D_ll( PRES, KINFO ) -! - END SUBROUTINE REDUCE_SUM_I1D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I2D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I2D_ll => REDUCE_SUM_I2D_ll -! - INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_I2D_ll( PRES, KINFO ) -! - END SUBROUTINE REDUCE_SUM_I2D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I3D_ll( PRES, KINFO ) -!! ########################################## -! - USE MODE_SUM_ll, ONLY : E_REDUCE_SUM_I3D_ll => REDUCE_SUM_I3D_ll -! - INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_REDUCE_SUM_I3D_ll(PRES, KINFO) -! - END SUBROUTINE REDUCE_SUM_I3D_ll -! - -!! ########################################## - SUBROUTINE UPDATE_HALO_ll( TPLIST, KINFO ) -!! ########################################## -! - USE MODE_EXCHANGE_ll, ONLY : E_UPDATE_HALO_ll => UPDATE_HALO_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - INTEGER :: KINFO -! - CALL E_UPDATE_HALO_ll( TPLIST, KINFO ) -! - END SUBROUTINE UPDATE_HALO_ll -! -!! ############################################ - SUBROUTINE UPDATE_1DHALO_ll( TPLIST, KINFO ) -!! ############################################ -! - USE MODE_EXCHANGE_ll, ONLY : E_UPDATE_1DHALO_ll => UPDATE_1DHALO_ll -! - USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll -! - TYPE(LIST1D_ll), POINTER :: TPLIST - INTEGER, INTENT(OUT) :: KINFO -! - CALL E_UPDATE_1DHALO_ll( TPLIST, KINFO ) -! - END SUBROUTINE UPDATE_1DHALO_ll -! -!! ############################################################ - SUBROUTINE UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO ) -!! ############################################################ -! - USE MODE_BOUNDARIES_ll, ONLY : E_UPDATE_BOUNDARIES_ll => UPDATE_BOUNDARIES_ll - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - CHARACTER(len=2), INTENT(IN) :: HDIRECTION - TYPE(LIST_ll), POINTER :: TPLIST - INTEGER :: KINFO -! - CALL E_UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO ) -! - END SUBROUTINE UPDATE_BOUNDARIES_ll -! -!! #################################################################### - SUBROUTINE INIT_HALO2_ll( TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ ) -!! #################################################################### -! - USE MODE_EXCHANGE2_ll, ONLY : E_INIT_HALO2_ll => INIT_HALO2_ll -! - USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST - INTEGER :: KNBVAR - INTEGER :: KDIMX, KDIMY, KDIMZ -! - CALL E_INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ) -! - END SUBROUTINE INIT_HALO2_ll -! -!! ######################################################## - SUBROUTINE UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO ) -!! ######################################################## -! - USE MODE_EXCHANGE2_ll, ONLY : E_UPDATE_HALO2_ll => UPDATE_HALO2_ll -! - USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll,LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST - TYPE(HALO2LIST_ll), POINTER :: TPLISTHALO2 - INTEGER :: KINFO -! - CALL E_UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO ) -! - END SUBROUTINE UPDATE_HALO2_ll -! -! ######################### - SUBROUTINE SCATTER(P1,P2) -! ######################### -! -USE MODE_SCATTER_ll -USE MODD_MPIF -USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD -! -IMPLICIT NONE -! -! INCLUDE 'mpif.h' -! -REAL, DIMENSION(:,:), INTENT(IN) :: P1 -REAL, DIMENSION(:,:), INTENT(OUT) :: P2 -! -CALL SCATTER_XYFIELD(P1,P2,1,NMNH_COMM_WORLD) -! -END SUBROUTINE SCATTER diff --git a/src/LIB/SURCOUCHE/src/mode_double_double.f90 b/src/LIB/SURCOUCHE/src/mode_double_double.f90 index 809944ce84da22fcc09397b1a5ff0542bc96b098..b9e58898f24f8dd022c8f70c6dc6031f6e5427cc 100644 --- a/src/LIB/SURCOUCHE/src/mode_double_double.f90 +++ b/src/LIB/SURCOUCHE/src/mode_double_double.f90 @@ -1,18 +1,27 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-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. !----------------------------------------------------------------- !Correction : ! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !----------------------------------------------------------------- MODULE modd_repro_sum + + implicit none + TYPE DOUBLE_DOUBLE SEQUENCE REAL :: R , E END TYPE DOUBLE_DOUBLE + + LOGICAL, save :: FIRST_CALL_DD = .TRUE. + INTEGER, save :: MNH_DOUBLE_DOUBLE + INTEGER, save :: MNH_SUM_DD + END MODULE modd_repro_sum + MODULE mode_repro_sum USE MODD_MPIF @@ -20,9 +29,6 @@ MODULE mode_repro_sum IMPLICIT NONE - LOGICAL :: FIRST_CALL_DD = .TRUE. - INTEGER :: MNH_DOUBLE_DOUBLE - INTEGER :: MNH_SUM_DD !!$ INTERFACE ADD !!$ MODULE PROCEDURE RPDD @@ -42,66 +48,6 @@ MODULE mode_repro_sum CONTAINS - SUBROUTINE INIT_DD(KINFO) - use modd_precision, only: MNHREAL_MPI - IMPLICIT NONE - INTEGER, INTENT(OUT) :: KINFO ! MPI return status - ! - ! define the double-double for MPI - ! - CALL MPI_TYPE_CONTIGUOUS(2, MNHREAL_MPI ,MNH_DOUBLE_DOUBLE , KINFO) - CALL MPI_TYPE_COMMIT(MNH_DOUBLE_DOUBLE , KINFO) - ! - ! define the double-double sum = MNH_SUM_DD for MPI - ! - CALL MPI_OP_CREATE(DDPDD, .TRUE., MNH_SUM_DD, KINFO) - FIRST_CALL_DD = .FALSE. - ! - END SUBROUTINE INIT_DD - - PURE SUBROUTINE DDPDD (dda, ddb, len, itype) - !---------------------------------------------------------------------- - ! - ! Purpose: - ! Modification of original codes written by David H. Bailey - ! This subroutine computes ddb(i) = dda(i)+ddb(i) - ! for use with MPI_*_REDUCE - ! - !---------------------------------------------------------------------- - ! - ! Arguments - ! - INTEGER, INTENT(in) :: len ! array length - TYPE(DOUBLE_DOUBLE), INTENT(in) :: dda(len) ! input - TYPE(DOUBLE_DOUBLE), INTENT(inout) :: ddb(len) ! result - INTEGER, INTENT(in) :: itype ! unused - ! - ! Local workspace - ! - REAL e, t1, t2 - INTEGER i - ! - !----------------------------------------------------------------------- - ! - DO i = 1, len - ! - ! Compute dda + ddb using Knuth's trick. - ! - t1 = dda(i)%R + ddb(i)%R - e = t1 - dda(i)%R - t2 = ((ddb(i)%R - e) + (dda(i)%R - (t1 - e))) & - + dda(i)%E + ddb(i)%E - ! - ! The result is t1 + t2, after normalization. - ! - ddb(i)%R = t1 + t2 - ddb(i)%E = t2 - ((t1 + t2) - t1) - ENDDO - - RETURN - - END SUBROUTINE DDPDD - ELEMENTAL SUBROUTINE RPDD (a, ddb) !---------------------------------------------------------------------- ! @@ -232,7 +178,7 @@ CONTAINS ! Could be inlined by compiler <=> elemental function ! !---------------------------------------------------------------------- - USE MODE_ll , ONLY : REDUCESUM_ll + USE mode_reduce_sum, ONLY: REDUCESUM_ll ! ! Arguments ! @@ -277,7 +223,7 @@ CONTAINS ! This subroutine computes c(1:n2) = sum_dd(a(:,1:n2)) on all processors ! !---------------------------------------------------------------------- - USE MODE_ll , ONLY : REDUCESUM_ll + USE mode_reduce_sum, ONLY: REDUCESUM_ll ! ! Arguments ! @@ -320,7 +266,7 @@ CONTAINS ! This subroutine computes c = sum_dd(a(:)) on all processors ! !---------------------------------------------------------------------- - USE MODE_ll , ONLY : REDUCESUM_ll + USE mode_reduce_sum, ONLY: REDUCESUM_ll ! ! Arguments ! diff --git a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 index df07aafd0efd670325b161dc2f29b47c427cfc57..eff5ff16498bf22ab1a3bd24253e08c96fb52f00 100644 --- a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 @@ -1809,7 +1809,7 @@ !* 0. DECLARATIONS ! ------------ ! - USE MODE_ll + USE MODE_TOOLS_ll, only: LWEST_ll, LEAST_ll ! IMPLICIT NONE ! @@ -1846,7 +1846,7 @@ !* 0. DECLARATIONS ! ------------ ! - USE MODE_ll + USE MODE_TOOLS_ll, only: LNORTH_ll, LSOUTH_ll ! IMPLICIT NONE ! diff --git a/src/LIB/SURCOUCHE/src/mode_ll.f90 b/src/LIB/SURCOUCHE/src/mode_ll.f90 index 30bf677904825aa22ab4e4a1907455e9dd6d5c40..b40ef97c3865d171b53f3577ed7cc52b5d0c83ac 100644 --- a/src/LIB/SURCOUCHE/src/mode_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_ll.f90 @@ -1,20 +1,14 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-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. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information +! Modifications +! P. Wautelet 14/06/2019: use mode_* instead of modi_* !----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ############## - MODULE MODE_ll -! ############## +!############# +MODULE MODE_ll +!############# ! !! Purpose !! ------- @@ -23,24 +17,21 @@ ! of the user interface ! !------------------------------------------------------------------------------ -! - USE MODD_ARGSLIST_ll -! - USE MODI_INIT_ll -! - USE MODI_ADDnDFIELD_ll - USE MODI_DELnDFIELD_ll -! - USE MODI_ADDDELFIELD2_ll ! - USE MODI_UPDATE_ll - USE MODI_REMAP_ll -! - USE MODI_SUM_ll -! - USE MODI_GET_ll - USE MODI_LOCATION_ll -! - USE MODI_NEST_ll -! +use modd_argslist_ll + +use mode_argslist_ll +use mode_argslist2_ll +use mode_exchange_ll +use mode_exchange2_ll +use mode_gather_ll +use mode_init_ll +use mode_lb_ll +use mode_ls_ll +use mode_nest_ll +use mode_reduce_sum +use mode_scatter_ll +use mode_sum_ll +use mode_tools_ll + END MODULE MODE_ll diff --git a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 index 5c0a214647c187c66834f224504bfb8495187782..053f3fb527933efcebcac4b6a7eaab4f4f33bac3 100644 --- a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 @@ -54,11 +54,21 @@ ! !------------------------------------------------------------------------------ ! - USE MODD_STRUCTURE_ll +USE MODD_STRUCTURE_ll - use mode_msg -! - CONTAINS +use mode_msg + +implicit none + +interface SET_LSFIELD_1WAY_ll + module procedure SET_LS2DFIELD_1WAY_ll, SET_LS3DFIELD_1WAY_ll +end interface + +interface SET_LSFIELD_2WAY_ll + module procedure SET_LS2DFIELD_2WAY_ll, SET_LS3DFIELD_2WAY_ll +end interface + +CONTAINS ! ! ########################################################### SUBROUTINE SET_LS2DFIELD_1WAY_ll(P2DFIELD, PTFIELD, KMODEL) diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 index e923178060930ef2ce34ba378651808749d34a60..15727c382c58ae8b7129bb95a03fff771eb02b73 100644 --- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 @@ -20,6 +20,7 @@ MODULE MODE_MPPDB ! use ISO_FORTRAN_ENV, only: OUTPUT_UNIT + use MODE_TOOLS_ll, only: GET_GLOBALDIMS_ll, GET_INDICE_ll use mode_msg use modi_tools_c @@ -624,7 +625,6 @@ CONTAINS use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODE_DISTRIB_LB - USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll IMPLICIT NONE diff --git a/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90 b/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90 new file mode 100644 index 0000000000000000000000000000000000000000..a0411f18362f28095cb9bf6a06798433aa19375b --- /dev/null +++ b/src/LIB/SURCOUCHE/src/mode_reduce_sum.f90 @@ -0,0 +1,742 @@ +!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. +!----------------------------------------------------------------- +! Modifications: +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! P. Wautelet 21/06/2019: mode REDUCESUM_ll subroutine to mode_reduce_sum.f90 (to remove circular dependencies between modules) +!----------------------------------------------------------------- +module mode_reduce_sum + +USE MODD_MPIF +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD +USE modd_repro_sum + +implicit none + +INTERFACE REDUCESUM_ll + MODULE PROCEDURE REDUCE_SUM_0DD_ll, REDUCE_SUM_1DD_ll, & + REDUCE_SUM_0D_ll, REDUCE_SUM_1D_ll, REDUCE_SUM_2D_ll, REDUCE_SUM_3D_ll, & + REDUCE_SUM_I0D_ll, REDUCE_SUM_I1D_ll, REDUCE_SUM_I2D_ll, REDUCE_SUM_I3D_ll +END INTERFACE + +contains + + SUBROUTINE INIT_DD(KINFO) + IMPLICIT NONE + INTEGER, INTENT(OUT) :: KINFO ! MPI return status + ! + ! define the double-double for MPI + ! + CALL MPI_TYPE_CONTIGUOUS(2, MNHREAL_MPI ,MNH_DOUBLE_DOUBLE , KINFO) + CALL MPI_TYPE_COMMIT(MNH_DOUBLE_DOUBLE , KINFO) + ! + ! define the double-double sum = MNH_SUM_DD for MPI + ! + CALL MPI_OP_CREATE(DDPDD, .TRUE., MNH_SUM_DD, KINFO) + FIRST_CALL_DD = .FALSE. + ! + END SUBROUTINE INIT_DD + + PURE SUBROUTINE DDPDD (dda, ddb, len, itype) + !---------------------------------------------------------------------- + ! + ! Purpose: + ! Modification of original codes written by David H. Bailey + ! This subroutine computes ddb(i) = dda(i)+ddb(i) + ! for use with MPI_*_REDUCE + ! + !---------------------------------------------------------------------- + ! + ! Arguments + ! + INTEGER, INTENT(in) :: len ! array length + TYPE(DOUBLE_DOUBLE), INTENT(in) :: dda(len) ! input + TYPE(DOUBLE_DOUBLE), INTENT(inout) :: ddb(len) ! result + INTEGER, INTENT(in) :: itype ! unused + ! + ! Local workspace + ! + REAL e, t1, t2 + INTEGER i + ! + !----------------------------------------------------------------------- + ! + DO i = 1, len + ! + ! Compute dda + ddb using Knuth's trick. + ! + t1 = dda(i)%R + ddb(i)%R + e = t1 - dda(i)%R + t2 = ((ddb(i)%R - e) + (dda(i)%R - (t1 - e))) & + + dda(i)%E + ddb(i)%E + ! + ! The result is t1 + t2, after normalization. + ! + ddb(i)%R = t1 + t2 + ddb(i)%E = t2 - ((t1 + t2) - t1) + ENDDO + + RETURN + + END SUBROUTINE DDPDD + +! ######################################## + SUBROUTINE REDUCE_SUM_0DD_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_0DD_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the scalar argument PRES on processors. +! +! REDUCE_SUM_0Q_ll is the routine for scalar REAL*16 argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_0Q_ll, each processor +! computes its local sum PRES; in REDUCE_SUM_0Q_ll +! we reduce this values and return the global sum +! in the PRES variable REAL*16. +! +!! External +!! -------- +! +!! Implicit Arguments +!! ------------------ +! +! +!! Author +!! ------ +! Ph. Kloos * CNRM - CERFACS * +! +!! Modifications +!! ------------- +! Original 27/06/98 +! R. Guivarch 09/07/98 Same argument PRES INOUT +! +!----------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + TYPE(DOUBLE_DOUBLE), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + TYPE(DOUBLE_DOUBLE) :: ZRES ! sum +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IF (FIRST_CALL_DD) CALL INIT_DD(KINFO) + ZRES%R = 0.0 ; ZRES%E = 0.0 + CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNH_DOUBLE_DOUBLE , & + MNH_SUM_DD, NMNH_COMM_WORLD, KINFO) + + PRES = ZRES +! +!------------------------------------------------------------------------------- +! +END SUBROUTINE REDUCE_SUM_0DD_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_0D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_0D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the scalar argument PRES on processors. +! +! REDUCE_SUM_0D_ll is the routine for scalar argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_0D_ll, each processor +! computes its local sum PRES; in REDUCE_SUM_0D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Implicit Arguments +!! ------------------ +! +! +!! Author +!! ------ +! Ph. Kloos * CNRM - CERFACS * +! +!! Modifications +!! ------------- +! Original 27/06/98 +! R. Guivarch 09/07/98 Same argument PRES INOUT +! +!----------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + REAL, INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + REAL :: ZRES ! Intermediate result +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHREAL_MPI, & + MPI_SUM, NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_0D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_1DD_ll(PRES, KINFO) +! ######################################## +! + +!! Author +!! ------ +! J.Escobar 22/10/2010 +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum + +! +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IF (FIRST_CALL_DD) CALL INIT_DD(KINFO) + ZRES%R = 0.0 ; ZRES%E = 0.0 + CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES), MNH_DOUBLE_DOUBLE , & + MNH_SUM_DD, NMNH_COMM_WORLD, KINFO) +PRES = ZRES +! +!------------------------------------------------------------------------------- +! +END SUBROUTINE REDUCE_SUM_1DD_ll +! + +! ######################################## + SUBROUTINE REDUCE_SUM_1D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_1D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the one-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_1D_ll is the routine for 1D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_1D_ll, each processor +! computes its local 1D sum PRES; in REDUCE_SUM_1D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Implicit Arguments +!! ------------------ +! +! +!! Author +!! ------ +! Ph. Kloos * CNRM - CERFACS * +! +!! Modifications +!! ------------- +! Original 27/06/98 +! R. Guivarch 09/07/98 Same argument PRES INOUT +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + REAL, DIMENSION(:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + REAL, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHREAL_MPI, & + MPI_SUM, NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_1D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_2D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_2D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the two-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_2D_ll is the routine for 2D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_2D_ll, each processor +! computes its local 2D sum PRES; in REDUCE_SUM_2D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Implicit Arguments +!! ------------------ +! +! +!! Author +!! ------ +! Ph. Kloos * CNRM - CERFACS * +! +!! Modifications +!! ------------- +! Original 27/06/98 +! R. Guivarch 09/07/98 Same argument PRES INOUT +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum +! + INTEGER :: IDIM +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IDIM = SIZE(PRES,1) * SIZE(PRES,2) +! + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & + NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_2D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_3D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_3D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the three-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_3D_ll is the routine for 3D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_3D_ll, each processor +! computes its local 3D sum PRES; in REDUCE_SUM_3D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Implicit Arguments +!! ------------------ +! +! +!! Author +!! ------ +! Ph. Kloos * CNRM - CERFACS * +! +!! Modifications +!! ------------- +! Original 27/06/98 +! R. Guivarch 09/07/98 Same argument PRES INOUT +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate + ! sum +! + INTEGER :: IDIM +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) +! + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & + NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_3D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_I0D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_I0D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the scalar argument PRES on processors. +! +! REDUCE_SUM_I0D_ll is the routine for integer scalar argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_I0D_ll, each processor +! computes its local sum PRES; in REDUCE_SUM_I0D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Author +!! ------ +! D. Gazen * L.A. * +! +!! Modifications +!! ------------- +! Original 4/09/2000 +! +!----------------------------------------------------------------- +! +!* 0. DECLARATIONS +! +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + INTEGER, INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + INTEGER :: ZRES ! Intermediate result +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, & + MPI_SUM, NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_I0D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_I1D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_I1D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the one-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_I1D_ll is the routine for integer 1D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_I1D_ll, each processor +! computes its local 1D sum PRES; in REDUCE_SUM_I1D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Author +!! ------ +! D. Gazen * L.A. * +! +!! Modifications +!! ------------- +! Original 4/09/2000 +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + INTEGER, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, & + MPI_SUM, NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_I1D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_I2D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_2D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the two-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_I2D_ll is the routine for integer 2D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_I2D_ll, each processor +! computes its local 2D sum PRES; in REDUCE_SUM_I2D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Author +!! ------ +! D. Gazen * L.A. * +! +!! Modifications +!! ------------- +! Original 4/09/2000 +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum +! + INTEGER :: IDIM +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IDIM = SIZE(PRES,1) * SIZE(PRES,2) +! + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & + NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_I2D_ll +! +! ######################################## + SUBROUTINE REDUCE_SUM_I3D_ll(PRES, KINFO) +! ######################################## +! +!!**** *REDUCE_SUM_I3D_ll*- +! +!! Purpose +!! ------- +! This routine calculates the sum of the values +! of the each entry of the three-dimensional vector PRES +! on all processors. +! +! REDUCE_SUM_I3D_ll is the routine for 3D argument +! of the generic routine REDUCESUM_ll. +! +!! Method +!! ------ +! Before the call to REDUCE_SUM_I3D_ll, each processor +! computes its local 3D sum PRES; in REDUCE_SUM_I3D_ll +! we reduce this values and return the global sum +! in the PRES variable. +! +!! External +!! -------- +! +!! Author +!! ------ +! D. Gazen * L.A. * +! +!! Modifications +!! ------------- +! Original 4/09/2000 +! +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! + IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! + INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum +! + INTEGER, INTENT(OUT) :: KINFO ! MPI return status +! +!* 0.2 Declarations of local variables : +! + INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate + ! sum +! + INTEGER :: IDIM +! +!------------------------------------------------------------------------------- +! +!* 1. CALL THE MPI_ALLREDUCE ROUTINE +! ------------------------------ +! + IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) +! + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & + NMNH_COMM_WORLD, KINFO) +! + PRES = ZRES +! +!------------------------------------------------------------------------------- +! + END SUBROUTINE REDUCE_SUM_I3D_ll +! +!------------------------------------------------------------------------------- +! +end module mode_reduce_sum diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 index 77d08c6866ce897efa35164f450f5b2ed04e74b3..3ab67f7ba8364b8e0c4a5516bf4c44c4f99e0b15 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 @@ -37,12 +37,18 @@ ! !------------------------------------------------------------------------------ ! - USE MODD_MPIF - !JUANZ - USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD - !JUANZ -! -! INCLUDE 'mpif.h' +USE MODD_MPIF +USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD + +implicit none + +interface GMAXLOC_ll + module procedure GMAXLOC1D_ll, GMAXLOC2D_ll, GMAXLOC3D_ll +end interface + +interface GMINLOC_ll + module procedure GMINLOC1D_ll, GMINLOC2D_ll, GMINLOC3D_ll +end interface ! CONTAINS ! diff --git a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 index b5901a18c048334e0bfdf6649bc8158150ee27ce..e462ac4409840403d7c3f591481cb10f51083bb0 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 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. @@ -6,6 +6,7 @@ ! Modifications: ! J. Escobar 15/09/2015: WENO5 & JPHEXT <> 1 ! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! P. Wautelet 21/06/2019: mode REDUCESUM_ll subroutine to mode_reduce_sum.f90 (to remove circular dependencies between modules) !----------------------------------------------------------------- ! ################## @@ -57,11 +58,15 @@ ! !------------------------------------------------------------------------------ ! - USE MODD_MPIF - use modd_precision, only: MNHINT_MPI, MNHREAL_MPI - USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD +USE MODD_MPIF +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD + +use mode_reduce_sum + +implicit none ! - CONTAINS +CONTAINS ! ! ####################################################### FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & @@ -118,7 +123,7 @@ ! USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -368,7 +373,7 @@ USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -670,7 +675,7 @@ USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -971,7 +976,7 @@ USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! USE MODE_TOOLS_ll ! @@ -1205,7 +1210,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll USE MODD_VAR_ll, ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, NPROC ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -1405,7 +1410,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -1617,7 +1622,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -2370,664 +2375,4 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll END SUBROUTINE SUM_DIM1_ll ! -! ######################################## - SUBROUTINE REDUCE_SUM_0DD_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_0DD_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the scalar argument PRES on processors. -! -! REDUCE_SUM_0Q_ll is the routine for scalar REAL*16 argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_0Q_ll, each processor -! computes its local sum PRES; in REDUCE_SUM_0Q_ll -! we reduce this values and return the global sum -! in the PRES variable REAL*16. -! -!! External -!! -------- -! -!! Implicit Arguments -!! ------------------ -! -! -!! Author -!! ------ -! Ph. Kloos * CNRM - CERFACS * -! -!! Modifications -!! ------------- -! Original 27/06/98 -! R. Guivarch 09/07/98 Same argument PRES INOUT -! -!----------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - USE MODE_REPRO_SUM -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - TYPE(DOUBLE_DOUBLE), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - TYPE(DOUBLE_DOUBLE) :: ZRES ! sum -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IF (FIRST_CALL_DD) CALL INIT_DD(KINFO) - ZRES%R = 0.0 ; ZRES%E = 0.0 - CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNH_DOUBLE_DOUBLE , & - MNH_SUM_DD, NMNH_COMM_WORLD, KINFO) - - PRES = ZRES -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE REDUCE_SUM_0DD_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_0D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_0D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the scalar argument PRES on processors. -! -! REDUCE_SUM_0D_ll is the routine for scalar argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_0D_ll, each processor -! computes its local sum PRES; in REDUCE_SUM_0D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Implicit Arguments -!! ------------------ -! -! -!! Author -!! ------ -! Ph. Kloos * CNRM - CERFACS * -! -!! Modifications -!! ------------- -! Original 27/06/98 -! R. Guivarch 09/07/98 Same argument PRES INOUT -! -!----------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - REAL, INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - REAL :: ZRES ! Intermediate result -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHREAL_MPI, & - MPI_SUM, NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_0D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_1DD_ll(PRES, KINFO) -! ######################################## -! - -!! Author -!! ------ -! J.Escobar 22/10/2010 -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! -! - USE MODE_REPRO_SUM - - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - TYPE(DOUBLE_DOUBLE), DIMENSION(:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - TYPE(DOUBLE_DOUBLE), DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum - -! -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IF (FIRST_CALL_DD) CALL INIT_DD(KINFO) - ZRES%R = 0.0 ; ZRES%E = 0.0 - CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES), MNH_DOUBLE_DOUBLE , & - MNH_SUM_DD, NMNH_COMM_WORLD, KINFO) -PRES = ZRES -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE REDUCE_SUM_1DD_ll -! - -! ######################################## - SUBROUTINE REDUCE_SUM_1D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_1D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the one-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_1D_ll is the routine for 1D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_1D_ll, each processor -! computes its local 1D sum PRES; in REDUCE_SUM_1D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Implicit Arguments -!! ------------------ -! -! -!! Author -!! ------ -! Ph. Kloos * CNRM - CERFACS * -! -!! Modifications -!! ------------- -! Original 27/06/98 -! R. Guivarch 09/07/98 Same argument PRES INOUT -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - REAL, DIMENSION(:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - REAL, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHREAL_MPI, & - MPI_SUM, NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_1D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_2D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_2D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the two-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_2D_ll is the routine for 2D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_2D_ll, each processor -! computes its local 2D sum PRES; in REDUCE_SUM_2D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Implicit Arguments -!! ------------------ -! -! -!! Author -!! ------ -! Ph. Kloos * CNRM - CERFACS * -! -!! Modifications -!! ------------- -! Original 27/06/98 -! R. Guivarch 09/07/98 Same argument PRES INOUT -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - REAL, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum -! - INTEGER :: IDIM -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IDIM = SIZE(PRES,1) * SIZE(PRES,2) -! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & - NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_2D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_3D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_3D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the three-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_3D_ll is the routine for 3D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_3D_ll, each processor -! computes its local 3D sum PRES; in REDUCE_SUM_3D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Implicit Arguments -!! ------------------ -! -! -!! Author -!! ------ -! Ph. Kloos * CNRM - CERFACS * -! -!! Modifications -!! ------------- -! Original 27/06/98 -! R. Guivarch 09/07/98 Same argument PRES INOUT -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - REAL, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate - ! sum -! - INTEGER :: IDIM -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) -! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & - NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_3D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_I0D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_I0D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the scalar argument PRES on processors. -! -! REDUCE_SUM_I0D_ll is the routine for integer scalar argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_I0D_ll, each processor -! computes its local sum PRES; in REDUCE_SUM_I0D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Author -!! ------ -! D. Gazen * L.A. * -! -!! Modifications -!! ------------- -! Original 4/09/2000 -! -!----------------------------------------------------------------- -! -!* 0. DECLARATIONS -! -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - INTEGER, INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - INTEGER :: ZRES ! Intermediate result -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, & - MPI_SUM, NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_I0D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_I1D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_I1D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the one-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_I1D_ll is the routine for integer 1D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_I1D_ll, each processor -! computes its local 1D sum PRES; in REDUCE_SUM_I1D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Author -!! ------ -! D. Gazen * L.A. * -! -!! Modifications -!! ------------- -! Original 4/09/2000 -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - INTEGER, DIMENSION(:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - INTEGER, DIMENSION(SIZE(PRES,1)) :: ZRES ! Intermediate sum -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, & - MPI_SUM, NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_I1D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_I2D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_2D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the two-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_I2D_ll is the routine for integer 2D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_I2D_ll, each processor -! computes its local 2D sum PRES; in REDUCE_SUM_I2D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Author -!! ------ -! D. Gazen * L.A. * -! -!! Modifications -!! ------------- -! Original 4/09/2000 -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - INTEGER, DIMENSION(:,:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2)) :: ZRES ! Intermediate sum -! - INTEGER :: IDIM -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IDIM = SIZE(PRES,1) * SIZE(PRES,2) -! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & - NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_I2D_ll -! -! ######################################## - SUBROUTINE REDUCE_SUM_I3D_ll(PRES, KINFO) -! ######################################## -! -!!**** *REDUCE_SUM_I3D_ll*- -! -!! Purpose -!! ------- -! This routine calculates the sum of the values -! of the each entry of the three-dimensional vector PRES -! on all processors. -! -! REDUCE_SUM_I3D_ll is the routine for 3D argument -! of the generic routine REDUCESUM_ll. -! -!! Method -!! ------ -! Before the call to REDUCE_SUM_I3D_ll, each processor -! computes its local 3D sum PRES; in REDUCE_SUM_I3D_ll -! we reduce this values and return the global sum -! in the PRES variable. -! -!! External -!! -------- -! -!! Author -!! ------ -! D. Gazen * L.A. * -! -!! Modifications -!! ------------- -! Original 4/09/2000 -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! - IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! - INTEGER, DIMENSION(:,:,:), INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! -!* 0.2 Declarations of local variables : -! - INTEGER, DIMENSION(SIZE(PRES,1),SIZE(PRES,2),SIZE(PRES,3)) :: ZRES ! Intermediate - ! sum -! - INTEGER :: IDIM -! -!------------------------------------------------------------------------------- -! -!* 1. CALL THE MPI_ALLREDUCE ROUTINE -! ------------------------------ -! - IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) -! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & - NMNH_COMM_WORLD, KINFO) -! - PRES = ZRES -! -!------------------------------------------------------------------------------- -! - END SUBROUTINE REDUCE_SUM_I3D_ll -! -!------------------------------------------------------------------------------- -! END MODULE MODE_SUM_ll diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 index 8378386e1c732809ab0d9849611e476bbed47304..b5fbe7198a2e4bd55d549e75aa671f105bef252e 100644 --- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 @@ -47,16 +47,24 @@ ! Juan/Didier 12/03/2009: array bound bug correction with 1proc/MPIVIDE ! J. Escobar 27/06/2011 correction for gridnesting with different SHAPE ! - USE MODD_MPIF - use modd_precision, only: MNHINT_MPI, MNHREAL_MPI - USE MODD_STRUCTURE_ll - !JUANZ - USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD - !JUANZ +USE MODD_MPIF +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI +USE MODD_STRUCTURE_ll +USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD - use mode_msg -! - CONTAINS +use mode_msg + +implicit none + +interface GET_GLOBALSLICE_ll + module procedure GET_1DGLOBALSLICE_ll, GET_2DGLOBALSLICE_ll +end interface + +interface GET_SLICE_ll + module procedure GET_1DSLICE_ll, GET_2DSLICE_ll +end interface + +CONTAINS SUBROUTINE SLIDE_COORD(KDIM_DATA,KDIM_PROC,THIS_PROC,KOR,KEND) diff --git a/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90 b/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90 deleted file mode 100644 index 5d3722292a18f4bf1d3bd9fccbbbff34363a8c02..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_adddelfield2_ll.f90 +++ /dev/null @@ -1,50 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ########################### - MODULE MODI_ADDDELFIELD2_ll -! ########################### -! -INTERFACE -! -!! ################################################# - SUBROUTINE ADD_FIELD2_ll( TPLIST_ll, TPHALO2_ll ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll ! list of HALO2 - TYPE(HALO2_ll), TARGET :: TPHALO2_ll ! HALO2 to be added -! - END SUBROUTINE ADD_FIELD2_ll -! -!! ######################################################## - SUBROUTINE DEL_FIELD2_ll( TPLIST_ll, TPHALO2_ll, KINFO ) -!! ######################################################## -! - USE MODD_ARGSLIST_ll, ONLY : HALO2_ll, HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPLIST_ll ! list of fields - TYPE(HALO2_ll), TARGET :: TPHALO2_ll! field to be deleted - ! from the list of fields - INTEGER :: KINFO ! return status : - ! 0 if PFIELD has been found - ! 1 otherwise -! - END SUBROUTINE DEL_FIELD2_ll -! -END INTERFACE -! -END MODULE MODI_ADDDELFIELD2_ll - diff --git a/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90 b/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90 deleted file mode 100644 index 043aa02d0f8ad3fd05de721e2429d5f4bff5969d..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_addndfield_ll.f90 +++ /dev/null @@ -1,70 +0,0 @@ -!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. -!----------------------------------------------------------------- -! Modifications: -! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine -!----------------------------------------------------------------- -! ######################### - MODULE MODI_ADDnDFIELD_ll -! ######################### -! -INTERFACE -! -!! ####################################################### - SUBROUTINE ADD1DFIELD_ll( HDIR, TPLIST, PFIELD, HNAME ) -!! ####################################################### -! - USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll -! - CHARACTER(LEN=1), INTENT(IN) :: HDIR ! direction of the field - ! ("X" or "Y") - TYPE(LIST1D_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:), TARGET :: PFIELD ! field to be added - ! to the list of fields - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - END SUBROUTINE ADD1DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD2DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:,:), TARGET :: PFIELD ! field to be added - ! to the list of fields - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - END SUBROUTINE ADD2DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD3DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:,:,:), TARGET :: PFIELD ! field to be added - ! to the list of fields - character(len=*), intent(in) :: HNAME ! Name of the field to be added -! - END SUBROUTINE ADD3DFIELD_ll -! -!! ################################################# - SUBROUTINE ADD4DFIELD_ll( TPLIST, PFIELD, HNAME ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - type(list_ll), pointer :: tplist ! list of fields - real, dimension(:,:,:,:), intent(in) :: pfield ! field to be added to the list of fields - character(len=*), intent(in) :: hname ! name of the field to be added -! - END SUBROUTINE ADD4DFIELD_ll -! -END INTERFACE -! -END MODULE MODI_ADDnDFIELD_ll diff --git a/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90 b/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90 deleted file mode 100644 index dc4dbc89f353721f10ecc5291280c4c7803a0556..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_delndfield_ll.f90 +++ /dev/null @@ -1,78 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ######################## - MODULE MODI_DELnDFIELD_ll -! ######################### -! -INTERFACE -! -!! ################################################# - SUBROUTINE DEL1DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:), TARGET :: PFIELD ! field to be deleted - ! from the list of fields - INTEGER, INTENT(OUT) :: KINFO ! return status : - ! 0 if PFIELD has been found - ! 1 otherwise. -! - END SUBROUTINE DEL1DFIELD_ll -! -!! ################################################# - SUBROUTINE DEL2DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:,:), TARGET :: PFIELD ! field to be deleted - ! from the list of fields - INTEGER, INTENT(OUT) :: KINFO ! return status : - ! 0 if PFIELD has been found - ! 1 otherwise. -! - END SUBROUTINE DEL2DFIELD_ll -! -!! ################################################# - SUBROUTINE DEL3DFIELD_ll( TPLIST, PFIELD, KINFO ) -!! ################################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields - REAL, DIMENSION(:,:,:), TARGET :: PFIELD ! field to be deleted - ! from the list of fields - INTEGER, INTENT(OUT) :: KINFO ! return status : - ! 0 if PFIELD has been found - ! 1 otherwise. -! - END SUBROUTINE DEL3DFIELD_ll -! -!! ################################# - SUBROUTINE CLEANLIST_ll( TPLIST ) -!! ################################# -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! list of fields -! - END SUBROUTINE CLEANLIST_ll -! -END INTERFACE -! -END MODULE MODI_DELnDFIELD_ll diff --git a/src/LIB/SURCOUCHE/src/modi_gather.f90 b/src/LIB/SURCOUCHE/src/modi_gather.f90 deleted file mode 100644 index edda3c46eb26e8e5dfb27db12f5dc57730f98d1e..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_gather.f90 +++ /dev/null @@ -1,54 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -MODULE MODI_GATHER_ll -! -INTERFACE GATHERALL_FIELD_ll - SUBROUTINE GATHERALL_X1(HDIR,PSEND,PRECV,KRESP) - CHARACTER(LEN=*), INTENT(IN) :: HDIR - REAL,DIMENSION(:), INTENT(IN) :: PSEND - REAL,DIMENSION(:), INTENT(INOUT):: PRECV - INTEGER, INTENT(INOUT):: KRESP - END SUBROUTINE GATHERALL_X1 - - SUBROUTINE GATHERALL_X2(HDIR,PSEND,PRECV,KRESP) - CHARACTER(LEN=*), INTENT(IN) :: HDIR - REAL,DIMENSION(:,:), INTENT(IN) :: PSEND - REAL,DIMENSION(:,:), INTENT(INOUT):: PRECV - INTEGER, INTENT(INOUT):: KRESP - END SUBROUTINE GATHERALL_X2 - - SUBROUTINE GATHERALL_X3(HDIR,PSEND,PRECV,KRESP) - CHARACTER(LEN=*), INTENT(IN) :: HDIR - REAL,DIMENSION(:,:,:), INTENT(IN) :: PSEND - REAL,DIMENSION(:,:,:), INTENT(INOUT):: PRECV - INTEGER, INTENT(INOUT):: KRESP - END SUBROUTINE GATHERALL_X3 - - SUBROUTINE GATHERALL_N1(HDIR,KSEND,KRECV,KRESP) - CHARACTER(LEN=*), INTENT(IN) :: HDIR - INTEGER,DIMENSION(:), INTENT(IN) :: KSEND - INTEGER,DIMENSION(:), INTENT(INOUT):: KRECV - INTEGER, INTENT(INOUT):: KRESP - END SUBROUTINE GATHERALL_N1 - - SUBROUTINE GATHERALL_N2(HDIR,KSEND,KRECV,KRESP) - CHARACTER(LEN=*), INTENT(IN) :: HDIR - INTEGER,DIMENSION(:,:), INTENT(IN) :: KSEND - INTEGER,DIMENSION(:,:), INTENT(INOUT):: KRECV - INTEGER, INTENT(INOUT):: KRESP - END SUBROUTINE GATHERALL_N2 -END INTERFACE -! -END MODULE MODI_GATHER_ll diff --git a/src/LIB/SURCOUCHE/src/modi_get_ll.f90 b/src/LIB/SURCOUCHE/src/modi_get_ll.f90 deleted file mode 100644 index f77ebb3ea5899a9b0d8e4f078c1fe13bd40ca116..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_get_ll.f90 +++ /dev/null @@ -1,143 +0,0 @@ -!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 for details. version 1. -!----------------------------------------------------------------- - -! ################## - MODULE MODI_GET_ll -! ################## -! -INTERFACE -! -!! ################################################## - SUBROUTINE GET_DIM_EXT_ll( HSPLIT, KXDIM, KYDIM ) -!! ################################################## -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXDIM, KYDIM -! - END SUBROUTINE GET_DIM_EXT_ll -! -!! ################################################### - SUBROUTINE GET_DIM_PHYS_ll( HSPLIT, KXDIM, KYDIM ) -!! ################################################### -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXDIM, KYDIM -! - END SUBROUTINE GET_DIM_PHYS_ll -! -!! ########################################## - SUBROUTINE GET_OR_ll( HSPLIT, KXOR, KYOR ) -!! ########################################## -! - CHARACTER(len=1), INTENT(IN) :: HSPLIT - INTEGER, INTENT(OUT) :: KXOR, KYOR -! - END SUBROUTINE GET_OR_ll -! -!! #################################################### - SUBROUTINE GET_INDICE_ll( KXOR, KYOR, KXEND, KYEND ) -!! #################################################### -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND -! - END SUBROUTINE GET_INDICE_ll -! -!! ########################################## - SUBROUTINE GET_GLOBALDIMS_ll(KIMAX, KJMAX) -!! ########################################## -! - INTEGER, INTENT(OUT) :: KIMAX, KJMAX ! current model dimensions -! - END SUBROUTINE GET_GLOBALDIMS_ll -! -!! ###################################################### - SUBROUTINE GET_PHYSICAL_ll( KXOR, KYOR, KXEND, KYEND ) -!! ###################################################### -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND -! - END SUBROUTINE GET_PHYSICAL_ll -! -!! ############################################################### - SUBROUTINE GET_INTERSECTION_ll( KXOR, KYOR, KXEND, KYEND, & - KXORI, KYORI, KXENDI, KYENDI, & - HDOM, KINFO, KIP ) -!! ############################################################### -! - CHARACTER(LEN=4), INTENT(IN) :: HDOM ! 'EXTE' for extended subdomain - ! 'PHYS' for physical subdomain - INTEGER, INTENT(IN) :: KXOR, KYOR, & ! Coordinates of the - KXEND, KYEND ! region -! - INTEGER, INTENT(OUT) :: KXORI, KYORI, & ! Global Coordinates - KXENDI, KYENDI ! of the intersection - INTEGER, INTENT(OUT) :: KINFO ! Returned Info - INTEGER, INTENT(IN), OPTIONAL:: KIP ! Processor number - ! (or subdomain number) - END SUBROUTINE GET_INTERSECTION_ll -! -END INTERFACE -! -INTERFACE GET_GLOBALSLICE_ll -! -!! #################################################################### - SUBROUTINE GET_1DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, & - KB, KE, KERR ) -!! #################################################################### -! - REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY - CHARACTER(LEN=1), INTENT(IN) :: HDIR - INTEGER, INTENT(IN) :: KLOC - REAL, DIMENSION(:), INTENT(OUT) :: PGLOBALSLICE - INTEGER, OPTIONAL :: KB, KE, KERR -! - END SUBROUTINE GET_1DGLOBALSLICE_ll -! -!! #################################################################### - SUBROUTINE GET_2DGLOBALSLICE_ll( PARRAY, HDIR, KLOC, PGLOBALSLICE, & - KB, KE, KKB, KKE, KERR ) -!! #################################################################### -! - REAL, DIMENSION(:,:,:) :: PARRAY - CHARACTER(LEN=1) :: HDIR - INTEGER :: KLOC - REAL, DIMENSION(:,:) :: PGLOBALSLICE - INTEGER, OPTIONAL :: KB, KE, KKB, KKE, KERR -! - END SUBROUTINE GET_2DGLOBALSLICE_ll -! -END INTERFACE -! -INTERFACE GET_SLICE_ll -! -!! ##################################################################### - SUBROUTINE GET_1DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, KB, KE, KERR ) -!! ##################################################################### -! - REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY - CHARACTER(LEN=1), INTENT(IN) :: HDIR - INTEGER, INTENT(IN) :: KLOC - REAL, DIMENSION(:), INTENT(OUT) :: PSLICE - INTEGER, OPTIONAL :: KB, KE, KERR -! - END SUBROUTINE GET_1DSLICE_ll -! -!! ######################################################## - SUBROUTINE GET_2DSLICE_ll( PARRAY, HDIR, KLOC, PSLICE, & - KB, KE, KKB, KKE, KERR ) -!! ######################################################## -! - REAL, DIMENSION(:,:,:) :: PARRAY - CHARACTER(LEN=1) :: HDIR - INTEGER :: KLOC - REAL, DIMENSION(:,:) :: PSLICE - INTEGER, OPTIONAL :: KB, KE, KKB, KKE, KERR -! - END SUBROUTINE GET_2DSLICE_ll -! -END INTERFACE -! -END MODULE MODI_GET_ll diff --git a/src/LIB/SURCOUCHE/src/modi_init_ll.f90 b/src/LIB/SURCOUCHE/src/modi_init_ll.f90 deleted file mode 100644 index ecf09a18d3d3f1cc71bf7555cb7f11740f4007d5..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_init_ll.f90 +++ /dev/null @@ -1,188 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ################### - MODULE MODI_INIT_ll -! ################### -!! -INTERFACE -! -! ######################################### - SUBROUTINE SET_SPLITTING_ll( HSPLITTING ) -! ######################################### -! - CHARACTER(LEN=*) :: HSPLITTING -! - END SUBROUTINE SET_SPLITTING_ll -! -! ################################## - SUBROUTINE SET_LBX_ll( KLBX, KMI ) -! ################################## -! - CHARACTER(LEN=*) :: KLBX - INTEGER :: KMI -! - END SUBROUTINE SET_LBX_ll -! -! ################################## - SUBROUTINE SET_LBY_ll( KLBY, KMI ) -! ################################## -! - CHARACTER(LEN=*) :: KLBY - INTEGER :: KMI -! - END SUBROUTINE SET_LBY_ll -! -! ############################################ - SUBROUTINE SET_LBSIZEX_ll( KNBRIM, KRIMTAB ) -! ############################################ -! - INTEGER :: KNBRIM - INTEGER, DIMENSION(:) :: KRIMTAB -! - END SUBROUTINE SET_LBSIZEX_ll -! -! ############################################ - SUBROUTINE SET_LBSIZEY_ll( KNBRIM, KRIMTAB ) -! ############################################ -! - INTEGER :: KNBRIM - INTEGER, DIMENSION(:) :: KRIMTAB -! - END SUBROUTINE SET_LBSIZEY_ll -! -! ################################### - SUBROUTINE SET_DIM_ll( KX, KY, KZ ) -! ################################### -! - INTEGER :: KX,KY,KZ -! - END SUBROUTINE SET_DIM_ll -! -! ####################################################### - SUBROUTINE SET_JP_ll( KMODELMAX, KHEXT, KVEXT, KPHALO ) -! ####################################################### -! - INTEGER :: KMODELMAX, KHEXT, KVEXT, KPHALO -! - END SUBROUTINE SET_JP_ll -! -! ######################################## - SUBROUTINE SET_XRATIO_ll( KXRATIO, KMI ) -! ######################################## -! - INTEGER :: KXRATIO, KMI -! - END SUBROUTINE SET_XRATIO_ll -! -! ######################################## - SUBROUTINE SET_YRATIO_ll( KYRATIO, KMI ) -! ######################################## -! - INTEGER :: KYRATIO, KMI -! - END SUBROUTINE SET_YRATIO_ll -! -! ################################## - SUBROUTINE SET_DAD_ll( KDAD, KMI ) -! ################################## -! - INTEGER :: KDAD, KMI -! - END SUBROUTINE SET_DAD_ll -! -! ################################## - SUBROUTINE SET_XOR_ll( KXOR, KMI ) -! ################################## -! - INTEGER :: KXOR, KMI -! - END SUBROUTINE SET_XOR_ll -! -! #################################### - SUBROUTINE SET_XEND_ll( KXEND, KMI ) -! #################################### -! - INTEGER :: KXEND, KMI -! - END SUBROUTINE SET_XEND_ll -! -! ################################## - SUBROUTINE SET_YOR_ll( KYOR, KMI ) -! ################################## -! - INTEGER :: KYOR, KMI -! - END SUBROUTINE SET_YOR_ll -! -! #################################### - SUBROUTINE SET_YEND_ll( KYEND, KMI ) -! #################################### -! - INTEGER :: KYEND, KMI -! - END SUBROUTINE SET_YEND_ll -! -! ######################## - SUBROUTINE SET_DAD0_ll() -! ######################## -! - END SUBROUTINE SET_DAD0_ll -! -! ####################### - SUBROUTINE INIT_LB_ll() -! ####################### -! - END SUBROUTINE INIT_LB_ll -! -! ####################### - SUBROUTINE SET_LB_FIELD_ll(HLBTYPE, PFIELD, PLBXFIELD, PLBYFIELD, IIB, IJB, IIE, IJE, & - SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ) - ! - CHARACTER(LEN=*),INTENT(IN) :: HLBTYPE ! LB type : 'LB','LBU' - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! field on the whole domain (or subdomain) - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBXFIELD ! LB field - X direction - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLBYFIELD ! LB field - Y direction - !beginning and end of the local physical subdomain - INTEGER, INTENT(IN) :: IIB ! indice I Beginning in x direction - INTEGER, INTENT(IN) :: IJB ! indice J Beginning in y direction - INTEGER, INTENT(IN) :: IIE ! indice I End in x direction - INTEGER, INTENT(IN) :: IJE ! indice J End in y direction - INTEGER, INTENT(IN) :: SHIFTWEST, SHIFTEAST, SHIFTSOUTH, SHIFTNORTH ! shifting applied to the indices copied from PFIELD in each direction - ! it is used for LBXUM et LBXVM - ! I do not know why... - ! -! ####################### -! - END SUBROUTINE SET_LB_FIELD_ll -! -! ################################### - SUBROUTINE INI_PARA_ll( KINFO_ll ) -! ################################### -! - INTEGER, INTENT(OUT) :: KINFO_ll -! - END SUBROUTINE INI_PARA_ll -! -! ################################### - SUBROUTINE END_PARA_ll( KINFO_ll ) -! ################################### -! - INTEGER, INTENT(OUT) :: KINFO_ll -! - END SUBROUTINE END_PARA_ll -! -END INTERFACE -! -END MODULE MODI_INIT_ll diff --git a/src/LIB/SURCOUCHE/src/modi_location_ll.f90 b/src/LIB/SURCOUCHE/src/modi_location_ll.f90 deleted file mode 100644 index 4f6e4cdea2fb14c649ed4ff0b1bb5c35e25358dd..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_location_ll.f90 +++ /dev/null @@ -1,51 +0,0 @@ -!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 for details. version 1. -!----------------------------------------------------------------- - -! ####################### - MODULE MODI_LOCATION_ll -! ####################### -! -INTERFACE -! -!! ########################################### - LOGICAL FUNCTION LNORTH_ll( K, HSPLITTING ) -!! ########################################### -! - INTEGER, INTENT(IN), OPTIONAL :: K ! number of the subdomain - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting -! - END FUNCTION LNORTH_ll -! -!! ########################################## - LOGICAL FUNCTION LWEST_ll( K, HSPLITTING ) -!! ########################################## -! - INTEGER, INTENT(IN), OPTIONAL :: K ! number of the subdomain - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting -! - END FUNCTION LWEST_ll -! -!! ########################################### - LOGICAL FUNCTION LSOUTH_ll( K, HSPLITTING ) -!! ########################################### -! - INTEGER, INTENT(IN), OPTIONAL :: K ! number of the subdomain - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting -! - END FUNCTION LSOUTH_ll -! -!! ########################################## - LOGICAL FUNCTION LEAST_ll( K, HSPLITTING ) -!! ########################################## -! - INTEGER, INTENT(IN), OPTIONAL :: K ! number of the subdomain - CHARACTER(len=1), INTENT(IN), OPTIONAL :: HSPLITTING ! kind of splitting -! - END FUNCTION LEAST_ll -! -END INTERFACE -! -END MODULE MODI_LOCATION_ll diff --git a/src/LIB/SURCOUCHE/src/modi_nest_ll.f90 b/src/LIB/SURCOUCHE/src/modi_nest_ll.f90 deleted file mode 100644 index d4fc1b5f7af4e1d7f03128429c9e057974206a11..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_nest_ll.f90 +++ /dev/null @@ -1,195 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ################### - MODULE MODI_NEST_ll -! ################### -! -INTERFACE -! -! ############################################### - SUBROUTINE GET_MODEL_NUMBER_ll( KMODEL_NUMBER ) -! ############################################### -! - INTEGER :: KMODEL_NUMBER -! - END SUBROUTINE GET_MODEL_NUMBER_ll -! -! #################################################### - SUBROUTINE GET_CHILD_DIM_ll( KCHILD, KX, KY, KINFO ) -! #################################################### -! - INTEGER, INTENT(IN) :: KCHILD -! - INTEGER, INTENT(OUT) :: KX, KY -! - INTEGER, INTENT(OUT) :: KINFO -! - END SUBROUTINE GET_CHILD_DIM_ll -! -! ################################################################### - SUBROUTINE GET_FEEDBACK_COORD_ll( KXOR, KYOR, KXEND, KYEND, KINFO ) -! ################################################################### -! - INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND -! - INTEGER, INTENT(OUT) :: KINFO -! - END SUBROUTINE GET_FEEDBACK_COORD_ll -! -! ################################## - SUBROUTINE UNSET_LSFIELD_1WAY_ll() -! ################################## -! - END SUBROUTINE UNSET_LSFIELD_1WAY_ll -! -! ########################################## - SUBROUTINE UNSET_LSFIELD_2WAY_ll( KMODEL ) -! ########################################## -! - INTEGER, INTENT(IN) :: KMODEL -! - END SUBROUTINE UNSET_LSFIELD_2WAY_ll -! -! ######################################### - SUBROUTINE LS_FORCING_ll( KCHILD, KINFO, OEXTRAPOL, OCYCLIC_EXTRAPOL ) -! ######################################### -! - INTEGER, INTENT(IN) :: KCHILD - INTEGER, INTENT(OUT) :: KINFO - LOGICAL, OPTIONAL, INTENT(IN) :: OEXTRAPOL - LOGICAL, OPTIONAL, INTENT(IN) :: OCYCLIC_EXTRAPOL -! - END SUBROUTINE LS_FORCING_ll -! -! ################################### - SUBROUTINE LS_FEEDBACK_ll( KINFO ) -! ################################### -! - INTEGER, INTENT(OUT) :: KINFO -! - END SUBROUTINE LS_FEEDBACK_ll -! - -! ############################# - SUBROUTINE UNSET_LBFIELD_ll() -! ############################# -! - END SUBROUTINE UNSET_LBFIELD_ll -! -! ######################################### - SUBROUTINE LB_FORCING_ll( KCHILD, KINFO ) -! ######################################### -! - INTEGER, INTENT(IN) :: KCHILD -! - INTEGER, INTENT(OUT) :: KINFO -! - END SUBROUTINE LB_FORCING_ll -! -!! ########################################################### - FUNCTION LBFINE2COARSE( KRATIO, KLBSIZE ) RESULT( KCOARSE ) -!! ########################################################### -! - IMPLICIT NONE -! - INTEGER :: KCOARSE -! - INTEGER :: KRATIO, KLBSIZE -! - END FUNCTION LBFINE2COARSE -! -! ######################################### - SUBROUTINE GO_TOMODEL_ll( KMODEL, KINFO ) -! ######################################### -! -INTEGER :: KMODEL, KINFO -! - END SUBROUTINE GO_TOMODEL_ll -! -END INTERFACE -! -INTERFACE SET_LSFIELD_1WAY_ll -! -! ############################################################# - SUBROUTINE SET_LS2DFIELD_1WAY_ll( P2DFIELD, PTFIELD, KMODEL ) -! ############################################################# -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KMODEL -! - END SUBROUTINE SET_LS2DFIELD_1WAY_ll -! -! ############################################################# - SUBROUTINE SET_LS3DFIELD_1WAY_ll( P3DFIELD, PTFIELD, KMODEL ) -! ############################################################# -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD - INTEGER, INTENT(IN) :: KMODEL -! - END SUBROUTINE SET_LS3DFIELD_1WAY_ll -! -END INTERFACE -! -INTERFACE SET_LSFIELD_2WAY_ll -! -! ##################################################### - SUBROUTINE SET_LS2DFIELD_2WAY_ll( P2DFIELD, PTFIELD ) -! ##################################################### -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD -! - END SUBROUTINE SET_LS2DFIELD_2WAY_ll -! -! ##################################################### - SUBROUTINE SET_LS3DFIELD_2WAY_ll( P3DFIELD, PTFIELD ) -! ##################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD -! - END SUBROUTINE SET_LS3DFIELD_2WAY_ll -! -END INTERFACE -! -INTERFACE SET_LBFIELD_ll -! -! ############################################################## - SUBROUTINE SET_LB2DFIELD_ll( P2DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! ############################################################## -! - REAL, DIMENSION(:,:), INTENT(IN), TARGET :: P2DFIELD, PTFIELD -! - INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL -! - CHARACTER(LEN=*), INTENT(IN) :: HSIDE -! - END SUBROUTINE SET_LB2DFIELD_ll -! -! ############################################################## - SUBROUTINE SET_LB3DFIELD_ll( P3DFIELD, PTFIELD, KFINELBSIZE, & - HSIDE, KMODEL ) -! ############################################################## -! - REAL, DIMENSION(:,:,:), INTENT(IN), TARGET :: P3DFIELD, PTFIELD -! - INTEGER, INTENT(IN) :: KFINELBSIZE, KMODEL -! - CHARACTER(LEN=*), INTENT(IN) :: HSIDE -! - END SUBROUTINE SET_LB3DFIELD_ll -! -END INTERFACE -! -END MODULE MODI_NEST_ll diff --git a/src/LIB/SURCOUCHE/src/modi_remap_ll.f90 b/src/LIB/SURCOUCHE/src/modi_remap_ll.f90 deleted file mode 100644 index ab47659f701fbf8b4ecd1c08ddcd1736d25f34d3..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_remap_ll.f90 +++ /dev/null @@ -1,63 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! #################### - MODULE MODI_REMAP_ll -! #################### -! -INTERFACE -! -!! ######################################################## - SUBROUTINE REMAP_2WAY_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -!! ######################################################## -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent - REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field - INTEGER :: KINFO ! return status -! - END SUBROUTINE REMAP_2WAY_X_ll -! -! ######################################################## - SUBROUTINE REMAP_X_2WAY_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ######################################################## -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent - REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field - INTEGER :: KINFO ! return status -! - END SUBROUTINE REMAP_X_2WAY_ll -! -! ##################################################### - SUBROUTINE REMAP_X_Y_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ##################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent - REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field - INTEGER :: KINFO ! return status -! - END SUBROUTINE REMAP_X_Y_ll -! -! ##################################################### - SUBROUTINE REMAP_Y_X_ll( PFIELDIN, PFIELDOUT, KINFO ) -! ##################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDIN ! field to be sent - REAL, DIMENSION(:,:,:), INTENT(OUT) :: PFIELDOUT ! reception field - INTEGER :: KINFO ! return status -! - END SUBROUTINE REMAP_Y_X_ll -! -END INTERFACE -! -END MODULE MODI_REMAP_ll diff --git a/src/LIB/SURCOUCHE/src/modi_scatter.f90 b/src/LIB/SURCOUCHE/src/modi_scatter.f90 deleted file mode 100644 index c85b9f1f667699f290d7acbf1ef3096c7f666403..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_scatter.f90 +++ /dev/null @@ -1,29 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- - -! ######spl - MODULE MODI_SCATTER -! ##################### -! -INTERFACE - SUBROUTINE SCATTER(P1,P2) -! -REAL, DIMENSION(:,:), INTENT(IN) :: P1 -REAL, DIMENSION(:,:), INTENT(OUT) :: P2 -! -END SUBROUTINE SCATTER -! -END INTERFACE -! -END MODULE MODI_SCATTER diff --git a/src/LIB/SURCOUCHE/src/modi_sum_ll.f90 b/src/LIB/SURCOUCHE/src/modi_sum_ll.f90 deleted file mode 100644 index dfef9061dd6354c4ad9a237ff55f6384a0aa227e..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_sum_ll.f90 +++ /dev/null @@ -1,365 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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 MODI_SUM_ll -! ################## -! -INTERFACE -! -!! ####################################################### - FUNCTION EXTRACT_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ####################################################### -! - REAL, DIMENSION(:,:,:), POINTER :: EXTRACT_ll ! Result -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION EXTRACT_ll -! -!! ########################################################### - FUNCTION SUM1D_ll( PFIELD, KDIR, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ########################################################### -! - REAL, DIMENSION(:,:), POINTER :: SUM1D_ll ! Result -! - INTEGER, INTENT(IN) :: KDIR ! Summation direction (1, 2 or 3) -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION SUM1D_ll -! -!! ################################################################### - FUNCTION SUM2D_ll( PFIELD, KDIR1, KDIR2, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ################################################################### -! - REAL, DIMENSION(:), POINTER :: SUM2D_ll ! Result -! - INTEGER, INTENT(IN) :: KDIR1, KDIR2 ! Summation directions (1, 2 or 3) -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION SUM2D_ll -! -!! ##################################################### - FUNCTION SUM3D_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ##################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION SUM3D_ll -! -!! ####################################################################### - FUNCTION SUM_1DFIELD_ll( PFIELD, HDIR, KOR, KEND, KERR ) RESULT( ZSUM ) -!! ####################################################################### -! - REAL, DIMENSION(:), INTENT(IN) :: PFIELD ! 1d Field -! - CHARACTER(LEN=1) :: HDIR ! direction of the 1D field -! - INTEGER, OPTIONAL, INTENT(OUT) :: KERR ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KOR, KEND ! Coordinates of the region -! - REAL :: ZSUM ! result -! - END FUNCTION SUM_1DFIELD_ll -! -!! ######################################################## - REAL FUNCTION MAX_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ######################################################## -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION MAX_ll -! -!! ######################################################## - REAL FUNCTION MIN_ll( PFIELD, KINFO, KXOR, KYOR, KZOR, & - KXEND, KYEND, KZEND ) -!! ######################################################## -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - INTEGER, OPTIONAL, INTENT(IN) :: KXOR, KYOR, KZOR, & ! Coordinates - KXEND, KYEND, KZEND ! of the region -! - END FUNCTION MIN_ll -! -!! ########################################### - FUNCTION SUMMASK_ll( PFIELD, OMASK, KINFO ) -!! ########################################### -! - REAL, DIMENSION(:), POINTER :: SUMMASK_ll ! Result -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK ! 2d Mask -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - END FUNCTION SUMMASK_ll -! -!! #################################################### - REAL FUNCTION SUMMASKCOMP_ll( PFIELD, OMASK, KINFO ) -!! #################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! 3d Field -! - LOGICAL, DIMENSION(:,:), INTENT(IN) :: OMASK ! 2d Mask -! - INTEGER, INTENT(OUT) :: KINFO ! Returned Info -! - END FUNCTION SUMMASKCOMP_ll -! -!! ############################################# - SUBROUTINE SUM_DIM1_ll( PFIELD, PRES, KINFO ) -!! ############################################# -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD - REAL, DIMENSION(:, :), INTENT(OUT) :: PRES -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE SUM_DIM1_ll -! -!! ############################################# - SUBROUTINE SUM_DIM2_ll( PFIELD, PRES, KINFO ) -!! ############################################# -! - REAL, DIMENSION(:), INTENT(IN) :: PFIELD - REAL, DIMENSION(:), INTENT(OUT) :: PRES -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE SUM_DIM2_ll -! -END INTERFACE -! -INTERFACE GMAXLOC_ll -! -!! ####################################################### - FUNCTION GMAXLOC3D_ll( PARRAY, MASK ) RESULT( KMAXLOC ) -!! ####################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PARRAY ! input array in - ! which the maximum is to be found -! - LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER, DIMENSION(3) :: KMAXLOC ! indices - ! of the maximum value on the whole domain (global coordinates) -! - END FUNCTION GMAXLOC3D_ll -! -!! ############################################################## - FUNCTION GMAXLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC ) -!! ############################################################## -! - REAL, DIMENSION(:,:), INTENT(IN) :: PARRAY ! input array in - ! which the maximum is to be found - LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER, DIMENSION(2) :: KMAXLOC ! indices - ! of the maximum value on the whole domain (global coordinates) - INTEGER, DIMENSION(2), OPTIONAL :: KDIMS -! - END FUNCTION GMAXLOC2D_ll -! -!! ############################################################## - FUNCTION GMAXLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMAXLOC ) -!! ############################################################## -! - REAL, DIMENSION(:), INTENT(IN) :: PARRAY ! input array in - ! which the maximum is to be found - LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER :: KMAXLOC ! indice - ! of the maximum value on the whole domain (global coordinates) - INTEGER, OPTIONAL :: KDIMS -! - END FUNCTION GMAXLOC1D_ll -! -END INTERFACE -! -INTERFACE GMINLOC_ll -! -!! ####################################################### - FUNCTION GMINLOC3D_ll( PARRAY, MASK ) RESULT( KMINLOC ) -!! ####################################################### -! - REAL, DIMENSION(:,:,:), INTENT(IN) :: PARRAY ! input array in - ! which the minimum is to be found - LOGICAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER, DIMENSION(3) :: KMINLOC ! indices - ! of the minimum value on the whole domain (global coordinates) -! - END FUNCTION GMINLOC3D_ll -! -!! ############################################################## - FUNCTION GMINLOC2D_ll( PARRAY, KDIMS, MASK ) RESULT (KMINLOC ) -!! ############################################################## -! - REAL, DIMENSION(:,:), INTENT(IN) :: PARRAY ! input array in - ! which the minimum is to be found - LOGICAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER, DIMENSION(2) :: KMINLOC ! indices - ! of the minimum value on the whole domain (global coordinates) - INTEGER, DIMENSION(2), OPTIONAL :: KDIMS -! - END FUNCTION GMINLOC2D_ll -! -!! ############################################################## - FUNCTION GMINLOC1D_ll( PARRAY, KDIMS, MASK ) RESULT( KMINLOC ) -!! ############################################################## -! - REAL, DIMENSION(:), INTENT(IN) :: PARRAY ! input array in - ! which the minimum is to be found - LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: MASK ! mask - INTEGER :: KMINLOC ! indice - ! of the minimum value on the whole domain (global coordinates) - INTEGER, OPTIONAL :: KDIMS -! - END FUNCTION GMINLOC1D_ll -! -END INTERFACE -! -INTERFACE REDUCESUM_ll -! -!! ########################################### - SUBROUTINE REDUCE_SUM_0DD_ll( PRES, KINFO ) -!! ########################################### -! - USE MODD_REPRO_SUM , ONLY : DOUBLE_DOUBLE -! - TYPE(DOUBLE_DOUBLE) , INTENT(INOUT) :: PRES ! sum -! - INTEGER , INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_0DD_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_0D_ll( PRES, KINFO ) -!! ########################################## -! - REAL, INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_0D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_1DD_ll( PRES, KINFO ) -!! ########################################## -! - USE MODD_REPRO_SUM , ONLY : DOUBLE_DOUBLE -! - TYPE(DOUBLE_DOUBLE),DIMENSION(:),INTENT(INOUT) :: PRES ! sum -! - INTEGER , INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_1DD_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_1D_ll( PRES, KINFO ) -!! ########################################## -! - REAL,DIMENSION(:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_1D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_2D_ll( PRES, KINFO ) -!! ########################################## -! - REAL,DIMENSION(:,:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_2D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_3D_ll( PRES, KINFO ) -!! ########################################## -! - REAL, DIMENSION(:,:,:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_3D_ll -! -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I0D_ll( PRES, KINFO ) -!! ########################################## -! - INTEGER, INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_I0D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I1D_ll( PRES, KINFO ) -!! ########################################## -! - INTEGER,DIMENSION(:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_I1D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I2D_ll( PRES, KINFO ) -!! ########################################## -! - INTEGER,DIMENSION(:,:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_I2D_ll -! -!! ########################################## - SUBROUTINE REDUCE_SUM_I3D_ll( PRES, KINFO ) -!! ########################################## -! - INTEGER, DIMENSION(:,:,:),INTENT(INOUT) :: PRES ! sum -! - INTEGER, INTENT(OUT) :: KINFO ! MPI return status -! - END SUBROUTINE REDUCE_SUM_I3D_ll -! -END INTERFACE -! -END MODULE MODI_SUM_ll diff --git a/src/LIB/SURCOUCHE/src/modi_update_ll.f90 b/src/LIB/SURCOUCHE/src/modi_update_ll.f90 deleted file mode 100644 index b19f828e52a89955c6ea5fca46389fdb200c8d55..0000000000000000000000000000000000000000 --- a/src/LIB/SURCOUCHE/src/modi_update_ll.f90 +++ /dev/null @@ -1,76 +0,0 @@ -!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 for details. version 1. -!----------------------------------------------------------------- - -! ##################### - MODULE MODI_UPDATE_ll -! ##################### -! -INTERFACE -! -!! ########################################## - SUBROUTINE UPDATE_HALO_ll( TPLIST, KINFO ) -!! ########################################## -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated - INTEGER :: KINFO ! return status -! - END SUBROUTINE UPDATE_HALO_ll -! -!! ############################################ - SUBROUTINE UPDATE_1DHALO_ll( TPLIST, KINFO ) -!! ############################################ -! - USE MODD_ARGSLIST_ll, ONLY : LIST1D_ll -! - TYPE(LIST1D_ll), POINTER :: TPLIST - INTEGER, INTENT(OUT) :: KINFO -! - END SUBROUTINE UPDATE_1DHALO_ll -! -!! ############################################################ - SUBROUTINE UPDATE_BOUNDARIES_ll( HDIRECTION, TPLIST, KINFO ) -!! ############################################################ -! - USE MODD_ARGSLIST_ll, ONLY : LIST_ll -! - CHARACTER(len=2), INTENT(IN) :: HDIRECTION - TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated - INTEGER :: KINFO ! return status -! - END SUBROUTINE UPDATE_BOUNDARIES_ll -! -! -!! ################################################################## - SUBROUTINE INIT_HALO2_ll(TPHALO2LIST, KNBVAR, KDIMX, KDIMY, KDIMZ) -!! ################################################################## -! - USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -! - TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! list of HALO2_lls - INTEGER :: KNBVAR ! number of HALO2_lls to allocate - INTEGER :: KDIMX, KDIMY, KDIMZ ! dimensions of the HALO2_lls -! - END SUBROUTINE INIT_HALO2_ll -! -!! ######################################################## - SUBROUTINE UPDATE_HALO2_ll( TPLIST, TPLISTHALO2, KINFO ) -!! ######################################################## -! - USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll,LIST_ll -! - TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of - ! fields to be sent - TYPE(HALO2LIST_ll), POINTER :: TPLISTHALO2 ! pointer to the list of - ! halo2 to be received - INTEGER :: KINFO ! return status -! - END SUBROUTINE UPDATE_HALO2_ll -! -END INTERFACE -! -END MODULE MODI_UPDATE_ll diff --git a/src/LIB/SURCOUCHE/src/test_double_double.f90 b/src/LIB/SURCOUCHE/src/test_double_double.f90 index eb1d20fa04a3f08ac29562b456da3f8815d0aaac..59b0b2976b5efbf1a835a7da28bbf824b6354f7e 100644 --- a/src/LIB/SURCOUCHE/src/test_double_double.f90 +++ b/src/LIB/SURCOUCHE/src/test_double_double.f90 @@ -1,12 +1,14 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-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. +!----------------------------------------------------------------- PROGRAM TEST_DOUBLE_DOUBLE ! This code calculates the summation of an array of real numbers ! distributed on multiple processors using double-double precision. USE MODD_MPIF + use mode_reduce_sum USE mode_repro_sum IMPLICIT NONE diff --git a/src/MNH/aer_monitorn.f90 b/src/MNH/aer_monitorn.f90 index 21f1f177fdb72649cc8f5074726840a36ea06626..97faca64cb603b8b904a8512a07a01a45f85f619 100644 --- a/src/MNH/aer_monitorn.f90 +++ b/src/MNH/aer_monitorn.f90 @@ -1,7 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. +!----------------------------------------------------------------- !! ######################## MODULE MODI_AER_MONITOR_n !! ######################## @@ -120,7 +121,7 @@ USE MODD_CONF_n, ONLY: LUSERC,& ! Logical to use clouds NRR ! Total number of water variables USE MODD_PARAM_n, ONLY: CCLOUD USE MODD_PRECIP_n, ONLY: XEVAP3D -USE MODI_SUM_ll +USE MODE_SUM_ll USE MODI_SEDIM_DUST USE MODI_SEDIM_SALT USE MODI_DUST_FILTER diff --git a/src/MNH/bikhardt.f90 b/src/MNH/bikhardt.f90 index 1efebdc110d4eb558ebb4e10203fddeaebae9c7f..d1aef90e66f611cd6211de826c09ffdbce869a33 100644 --- a/src/MNH/bikhardt.f90 +++ b/src/MNH/bikhardt.f90 @@ -79,6 +79,8 @@ contains ! ------------ ! USE MODD_PARAMETERS ! Declarative modules + +use mode_tools_ll, only: GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/ch_aqueous_sedim1mom.f90 b/src/MNH/ch_aqueous_sedim1mom.f90 index bddef28fabab5eda5381b4c4acad12a3c03792e9..9b4e7c6c327a7146e172173aed5dc17d867c7b77 100644 --- a/src/MNH/ch_aqueous_sedim1mom.f90 +++ b/src/MNH/ch_aqueous_sedim1mom.f90 @@ -99,7 +99,8 @@ USE MODD_RAIN_ICE_PARAM, ONLY : XFSEDR, XEXSEDR, & XFSEDG, XEXSEDG use mode_tools, only: Countjv -! +use mode_tools_ll, only: GET_INDICE_ll + IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : diff --git a/src/MNH/ch_aqueous_tmicc2r2.f90 b/src/MNH/ch_aqueous_tmicc2r2.f90 index 463ce4238652ab665025bcec96199e685441306c..5009b65247fd7696a0cc62018e39858f2c03fc92 100644 --- a/src/MNH/ch_aqueous_tmicc2r2.f90 +++ b/src/MNH/ch_aqueous_tmicc2r2.f90 @@ -94,6 +94,7 @@ USE MODD_RAIN_C2R2_KHKO_PARAM, ONLY : XAUTO1, XAUTO2, & XACCR_RSMALL1, XACCR_RSMALL2 use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll IMPLICIT NONE ! diff --git a/src/MNH/ch_aqueous_tmicice.f90 b/src/MNH/ch_aqueous_tmicice.f90 index c0fc812219caa96684384ec073a03b668b8f0fbf..e51d52f374a2b6ff66cb7891b25af689cb400fd3 100644 --- a/src/MNH/ch_aqueous_tmicice.f90 +++ b/src/MNH/ch_aqueous_tmicice.f90 @@ -137,6 +137,7 @@ USE MODD_CH_ICE_n ! index for ice phase chemistry wit USE MODE_PACK_PGI #endif use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/ch_aqueous_tmickess.f90 b/src/MNH/ch_aqueous_tmickess.f90 index ff4a0bf33b81dee3b215e2632813b506884c16a6..5c57138b8eca55b20d4550a54c4fd2f3d88c325c 100644 --- a/src/MNH/ch_aqueous_tmickess.f90 +++ b/src/MNH/ch_aqueous_tmickess.f90 @@ -84,6 +84,7 @@ USE MODD_CLOUDPAR, ONLY : XC1RC, XC2RC, &! autoconversion param. XCEXVT ! constant in the rain drop fall velocity use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll IMPLICIT NONE ! diff --git a/src/MNH/ch_aqueous_tmickhko.f90 b/src/MNH/ch_aqueous_tmickhko.f90 index 7369be14eb357a3112c9f118dc42228bd90f8605..938565d212dcc3925fe8169f450aa6a397daba65 100644 --- a/src/MNH/ch_aqueous_tmickhko.f90 +++ b/src/MNH/ch_aqueous_tmickhko.f90 @@ -85,6 +85,7 @@ USE MODD_PARAMETERS,ONLY: JPHEXT, &! number of horizontal External points USE MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN, XCTMIN use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll IMPLICIT NONE ! diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90 index c5357b6a18dd0e5275a5c866958cb60f0edba919..30ea347667318cda050a7dd246ab9396b5635e95 100644 --- a/src/MNH/ch_monitorn.f90 +++ b/src/MNH/ch_monitorn.f90 @@ -2,6 +2,7 @@ !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 MODI_CH_MONITOR_n !! ######################## @@ -133,7 +134,6 @@ USE MODI_CH_AQUEOUS_TMICKHKO USE MODI_CH_AQUEOUS_SEDIM1MOM USE MODI_CH_AQUEOUS_SEDIM2MOM USE MODI_CH_AQUEOUS_CHECK -USE MODI_SUM_ll USE MODI_CH_AER_SEDIM_n USE MODI_CH_AER_WETDEP_n USE MODI_CH_ORILAM @@ -145,6 +145,7 @@ USE MODI_CH_AER_DEPOS USE MODE_ll USE MODE_MODELN_HANDLER use mode_msg +USE MODE_SUM_ll ! USE MODI_WRITE_TS1D USE MODD_CST, ONLY : XMNH_TINY diff --git a/src/MNH/change_gribex_var.f90 b/src/MNH/change_gribex_var.f90 index 0f4badbcd98c8f3280d2c46a7a704b8e51188ef8..a24b85dc832b2beaec76afa82d636023fbc7dabe 100644 --- a/src/MNH/change_gribex_var.f90 +++ b/src/MNH/change_gribex_var.f90 @@ -2,6 +2,7 @@ !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 MODI_CHANGE_GRIBEX_VAR ! ############################# @@ -172,6 +173,7 @@ USE MODD_PARAMETERS USE MODD_REF ! USE MODE_THERMO +use mode_tools_ll, only: GET_INDICE_ll ! USE MODI_SHUMAN USE MODI_WATER_SUM diff --git a/src/MNH/convection.f90 b/src/MNH/convection.f90 index 84eb18803a7034d84f1845fa0c4020f698761b59..2738ac854fe50aabff8b02554b43b0c6f41b6c79 100644 --- a/src/MNH/convection.f90 +++ b/src/MNH/convection.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -!----------------------------------------------------------------- ! ###################### MODULE MODI_CONVECTION ! ###################### @@ -166,6 +162,9 @@ END MODULE MODI_CONVECTION ! USE MODD_PARAMETERS USE MODD_CST + +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_SHUMAN USE MODI_DEEP_CONVECTION USE MODI_SHALLOW_CONVECTION diff --git a/src/MNH/define_maskn.f90 b/src/MNH/define_maskn.f90 index abd56bf02b2932733f88c05d04b72af9265004f0..e7c927cb6105d71ce086710880d29681a7523602 100644 --- a/src/MNH/define_maskn.f90 +++ b/src/MNH/define_maskn.f90 @@ -68,7 +68,7 @@ USE MODE_MODELN_HANDLER ! USE MODD_VAR_ll, ONLY : YSPLITTING USE MODD_STRUCTURE_ll, ONLY : ZONE_ll -USE MODE_TOOLS_ll, ONLY : INTERSECTION +USE MODE_TOOLS_ll, ONLY : GET_OR_ll, INTERSECTION ! IMPLICIT NONE ! diff --git a/src/MNH/eddyUV_flux_one_wayn.f90 b/src/MNH/eddyUV_flux_one_wayn.f90 index 99a1fc6783a34ab406dd09980941479396b15c5a..1e8e7c51314655f7e99de4252bd3562d2722878f 100644 --- a/src/MNH/eddyUV_flux_one_wayn.f90 +++ b/src/MNH/eddyUV_flux_one_wayn.f90 @@ -69,6 +69,7 @@ USE MODD_NESTING ! use mode_bikhardt USE MODE_FIELD, ONLY : TFIELDLIST, FIND_FIELD_ID_FROM_MNHNAME +use mode_tools_ll, only: GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/exchange.f90 b/src/MNH/exchange.f90 index fbf47a060f4524e611135ec95b0ba7a8293b0d5e..b6d8bb8b3a90378304d730c19fbdfeecb932cef2 100644 --- a/src/MNH/exchange.f90 +++ b/src/MNH/exchange.f90 @@ -1,14 +1,8 @@ -!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/exchange.f90,v $ $Revision: 1.2.2.2.2.2.16.1.2.5.2.1 $ $Date: 2015/12/01 15:26:23 $ -!----------------------------------------------------------------- -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! #################### MODULE MODI_EXCHANGE ! #################### @@ -99,7 +93,7 @@ END MODULE MODI_EXCHANGE !* 0. DECLARATIONS ! ------------ ! -USE MODE_ll +! USE MODE_ll ! USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODD_GRID_n @@ -108,7 +102,8 @@ USE MODD_BUDGET, ONLY : LBUDGET_SV USE MODD_CST, ONLY : XMNH_TINY USE MODD_LUNIT_n, ONLY : TLUOUT USE MODI_SHUMAN -USE MODI_SUM_ll +use mode_exchange_ll, only: UPDATE_HALO_ll +USE MODE_SUM_ll USE MODI_BUDGET USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC USE MODD_CH_AEROSOL, ONLY : LORILAM, NM6_AER diff --git a/src/MNH/extend_grid_parameter_mnh.f90 b/src/MNH/extend_grid_parameter_mnh.f90 index 3d5fc09a13966b120e77dbb6db3755d0e3a69ed0..f83fc564f7c7a88f784331aab62369990f598531 100644 --- a/src/MNH/extend_grid_parameter_mnh.f90 +++ b/src/MNH/extend_grid_parameter_mnh.f90 @@ -22,7 +22,7 @@ USE MODD_MPIF use MODD_PRECISION, only: MNHREAL_MPI USE MODD_VAR_ll, ONLY: NPROC, IP, NMNH_COMM_WORLD ! -USE MODE_TOOLS_ll, ONLY: INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll +USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll, GET_INDICE_ll, GET_OR_ll, INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll ! USE MODI_UPDATE_NHALO1D ! diff --git a/src/MNH/fill_zsmtn.f90 b/src/MNH/fill_zsmtn.f90 index 6a8bb7556c4e9ae88049eefa66be4c7d37b4b0b1..0aec87f432255cf0c4b0a52bb87c1a7d23730c71 100644 --- a/src/MNH/fill_zsmtn.f90 +++ b/src/MNH/fill_zsmtn.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-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. !----------------------------------------------------------------- ! ###################### @@ -70,6 +70,7 @@ USE MODI_INI_BIKHARDT_n USE MODI_SPAWN_ZS USE MODE_MODELN_HANDLER ! +use mode_nest_ll, only: GO_TOMODEL_ll USE MODE_SPLITTING_ll, ONLY : SPLIT2, DEF_SPLITTING2 USE MODD_VAR_ll, ONLY : NPROC, IP, YSPLITTING, NMNH_COMM_WORLD USE MODD_STRUCTURE_ll, ONLY : ZONE_ll diff --git a/src/MNH/gps_zenith.f90 b/src/MNH/gps_zenith.f90 index 613ad8f2b6145570b8111a7ec83c5b251d675fdb..a11a074d6f511b7909c55934712aa9294cd0a3c2 100644 --- a/src/MNH/gps_zenith.f90 +++ b/src/MNH/gps_zenith.f90 @@ -86,7 +86,7 @@ USE MODD_PARAMETERS ! USE MODE_IO_FILE, ONLY: IO_File_close, IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list -USE MODE_TOOLS_ll, ONLY: LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll +USE MODE_TOOLS_ll, ONLY: GET_INDICE_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll ! USE MODI_INTERPOL_STATION ! diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90 index 76ed83fdd97e2d79f6c00cb165ffc20895a3dc42..d89d7227fd120a31677f451e7c38c069c5c8a89d 100644 --- a/src/MNH/ice_adjust.f90 +++ b/src/MNH/ice_adjust.f90 @@ -174,7 +174,9 @@ USE MODD_BUDGET USE MODD_CONF USE MODD_CST USE MODD_PARAMETERS -! + +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_BUDGET USE MODI_CONDENSATION USE MODI_GET_HALO diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90 index 957781f1862a455d18478686f61a10eca718268a..8d802babf157138a461aeff09c479f519d42149b 100644 --- a/src/MNH/ice_adjust_elec.f90 +++ b/src/MNH/ice_adjust_elec.f90 @@ -179,7 +179,9 @@ USE MODD_BUDGET USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELECEND USE MODD_ELEC_DESCR, ONLY : XRTMIN_ELEC, XQTMIN, XFC, XFI, XECHARGE USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN, XBI -! + +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_CONDENSATION USE MODI_BUDGET USE MODI_GET_HALO diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90 index 50cbf7ae92633f14d3579f961cc825188da6d148..582bcac1eedeaa9c95d03fcf22910247bccb5259 100644 --- a/src/MNH/ini_one_wayn.f90 +++ b/src/MNH/ini_one_wayn.f90 @@ -108,7 +108,9 @@ USE MODD_PARAM_n, only: CCLOUD USE MODD_REF_n, only: XRHODJ, XRHODREF ! use mode_bikhardt -use mode_ll, only: LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, SET_LSFIELD_1WAY_ll +use mode_ll, only: GET_CHILD_DIM_ll, GET_DIM_EXT_ll, GO_TOMODEL_ll, & + LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, & + SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll USE MODE_MODELN_HANDLER, only: GOTO_MODEL ! USE MODI_SET_CHEMAQ_1WAY diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90 index f02cd9c388ba086241e6cf773243827f0ea2b0fa..7f9e33802c3d1f812783407aba724084078871ac 100644 --- a/src/MNH/ini_prog_var.f90 +++ b/src/MNH/ini_prog_var.f90 @@ -127,6 +127,7 @@ USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list USE MODE_MODELN_HANDLER USE MODE_MSG USE MODE_POS +use mode_tools_ll, only: GET_INDICE_ll ! USE MODI_CH_AER_INIT_SOA USE MODI_CH_INIT_SCHEME_n diff --git a/src/MNH/ion_attach_elec.f90 b/src/MNH/ion_attach_elec.f90 index 90a6f300ec32d36d3ac48752d48f6deebcff4eed..bfecbd9a16f54dc039518c785c481438bda2e442 100644 --- a/src/MNH/ion_attach_elec.f90 +++ b/src/MNH/ion_attach_elec.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-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_ION_ATTACH_ELEC ! ############################ @@ -92,7 +93,9 @@ USE MODD_RAIN_ICE_PARAM USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELEC USE MODD_BUDGET, ONLY : LBU_RSV USE MODD_REF, ONLY : XTHVREFZ -! + +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_BUDGET USE MODI_MOMG ! diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90 index adf6eee1c10df71a80cf600d765cbdd291e023a9..806c6c9652e2dd3515a1657eb1444d864d687637 100644 --- a/src/MNH/khko_notadjust.f90 +++ b/src/MNH/khko_notadjust.f90 @@ -111,6 +111,7 @@ USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODE_IO_FIELD_WRITE, only: IO_Field_write USE MODE_MSG use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll ! USE MODI_BUDGET USE MODI_PROGNOS diff --git a/src/MNH/lidar.f90 b/src/MNH/lidar.f90 index 835da86854aa30a790446dcf70cc0143b516db98..976de3ca396061d429dbdb10531c45da38bfc020 100644 --- a/src/MNH/lidar.f90 +++ b/src/MNH/lidar.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2007-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_LIDAR ! ################# @@ -112,7 +113,9 @@ USE MODD_PARAM_LIMA_COLD, ONLY : UCCS=>XCCS, UCXS=>XCXS, ULBEXS=>XLBEXS, & ULBS=>XLBS USE MODD_PARAM_LIMA_MIXED,ONLY : UCCG=>XCCG, UCXG=>XCXG, ULBEXG=>XLBEXG, & ULBG=>XLBG -! + +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_BHMIE_WATER ! Gamma or mono dispersed size distributions USE MODI_BHMIE_AEROSOLS ! Lognormal or mono dispersed size distributions ! diff --git a/src/MNH/mnhget_surf_paramn.f90 b/src/MNH/mnhget_surf_paramn.f90 index 238c9d4ae495de607bf0ea77ffb853acefb7952b..da6c4608943b601d01edfbb2a234079a68c551cb 100644 --- a/src/MNH/mnhget_surf_paramn.f90 +++ b/src/MNH/mnhget_surf_paramn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 surfex 2006/10/24 10:43:18 -!----------------------------------------------------------------- ! ####################### MODULE MODI_MNHGET_SURF_PARAM_n ! ####################### @@ -88,6 +83,8 @@ USE MODD_PARAMETERS, ONLY : XUNDEF ! USE MODD_IO_SURF_MNH, ONLY : NHALO ! +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_GET_COVER_N USE MODI_GET_FRAC_N USE MODI_GET_JCOVER_N diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90 index 3a89446e628078774236e93bcb5a944c48085ba6..2d0888f4515e3e1173ad26ad642f534893bc16d3 100644 --- a/src/MNH/mnhopen_aux_io_surf.f90 +++ b/src/MNH/mnhopen_aux_io_surf.f90 @@ -75,6 +75,7 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read USE MODE_IO_FILE, ONLY: IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list, IO_File_find_byname USE MODE_MSG +use MODE_TOOLS_ll, only: GET_DIM_EXT_ll, GET_INDICE_ll ! USE MODI_GET_1D_MASK USE MODI_MNH_SURF_GRID_IO_INIT diff --git a/src/MNH/mnhopen_namelist.f90 b/src/MNH/mnhopen_namelist.f90 index d594b6e5ff0e60fda174f2a27a028318b8f633eb..81716add4fcd795d50b15a88814ae749dafc66a7 100644 --- a/src/MNH/mnhopen_namelist.f90 +++ b/src/MNH/mnhopen_namelist.f90 @@ -60,6 +60,7 @@ USE MODD_IO_NAM, ONLY: TNAM USE MODE_IO_FILE, ONLY: IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list USE MODE_MSG +use mode_nest_ll, only: GET_MODEL_NUMBER_ll ! IMPLICIT NONE ! diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90 index 084db39dd5ecec2f1b48f1e743e95d9ef328d23c..32ba759ef5e0b8f1cffd1f5f0ac2f62cd4dc5bd4 100644 --- a/src/MNH/mode_elec_ll.f90 +++ b/src/MNH/mode_elec_ll.f90 @@ -28,7 +28,9 @@ USE MODD_MPIF use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD -! + +use MODE_TOOLS_ll, only: GET_OR_ll + IMPLICIT NONE ! INTEGER, PARAMETER :: IFIRST_PROC = 0 ! 0/1 to increase numerotation of proc number diff --git a/src/MNH/mode_extrapol.f90 b/src/MNH/mode_extrapol.f90 index fe3cc9b664bbeca42953bca05f35b5801b61b8af..41d5268fbcbe5acef1f00965eac0332c2d6f8e1b 100644 --- a/src/MNH/mode_extrapol.f90 +++ b/src/MNH/mode_extrapol.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. @@ -35,7 +35,7 @@ CONTAINS SUBROUTINE EXTRAPOL3D(HBORD,PTAB) USE MODD_LBC_n - USE MODE_ll + USE MODE_TOOLS_ll ! IMPLICIT NONE ! @@ -93,7 +93,7 @@ CONTAINS SUBROUTINE EXTRAPOL2D(HBORD,PTAB) USE MODD_LBC_n - USE MODE_ll + USE MODE_TOOLS_ll ! IMPLICIT NONE ! @@ -170,10 +170,12 @@ CONTAINS !! J.Escobar 2/05/2016 : add STOP in case of problem with decomposition !------------------------------------------------------------------------------- USE MODD_LBC_n + use mode_argslist_ll, only: ADD2DFIELD_ll, CLEANLIST_ll USE MODE_MODELN_HANDLER - USE MODE_ll - USE MODD_PARAMETERS, ONLY : JPHEXT - USE MODE_EXCHANGE_ll, ONLY : UPDATE_HALO_EXTENDED_ll + use mode_nest_ll, only: GET_CHILD_DIM_ll, GO_TOMODEL_ll + USE MODE_TOOLS_ll + USE MODD_PARAMETERS, ONLY: JPHEXT + USE MODE_EXCHANGE_ll, ONLY: UPDATE_HALO_EXTENDED_ll ! IMPLICIT NONE ! @@ -311,10 +313,12 @@ CONTAINS !! J.Escobar 2/05/2016 : add STOP in case of problem with decomposition !------------------------------------------------------------------------------- USE MODD_LBC_n + use mode_argslist_ll, only: ADD2DFIELD_ll, CLEANLIST_ll USE MODE_MODELN_HANDLER - USE MODE_ll - USE MODD_PARAMETERS, ONLY : JPHEXT - USE MODE_EXCHANGE_ll, ONLY : UPDATE_HALO_EXTENDED_ll + use mode_nest_ll, only: GET_CHILD_DIM_ll, GO_TOMODEL_ll + USE MODE_TOOLS_ll + USE MODD_PARAMETERS, ONLY: JPHEXT + USE MODE_EXCHANGE_ll, ONLY: UPDATE_HALO_EXTENDED_ll ! IMPLICIT NONE ! diff --git a/src/MNH/mode_type_zdiffu.f90 b/src/MNH/mode_type_zdiffu.f90 index e6a4a6076278f31aab1bee492787dad0b45fc212..7083cb2629079100fcde90077cb4324b1c5cdb17 100644 --- a/src/MNH/mode_type_zdiffu.f90 +++ b/src/MNH/mode_type_zdiffu.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2006-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 MODE_TYPE_ZDIFFU @@ -17,6 +17,8 @@ SUBROUTINE INIT_TYPE_ZDIFFU_HALO2(PTYPE_ZDIFFU_HALO2,KSIZE_ZERO) ! ------------ USE MODD_PARAMETERS , ONLY : JPVEXT USE MODD_DIM_ll , ONLY : NKMAX_TMP_ll + +use mode_tools_ll, only: GET_DIM_EXT_ll, GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90 index f7bcfbd74eb3bf7ac1593cfba69ad864ede34ddf..8f922a418ec4e95d2703056d878e542c90953261 100644 --- a/src/MNH/one_wayn.f90 +++ b/src/MNH/one_wayn.f90 @@ -141,9 +141,12 @@ USE MODD_PARAM_n, only: CCLOUD USE MODD_REF_n, only: XRHODJ, XRHODREF, XRVREF, XTHVREF ! use mode_bikhardt -use mode_ll, only: LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, SET_LSFIELD_1WAY_ll +use mode_ll, only: GET_CHILD_DIM_ll, GO_TOMODEL_ll, & + LS_FORCING_ll, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll, & + SET_LSFIELD_1WAY_ll, UNSET_LSFIELD_1WAY_ll USE MODE_MODELN_HANDLER, only: GOTO_MODEL use mode_sum_ll, only: SUM3D_ll +use mode_tools_ll, only: GET_DIM_EXT_ll ! USE MODI_SET_CHEMAQ_1WAY USE MODI_SET_CONC_ICE_C1R3 diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index 86b375631f93207762fa91052e5412c6c11d7679..4303b30728ee131ad0d8d1f6cd5a0eb4aafacd69 100644 --- a/src/MNH/prep_pgd.f90 +++ b/src/MNH/prep_pgd.f90 @@ -99,6 +99,7 @@ USE MODE_IO, only: IO_Config_set, IO_Init USE MODE_IO_FIELD_WRITE, only: IO_Field_write, IO_Header_write USE MODE_IO_FILE, only: IO_File_close, IO_File_open USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list, IO_Filelist_print +use mode_ll USE MODE_MODELN_HANDLER USE MODE_MSG USE MODE_POS diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90 index 97cc43d0a07feef1abaf31c176e29ecc8aa92a14..b4c3096c367839114be4329438e174c08f608d4c 100644 --- a/src/MNH/pressurez.f90 +++ b/src/MNH/pressurez.f90 @@ -239,6 +239,7 @@ USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD , NPROC USE MODE_ll USE MODE_MPPDB USE MODE_MSG +USE MODE_SUM2_ll, ONLY: GMAXLOC_ll ! USE MODI_BUDGET USE MODI_CONJGRAD @@ -252,7 +253,6 @@ USE MODI_MASS_LEAK USE MODI_P_ABS USE MODI_RICHARDSON USE MODI_SHUMAN -USE MODI_SUM_ll , ONLY : GMAXLOC_ll ! IMPLICIT NONE ! diff --git a/src/MNH/radar_simulator.f90 b/src/MNH/radar_simulator.f90 index 1d09ecc69198c2b91558b22c01081ffd166a8b43..b855afc924ed0d8a391fc7d21a9d572158c6fd7f 100644 --- a/src/MNH/radar_simulator.f90 +++ b/src/MNH/radar_simulator.f90 @@ -146,6 +146,8 @@ USE MODD_RADAR , ONLY: XLAT_RAD,XLON_RAD,XALT_RAD,XDT_RAD,XELEV,& ! USE MODE_INTERPOL_BEAM USE MODE_FGAU , ONLY: GAULEG,GAUHER +use mode_tools_ll, only: GET_INDICE_ll + USE MODI_RADAR_SCATTERING ! convective/stratiform USE MODI_SET_MSK diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 531637f10cc37a1b65b4a345a40860d85a256822..8d47d4851fe307bbfa631489ad4fdbf10a128a7c 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -163,12 +163,13 @@ USE MODE_REPRO_SUM, ONLY : SUM_DD_R2_R1_ll,SUM_DD_R1_ll USE MODE_PACK_PGI #endif USE MODE_SALTOPT +USE MODE_SUM_ll, ONLY: MIN_ll +USE MODE_SUM2_ll, ONLY: GMINLOC_ll USE MODE_THERMO ! USE MODI_AEROOPT_GET USE MODI_ECMWF_RADIATION_VERS2 USE MODI_ECRAD_INTERFACE -USE MODI_SUM_ll, ONLY: GMINLOC_ll, MIN_ll USE MODD_VAR_ll, ONLY: IP ! IMPLICIT NONE diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index 04c6953c18b4bf6592c2d6af013c969d99c69804..51f3a734e961f55493974ebda2e1c21b1077e994 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -268,6 +268,7 @@ use MODE_RAIN_ICE_SEDIMENTATION_STAT, only: RAIN_ICE_SEDIMENTATION_STAT use MODE_RAIN_ICE_SLOW, only: RAIN_ICE_SLOW use MODE_RAIN_ICE_WARM, only: RAIN_ICE_WARM use mode_tools, only: Countjv +use mode_tools_ll, only: GET_INDICE_ll use MODI_BUDGET USE MODI_ICE4_RAINFR_VERT diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index 047a7618837fe20f15acf3aa2ad4595b807d3bff..6ff7014b90c5d416e45fa2a60cda6fe5b8aaf16e 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -142,6 +142,7 @@ USE MODE_MSG USE MODE_TIME USE MODE_THERMO USE MODE_TOOLS, ONLY: UPCASE +use mode_tools_ll, only: GET_DIM_EXT_ll ! USE MODI_READ_HGRID_n USE MODI_READ_VER_GRID diff --git a/src/MNH/read_asc_latpress.f90 b/src/MNH/read_asc_latpress.f90 index 61745f0d15b225622ff7c647f17b122796e25dfe..af67b339779c1df773e1e56e8deaa0120b1790eb 100644 --- a/src/MNH/read_asc_latpress.f90 +++ b/src/MNH/read_asc_latpress.f90 @@ -1,8 +1,8 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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 MODI_READ_ASC_LATPRESS ! ######################## @@ -52,8 +52,7 @@ END MODULE MODI_READ_ASC_LATPRESS ! ----------- ! ! - - +use mode_tools_ll, only: GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index 778b9e29c97c92e0e4d788fff847280ba6944660..b5e9923162403a4345ae638acf393c5419d115fa 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -117,6 +117,7 @@ USE MODE_MPPDB USE MODE_THERMO USE MODE_TIME USE MODE_TOOLS, ONLY: UPCASE +use mode_tools_ll, only: GET_DIM_EXT_ll ! USE MODI_CH_AER_INIT_SOA USE MODI_CH_INIT_SCHEME_n diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90 index 26b9881e4dd96a27160ffd4aec883c38abc99446..ec9c7cd44834781c72dda2a054b4dbc66f2868d4 100644 --- a/src/MNH/read_hgrid.f90 +++ b/src/MNH/read_hgrid.f90 @@ -93,6 +93,8 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read USE MODE_GRIDPROJ USE MODE_MSG USE MODE_MODELN_HANDLER +use MODE_NEST_ll, only: GO_TOMODEL_ll +use MODE_TOOLS_ll, only: GET_DIM_PHYS_ll ! USE MODI_READ_HGRID_n ! diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90 index 0989fed5359ea361bf8667a872ea934124fa094d..04cf40b18a5e061db9bf11b1b3159d2dbe311ce9 100644 --- a/src/MNH/read_hgridn.f90 +++ b/src/MNH/read_hgridn.f90 @@ -92,6 +92,7 @@ USE MODE_IO, only: IO_Pack_set USE MODE_IO_FIELD_READ, only: IO_Field_read USE MODE_MSG USE MODE_MODELN_HANDLER +use MODE_TOOLS_ll, only: GET_DIM_EXT_ll, GET_DIM_PHYS_ll, GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90 index b931fe38b25df299015f2528102b153cdf644489..954d6fb9607ae72667f10f5bfc57e2adaaf2fa28 100644 --- a/src/MNH/set_advfrc.f90 +++ b/src/MNH/set_advfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. @@ -93,6 +93,7 @@ USE MODD_REF USE MODE_DATETIME USE MODE_MSG USE MODE_THERMO +use mode_tools_ll, only: GET_INDICE_ll ! USE MODI_HEIGHT_PRESS USE MODI_PRESS_HEIGHT diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90 index ef30e87c56598b307c37c5061a9eff04d0071f3e..1f88a63cfff307d1dd499afd5f73d1d7d1f51d9e 100644 --- a/src/MNH/set_perturb.f90 +++ b/src/MNH/set_perturb.f90 @@ -115,15 +115,16 @@ USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_LSFIELD_n USE MODD_PARAMETERS USE MODD_REF_n +USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD ! USE MODE_GATHER_ll USE MODE_ll USE MODE_MPPDB USE MODE_POS USE MODE_REPRO_SUM +use MODE_SCATTER_ll, only: SCATTER_XYFIELD ! USE MODI_GET_HALO -USE MODI_SCATTER ! IMPLICIT NONE ! @@ -354,8 +355,8 @@ SELECT CASE(CPERT_KIND) !* 3.3 Add to the U and V fields : ! ALLOCATE(ZPU(IIU,IJU),ZPV(IIU,IJU)) - CALL SCATTER(ZPU_ll,ZPU) - CALL SCATTER(ZPV_ll,ZPV) + CALL SCATTER_XYFIELD(ZPU_ll,ZPU,1,NMNH_COMM_WORLD) + CALL SCATTER_XYFIELD(ZPV_ll,ZPV,1,NMNH_COMM_WORLD) DEALLOCATE(ZPU_ll,ZPV_ll) DO JI = 1,IIU DO JJ = 1,IJU diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90 index 7c7fc25b1aeb15115d282bba56bd8f513ab701ab..6de7d389ec9698629325142cc2dbecdbd2532563 100644 --- a/src/MNH/set_relfrc.f90 +++ b/src/MNH/set_relfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. @@ -80,6 +80,7 @@ END MODULE MODI_SET_RELFRC ! USE MODD_CONF USE MODD_CST +USE MODD_DIM_n USE MODD_FRC USE MODD_GRID USE MODD_GRID_n @@ -92,8 +93,8 @@ USE MODD_RELFRC_n USE MODE_DATETIME USE MODE_MSG USE MODE_THERMO +use mode_tools_ll, only: GET_INDICE_ll ! -USE MODD_DIM_n USE MODI_HEIGHT_PRESS USE MODI_PRESS_HEIGHT USE MODI_READ_ASC_LATPRESS diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90 index 22878e5a926e5263f3e868a0ef20357e13ea4179..545c60629410ef29c5a16bfd5289f96038c41e28 100644 --- a/src/MNH/spectre.f90 +++ b/src/MNH/spectre.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. @@ -40,6 +40,7 @@ USE MODE_POS USE MODE_IO, only: IO_Config_set, IO_Init USE MODE_IO_FILE, only: IO_File_close, IO_File_open USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list, IO_Filelist_print +use mode_init_ll, only: END_PARA_ll USE MODE_MODELN_HANDLER !USE MODD_TYPE_DATE USE MODI_VERSION diff --git a/src/MNH/spectre_arome.f90 b/src/MNH/spectre_arome.f90 index 81a83ebc2089429df9c56f7ecaa107e050d6d94e..c519472808d3a06c58144cd4596c1c28f8a0e0a1 100644 --- a/src/MNH/spectre_arome.f90 +++ b/src/MNH/spectre_arome.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. @@ -30,6 +30,7 @@ SUBROUTINE SPECTRE_AROME(HINIFILE,HOUTFILE,PDELTAX,PDELTAY,KI,KJ,KK) ! USE MODD_CONF USE MODE_IO, only: IO_Pack_set +use mode_init_ll, only: SET_DAD0_ll, SET_JP_ll, SET_SPLITTING_ll USE MODD_SPECTRE USE MODI_COMPUTE_SPECTRE USE MODD_PARAMETERS diff --git a/src/MNH/split_grid_parameter_mnh.f90 b/src/MNH/split_grid_parameter_mnh.f90 index fed28c271c66c42b89e5a22370edd23e29884dda..e859565f1512b167ef76f96a8a8c1856968428b8 100644 --- a/src/MNH/split_grid_parameter_mnh.f90 +++ b/src/MNH/split_grid_parameter_mnh.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. +!----------------------------------------------------------------- ! ############################################################# #ifdef MNH_PARALLEL SUBROUTINE SPLIT_GRID_PARAMETERX1_MNH(HGRID,HREC,KDIM,KSIZE,KIMAX_ll,KJMAX_ll,KHALO,PFIELD,PFIELD_SPLIT) @@ -21,6 +22,8 @@ #else USE MODD_IO_SURF_MNH, ONLY : NHALO #endif + +use mode_tools_ll, only: GET_INDICE_ll, GET_OR_ll ! IMPLICIT NONE ! diff --git a/src/MNH/surf_solar_slopes.f90 b/src/MNH/surf_solar_slopes.f90 index 9dd3fbe40e653dab6d3ced2f8c4d61a04e70bc3f..e7ea4ef2284690164c6c4c0679c8621f245ec5dd 100644 --- a/src/MNH/surf_solar_slopes.f90 +++ b/src/MNH/surf_solar_slopes.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 param 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ############################# MODULE MODI_SURF_SOLAR_SLOPES ! ############################# @@ -83,6 +78,7 @@ END MODULE MODI_SURF_SOLAR_SLOPES ! ------------ ! USE MODD_CST, ONLY : XPI, XMNH_TINY +use mode_tools_ll, only: GET_INDICE_ll ! IMPLICIT NONE ! diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90 index a224e27eb694ad36e42c8559521034e5de408996..abe8e0f24c2af29888c0d0517ea5d6d882e6e8a8 100644 --- a/src/MNH/turb_cloud_index.f90 +++ b/src/MNH/turb_cloud_index.f90 @@ -90,6 +90,7 @@ USE MODD_PARAMETERS, ONLY: JPVEXT ! USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODE_IO_FIELD_WRITE, only: IO_Field_write +use mode_tools_ll, only: GET_INDICE_ll ! USE MODI_GRADIENT_M ! diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90 index de9025e0f7668d7f4d216f2741999e9c84d36aeb..7731c2dcf7524bf48901c17ce96a42f87633a309 100644 --- a/src/MNH/zsmt_pgd.f90 +++ b/src/MNH/zsmt_pgd.f90 @@ -75,7 +75,8 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read USE MODE_IO_FIELD_WRITE, only: IO_Field_write USE MODE_ll , ONLY : GET_DIM_EXT_ll , ADD2DFIELD_ll , CLEANLIST_ll , UPDATE_HALO_ll USE MODD_ARGSLIST_ll, ONLY : LIST_ll -USE MODI_SUM_ll +USE MODE_SUM_ll +use mode_tools_ll, only: GET_INDICE_ll USE MODE_FIELD, ONLY: TFIELDDATA, TYPEREAL ! IMPLICIT NONE diff --git a/src/SURFEX/interpol_npts.F90 b/src/SURFEX/interpol_npts.F90 index 8f3d25e867dcf7d1228eabc9f75626622e820288..49953d7aec721500ede2b606426d15a99ff1ccfc 100644 --- a/src/SURFEX/interpol_npts.F90 +++ b/src/SURFEX/interpol_npts.F90 @@ -2,6 +2,7 @@ !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. +!----------------------------------------------------------------- ! ######### SUBROUTINE INTERPOL_NPTS (UG, U, HPROGRAM,KLUOUT,KNPTS,KCODE,PX,PY,PFIELD,KNEAR_NBR) ! ######################################################### @@ -75,7 +76,7 @@ use modd_mpif use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD USE MODE_GATHER_ll -USE MODE_TOOLS_ll, ONLY : GET_GLOBALDIMS_ll +USE MODE_TOOLS_ll, ONLY : GET_DIM_PHYS_ll, GET_GLOBALDIMS_ll USE MODD_PARAMETERS_ll,ONLY : JPHEXT ! USE MODD_IO_SURF_MNH, ONLY : NIU, NJU