diff --git a/src/programs/CMakeLists.txt b/src/programs/CMakeLists.txt index 1aa6f5e8..f5916325 100644 --- a/src/programs/CMakeLists.txt +++ b/src/programs/CMakeLists.txt @@ -50,7 +50,7 @@ foreach( prec sp dp ) wrappers/inv_trans.F90 wrappers/setup_trans0.F90 wrappers/setup_trans.F90 - wrappers/specnorm.F90 + # wrappers/specnorm.F90 wrappers/trans_inq.F90 PUBLIC_INCLUDES $ $ diff --git a/src/programs/ectrans-benchmark.F90 b/src/programs/ectrans-benchmark.F90 index 1d660478..c0569a43 100644 --- a/src/programs/ectrans-benchmark.F90 +++ b/src/programs/ectrans-benchmark.F90 @@ -212,7 +212,7 @@ program transform_test #include "inv_trans.h" #include "dir_trans.h" #include "trans_inq.h" -#include "specnorm.h" +#include "./wrappers/specnorm.inc" #include "abor1.intfb.h" #include "gstats_setup.intfb.h" #include "ec_meminfo.intfb.h" diff --git a/src/programs/wrappers/specnorm.F90 b/src/programs/wrappers/specnorm.F90 deleted file mode 100644 index f832f572..00000000 --- a/src/programs/wrappers/specnorm.F90 +++ /dev/null @@ -1,34 +0,0 @@ -! (C) Copyright 2000- ECMWF. -! (C) Copyright 2000- Meteo-France. -! -! This software is licensed under the terms of the Apache Licence Version 2.0 -! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. -! In applying this licence, ECMWF does not waive the privileges and immunities -! granted to it by virtue of its status as an intergovernmental organisation -! nor does it submit to any jurisdiction. -! -SUBROUTINE SPECNORM(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) -USE PARKIND1 ,ONLY : JPIM ,JPRB, JPRD,JPRM -#if PRECOPT == 1 -USE ECTRANS_MOD_SP, ONLY : SPECNORM_SP => SPECNORM -#elif PRECOPT == 2 -USE ECTRANS_MOD_DP, ONLY : SPECNORM_DP => SPECNORM -#endif - -REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) -INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) -INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER -REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PMET(:) -REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PNORM(:) -INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KRESOL -IF(JPRB == JPRM) THEN -#if PRECOPT == 1 -CALL SPECNORM_SP(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) -#endif -ELSE IF (JPRB == JPRD) THEN -#if PRECOPT == 2 -CALL SPECNORM_DP(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) -#endif -ENDIF -END SUBROUTINE SPECNORM - diff --git a/src/programs/wrappers/specnorm.inc b/src/programs/wrappers/specnorm.inc new file mode 100644 index 00000000..8ee6c688 --- /dev/null +++ b/src/programs/wrappers/specnorm.inc @@ -0,0 +1,31 @@ +! (C) Copyright 2000- ECMWF. +! (C) Copyright 2000- Meteo-France. +! +! This software is licensed under the terms of the Apache Licence Version 2.0 +! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +! In applying this licence, ECMWF does not waive the privileges and immunities +! granted to it by virtue of its status as an intergovernmental organisation +! nor does it submit to any jurisdiction. +! +INTERFACE SPECNORM +SUBROUTINE SPECNORM_SP(PNORM,PSPEC,KVSET,KMASTER,KRESOL,PMET) +USE EC_PARKIND, ONLY: JPRM, JPIM +REAL(KIND=JPRM) , INTENT(OUT) :: PNORM(:) +REAL(KIND=JPRM) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER +REAL(KIND=JPRM) ,OPTIONAL, INTENT(IN) :: PMET(:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KRESOL +END SUBROUTINE SPECNORM_SP +SUBROUTINE SPECNORM_DP(PNORM,PSPEC,KVSET,KMASTER,KRESOL,PMET) +USE EC_PARKIND, ONLY: JPRD, JPIM +REAL(KIND=JPRD) , INTENT(OUT) :: PNORM(:) +REAL(KIND=JPRD) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER +REAL(KIND=JPRD) ,OPTIONAL, INTENT(IN) :: PMET(:) +INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KRESOL +END SUBROUTINE SPECNORM_DP +END INTERFACE SPECNORM + + diff --git a/src/trans/CMakeLists.txt b/src/trans/CMakeLists.txt index 85c22c6c..d732091e 100644 --- a/src/trans/CMakeLists.txt +++ b/src/trans/CMakeLists.txt @@ -39,7 +39,7 @@ ecbuild_list_add_pattern( LIST trans_src sharedmem/* algor/* internal/* - #external/* + external/specnorm.F90 module/* ${CMAKE_CURRENT_BINARY_DIR}/internal/ectrans_version_mod.F90 QUIET diff --git a/src/trans/external/specnorm.F90 b/src/trans/external/specnorm.F90 index f8ba103f..eddc7d3e 100644 --- a/src/trans/external/specnorm.F90 +++ b/src/trans/external/specnorm.F90 @@ -10,7 +10,7 @@ ! #ifndef INMODULE -SUBROUTINE SPECNORM(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) +SUBROUTINE SPECNORM(PNORM,PSPEC,KVSET,KMASTER,KRESOL,PMET) #else MODULE PROCEDURE SPECNORM #endif @@ -70,11 +70,11 @@ SUBROUTINE SPECNORM(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) #ifndef INMODULE +REAL(KIND=JPRB) , INTENT(OUT) :: PNORM(:) REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PMET(:) -REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PNORM(:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KRESOL #endif !ifndef INTERFACE @@ -121,9 +121,6 @@ SUBROUTINE SPECNORM(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) ENDIF ENDIF IF(MYPROC == IMASTER) THEN - IF(.NOT. PRESENT(PNORM)) THEN - CALL ABORT_TRANS('SPECNORM: PNORM NOT PRESENT') - ENDIF IF(UBOUND(PNORM,1) < IFLD_G) THEN CALL ABORT_TRANS('SPECNORM: PNORM TOO SMALL') ENDIF diff --git a/src/trans/include/ectrans/renames.inc b/src/trans/include/ectrans/renames.inc index 270feb14..d85209a8 100644 --- a/src/trans/include/ectrans/renames.inc +++ b/src/trans/include/ectrans/renames.inc @@ -126,6 +126,8 @@ #define ectrans_mod SUFFIXIZE(ectrans_mod) #define transform_driver_data_mod SUFFIXIZE(transform_driver_data_mod) #define transform_driver_mod SUFFIXIZE(transform_driver_mod) +#define SPECNORM SUFFIXIZE(SPECNORM) +#define specnorm SUFFIXIZE(specnorm) !Pure replacements below #define parkind1 ec_parkind #define PARKIND1 EC_PARKIND diff --git a/src/trans/include/ectrans/specnorm.h b/src/trans/include/ectrans/specnorm.h index aa4fe138..80a30753 100644 --- a/src/trans/include/ectrans/specnorm.h +++ b/src/trans/include/ectrans/specnorm.h @@ -12,7 +12,7 @@ INTERFACE #ifdef INMODULE MODULE & #endif -SUBROUTINE SPECNORM(PSPEC,KVSET,KMASTER,KRESOL,PMET,PNORM) +SUBROUTINE SPECNORM(PNORM,PSPEC,KVSET,KMASTER,KRESOL,PMET) !**** *SPECNORM* - Compute global spectral norms @@ -58,11 +58,11 @@ IMPLICIT NONE ! Declaration of arguments +REAL(KIND=JPRB) , INTENT(OUT) :: PNORM(:) REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PSPEC(:,:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KVSET(:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KMASTER REAL(KIND=JPRB) ,OPTIONAL, INTENT(IN) :: PMET(:) -REAL(KIND=JPRB) ,OPTIONAL, INTENT(OUT) :: PNORM(:) INTEGER(KIND=JPIM) ,OPTIONAL, INTENT(IN) :: KRESOL ! ------------------------------------------------------------------