From cd5160cae048feff21711641c4f4c9e0ba45665e Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Fri, 20 Dec 2013 10:24:05 +0000
Subject: [PATCH] Gaelle 20/12/2013 : remove eggagles

---
 src/ARCH_SRC/surfex/dummy_eggangles.F90 | 208 +++++
 src/SURFEX/eggangles.F90                | 978 ------------------------
 2 files changed, 208 insertions(+), 978 deletions(-)
 create mode 100644 src/ARCH_SRC/surfex/dummy_eggangles.F90
 delete mode 100644 src/SURFEX/eggangles.F90

diff --git a/src/ARCH_SRC/surfex/dummy_eggangles.F90 b/src/ARCH_SRC/surfex/dummy_eggangles.F90
new file mode 100644
index 000000000..e7742fe01
--- /dev/null
+++ b/src/ARCH_SRC/surfex/dummy_eggangles.F90
@@ -0,0 +1,208 @@
+MODULE EGGANGLES
+USE PARKIND1  ,ONLY : JPIM,    JPRB
+TYPE LOLA
+  SEQUENCE
+  REAL(KIND=JPRB) :: LON, LAT
+END TYPE LOLA
+INTERFACE ANGLE_DOMAIN
+  MODULE PROCEDURE ANGLE_DOMAIN_RS, ANGLE_DOMAIN_LOLAS, ANGLE_DOMAIN_RV, ANGLE_DOMAIN_LOLAV
+END INTERFACE
+INTERFACE VAL_LAT
+  MODULE PROCEDURE VAL_LAT_S, VAL_LAT_V
+END INTERFACE
+INTERFACE VAL_LON
+  MODULE PROCEDURE VAL_LON_S, VAL_LON_V
+END INTERFACE
+INTERFACE VAL_COORD
+  MODULE PROCEDURE VAL_COORD_S, VAL_COORD_V
+END INTERFACE
+INTERFACE LOLAD
+  MODULE PROCEDURE LOLAD_S, LOLAD_V
+END INTERFACE
+INTERFACE LOLAR
+  MODULE PROCEDURE LOLAR_S, LOLAR_V
+END INTERFACE
+INTERFACE MINIMAX
+  MODULE PROCEDURE  MINIMAX_S, MINIMAX_V
+END INTERFACE
+INTERFACE COSIN_TO_ANGLE
+  MODULE PROCEDURE COSIN_TO_ANGLE_S, COSIN_TO_ANGLE_V
+END INTERFACE
+INTERFACE P_ASIN
+  MODULE PROCEDURE P_ASIN_S, P_ASIN_V
+END INTERFACE
+INTERFACE P_ACOS
+  MODULE PROCEDURE P_ACOS_S, P_ACOS_V
+END INTERFACE
+INTERFACE DIST_2REF
+  MODULE PROCEDURE DIST_2REF_S, DIST_2REF_V, DIST_2REF_L
+END INTERFACE
+INTERFACE SIZE_W2E
+  MODULE PROCEDURE SIZE_W2E_S, SIZE_W2E_L
+END INTERFACE
+
+CONTAINS
+REAL(KIND=JPRB) FUNCTION ANGLE_DOMAIN_RS(ALPHA,PI,DOM,UNIT) RESULT (BETA)
+REAL(KIND=JPRB), INTENT(IN)                           :: ALPHA
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
+END FUNCTION ANGLE_DOMAIN_RS
+TYPE (LOLA) FUNCTION ANGLE_DOMAIN_LOLAS(ALPHA,PI,DOM,UNIT) RESULT (BETA)
+TYPE (LOLA), INTENT(IN)                                :: ALPHA
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL                :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL                :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                  :: PI
+END FUNCTION ANGLE_DOMAIN_LOLAS
+! -------------------------------------------------------------------------------
+FUNCTION ANGLE_DOMAIN_RV(ALPHA,PI,DOM,UNIT) RESULT (BETA)
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)             :: ALPHA
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
+END FUNCTION ANGLE_DOMAIN_RV
+! -------------------------------------------------------------------------------
+FUNCTION ANGLE_DOMAIN_LOLAV(YL_ALPHA,PI,DOM,UNIT) RESULT (YD_BETA)
+TYPE (LOLA), DIMENSION(:), INTENT(IN)               :: YL_ALPHA
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL             :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL             :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL               :: PI
+END FUNCTION ANGLE_DOMAIN_LOLAV
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_LAT_S(LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
+REAL(KIND=JPRB), INTENT(IN)                          :: LAT
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL              :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL             :: NUM_ERR
+END FUNCTION VAL_LAT_S
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_LAT_V(P_LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)                 :: P_LAT
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL                   :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                     :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                  :: NUM_ERR
+END FUNCTION VAL_LAT_V
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_LON_S(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
+REAL(KIND=JPRB), INTENT(IN)                                :: LON
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL                    :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL                    :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                      :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                   :: NUM_ERR
+END FUNCTION VAL_LON_S
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_LON_V(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)                       :: LON
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL                         :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL                         :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                           :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                        :: NUM_ERR
+END FUNCTION VAL_LON_V
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_COORD_S(PT_COORD,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
+TYPE (LOLA), INTENT(IN)                               :: PT_COORD
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL              :: NUM_ERR
+END FUNCTION VAL_COORD_S
+! -------------------------------------------------------------------------------
+INTEGER(KIND=JPIM) FUNCTION VAL_COORD_V(YD_PT_COORD,K_NUM_ERR,PI,CD_DOM,CD_UNIT) RESULT(ETAT)
+TYPE (LOLA), DIMENSION(:), INTENT(IN)                   :: YD_PT_COORD
+CHARACTER (LEN=2), INTENT(IN), OPTIONAL                 :: CD_DOM
+CHARACTER (LEN=1), INTENT(IN), OPTIONAL                 :: CD_UNIT
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                   :: PI
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                :: K_NUM_ERR
+END FUNCTION VAL_COORD_V
+! -------------------------------------------------------------------------------
+TYPE(LOLA) FUNCTION LOLAR_S (COORD_DEG) RESULT (COORD_RAD)
+! DEG => RAD for lola type
+TYPE(LOLA), INTENT(IN)                      :: COORD_DEG
+END FUNCTION LOLAR_S
+
+FUNCTION LOLAR_V (COORD_DEG) RESULT (COORD_RAD)
+! DEG => RAD for lola type
+TYPE(LOLA), DIMENSION(:), INTENT(IN)                :: COORD_DEG
+
+END FUNCTION LOLAR_V
+! -------------------------------------------------------------------------------
+TYPE(LOLA) FUNCTION LOLAD_S (COORD_RAD) RESULT (COORD_DEG)
+! RAD => DEG for lola type
+TYPE(LOLA), INTENT(IN)                      :: COORD_RAD
+END FUNCTION LOLAD_S
+
+FUNCTION LOLAD_V (COORD_RAD) RESULT (COORD_DEG)
+! RAD => DEG for lola type
+TYPE(LOLA), DIMENSION(:), INTENT(IN)                :: COORD_RAD
+END FUNCTION LOLAD_V
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION COSIN_TO_ANGLE_S(COSINUS,SINUS) RESULT (ANGLE)
+! (Cosinus,Sinus) => Angle
+REAL(KIND=JPRB), INTENT(IN)                  :: COSINUS,SINUS
+END FUNCTION COSIN_TO_ANGLE_S
+
+FUNCTION COSIN_TO_ANGLE_V(COSINUS,SINUS) RESULT (ANGLE)
+! (Cosinus,Sinus) => Angle
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)              :: COSINUS,SINUS
+END FUNCTION COSIN_TO_ANGLE_V
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION P_ACOS_S(COSINUS) RESULT (ANGLE)
+! Protected ACOS
+REAL(KIND=JPRB), INTENT(IN)                  :: COSINUS
+END FUNCTION P_ACOS_S
+
+FUNCTION P_ACOS_V(COSINUS) RESULT (ANGLE)
+! Protected ACOS
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)              :: COSINUS
+END FUNCTION P_ACOS_V
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION P_ASIN_S(SINUS) RESULT (ANGLE)
+! Protected ASIN
+REAL(KIND=JPRB), INTENT(IN)                  :: SINUS
+END FUNCTION P_ASIN_S
+
+FUNCTION P_ASIN_V(SINUS) RESULT (ANGLE)
+! Protected ASIN
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)            :: SINUS
+END FUNCTION P_ASIN_V
+REAL(KIND=JPRB) FUNCTION MINIMAX_S(VAL,LIM) RESULT (VALO)
+! Return Value in [-LIM,LIM]
+REAL(KIND=JPRB), INTENT(IN)                      :: VAL
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL            :: LIM
+END FUNCTION MINIMAX_S
+FUNCTION MINIMAX_V(VAL,LIM) RESULT (VALO)
+! Return Value in [-LIM,LIM]
+REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)          :: VAL
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL              :: LIM
+REAL(KIND=JPRB), DIMENSION(SIZE(VAL)) :: VALO
+END FUNCTION MINIMAX_V
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION DIST_2REF_L(COORD_LON,REF_LON,PI) RESULT(DIST)
+REAL(KIND=JPRB), INTENT(IN)                   :: COORD_LON, REF_LON
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI       
+END FUNCTION DIST_2REF_L
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION DIST_2REF_S(PT_COORD,REF_COORD,PI) RESULT(DIST)
+
+TYPE (LOLA), INTENT(IN)                       :: PT_COORD, REF_COORD
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
+END FUNCTION DIST_2REF_S
+! -------------------------------------------------------------------------------
+FUNCTION DIST_2REF_V(PT_COORD,REF_COORD,PI) RESULT(DIST)
+TYPE (LOLA), DIMENSION(:), INTENT(IN)                   :: PT_COORD
+TYPE (LOLA), INTENT(IN)                                 :: REF_COORD
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL                   :: PI 
+REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: DIST
+END FUNCTION DIST_2REF_V
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION SIZE_W2E_L(WEST_LON,EAST_LON,PI) RESULT(TAILLE)
+REAL(KIND=JPRB), INTENT(IN)                   :: WEST_LON, EAST_LON
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
+END FUNCTION SIZE_W2E_L
+! -------------------------------------------------------------------------------
+REAL(KIND=JPRB) FUNCTION SIZE_W2E_S(WEST_COORD,EAST_COORD,PI) RESULT(TAILLE)
+TYPE (LOLA), INTENT(IN)                       :: WEST_COORD, EAST_COORD
+REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
+END FUNCTION SIZE_W2E_S
+! -------------------------------------------------------------------------------
+END MODULE EGGANGLES      
diff --git a/src/SURFEX/eggangles.F90 b/src/SURFEX/eggangles.F90
deleted file mode 100644
index af6a8f640..000000000
--- a/src/SURFEX/eggangles.F90
+++ /dev/null
@@ -1,978 +0,0 @@
-MODULE EGGANGLES
-
-! Version 2009.0317 by JD GRIL
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DOC !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!  All these functions make a package tool for angle.
-!  In functions where appears DOM and UNIT indicate the domain of validity :
-!         DOM     UNIT           Longitudes           Latitudes
-!         "-+"    "D"          [-180.0,180.0[       [-90.0,90.0]
-!         "0+"    "D"             [0.0,360.0[       [-90.0,90.0]
-!         "-+"    "R"             [-pi,pi[        [-pi/2.0,pi/2.0] 
-!         "0+"    "R"              [0,pi[         [-pi/2.0,pi/2.0]
-!  (defaults values are DOM = "-+" and UNIT = "D").
-
-!  All functions work for scalar or one dimensional array in input.
-
-!  -1- ANGLE_DOMAIN function
-
-!->function ANGLE_DOMAIN(ALPHA,PI,DOM,UNIT)
-
-!     Converts longitudes in UNIT values under choisen DOMain.
-!     The input (ALPHA) is a longitude (REAL) or a LOLA type structure ( or
-!     array of them). The output has the same type than the input.       
-
-!  -2- VAL_ functions
-
-!->integer function VAL_LAT(LAT,NUM_ERR,PI,UNIT)
-
-!     Test validity of LAT [-90.0,90.0] 
-!     Return -1 or NUM_ERR if it's present in error case, 1 if it's ok.
-
-!->integer function VAL_LON(LON,NUM_ERR,PI,DOM,UNIT)
-
-!     Test validity of LON [-180.0,180.0[ or [0.0,360.0[ 
-!     Return -1 or NUM_ERR if it's present in error case, 1 if it's ok.
-
-!->integer function VAL_COORD(PT_COORD,NUM_ERR,PI,DOM,UNIT) 
-
-!     Test validity of LAT [-90.0,90.0] and LON [-180.0,180.0[ or [0.0,360.0[
-!     (depends the value of DOM) of a PT_COORD structure of type LOLA (in UNIT).
-!     Return -1 or NUM_ERR if it's present in error case, 1 if it's ok.
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-! Author : Jean-Daniel GRIL , CNRM/GMAP/COOPE , Februry 08 2000
-
-! Modified:
-! In April 2001 by M. Janousek (A few modifs to port the deck to the model code)
-! In November 2004 by JD Gril : more routines to manage angles
-!                             : debug VAL_COORD_x
-! 2005 by JD Gril : more functions for Mercator RT
-! In June 2006 by JD Gril     : line too long (L607 > 132 col.)
-! July 2008 by JD Gril        : add 2 new functions to compute distance or size
-!                             : on longitude : DIST_2REF and SIZE_W2E
-! March 2009 by JD Gril       : add Vector routines
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-! ******************* Definition of parameters **********************************
-
-! Include Kinds
-! -------------
-
-!* kindef: define default KIND macros
-! --------------------------------------
-USE PARKIND1  ,ONLY : JPIM,    JPRB
-USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
-! --------------------------------------
-
-IMPLICIT NONE
-
-! ******************* Definition of type ****************************************
-
-TYPE LOLA
-  SEQUENCE
-  REAL(KIND=JPRB) :: LON, LAT
-END TYPE LOLA
-
-! ******************* Definition of Interface ***********************************
-
-INTERFACE ANGLE_DOMAIN
-  MODULE PROCEDURE ANGLE_DOMAIN_RS, ANGLE_DOMAIN_LOLAS, ANGLE_DOMAIN_RV, ANGLE_DOMAIN_LOLAV
-END INTERFACE
-INTERFACE VAL_LAT
-  MODULE PROCEDURE VAL_LAT_S, VAL_LAT_V
-END INTERFACE
-INTERFACE VAL_LON
-  MODULE PROCEDURE VAL_LON_S, VAL_LON_V
-END INTERFACE
-INTERFACE VAL_COORD
-  MODULE PROCEDURE VAL_COORD_S, VAL_COORD_V
-END INTERFACE
-INTERFACE LOLAD
-  MODULE PROCEDURE LOLAD_S, LOLAD_V
-END INTERFACE
-INTERFACE LOLAR
-  MODULE PROCEDURE LOLAR_S, LOLAR_V
-END INTERFACE
-INTERFACE MINIMAX
-  MODULE PROCEDURE  MINIMAX_S, MINIMAX_V
-END INTERFACE
-INTERFACE COSIN_TO_ANGLE
-  MODULE PROCEDURE COSIN_TO_ANGLE_S, COSIN_TO_ANGLE_V
-END INTERFACE
-INTERFACE P_ASIN
-  MODULE PROCEDURE P_ASIN_S, P_ASIN_V
-END INTERFACE
-INTERFACE P_ACOS
-  MODULE PROCEDURE P_ACOS_S, P_ACOS_V
-END INTERFACE
-INTERFACE DIST_2REF
-  MODULE PROCEDURE DIST_2REF_S, DIST_2REF_V, DIST_2REF_L
-END INTERFACE
-INTERFACE SIZE_W2E
-  MODULE PROCEDURE SIZE_W2E_S, SIZE_W2E_L
-END INTERFACE
-CONTAINS
-
-! =================== FUNCTIONS =================================================
-
-! ******************* Independants functions ************************************
-
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION ANGLE_DOMAIN_RS(ALPHA,PI,DOM,UNIT) RESULT (BETA)
-REAL(KIND=JPRB), INTENT(IN)                           :: ALPHA
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
-
-
-REAL(KIND=JPRB)   :: CVT, TPI, M
-CHARACTER (LEN=2) :: TDOM
-CHARACTER (LEN=1) :: TUNIT
-REAL(KIND=JPRB)   :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_RS',0,ZHOOK_HANDLE)
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  CVT = TPI
-ELSE
-  CVT = 180.0_JPRB
-ENDIF
-
-IF (TDOM=='-+') THEN
-  M = MOD(ALPHA,CVT)
-  BETA = (M-CVT*MOD(REAL(INT(ALPHA/CVT),KIND=JPRB),2.0_JPRB))*SIGN(1.0_JPRB,ALPHA)*SIGN(1.0_JPRB,M)
-ELSE
-  M = MOD(ALPHA,2.0_JPRB*CVT)
-  BETA = M-2.0_JPRB*CVT*(SIGN(0.5_JPRB,ALPHA)-0.5_JPRB)
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_RS',1,ZHOOK_HANDLE)
-END FUNCTION ANGLE_DOMAIN_RS
-! -------------------------------------------------------------------------------
-TYPE (LOLA) FUNCTION ANGLE_DOMAIN_LOLAS(ALPHA,PI,DOM,UNIT) RESULT (BETA)
-TYPE (LOLA), INTENT(IN)                                :: ALPHA
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL                :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL                :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                  :: PI
-
-REAL(KIND=JPRB)   :: TPI
-CHARACTER (LEN=2) :: TDOM
-CHARACTER (LEN=1) :: TUNIT
-REAL(KIND=JPRB)   :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_LOLAS',0,ZHOOK_HANDLE)
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-BETA%LON = ANGLE_DOMAIN(ALPHA%LON,TPI,TDOM,TUNIT)
-BETA%LAT = ALPHA%LAT
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_LOLAS',1,ZHOOK_HANDLE)
-END FUNCTION ANGLE_DOMAIN_LOLAS
-! -------------------------------------------------------------------------------
-FUNCTION ANGLE_DOMAIN_RV(ALPHA,PI,DOM,UNIT) RESULT (BETA)
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)             :: ALPHA
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
-REAL(KIND=JPRB), DIMENSION(SIZE(ALPHA)) :: BETA
-
-REAL(KIND=JPRB)                         :: CVT, TPI
-REAL(KIND=JPRB), DIMENSION(SIZE(ALPHA)) :: Z_M
-CHARACTER (LEN=2)                       :: TDOM
-CHARACTER (LEN=1)                       :: TUNIT
-REAL(KIND=JPRB)                         :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_RV',0,ZHOOK_HANDLE)
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  CVT = TPI
-ELSE
-  CVT = 180.0_JPRB
-ENDIF
-
-IF (TDOM=='-+') THEN
-  Z_M(:) = MOD(ALPHA(:),CVT)
-  BETA = (Z_M(:)-CVT*MOD(REAL(INT(ALPHA(:)/CVT),KIND=JPRB),2.0_JPRB))*SIGN(1.0_JPRB,ALPHA(:))*SIGN(1.0_JPRB,Z_M(:))
-ELSE
-  Z_M(:) = MOD(ALPHA(:),2.0_JPRB*CVT)
-  BETA = Z_M(:)-2.0_JPRB*CVT*(SIGN(0.5_JPRB,ALPHA(:))-0.5_JPRB)
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_RV',1,ZHOOK_HANDLE)
-END FUNCTION ANGLE_DOMAIN_RV
-! -------------------------------------------------------------------------------
-FUNCTION ANGLE_DOMAIN_LOLAV(YL_ALPHA,PI,DOM,UNIT) RESULT (YD_BETA)
-TYPE (LOLA), DIMENSION(:), INTENT(IN)               :: YL_ALPHA
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL             :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL             :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL               :: PI
-TYPE (LOLA), DIMENSION(SIZE(YL_ALPHA)) :: YD_BETA
-
-REAL(KIND=JPRB)   :: TPI
-CHARACTER (LEN=2) :: TDOM
-CHARACTER (LEN=1) :: TUNIT
-REAL(KIND=JPRB)   :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_LOLAV',0,ZHOOK_HANDLE)
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-YD_BETA(:)%LON = ANGLE_DOMAIN(YL_ALPHA(:)%LON,TPI,TDOM,TUNIT)
-YD_BETA(:)%LAT = YL_ALPHA(:)%LAT
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:ANGLE_DOMAIN_LOLAV',1,ZHOOK_HANDLE)
-END FUNCTION ANGLE_DOMAIN_LOLAV
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_LAT_S(LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
-REAL(KIND=JPRB), INTENT(IN)                          :: LAT
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL              :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL             :: NUM_ERR
-
-INTEGER(KIND=JPIM) :: TNE
-REAL(KIND=JPRB)    :: TPI, LATMXABS
-CHARACTER (LEN=1)  :: TUNIT
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LAT_S',0,ZHOOK_HANDLE)
-IF (PRESENT(NUM_ERR))THEN
-  TNE = NUM_ERR
-ELSE
-  TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  LATMXABS = TPI/2.0_JPRB
-ELSE
-  LATMXABS = 90.0_JPRB
-ENDIF
-
-IF (ABS(LAT) > LATMXABS) THEN
-  ETAT = TNE
-ELSE
-  ETAT = 1_JPIM
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LAT_S',1,ZHOOK_HANDLE)
-END FUNCTION VAL_LAT_S
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_LAT_V(P_LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)                 :: P_LAT
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL                   :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                     :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                  :: NUM_ERR
-
-INTEGER(KIND=JPIM) :: TNE
-REAL(KIND=JPRB)    :: TPI, Z_LATMXABS
-CHARACTER (LEN=1)  :: TUNIT
-REAL(KIND=JPRB)    :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LAT_V',0,ZHOOK_HANDLE)
-IF (PRESENT(NUM_ERR))THEN
-  TNE = NUM_ERR
-ELSE
-  TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  Z_LATMXABS = TPI/2.0_JPRB
-ELSE
-  Z_LATMXABS = 90.0_JPRB
-ENDIF
-
-IF (ANY(ABS(P_LAT(:)) > Z_LATMXABS)) THEN
-  ETAT = TNE
-ELSE
-  ETAT = 1_JPIM
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LAT_V',1,ZHOOK_HANDLE)
-END FUNCTION VAL_LAT_V
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_LON_S(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
-REAL(KIND=JPRB), INTENT(IN)                                :: LON
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL                    :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL                    :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                      :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                   :: NUM_ERR
-
-INTEGER(KIND=JPIM) :: TNE
-REAL(KIND=JPRB)    :: TPI, CVT, S, LONMIN, LONMAX
-CHARACTER (LEN=2)  :: TDOM
-CHARACTER (LEN=1)  :: TUNIT
-REAL(KIND=JPRB)    :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LON_S',0,ZHOOK_HANDLE)
-IF (PRESENT(NUM_ERR))THEN
-  TNE = NUM_ERR
-ELSE
-  TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  CVT = TPI
-ELSE
-  CVT = 180.0_JPRB
-ENDIF
-IF (TDOM=='-+') THEN
-  S = -1.0_JPRB
-ELSE
-  S = 0.0_JPRB
-ENDIF
-LONMIN = S*CVT
-LONMAX =(2.0_JPRB +S)*CVT
-
-IF ((LON < LONMIN).OR.(LON >= LONMAX)) THEN
-  ETAT = TNE
-ELSE
-  ETAT = 1_JPIM
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LON_S',1,ZHOOK_HANDLE)
-END FUNCTION VAL_LON_S
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_LON_V(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)                       :: LON
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL                         :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL                         :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                           :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                        :: NUM_ERR
-
-INTEGER(KIND=JPIM) :: TNE
-REAL(KIND=JPRB)    :: TPI, Z_CVT, Z_S, Z_LONMIN, Z_LONMAX
-CHARACTER (LEN=2)  :: TDOM
-CHARACTER (LEN=1)  :: TUNIT
-REAL(KIND=JPRB)    :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LON_V',0,ZHOOK_HANDLE)
-IF (PRESENT(NUM_ERR))THEN
-  TNE = NUM_ERR
-ELSE
-  TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF (TUNIT=='R') THEN
-  Z_CVT = TPI
-ELSE
-  Z_CVT = 180.0_JPRB
-ENDIF
-IF (TDOM=='-+') THEN
-  Z_S = -1.0_JPRB
-ELSE
-  Z_S = 0.0_JPRB
-ENDIF
-Z_LONMIN = Z_S*Z_CVT
-Z_LONMAX =(2.0_JPRB +Z_S)*Z_CVT
-
-IF ((ANY(LON(:) < Z_LONMIN)).OR.(ANY(LON(:) >= Z_LONMAX))) THEN
-  ETAT = TNE
-ELSE
-  ETAT = 1_JPIM
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_LON_V',1,ZHOOK_HANDLE)
-END FUNCTION VAL_LON_V
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_COORD_S(PT_COORD,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
-TYPE (LOLA), INTENT(IN)                               :: PT_COORD
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL               :: DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL               :: UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                 :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL              :: NUM_ERR
-
-INTEGER(KIND=JPIM) :: TNE
-REAL(KIND=JPRB)    :: TPI
-CHARACTER (LEN=2)  :: TDOM
-CHARACTER (LEN=1)  :: TUNIT
-REAL(KIND=JPRB)    :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_COORD_S',0,ZHOOK_HANDLE)
-IF (PRESENT(NUM_ERR))THEN
-  TNE = NUM_ERR
-ELSE
-  TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(DOM)) THEN
-  IF ((DOM=='0+').OR.(DOM=='-+')) THEN
-    TDOM = DOM
-  ELSE
-    TDOM = "-+"
-  ENDIF
-ELSE
-  TDOM = "-+"
-ENDIF
-IF (PRESENT(UNIT)) THEN
-  IF ((UNIT=='R').OR.(UNIT=='D')) THEN
-    TUNIT = UNIT
-  ELSE
-    TUNIT = "D"
-  ENDIF
-ELSE
-  TUNIT = "D"
-ENDIF
-
-IF ((VAL_LON(PT_COORD%LON,TNE,TPI,TDOM,TUNIT) == 1_JPIM).AND.(VAL_LAT(PT_COORD%LAT,TNE,TPI,TUNIT) == 1_JPIM)) THEN
-  ETAT = 1_JPIM
-ELSE
-  ETAT = TNE
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_COORD_S',1,ZHOOK_HANDLE)
-END FUNCTION VAL_COORD_S
-! -------------------------------------------------------------------------------
-INTEGER(KIND=JPIM) FUNCTION VAL_COORD_V(YD_PT_COORD,K_NUM_ERR,PI,CD_DOM,CD_UNIT) RESULT(ETAT)
-TYPE (LOLA), DIMENSION(:), INTENT(IN)                   :: YD_PT_COORD
-CHARACTER (LEN=2), INTENT(IN), OPTIONAL                 :: CD_DOM
-CHARACTER (LEN=1), INTENT(IN), OPTIONAL                 :: CD_UNIT
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                   :: PI
-INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL                :: K_NUM_ERR
-
-INTEGER(KIND=JPIM) :: I_TNE
-CHARACTER (LEN=2)  :: CL_TDOM
-REAL(KIND=JPRB)    :: Z_TPI
-CHARACTER (LEN=1)  :: CL_TUNIT
-REAL(KIND=JPRB)    :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_COORD_V',0,ZHOOK_HANDLE)
-IF (PRESENT(K_NUM_ERR))THEN
-  I_TNE = K_NUM_ERR
-ELSE
-  I_TNE = -1_JPIM
-ENDIF
-IF (PRESENT(PI)) THEN
-  Z_TPI = PI
-ELSE
-  Z_TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-IF (PRESENT(CD_DOM)) THEN
-  IF ((CD_DOM=='0+').OR.(CD_DOM=='-+')) THEN
-    CL_TDOM = CD_DOM
-  ELSE
-    CL_TDOM = "-+"
-  ENDIF
-ELSE
-  CL_TDOM = "-+"
-ENDIF
-IF (PRESENT(CD_UNIT)) THEN
-  IF ((CD_UNIT=='R').OR.(CD_UNIT=='D')) THEN
-    CL_TUNIT = CD_UNIT
-  ELSE
-    CL_TUNIT = "D"
-  ENDIF
-ELSE
-  CL_TUNIT = "D"
-ENDIF
-
-IF ((VAL_LON(YD_PT_COORD(:)%LON,I_TNE,Z_TPI,CL_TDOM,CL_TUNIT) == 1_JPIM).AND. &
- & (VAL_LAT(YD_PT_COORD(:)%LAT,I_TNE,Z_TPI,CL_TUNIT) == 1_JPIM)) THEN
-  ETAT = 1_JPIM
-ELSE
-  ETAT = I_TNE
-ENDIF
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:VAL_COORD_V',1,ZHOOK_HANDLE)
-END FUNCTION VAL_COORD_V
-! -------------------------------------------------------------------------------
-TYPE(LOLA) FUNCTION LOLAR_S (COORD_DEG) RESULT (COORD_RAD)
-! DEG => RAD for lola type
-TYPE(LOLA), INTENT(IN)                      :: COORD_DEG
-
-REAL(KIND=JPRB) :: TPI,DTR
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAR_S',0,ZHOOK_HANDLE)
-TPI = ASIN(1.0_JPRB)*2.0_JPRB
-DTR = TPI/180.0_JPRB
-COORD_RAD%LON = COORD_DEG%LON*DTR
-COORD_RAD%LAT = COORD_DEG%LAT*DTR
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAR_S',1,ZHOOK_HANDLE)
-END FUNCTION LOLAR_S
-
-FUNCTION LOLAR_V (COORD_DEG) RESULT (COORD_RAD)
-! DEG => RAD for lola type
-TYPE(LOLA), DIMENSION(:), INTENT(IN)                :: COORD_DEG
-TYPE(LOLA), DIMENSION(SIZE(COORD_DEG)) :: COORD_RAD
-
-REAL(KIND=JPRB) :: TPI,DTR
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAR_V',0,ZHOOK_HANDLE)
-TPI = ASIN(1.0_JPRB)*2.0_JPRB
-DTR = TPI/180.0_JPRB
-COORD_RAD(:)%LON = COORD_DEG(:)%LON*DTR
-COORD_RAD(:)%LAT = COORD_DEG(:)%LAT*DTR
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAR_V',1,ZHOOK_HANDLE)
-END FUNCTION LOLAR_V
-! -------------------------------------------------------------------------------
-TYPE(LOLA) FUNCTION LOLAD_S (COORD_RAD) RESULT (COORD_DEG)
-! RAD => DEG for lola type
-TYPE(LOLA), INTENT(IN)                      :: COORD_RAD
-
-REAL(KIND=JPRB) :: TPI,RTD
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAD_S',0,ZHOOK_HANDLE)
-TPI = ASIN(1.0_JPRB)*2.0_JPRB
-RTD = 180.0_JPRB/TPI
-COORD_DEG%LON = COORD_RAD%LON*RTD
-COORD_DEG%LAT = COORD_RAD%LAT*RTD
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAD_S',1,ZHOOK_HANDLE)
-END FUNCTION LOLAD_S
-
-FUNCTION LOLAD_V (COORD_RAD) RESULT (COORD_DEG)
-! RAD => DEG for lola type
-TYPE(LOLA), DIMENSION(:), INTENT(IN)                :: COORD_RAD
-TYPE(LOLA), DIMENSION(SIZE(COORD_RAD)) :: COORD_DEG
-
-REAL(KIND=JPRB) :: TPI,RTD
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAD_V',0,ZHOOK_HANDLE)
-TPI = ASIN(1.0_JPRB)*2.0_JPRB
-RTD = 180.0_JPRB/TPI
-COORD_DEG(:)%LON = COORD_RAD(:)%LON*RTD
-COORD_DEG(:)%LAT = COORD_RAD(:)%LAT*RTD
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:LOLAD_V',1,ZHOOK_HANDLE)
-END FUNCTION LOLAD_V
-! -------------------------------------------------------------------------------
-! Function to compute Cosine,Sine to Angle
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION COSIN_TO_ANGLE_S(COSINUS,SINUS) RESULT (ANGLE)
-! (Cosinus,Sinus) => Angle
-REAL(KIND=JPRB), INTENT(IN)                  :: COSINUS,SINUS
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:COSIN_TO_ANGLE_S',0,ZHOOK_HANDLE)
-ANGLE = P_ACOS(COSINUS)*SIGN(1.0_JPRB,SINUS)
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:COSIN_TO_ANGLE_S',1,ZHOOK_HANDLE)
-END FUNCTION COSIN_TO_ANGLE_S
-
-FUNCTION COSIN_TO_ANGLE_V(COSINUS,SINUS) RESULT (ANGLE)
-! (Cosinus,Sinus) => Angle
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)              :: COSINUS,SINUS
-REAL(KIND=JPRB), DIMENSION(SIZE(COSINUS)) :: ANGLE
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:COSIN_TO_ANGLE_V',0,ZHOOK_HANDLE)
-ANGLE(:) = P_ACOS(COSINUS(:))*SIGN(1.0_JPRB,SINUS(:))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:COSIN_TO_ANGLE_V',1,ZHOOK_HANDLE)
-END FUNCTION COSIN_TO_ANGLE_V
-! -------------------------------------------------------------------------------
-! -------------------------------------------------------------------------------
-! Function to compute Acos without error
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION P_ACOS_S(COSINUS) RESULT (ANGLE)
-! Protected ACOS
-REAL(KIND=JPRB), INTENT(IN)                  :: COSINUS
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ACOS_S',0,ZHOOK_HANDLE)
-ANGLE = ACOS(MINIMAX(COSINUS))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ACOS_S',1,ZHOOK_HANDLE)
-END FUNCTION P_ACOS_S
-
-FUNCTION P_ACOS_V(COSINUS) RESULT (ANGLE)
-! Protected ACOS
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)              :: COSINUS
-REAL(KIND=JPRB), DIMENSION(SIZE(COSINUS)) :: ANGLE
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ACOS_V',0,ZHOOK_HANDLE)
-ANGLE(:) = ACOS(MINIMAX(COSINUS(:)))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ACOS_V',1,ZHOOK_HANDLE)
-END FUNCTION P_ACOS_V
-! -------------------------------------------------------------------------------
-! -------------------------------------------------------------------------------
-! Function to compute Asin without error
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION P_ASIN_S(SINUS) RESULT (ANGLE)
-! Protected ASIN
-REAL(KIND=JPRB), INTENT(IN)                  :: SINUS
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ASIN_S',0,ZHOOK_HANDLE)
-ANGLE = ASIN(MINIMAX(SINUS))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ASIN_S',1,ZHOOK_HANDLE)
-END FUNCTION P_ASIN_S
-
-FUNCTION P_ASIN_V(SINUS) RESULT (ANGLE)
-! Protected ASIN
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)            :: SINUS
-REAL(KIND=JPRB), DIMENSION(SIZE(SINUS)) :: ANGLE
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ASIN_V',0,ZHOOK_HANDLE)
-ANGLE(:) = ASIN(MINIMAX(SINUS(:)))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:P_ASIN_V',1,ZHOOK_HANDLE)
-END FUNCTION P_ASIN_V
-! -------------------------------------------------------------------------------
-! -------------------------------------------------------------------------------
-! Function MinMax
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION MINIMAX_S(VAL,LIM) RESULT (VALO)
-! Return Value in [-LIM,LIM]
-REAL(KIND=JPRB), INTENT(IN)                      :: VAL
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL            :: LIM
-
-REAL(KIND=JPRB) :: TLIM
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:MINIMAX_S',0,ZHOOK_HANDLE)
-IF (PRESENT(LIM)) THEN
-  TLIM = LIM
-ELSE
-  TLIM = 1.0_JPRB
-ENDIF
-VALO = MIN(TLIM,MAX(-1.0_JPRB*TLIM,VAL))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:MINIMAX_S',1,ZHOOK_HANDLE)
-END FUNCTION MINIMAX_S
-
-FUNCTION MINIMAX_V(VAL,LIM) RESULT (VALO)
-! Return Value in [-LIM,LIM]
-REAL(KIND=JPRB), DIMENSION(:), INTENT(IN)          :: VAL
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL              :: LIM
-REAL(KIND=JPRB), DIMENSION(SIZE(VAL)) :: VALO
-
-REAL(KIND=JPRB) :: TLIM
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:MINIMAX_V',0,ZHOOK_HANDLE)
-IF (PRESENT(LIM)) THEN
-  TLIM = LIM
-ELSE
-  TLIM = 1.0_JPRB
-ENDIF
-VALO(:) = MIN(TLIM,MAX(-1.0_JPRB*TLIM,VAL(:)))
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:MINIMAX_V',1,ZHOOK_HANDLE)
-END FUNCTION MINIMAX_V
-! -------------------------------------------------------------------------------
-! -------------------------------------------------------------------------------
-! Functions Longitude size/distance
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION DIST_2REF_L(COORD_LON,REF_LON,PI) RESULT(DIST)
-! COORD_LON, REF_LON in -+Radians
-! DIST in -+Radians
-
-! Calcule la distance orientee DIST (abscisse dans l'intervale [-pi,pi[ et d'origine le meridien de
-! reference REF_LON) de COORD_LON a REF_LON (coordonnees en radians dans l'intervale
-! [-pi,pi[ et avec comme origine le meridien de GreenWiTch). Les valeurs negatives sont vers l'Ouest
-! des origines.
-
-! Computes oriented distance DIST (as an absciss in [-pi,pi[ with origin at REF_LON meridian)
-! from COORD_LON to REF_LON (coordinates in rad [-pi,pi[ with origin at GreenWiTch meridian)
-! Negatives values are on West of origins.
-
-REAL(KIND=JPRB), INTENT(IN)                   :: COORD_LON, REF_LON
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
-
-REAL(KIND=JPRB)                            :: Z  
-REAL(KIND=JPRB)                            :: TPI
-REAL(KIND=JPRB)                            :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_L',0,ZHOOK_HANDLE)    
-
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-Z = (COORD_LON-REF_LON)
-Z = Z-SIGN(TPI,Z)*(1.0_JPRB+SIGN(1.0_JPRB,ABS(Z)-TPI))
-DIST = -Z*SIGN(1.0_JPRB,Z-TPI) ! because [-pi,pi[ : if pi then -pi 
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_L',1,ZHOOK_HANDLE)
-END FUNCTION DIST_2REF_L
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION DIST_2REF_S(PT_COORD,REF_COORD,PI) RESULT(DIST)
-! PT_COORD, REF_COORD in -+Radians
-! DIST in -+Radians
-
-! Calcule la distance orientee DIST (abscisse dans l'intervale [-pi,pi[ et d'origine le meridien de
-! reference REF_COORD%LON) de PT_COORD%LON a REF_COORD%LON (coordonnees en radians dans l'intervale
-! [-pi,pi[ et avec comme origine le meridien de GreenWiTch). Les valeurs negatives sont vers l'Ouest
-! des origines.
-
-! Computes oriented distance DIST (as an absciss in [-pi,pi[ with origin at REF_COORD%LON meridian)
-! from PT_COORD%LON to REF_COORD%LON (coordinates in rad [-pi,pi[ with origin at GreenWiTch meridian)
-! Negatives values are on West of origins.
-
-TYPE (LOLA), INTENT(IN)                       :: PT_COORD, REF_COORD
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
-
-REAL(KIND=JPRB)                            :: TPI
-REAL(KIND=JPRB)                            :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_S',0,ZHOOK_HANDLE)    
-
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-DIST = DIST_2REF(PT_COORD%LON,REF_COORD%LON,TPI)
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_S',1,ZHOOK_HANDLE)
-END FUNCTION DIST_2REF_S
-! -------------------------------------------------------------------------------
-FUNCTION DIST_2REF_V(PT_COORD,REF_COORD,PI) RESULT(DIST)
-! PT_COORD, REF_COORD in -+Radians
-! DIST in -+Radians
-
-! Calcule la distance orientee DIST (abscisse dans l'intervale [-pi,pi[ et d'origine le meridien de
-! reference REF_COORD%LON) de PT_COORD%LON a REF_COORD%LON (coordonnees en radians dans l'intervale
-! [-pi,pi[ et avec comme origine le meridien de GreenWiTch). Les valeurs negatives sont vers l'Ouest
-! des origines.
-
-! Computes oriented distance DIST (as an absciss in [-pi,pi[ with origin at REF_COORD%LON meridian)
-! from PT_COORD%LON to REF_COORD%LON (coordinates in rad [-pi,pi[ with origin at GreenWiTch meridian)
-! Negatives values are on West of origins.
-
-TYPE (LOLA), DIMENSION(:), INTENT(IN)                   :: PT_COORD
-TYPE (LOLA), INTENT(IN)                                 :: REF_COORD
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL                   :: PI 
-REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: DIST
-
-REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: Z
-REAL(KIND=JPRB)                            :: TPI
-REAL(KIND=JPRB)                            :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_V',0,ZHOOK_HANDLE)    
-
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-Z(:) = PT_COORD(:)%LON-REF_COORD%LON
-Z(:) = Z(:)-SIGN(TPI,Z(:))*(1.0_JPRB+SIGN(1.0_JPRB,ABS(Z(:))-TPI))
-DIST(:) = -Z(:)*SIGN(1.0_JPRB,Z(:)-TPI) ! because [-pi,pi[ : if pi then -pi 
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:DIST2REF_V',1,ZHOOK_HANDLE)
-END FUNCTION DIST_2REF_V
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION SIZE_W2E_L(WEST_LON,EAST_LON,PI) RESULT(TAILLE)
-! WEST_LON, EAST_LON in -+Radians
-! SIZE in 0+Radians 
-
-! Calcule la distance ou taille (norme entre ]0,2pi]) entre WEST_LON et EAST_LON
-! dans le sens des aiguilles d'une montre en regardant du Pole Sud vers le Pole Nord ( ceci
-! pour ne pas calculer le complementaire a 2pi ).
-
-! Computes distance or length (norm in ]0,2pi]) between WEST_LON and EAST_LON in
-! clockwise seeing from South Pole to North Pole.
-
-REAL(KIND=JPRB), INTENT(IN)                   :: WEST_LON, EAST_LON
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
-
-REAL(KIND=JPRB)                            :: Z  
-REAL(KIND=JPRB)                            :: TPI
-REAL(KIND=JPRB)                            :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:SIZE_W2E_L',0,ZHOOK_HANDLE)    
-
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-Z =  DIST_2REF(WEST_LON,EAST_LON,TPI)
-TAILLE = TPI*(1.0_JPRB+SIGN(1.0_JPRB,Z))-Z
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:SIZE_W2E_L',1,ZHOOK_HANDLE)
-END FUNCTION SIZE_W2E_L
-! -------------------------------------------------------------------------------
-REAL(KIND=JPRB) FUNCTION SIZE_W2E_S(WEST_COORD,EAST_COORD,PI) RESULT(TAILLE)
-! WEST_COORD, EAST_COORD in -+Radians
-! SIZE in 0+Radians 
-
-! Calcule la distance ou taille (norme entre ]0,2pi]) entre WEST_COORD%LON et EAST_COORD%LON
-! dans le sens des aiguilles d'une montre en regardant du Pole Sud vers le Pole Nord ( ceci
-! pour ne pas calculer le complementaire a 2pi ).
-
-! Computes distance or length (norm in ]0,2pi]) between WEST_COORD%LON and EAST_COORD%LON in
-! clockwise seeing from South Pole to North Pole.
-
-TYPE (LOLA), INTENT(IN)                       :: WEST_COORD, EAST_COORD
-REAL(KIND=JPRB), INTENT(IN), OPTIONAL         :: PI 
-
-REAL(KIND=JPRB)                            :: TPI
-REAL(KIND=JPRB)                            :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:SIZE_W2E_S',0,ZHOOK_HANDLE)    
-
-IF (PRESENT(PI)) THEN
-  TPI = PI
-ELSE
-  TPI = ASIN(1.0_JPRB)*2.0_JPRB
-ENDIF
-TAILLE = SIZE_W2E(WEST_COORD%LON,EAST_COORD%LON,TPI)
-
-IF (LHOOK) CALL DR_HOOK('EGGANGLES:SIZE_W2E_S',1,ZHOOK_HANDLE)
-END FUNCTION SIZE_W2E_S
-! -------------------------------------------------------------------------------
-END MODULE EGGANGLES
-- 
GitLab