From 540c40733f1080962c41ba195da44e44d49c50c3 Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Wed, 26 Aug 2020 11:01:41 +0200
Subject: [PATCH] Juan 26/08/2020:bitrep , use br_asin,br_sin,br_atan2

---
 src/MNH/dyn_sources.f90    |  6 +++++-
 src/MNH/ini_dynamics.f90   | 12 ++++++++++++
 src/MNH/ini_radiations.f90 |  5 +++++
 src/MNH/set_ref.f90        |  9 ++++++++-
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/MNH/dyn_sources.f90 b/src/MNH/dyn_sources.f90
index 3972eae3c..d45b05eed 100644
--- a/src/MNH/dyn_sources.f90
+++ b/src/MNH/dyn_sources.f90
@@ -246,7 +246,8 @@ IF ((.NOT.L1D).AND.(.NOT.LCARTESIAN) )  THEN
                       & MYF(PVT) * ZWORK1 - MZF(PWT) , &
                       & MYF(PVT) , MZF(PWT) , MXM(PWT) , MYM(PWT) )
     CALL MPPDB_CHECK3DM("DYN_SOOURCES:SUITE",PRECISION,&
-         &  MXM(ZRVT),MXM(PVT),MXM(PWT),MXM(ZWORK1),MXM(ZWORK2),MXM(ZWORK3)  )
+         &  MXM(ZRVT),MXM(PVT),MXM(PWT),MXM(ZWORK1),MXM(ZWORK2),MXM(ZWORK3),&
+         &  ZRUT,ZRVT,PRUS,PRVS,PRWS )
 !
     PRUS(:,:,:) = PRUS                                              &
     + MXM( MYF(ZRVT*PVT) * ZWORK2 * ZWORK3 )                        &
@@ -283,6 +284,9 @@ IF (LCORIO)   THEN
 !
     ZWORK1(:,:,:) = SPREAD( PCORIOX(:,:),DIM=3,NCOPIES=IKU) * PRHODJ(:,:,:) 
     ZWORK2(:,:,:) = SPREAD( PCORIOY(:,:),DIM=3,NCOPIES=IKU) * PRHODJ(:,:,:)
+    !
+    CALL MPPDB_CHECK3DM("DYN_SOOURCES:CORIOLIS",PRECISION,&
+         & ZWORK1,ZWORK2,ZWORK3 )
 !
     PRUS(:,:,:) = PRUS - MXM( ZWORK2 * MZF(PWT) )
 !
diff --git a/src/MNH/ini_dynamics.f90 b/src/MNH/ini_dynamics.f90
index e4d00f5bb..13ea80bc1 100644
--- a/src/MNH/ini_dynamics.f90
+++ b/src/MNH/ini_dynamics.f90
@@ -296,6 +296,13 @@ USE MODI_ZDIFFUSETUP
 !
 USE MODE_ll
 USE MODE_TYPE_ZDIFFU
+#ifdef MNH_BITREP
+USE MODI_BITREP
+#define SIN BR_SIN
+#define COS BR_COS
+#endif
+!
+USE MODE_MPPDB
 !
 IMPLICIT NONE
 !
@@ -474,6 +481,11 @@ IF (.NOT.LCARTESIAN) THEN
                  / COS(PLAT(:,:)*ZCDR)
   PCURVY (:,:)   = SIN(ZGAMMA(:,:)) * (SIN(PLAT(:,:)*ZCDR) -XRPK)         &
                  / COS(PLAT(:,:)*ZCDR)
+  !
+  CALL MPPDB_CHECK2D(PCORIOX,"ini_dynamics:PCORIOX",PRECISION)
+  CALL MPPDB_CHECK2D(PCORIOY,"ini_dynamics:PCORIOY",PRECISION)
+  CALL MPPDB_CHECK2D(PCORIOZ,"ini_dynamics:PCORIOZ",PRECISION)
+  !
 ELSE
   ZMBETA = - (XBETA*ZCDR)
   PCORIOX(:,:) = - 2. * XOMEGA * COS(XLAT0*ZCDR) * SIN(ZMBETA)
diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90
index d05fc31f5..04df49009 100644
--- a/src/MNH/ini_radiations.f90
+++ b/src/MNH/ini_radiations.f90
@@ -130,6 +130,11 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read
 USE MODE_ll
 !
 USE MODI_SHUMAN
+#ifdef MNH_BITREP
+USE MODI_BITREP
+#define ATAN BR_ATAN
+#define ATAN2 BR_ATAN2
+#endif
 !
 IMPLICIT NONE
 !
diff --git a/src/MNH/set_ref.f90 b/src/MNH/set_ref.f90
index 925fd52ef..45862bf31 100644
--- a/src/MNH/set_ref.f90
+++ b/src/MNH/set_ref.f90
@@ -165,6 +165,9 @@ USE MODE_IO_FIELD_READ, only: IO_Field_read
 USE MODE_ll
 USE MODE_MPPDB
 USE MODE_REPRO_SUM
+#ifdef MNH_BITREP
+USE MODI_BITREP
+#endif
 !
 IMPLICIT NONE
 !
@@ -370,7 +373,11 @@ ZCVD_O_RD = (XCPD / XRD) - 1.
 IF (LBOUSS) THEN
   ZRHOREF(:,:,:) = PRHODREF(:,:,:)
 ELSE
-  ZRHOREF(:,:,:) = PEXNREF(:,:,:) ** ZCVD_O_RD * XP00 / ( XRD * PTHVREF(:,:,:) )
+#ifndef MNH_BITREP   
+   ZRHOREF(:,:,:) = PEXNREF(:,:,:) ** ZCVD_O_RD * XP00 / ( XRD * PTHVREF(:,:,:) )
+#else
+   ZRHOREF(:,:,:) = BR_POW ( PEXNREF(:,:,:) , ZCVD_O_RD ) * XP00 / ( XRD * PTHVREF(:,:,:) )
+#endif   
   ZRHOREF(:,:,1)=ZRHOREF(:,:,2)  ! this avoids to obtain erroneous values for
 END IF
                                ! rv at this last point
-- 
GitLab