diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90
deleted file mode 100644
index a0c35ec7763081afce3ccaaa91ade2576f2f8193..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90
+++ /dev/null
@@ -1,140 +0,0 @@
-!      #################################
-       MODULE MODI_CLOUD_OVERLAP_DECORR_LEN
-!      #################################
-INTERFACE
-
-SUBROUTINE CLOUD_OVERLAP_DECORR_LEN &
-     & (KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, &
-     &  PDECORR_LEN_EDGES_KM, PDECORR_LEN_WATER_KM, PDECORR_LEN_RATIO)
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KLON) ! Sine of latitude
-INTEGER(KIND=JPIM),INTENT(IN) :: NDECOLAT
-REAL(KIND=JPRB), INTENT(OUT)           :: PDECORR_LEN_EDGES_KM(KLON)
-REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_WATER_KM(KLON)
-REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_RATIO
-
-END SUBROUTINE CLOUD_OVERLAP_DECORR_LEN
-END INTERFACE
-END MODULE MODI_CLOUD_OVERLAP_DECORR_LEN
-
-SUBROUTINE CLOUD_OVERLAP_DECORR_LEN &
-     & (KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, &
-     &  PDECORR_LEN_EDGES_KM, PDECORR_LEN_WATER_KM, PDECORR_LEN_RATIO)
-
-! CLOUD_OVERLAP_DECORR_LEN
-!
-! PURPOSE
-! -------
-!   Calculate the cloud overlap decorrelation length as a function of
-!   latitude for use in the radiation scheme
-!
-! INTERFACE
-! ---------
-!   CLOUD_OVERLAP_DECORR_LEN is called from RADLSWR and RADIATION_SCHEME
-!
-! AUTHOR
-! ------
-!   Robin Hogan, ECMWF (using code extracted from radlswr.F90)
-!   Original: 2016-02-16
-!
-! MODIFICATIONS
-! -------------
-!
-! -------------------------------------------------------------------
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-USE YOMCST   , ONLY : RPI
-USE MODD_PARAM_ECRAD_N   , ONLY : XDECORR_CF,XDECORR_CW
-
-! -------------------------------------------------------------------
-
-IMPLICIT NONE
-
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-
-! *** Single-level variables 
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KLON) ! Sine of latitude
-
-! *** Configuration variable controlling the overlap scheme
-INTEGER(KIND=JPIM),INTENT(IN) :: NDECOLAT
-
-! OUTPUT ARGUMENTS
-
-! *** Decorrelation lengths for cloud edges and cloud water content,
-! *** in km
-REAL(KIND=JPRB), INTENT(OUT)           :: PDECORR_LEN_EDGES_KM(KLON)
-REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_WATER_KM(KLON)
-  
-! Ratio of water-content to cloud-edge decorrelation lengths
-REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_RATIO
-
-! LOCAL VARIABLES
-
-REAL(KIND=JPRB) :: ZRADIANS_TO_DEGREES, ZABS_LAT_DEG, ZCOS_LAT
-
-INTEGER(KIND=JPIM) :: JL
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',0,ZHOOK_HANDLE)
-  
-! -------------------------------------------------------------------
-IF (NDECOLAT == 0) THEN
-
-  ! Decorrelation lengths are constant values
-  PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) = XDECORR_CF
-  IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN
-    PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = XDECORR_CW
-  ENDIF
-  IF (PRESENT(PDECORR_LEN_RATIO)) THEN
-    PDECORR_LEN_RATIO = XDECORR_CW / XDECORR_CF
-  ENDIF
-
-ELSE
-
-  ZRADIANS_TO_DEGREES = 180.0_JPRB / RPI
-
-  IF (NDECOLAT == 1) THEN
-    ! Shonk et al. (2010) Eq. 13 formula
-    DO JL = KIDIA,KFDIA
-      ZABS_LAT_DEG = ABS(ASIN(PGEMU(JL)) * ZRADIANS_TO_DEGREES)
-      PDECORR_LEN_EDGES_KM(JL) = 2.899_JPRB - 0.02759_JPRB * ZABS_LAT_DEG
-    ENDDO
-  ELSE ! NDECOLAT == 2
-    DO JL = KIDIA,KFDIA
-      ! Shonk et al. (2010) but smoothed over the equator
-      ZCOS_LAT = COS(ASIN(PGEMU(JL)))
-      PDECORR_LEN_EDGES_KM(JL) = 0.75_JPRB + 2.149_JPRB * ZCOS_LAT*ZCOS_LAT
-    ENDDO
-  ENDIF
-
-  ! Both NDECOLAT = 1 and 2 assume that the decorrelation length for
-  ! cloud water content is half that for cloud edges
-  IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN
-    PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) * 0.5_JPRB
-  ENDIF
-
-  IF (PRESENT(PDECORR_LEN_RATIO)) THEN
-    PDECORR_LEN_RATIO = 0.5_JPRB
-  ENDIF
-
-ENDIF
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',1,ZHOOK_HANDLE)
-
-END SUBROUTINE CLOUD_OVERLAP_DECORR_LEN
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90
deleted file mode 100644
index 215743cfb0e67a32125a895a48f7114e5099eba5..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90
+++ /dev/null
@@ -1,345 +0,0 @@
-SUBROUTINE COS_SZA(KSTART,KEND,KCOL,PGEMU,PGELAM,LDRADIATIONTIMESTEP,PMU0)
-
-!**** *COS_SZA*   
-
-!     Purpose.
-!     --------
-!        Compute the cosine of the solar zenith angle.  Note that this
-!        is needed for three different things: (1) as input to the
-!        radiation scheme in which it is used to compute the path
-!        length of the direct solar beam through the atmosphere, (2)
-!        every timestep to scale the solar fluxes by the incoming
-!        solar radiation at top-of-atmosphere, and (3) to compute the
-!        albedo of the ocean.  For (1) we ideally want an average
-!        value for the duration of a radiation timestep while for (2)
-!        we want an average value for the duration of a model
-!        timestep.
-
-!**   Interface.
-!     ----------
-!        *CALL* *COS_SZA(...)
-
-!        Explicit arguments : 
-!        ------------------
-!            PGEMU - Sine of latitude
-!            PGELAM - Geographic longitude in radians
-!            LDRadiationTimestep - Is this for a radiation timestep?
-!            PMU0 - Output cosine of solar zenith angle
-
-!        Implicit arguments :
-!        --------------------
-!            YRRIP%RWSOVR, RWSOVRM - Solar time for model/radiation timesteps
-!            RCODECM, RSIDECM - Sine/cosine of solar declination
-!            YRERAD%LAverageSZA - Average solar zenith angle in time interval?
-!            YRRIP%TSTEP - Model timestep in seconds
-!            YRERAD%NRADFR - Radiation frequency in timesteps
-
-!     Method.
-!     -------
-!        Compute cosine of the solar zenith angle, mu0, from lat, lon
-!        and solar time using standard formula.  If
-!        YRERAD%LAverageSZA=FALSE then this is done at a single time,
-!        which is assumed to be the mid-point of either the model or
-!        the radiation timestep.  If YRERAD%LAverageSZA=TRUE then we
-!        compute the average over the model timestep exactly by first
-!        computing sunrise/sunset times. For radiation timesteps, mu0
-!        is to be used to compute the path length of the direct solar
-!        beam through the atmosphere, and the fluxes are subsequently
-!        weighted by mu0.  Therefore night-time values are not used,
-!        so we average mu0 only when the sun is above the horizon.
-
-!     Externals.
-!     ----------
-
-!     Reference.
-!     ----------
-!        ECMWF Research Department documentation of the IFS
-!
-!        See also: Zhou, L., M. Zhang, Q. Bao, and Y. Liu (2015), On
-!        the incident solar radiation in CMIP5
-!        models. Geophys. Res. Lett., 42, 1930–1935. doi:
-!        10.1002/2015GL063239.
-
-!     Author.
-!     -------
-!      Robin Hogan, ECMWF, May 2015
-
-!     Modifications:
-!     --------------
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-USE YOMCST   , ONLY : RPI, RDAY
-! USE YOMRIP   , ONLY : YRRIP
-USE MODD_RADIATIONS_N , ONLY : XCOSDEL, XSINDEL, XZENITH ! no difference between yoerip and yomrip here
-! USE YOERIP   , ONLY : YRERIP
-USE MODD_PARAM_ECRAD_N  , ONLY : NRADFR, LCENTREDTIMESZA, LAVERAGESZA
-USE YOMLUN   , ONLY : NULOUT
-
-USE MODD_PARAM_RAD_n,  ONLY : XDTRAD
-USE MODD_RADIATIONS_n, ONLY : XSINDEL, XCOSDEL, XTSIDER
-USE MODD_TIME_n,       ONLY : TDTRAD_FULL
-USE MODD_DYN_n,       ONLY : XTSTEP
-
-!     ------------------------------------------------------------------
-
-IMPLICIT NONE
-
-INTEGER(KIND=JPIM),INTENT(IN) :: KSTART      ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KEND        ! Last column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KCOL        ! Number of columns in arrays
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KCOL) ! Sine of latitude
-REAL(KIND=JPRB),   INTENT(IN) :: PGELAM(KCOL)! Longitude in radians
-LOGICAL, INTENT(IN) :: LDRADIATIONTIMESTEP   ! Is this for a radiation timestep?
-REAL(KIND=JPRB),  INTENT(OUT) :: PMU0(KCOL)  ! Cosine of solar zenith angle
-
-! Solar time at the start and end of the time interval
-REAL(KIND=JPRB) :: ZSOLARTIMESTART, ZSOLARTIMEEND
-
-! The time of half a model/radiation timestep, in radians
-REAL(KIND=JPRB) :: ZHALFTIMESTEP
-
-! For efficiency we precompute sin(solar declination)*sin(latitude)
-REAL(KIND=JPRB) :: ZSINDECSINLAT(KSTART:KEND)
-!...and cos(solar declination)*cos(latitude)
-REAL(KIND=JPRB) :: ZCOSDECCOSLAT(KSTART:KEND)
-! ...and cosine of latitude
-REAL(KIND=JPRB) :: ZCOSLAT(KSTART:KEND)
-
-! Tangent of solar declination
-REAL(KIND=JPRB) :: ZTANDEC
-
-! Hour angles (=local solar time in radians plus pi)
-REAL(KIND=JPRB) :: ZHOURANGLESTART, ZHOURANGLEEND
-REAL(KIND=JPRB) :: ZHOURANGLESUNSET, ZCOSHOURANGLESUNSET
-
-INTEGER(KIND=JPIM) :: JCOL        ! Column index
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-REAL(KIND=JPRB) :: ZTIME,ZUT
-REAL(KIND=JPRB) :: ZTUT,ZSOLANG
-
-!     ------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('COS_SZA',0,ZHOOK_HANDLE)
-
-! An average solar zenith angle can only be computed if the solar time
-! is centred on the time interval
-IF (LAVERAGESZA .AND. .NOT. LCENTREDTIMESZA) THEN
-  WRITE(NULOUT,*) 'ERROR IN COS_SZA: LAverageSZA=TRUE but LCentredTimeSZA=FALSE'
-  CALL ABOR1('COS_SZA: ABOR1 CALLED')
-ENDIF
-
-DO JCOL = KSTART,KEND
-  ZCOSLAT(JCOL) = SQRT(1.0_JPRB - PGEMU(JCOL)**2)
-ENDDO
-
-! Computation of solar hour angle from sunposn
-ZTIME     = TDTRAD_FULL%XTIME + 0.5*XDTRAD
-ZUT       = MOD( 24.0+MOD(ZTIME/3600.,24.0),24.0 )
-ZTUT = ZUT - XTSIDER
-ZSOLANG = (ZTUT-12.0)*15.0*(RPI/180.)          ! hour angle in radians
-
-IF (LDRADIATIONTIMESTEP) THEN
-  ! Compute the effective cosine of solar zenith angle for a radiation
-  ! timestep
-
-  ! Precompute quantities that may be used more than once
-  DO JCOL = KSTART,KEND
-    ZSINDECSINLAT(JCOL) = XSINDEL * PGEMU(JCOL)  ! this is the current declination, not that of radiation (averaged over time step)
-    ZCOSDECCOSLAT(JCOL) = XCOSDEL * ZCOSLAT(JCOL)
-  ENDDO
-
-  IF (.NOT. LAVERAGESZA) THEN
-    ! Original method: compute the value at the centre of the
-    ! radiation timestep (assuming that LCentredTimeSZA=TRUE - see
-    ! updtim.F90)
-    DO JCOL = KSTART,KEND
-      ! It would be more efficient to do it like this...
-      ! PMU0(JCOL)=MAX(0.0_JPRB, ZSinDecSinLat(JCOL) &
-      !      & - ZCosDecCosLat(JCOL) * COS(YRERIP%RWSOVRM + PGELAM(JCOL)))
-      ! ...but for bit reproducibility with previous cycle we do it
-      ! like this:
-      PMU0(JCOL) = MAX(0.0_JPRB, ZSINDECSINLAT(JCOL) &
-           & - XCOSDEL*COS(ZSOLANG)*ZCOSLAT(JCOL)*COS(PGELAM(JCOL)) &
-           & + XCOSDEL*SIN(ZSOLANG)*ZCOSLAT(JCOL)*SIN(PGELAM(JCOL)))
-    ENDDO
-
-  ELSE
-    ! Compute the average MU0 for the period of the radiation
-    ! timestep, excluding times when the sun is below the horizon
-
-    ! First compute the sine and cosine of the times of the start and
-    ! end of the radiation timestep
-    ZHALFTIMESTEP = XTSTEP * REAL(NRADFR) * RPI / RDAY
-    ZSOLARTIMESTART = ZSOLANG - ZHALFTIMESTEP
-    ZSOLARTIMEEND   = ZSOLANG + ZHALFTIMESTEP
-
-    ! Compute tangent of solar declination, with check in case someone
-    ! simulates a planet completely tipped over
-    ZTANDEC = XSINDEL / MAX(XCOSDEL, 1.0E-12)
-
-    DO JCOL = KSTART,KEND
-      ! Sunrise equation: cos(hour angle at sunset) =
-      ! -tan(declination)*tan(latitude)
-      ZCOSHOURANGLESUNSET = -ZTANDEC * PGEMU(JCOL) &
-           &              / MAX(ZCOSLAT(JCOL), 1.0E-12)
-      IF (ZCOSHOURANGLESUNSET > 1.0) THEN
-        ! Perpetual darkness
-        PMU0(JCOL) = 0.0_JPRB
-      ELSE
-        ! Compute hour angle at start and end of time interval,
-        ! ensuring that the hour angle of the centre of the time
-        ! window is in the range -PI to +PI (equivalent to ensuring
-        ! that local solar time = solar time + longitude is in the
-        ! range 0 to 2PI)
-        IF (ZSOLANG + PGELAM(JCOL) < 2.0_JPRB*RPI) THEN
-          ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - RPI
-          ZHOURANGLEEND   = ZSOLARTIMEEND   + PGELAM(JCOL) - RPI 
-        ELSE
-          ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - 3.0_JPRB*RPI
-          ZHOURANGLEEND   = ZSOLARTIMEEND   + PGELAM(JCOL) - 3.0_JPRB*RPI
-        ENDIF
-
-        IF (ZCOSHOURANGLESUNSET >= -1.0) THEN
-          ! Not perpetual daylight or perpetual darkness, so we need
-          ! to check for sunrise or sunset lying within the time
-          ! interval
-          ZHOURANGLESUNSET = ACOS(ZCOSHOURANGLESUNSET)
-          IF (ZHOURANGLEEND <= -ZHOURANGLESUNSET &
-               & .OR. ZHOURANGLESTART >= ZHOURANGLESUNSET) THEN
-            ! The time interval is either completely before sunrise or
-            ! completely after sunset
-            PMU0(JCOL) = 0.0_JPRB
-            CYCLE
-          ENDIF
-
-          ! Bound the start and end hour angles by sunrise and sunset
-          ZHOURANGLESTART = MAX(-ZHOURANGLESUNSET, &
-               &                MIN(ZHOURANGLESTART, ZHOURANGLESUNSET))
-          ZHOURANGLEEND   = MAX(-ZHOURANGLESUNSET, &
-               &                MIN(ZHOURANGLEEND,   ZHOURANGLESUNSET))
-        ENDIF
-
-        IF (ZHOURANGLEEND - ZHOURANGLESTART > 1.0E-8) THEN
-          ! Compute average MU0 in the interval ZHourAngleStart to
-          ! ZHourAngleEnd
-          PMU0(JCOL) = ZSINDECSINLAT(JCOL) &
-               & + (ZCOSDECCOSLAT(JCOL) &
-               &    * (SIN(ZHOURANGLEEND) - SIN(ZHOURANGLESTART))) &
-               & / (ZHOURANGLEEND - ZHOURANGLESTART)
-
-          ! Just in case...
-          IF (PMU0(JCOL) < 0.0_JPRB) THEN
-            PMU0(JCOL) = 0.0_JPRB
-          ENDIF
-        ELSE
-          ! Too close to sunrise/sunset for a reliable calculation
-          PMU0(JCOL) = 0.0_JPRB
-        ENDIF
-
-      ENDIF
-    ENDDO
-  ENDIF
-
-ELSE
-  ! Compute the cosine of solar zenith angle for a model timestep
-
-  ! Precompute quantities that may be used more than once
-  DO JCOL = KSTART,KEND
-    ZSINDECSINLAT(JCOL) = XSINDEL * PGEMU(JCOL)
-    ZCOSDECCOSLAT(JCOL) = XCOSDEL * ZCOSLAT(JCOL)
-  ENDDO
-
-  IF (.NOT. LAVERAGESZA) THEN
-    ! Original method: compute the value at the centre of the
-    ! model timestep
-    DO JCOL = KSTART,KEND
-      ! It would be more efficient to do it like this...
-      ! PMU0(JCOL) = MAX(0.0_JPRB, ZSinDecSinLat(JCOL)        &
-      !      & - ZCosDecCosLat(JCOL)*COS(YRRIP%RWSOVR + PGELAM(JCOL)))
-      ! ...but for bit reproducibility with previous cycle we do it
-      ! like this:
-      PMU0(JCOL) = MAX(0.0_JPRB, ZSINDECSINLAT(JCOL) &
-           & - XCOSDEL*COS(ZSOLANG)*ZCOSLAT(JCOL)*COS(PGELAM(JCOL)) &
-           & + XCOSDEL*SIN(ZSOLANG)*ZCOSLAT(JCOL)*SIN(PGELAM(JCOL)))
-    ENDDO
-
-  ELSE
-    ! Compute the average MU0 for the period of the model timestep
-
-    ! First compute the sine and cosine of the times of the start and
-    ! end of the model timestep
-    ZHALFTIMESTEP   = XTSTEP * RPI / RDAY
-    ZSOLARTIMESTART = ZSOLANG - ZHALFTIMESTEP
-    ZSOLARTIMEEND   = ZSOLANG + ZHALFTIMESTEP
-
-    ! Compute tangent of solar declination, with check in case someone
-    ! simulates a planet completely tipped over
-    ZTANDEC = XSINDEL / MAX(XCOSDEL, 1.0E-12)
-
-    DO JCOL = KSTART,KEND
-      ! Sunrise equation: cos(hour angle at sunset) =
-      ! -tan(declination)*tan(latitude)
-      ZCOSHOURANGLESUNSET = -ZTANDEC * PGEMU(JCOL) &
-           &              / MAX(ZCOSLAT(JCOL), 1.0E-12)
-      IF (ZCOSHOURANGLESUNSET > 1.0) THEN
-        ! Perpetual darkness
-        PMU0(JCOL) = 0.0_JPRB
-      ELSE
-        ! Compute hour angle at start and end of time interval,
-        ! ensuring that the hour angle of the centre of the time
-        ! window is in the range -PI to +PI (equivalent to ensuring
-        ! that local solar time = solar time + longitude is in the
-        ! range 0 to 2PI)
-        IF (ZSOLANG + PGELAM(JCOL) < 2.0_JPRB*RPI) THEN
-          ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - RPI
-          ZHOURANGLEEND   = ZSOLARTIMEEND   + PGELAM(JCOL) - RPI 
-        ELSE
-          ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - 3.0_JPRB*RPI
-          ZHOURANGLEEND   = ZSOLARTIMEEND   + PGELAM(JCOL) - 3.0_JPRB*RPI
-        ENDIF
-
-        IF (ZCOSHOURANGLESUNSET >= -1.0) THEN
-          ! Not perpetual daylight or perpetual darkness, so we need
-          ! to check for sunrise or sunset lying within the time
-          ! interval
-          ZHOURANGLESUNSET = ACOS(ZCOSHOURANGLESUNSET)
-          IF (ZHOURANGLEEND <= -ZHOURANGLESUNSET &
-               & .OR. ZHOURANGLESTART >= ZHOURANGLESUNSET) THEN
-            ! The time interval is either completely before sunrise or
-            ! completely after sunset
-            PMU0(JCOL) = 0.0_JPRB
-            CYCLE
-          ENDIF
-
-          ! Bound the start and end hour angles by sunrise and sunset
-          ZHOURANGLESTART = MAX(-ZHOURANGLESUNSET, &
-               &                MIN(ZHOURANGLESTART, ZHOURANGLESUNSET))
-          ZHOURANGLEEND   = MAX(-ZHOURANGLESUNSET, &
-               &                MIN(ZHOURANGLEEND,   ZHOURANGLESUNSET))
-        ENDIF
-
-        ! Compute average MU0 in the model timestep, although the
-        ! numerator considers only the time from ZHourAngleStart to
-        ! ZHourAngleEnd that the sun is above the horizon
-        PMU0(JCOL) = (ZSINDECSINLAT(JCOL) * (ZHOURANGLEEND-ZHOURANGLESTART)   &
-           & + ZCOSDECCOSLAT(JCOL)*(SIN(ZHOURANGLEEND)-SIN(ZHOURANGLESTART))) &
-           & / (2.0_JPRB * ZHALFTIMESTEP)
-
-        ! This shouldn't ever result in negative values, but just in
-        ! case
-        IF (PMU0(JCOL) < 0.0_JPRB) THEN
-          PMU0(JCOL) = 0.0_JPRB
-        ENDIF
-
-      ENDIF
-    ENDDO
-  ENDIF
-
-ENDIF
-
-
-!     ------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('COS_SZA',1,ZHOOK_HANDLE)
-END SUBROUTINE COS_SZA
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90
deleted file mode 100644
index 8d078cca1e9be027612fc25162d4c1b1ff36ea82..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90
+++ /dev/null
@@ -1,196 +0,0 @@
-!      #################################
-       MODULE MODI_ICE_EFFECTIVE_RADIUS
-!      #################################
-INTERFACE
-
-SUBROUTINE ICE_EFFECTIVE_RADIUS &
-     & (KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, &
-     &  PRE_UM)
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-INTEGER(KIND=JPIM),INTENT(IN) :: KLEV     ! Number of levels
-
-! *** Variables on model levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE(KLON,KLEV)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)
-REAL(KIND=JPRB),   INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV)  ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_ICE(KLON,KLEV)       ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_SNOW(KLON,KLEV)      ! (kg/kg)
-
-! *** Single level variable
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KLON) ! Sine of latitude
-
-! OUTPUT ARGUMENT
-! Effective radius
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns)
-
-END SUBROUTINE ICE_EFFECTIVE_RADIUS
-END INTERFACE
-END MODULE MODI_ICE_EFFECTIVE_RADIUS
-
-SUBROUTINE ICE_EFFECTIVE_RADIUS &
-     & (KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, &
-     &  PRE_UM)
-     
-! ICE_EFFECTIVE_RADIUS
-!
-! PURPOSE
-! -------
-!   Calculate effective radius of ice clouds
-!
-! AUTHOR
-! ------
-!   Robin Hogan, ECMWF (using code extracted from radlswr.F90)
-!   Original: 2016-02-24
-!
-! MODIFICATIONS
-! -------------
-!
-!
-! -------------------------------------------------------------------
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-! USE YOERAD   , ONLY : YRERAD
-USE YOM_YGFL , ONLY : YGFL
-! USE YOECLDP  , ONLY : YRECLDP
-USE YOERDU   , ONLY : REPLOG, REPSCW
-USE YOMLUN   , ONLY : NULERR
-USE YOMCST   , ONLY : RD, RPI, RTT
-USE MODD_PARAM_ECRAD_n , ONLY : NRADIP
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-INTEGER(KIND=JPIM),INTENT(IN) :: KLEV     ! Number of levels
-
-! *** Variables on model levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE(KLON,KLEV)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)
-REAL(KIND=JPRB),   INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV)  ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_ICE(KLON,KLEV)       ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_SNOW(KLON,KLEV)      ! (kg/kg)
-
-! *** Single level variable
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KLON) ! Sine of latitude
-
-! OUTPUT ARGUMENT
-! Effective radius
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns)
-
-! LOCAL VARIABLES
-
-REAL(KIND=JPRB) :: ZIWC_INCLOUD_GM3 ! In-cloud ice+snow water content in g m-3
-REAL(KIND=JPRB) :: ZAIR_DENSITY_GM3 ! Air density in g m-3
-
-REAL(KIND=JPRB) :: ZTEMPERATURE_C   ! Temperature, degrees Celcius
-REAL(KIND=JPRB) :: ZTEMP_FACTOR     ! Temperature, Kelvin minus 83.15
-REAL(KIND=JPRB) :: ZAIWC, ZBIWC     ! Factors in empirical relationship
-REAL(KIND=JPRB) :: ZDEFAULT_RE_UM   ! Default effective radius in microns 
-REAL(KIND=JPRB) :: ZDIAMETER_UM     ! Effective diameter in microns
-
-! Min effective diameter in microns; may vary with latitude
-REAL(KIND=JPRB) :: ZMIN_DIAMETER_UM(KLON)
-
-INTEGER :: JL, JK
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-! -------------------------------------------------------------------
-
-#include "abor1.intfb.h"
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('ICE_EFFECTIVE_RADIUS',0,ZHOOK_HANDLE)
-
-! -------------------------------------------------------------------
-SELECT CASE(NRADIP)
-CASE(0)
-  ! Ice effective radius fixed at 40 microns
-  PRE_UM(KIDIA:KFDIA,:) = 40.0_JPRB  
-
-CASE(1,2)
-  ! Ice effective radius from Liou and Ou (1994)
-  DO JK = 1,KLEV
-    DO JL = KIDIA,KFDIA
-      ! Convert Kelvin to Celcius, preventing positive numbers
-      ZTEMPERATURE_C = MIN(PTEMPERATURE(JL,JK) - RTT, -0.1)
-      ! Liou and Ou's empirical formula
-      PRE_UM(JL,JK) = 326.3_JPRB + ZTEMPERATURE_C * (12.42_JPRB &
-           &  + ZTEMPERATURE_C * (0.197_JPRB + ZTEMPERATURE_C * 0.0012_JPRB))
-      IF (NRADIP == 1) THEN
-        ! Original Liou and Ou (1994) bounds of 40-130 microns
-        PRE_UM(JL,JK) = MAX(PRE_UM(JL,JK), 40.0_JPRB)
-        PRE_UM(JL,JK) = MIN(PRE_UM(JL,JK),130.0_JPRB)
-      ELSE
-        ! Formulation following Jakob, Klein modifications to ice
-        ! content
-        PRE_UM(JL,JK) = MAX(PRE_UM(JL,JK), 30.0_JPRB)
-        PRE_UM(JL,JK) = MIN(PRE_UM(JL,JK), 60.0_JPRB)
-      ENDIF
-    ENDDO
-  ENDDO
-
-CASE(3)
-  ! Ice effective radius = f(T,IWC) from Sun and Rikus (1999), revised
-  ! by Sun (2001)
-
-  ! Default effective radius is computed from an effective diameter of
-  ! 80 microns; note that multiplying by re2de actually converts from
-  ! effective diameter to effective radius.
-  ZDEFAULT_RE_UM = 80.0_JPRB * XRE2DE
-
-  ! Minimum effective diameter may vary with latitude
-  IF (NMINICE == 0) THEN
-    ! Constant effective diameter
-    ZMIN_DIAMETER_UM(KIDIA:KFDIA) = XRMINICE
-  ELSE
-    ! Ice effective radius varies with latitude, smaller at poles
-    DO JL = KIDIA,KFDIA
-      ZMIN_DIAMETER_UM(JL) = 20.0_JPRB + (XRMINICE - 20.0_JPRB) &
-           &                          * COS(ASIN(PGEMU(JL)))
-    ENDDO
-  ENDIF
-
-  DO JK = 1,KLEV
-    DO JL = KIDIA,KFDIA
-      IF (PCLOUD_FRAC(JL,JK) > 0.001_JPRB &
-           &  .AND. (PQ_ICE(JL,JK)+PQ_SNOW(JL,JK)) > 0.0_JPRB) THEN
-        ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) / (RD*PTEMPERATURE(JL,JK))
-        ZIWC_INCLOUD_GM3 = ZAIR_DENSITY_GM3 * (PQ_ICE(JL,JK) + PQ_SNOW(JL,JK)) &
-             &           / PCLOUD_FRAC(JL,JK)
-        ZTEMPERATURE_C = PTEMPERATURE(JL,JK) - RTT
-        ! Sun, 2001 (corrected from Sun & Rikus, 1999)
-        ZAIWC = 45.8966_JPRB * ZIWC_INCLOUD_GM3**0.2214_JPRB
-        ZBIWC = 0.7957_JPRB  * ZIWC_INCLOUD_GM3**0.2535_JPRB
-        ZDIAMETER_UM = (1.2351_JPRB + 0.0105_JPRB * ZTEMPERATURE_C) &
-             & * (ZAIWC + ZBIWC*(PTEMPERATURE(JL,JK) - 83.15_JPRB))
-        ZDIAMETER_UM = MIN ( MAX( ZDIAMETER_UM, ZMIN_DIAMETER_UM(JL)), 155.0_JPRB)
-        PRE_UM(JL,JK) = ZDIAMETER_UM * XRE2DE
-      ELSE
-        PRE_UM(JL,JK) = ZDEFAULT_RE_UM
-      ENDIF
-    ENDDO
-  ENDDO
-  
-CASE DEFAULT
-  WRITE(NULERR,'(A,I0,A)') 'ICE EFFECTIVE RADIUS OPTION NRADLP=',NRADIP,' NOT AVAILABLE'
-  CALL ABOR1('ERROR IN ICE_EFFECTIVE_RADIUS')
-
-END SELECT
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('ICE_EFFECTIVE_RADIUS',1,ZHOOK_HANDLE)
-  
-END SUBROUTINE ICE_EFFECTIVE_RADIUS
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90
deleted file mode 100644
index 7a1348ad92996ce8ca3a900ed37b7914994ac00f..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90
+++ /dev/null
@@ -1,300 +0,0 @@
-MODULE MODI_LIQUID_EFFECTIVE_RADIUS
-
-INTERFACE
-
-SUBROUTINE LIQUID_EFFECTIVE_RADIUS &
-     & (KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQ, PQ_RAIN, &
-     &  PLAND_FRAC, PCCN_LAND, PCCN_SEA, &
-     &  PRE_UM)
-
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-
-
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-INTEGER(KIND=JPIM),INTENT(IN) :: KLEV     ! Number of levels
-
-! *** Variables on model levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE(KLON,KLEV)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)
-REAL(KIND=JPRB),   INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_LIQ(KLON,KLEV)       ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_RAIN(KLON,KLEV)      ! (kg/kg)
-
-! *** Single-level variables 
-REAL(KIND=JPRB),   INTENT(IN) :: PLAND_FRAC(KLON)        ! 1=land, 0=sea
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_LAND(KLON)
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_SEA(KLON)
-
-! OUTPUT ARGUMENT
-
-! Effective radius
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns)
-
-END SUBROUTINE LIQUID_EFFECTIVE_RADIUS
-END INTERFACE
-END MODULE MODI_LIQUID_EFFECTIVE_RADIUS
-
-SUBROUTINE LIQUID_EFFECTIVE_RADIUS &
-     & (KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQ, PQ_RAIN, &
-     &  PLAND_FRAC, PCCN_LAND, PCCN_SEA, &
-     &  PRE_UM)
-
-! LIQUID_EFFECTIVE_RADIUS
-!
-! PURPOSE
-! -------
-!   Calculate effective radius of liquid clouds
-!
-! AUTHOR
-! ------
-!   Robin Hogan, ECMWF (using code extracted from radlswr.F90)
-!   Original: 2015-09-24
-!
-! MODIFICATIONS
-! -------------
-!
-!
-! -------------------------------------------------------------------
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-!USE YOERAD   , ONLY : YRERAD
-USE MODD_PARAM_ECRAD_n , ONLY : NRADLP, NAERMACC, NMCVAR, XCCNSEA, XCCNLND, NAERCLD, &
-                            &   NACTAERO, LCCNO, LCCNL
-
-USE YOM_YGFL , ONLY : YGFL
-! USE YOECLDP  , ONLY : YRECLDP
-USE YOERDU   , ONLY : REPLOG, REPSCW
-USE YOMLUN   , ONLY : NULERR
-USE YOMCST   , ONLY : RD, RPI
-
-! -------------------------------------------------------------------
-
-IMPLICIT NONE
-
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-INTEGER(KIND=JPIM),INTENT(IN) :: KLEV     ! Number of levels
-
-! *** Variables on model levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE(KLON,KLEV)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)
-REAL(KIND=JPRB),   INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_LIQ(KLON,KLEV)       ! (kg/kg)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_RAIN(KLON,KLEV)      ! (kg/kg)
-
-! *** Single-level variables 
-REAL(KIND=JPRB),   INTENT(IN) :: PLAND_FRAC(KLON)        ! 1=land, 0=sea
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_LAND(KLON)
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_SEA(KLON)
-
-! OUTPUT ARGUMENT
-
-! Effective radius
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns)
-
-! PARAMETERS
-
-! Minimum and maximum effective radius, in microns
-REAL(KIND=JPRB), PARAMETER :: PP_MIN_RE_UM =  4.0_JPRB
-REAL(KIND=JPRB), PARAMETER :: PP_MAX_RE_UM = 30.0_JPRB
-
-! LOCAL VARIABLES
-INTEGER :: IRADLP ! ID of effective radius scheme to use
-INTEGER :: NACTIVE_AEROSOL ! Number of active aerosol
-REAL(KIND=JPRB) :: ZCCN    ! CCN concentration (units?)
-
-REAL(KIND=JPRB) :: ZSPECTRAL_DISPERSION
-REAL(KIND=JPRB) :: ZNTOT_CM3 ! Number conc in cm-3
-REAL(KIND=JPRB) :: ZRE_CUBED
-REAL(KIND=JPRB) :: ZLWC_GM3, ZRWC_GM3 ! In-cloud liquid, rain content in g m-3
-REAL(KIND=JPRB) :: ZAIR_DENSITY_GM3   ! Air density in g m-3
-REAL(KIND=JPRB) :: ZRAIN_RATIO        ! Ratio of rain to liquid water content
-REAL(KIND=JPRB) :: ZWOOD_FACTOR, ZRATIO
-REAL(KIND=JPRB) :: ZNUM, ZDEN, ZNTOT,ZD
-
-INTEGER :: JL, JK
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-! -------------------------------------------------------------------
-
-#include "abor1.intfb.h"
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('LIQUID_EFFECTIVE_RADIUS',0,ZHOOK_HANDLE)
-
-! -------------------------------------------------------------------
-
-! Reproduce logic from RADLSWR
-NACTIVE_AEROSOL = NACTAERO
-IF (NACTAERO == 0 .AND. NAERMACC == 1) NACTIVE_AEROSOL = NMCVAR
-IRADLP = NRADLP
-IF (NACTIVE_AEROSOL >= 12 .AND. NAERCLD > 0 ) IRADLP=3 
-
-SELECT CASE(IRADLP)
-CASE(0)
-  ! Very old parameterization as a function of pressure, used in ERA-15
-  PRE_UM(KIDIA:KFDIA,:) = 10.0_JPRB &
-       &  + (100000.0_JPRB-PPRESSURE(KIDIA:KFDIA,:))*3.5_JPRB
-  
-CASE(1)
-  ! Simple distinction between land (10um) and ocean (13um) by Zhang
-  ! and Rossow
-  DO JL = KIDIA,KFDIA
-    IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN
-      PRE_UM(JL,:) = 13.0_JPRB
-    ELSE
-      PRE_UM(JL,:) = 10.0_JPRB
-    ENDIF
-  ENDDO
-  
-CASE(2)
-  ! Martin et al. (JAS 1994)
-  ! Old ECMWF version
-  DO JL = KIDIA,KFDIA 
-    IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN
-        ZCCN=150.
-        ZD=0.33
-        ZNTOT=-1.15E-03*ZCCN*ZCCN+0.963*ZCCN+5.30
-    ELSE
-        ZCCN=900.
-        ZD=0.43
-        ZNTOT=-2.10E-04*ZCCN*ZCCN+0.568*ZCCN-27.9
-    ENDIF
-    
-   ! Only consider cloudy regions
-    DO JK = 1,KLEV
-        IF (PCLOUD_FRAC(JL,JK) >= 0.001_JPRB &
-            &  .AND. (PQ_LIQ(JL,JK)+PQ_RAIN(JL,JK)) > 0.0_JPRB) THEN
-
-            ! Compute liquid and rain water contents
-            ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) &
-                    &           / (RD*PTEMPERATURE(JL,JK))
-            ! In-cloud mean water contents found by dividing by cloud
-            ! fraction
-            ZLWC_GM3 = ZAIR_DENSITY_GM3 * PQ_LIQ(JL,JK)  / PCLOUD_FRAC(JL,JK)
-            ZRWC_GM3 = ZAIR_DENSITY_GM3 * PQ_RAIN(JL,JK) / PCLOUD_FRAC(JL,JK)
-    
-            ZNUM=3.*(ZLWC_GM3+ZRWC_GM3)*(1.+3.*ZD*ZD)**2 ! conversion mixing ratio into LWC
-            ZDEN=4.*RPI*ZNTOT*(1.+ZD*ZD)**3
-            PRE_UM(JL,JK) =100.*(ZNUM/ZDEN)**0.333
-            PRE_UM(JL,JK)=MAX(PRE_UM(JL,JK), 4.)
-            PRE_UM(JL,JK)=MIN(PRE_UM(JL,JK),16.)
-        ENDIF
-    ENDDO  
-    
-  ENDDO 
-! print*, "PRE_UM"
-! print*, PRE_UM 
-! pause
-! 
-! print*, "PQ_LIQ+PQ_RAIN"
-! print*, PQ_LIQ+PQ_RAIN
-! pause 
-
- 
-CASE(3) 
- ! Improved version in ECRAD
-  DO JL = KIDIA,KFDIA
-    ! First compute the cloud droplet concentration
-    IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN
-      ! Sea case
-      IF (LCCNO) THEN
-        ZCCN = PCCN_SEA(JL)
-      ELSE
-        ZCCN = XCCNSEA
-      ENDIF
-      ZSPECTRAL_DISPERSION = 0.77_JPRB
-      ! Cloud droplet concentration in cm-3 (activated CCN) over
-      ! ocean
-      ZNTOT_CM3 = -1.15E-03_JPRB*ZCCN*ZCCN + 0.963_JPRB*ZCCN + 5.30_JPRB
-    ELSE
-      ! Land case
-      IF (LCCNL) THEN 
-        ZCCN=PCCN_LAND(JL)
-      ELSE  
-        ZCCN=XCCNLND
-      ENDIF
-      ZSPECTRAL_DISPERSION = 0.69_JPRB
-      ! Cloud droplet concentration in cm-3 (activated CCN) over
-      ! land
-      ZNTOT_CM3 = -2.10E-04_JPRB*ZCCN*ZCCN + 0.568_JPRB*ZCCN - 27.9_JPRB
-    ENDIF
-    
-    ZRATIO = (0.222_JPRB/ZSPECTRAL_DISPERSION)**0.333_JPRB
-    
-    DO JK = 1,KLEV
-
-      ! Only consider cloudy regions
-      IF (PCLOUD_FRAC(JL,JK) >= 0.001_JPRB &
-           &  .AND. (PQ_LIQ(JL,JK)+PQ_RAIN(JL,JK)) > 0.0_JPRB) THEN
-
-        ! Compute liquid and rain water contents
-        ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) &
-             &           / (RD*PTEMPERATURE(JL,JK))
-        ! In-cloud mean water contents found by dividing by cloud
-        ! fraction
-        ZLWC_GM3 = ZAIR_DENSITY_GM3 * PQ_LIQ(JL,JK)  / PCLOUD_FRAC(JL,JK)
-        ZRWC_GM3 = ZAIR_DENSITY_GM3 * PQ_RAIN(JL,JK) / PCLOUD_FRAC(JL,JK)
-      
-        ! Wood's (2000, eq. 19) adjustment to Martin et al's
-        ! parameterization
-        IF (ZLWC_GM3 > REPSCW) THEN
-          ZRAIN_RATIO = ZRWC_GM3 / ZLWC_GM3
-          ZWOOD_FACTOR = ((1.0_JPRB + ZRAIN_RATIO)**0.666_JPRB) &
-               &     / (1.0_JPRB + 0.2_JPRB * ZRATIO*ZRAIN_RATIO)
-        ELSE
-          ZWOOD_FACTOR = 1.0_JPRB
-        ENDIF
-      
-        ! g m-3 and cm-3 units cancel out with density of water
-        ! 10^6/(1000*1000); need a factor of 10^6 to convert to
-        ! microns and cubed root is factor of 100 which appears in
-        ! equation below
-        ZRE_CUBED = (3.0_JPRB * (ZLWC_GM3 + ZRWC_GM3)) &
-             &    / (4.0_JPRB*RPI*ZNTOT_CM3*ZSPECTRAL_DISPERSION)
-        IF (ZRE_CUBED > REPLOG) THEN
-          PRE_UM(JL,JK) = ZWOOD_FACTOR*100.0_JPRB*EXP(0.333_JPRB*LOG(ZRE_CUBED))
-          ! Make sure effective radius is bounded in range 4-30 microns
-          PRE_UM(JL,JK) = MAX(PP_MIN_RE_UM, MIN(PRE_UM(JL,JK), PP_MAX_RE_UM))
-        ELSE
-          PRE_UM(JL,JK) = PP_MIN_RE_UM
-        ENDIF
-
-      ELSE
-        ! Cloud fraction or liquid+rain water content too low to
-        ! consider this a cloud
-        PRE_UM(JL,JK) = PP_MIN_RE_UM
-
-      ENDIF
-
-    ENDDO
-    
-  ENDDO
-  
-
-  
-CASE DEFAULT
-  WRITE(NULERR,'(A,I0,A)') 'LIQUID EFFECTIVE RADIUS OPTION IRADLP=',IRADLP,' NOT AVAILABLE'
-  CALL ABOR1('ERROR IN LIQUID_EFFECTIVE_RADIUS')
-END SELECT
-
-! -------------------------------------------------------------------
-
-IF (LHOOK) CALL DR_HOOK('LIQUID_EFFECTIVE_RADIUS',1,ZHOOK_HANDLE)
-  
-END SUBROUTINE LIQUID_EFFECTIVE_RADIUS
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90
deleted file mode 100644
index e0cdd612165c9401974af01bd5de8a1092087509..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90
+++ /dev/null
@@ -1,625 +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 RCS information
-!-----------------------------------------------------------------
-! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/ecmwf_radiation_vers2.f90,v $ $Revision: 1.3.2.4.2.2.2.1 $
-! masdev4_7 BUG1 2007/06/15 17:47:17
-!-----------------------------------------------------------------
-!      #################################
-       MODULE MODI_RADIATION_SCHEME
-!      #################################
-
-CONTAINS
-
-SUBROUTINE RADIATION_SCHEME &
-     & (KIDIA, KFDIA, KLON, KLEV, KAEROSOL, &
-     &  PSOLAR_IRRADIANCE, &
-     &  PMU0, PTEMPERATURE_SKIN, PALBEDO_DIF, PALBEDO_DIR, &
-     &  PEMIS, PEMIS_WINDOW, &
-     &  PCCN_LAND, PCCN_SEA, &
-     &  PGELAM, PGEMU, PLAND_SEA_MASK, &
-     &  PPRESSURE, PTEMPERATURE, &
-     &  PPRESSURE_H, PTEMPERATURE_H, &
-     &  PQ, PCO2, PCH4, PN2O, PNO2, PCFC11, PCFC12, PHCFC22, PCCL4, PO3_DP, &
-     &  PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_RAIN, PQ_SNOW, &
-     &  PAEROSOL_OLD, PAEROSOL, &
-     &  PFLUX_SW, PFLUX_LW, PFLUX_SW_CLEAR, PFLUX_LW_CLEAR, &
-     &  PFLUX_SW_SURF, PFLUX_LW_SURF, PFLUX_SW_SURF_CLEAR, PFLUX_LW_SURF_CLEAR, &
-     &  PFLUX_DIR_SURF, PFLUX_DIR_SURF_CLEAR, PFLUX_DIR_SURF_INTO_SUN, &
-     &  PFLUX_UV, PFLUX_PAR, PFLUX_PAR_CLEAR, &
-     &  PFLUX_SW_DN_TOA,PFLUX_SW_UP_TOA,PFLUX_LW_UP_TOA, &
-     &  PFLUX_SW_UP_TOA_CLEAR,PFLUX_LW_UP_TOA_CLEAR, &
-     &  PFLUX_SW_DN, PFLUX_LW_DN, PFLUX_SW_UP, PFLUX_LW_UP, &
-     &  PFLUX_SW_DN_CLEAR, PFLUX_LW_DN_CLEAR, PFLUX_SW_UP_CLEAR, PFLUX_LW_UP_CLEAR, &
-     &  PRE_LIQUID_UM, PRE_ICE_UM, &
-     &  PEMIS_OUT, PLWDERIVATIVE, &
-     &  PSWDIFFUSEBAND, PSWDIRECTBAND)
-
-! RADIATION_SCHEME - Interface to modular radiation scheme
-!
-! PURPOSE
-! -------
-!   The modular radiation scheme is contained in a separate
-!   library. This routine puts the the IFS arrays into appropriate
-!   objects, computing the additional data that is required, and sends
-!   it to the radiation scheme.  It returns net fluxes and surface
-!   flux components needed by the rest of the model. 
-!
-!   Lower case is used for variables and types taken from the
-!   radiation library
-!
-! INTERFACE
-! ---------
-!    RADIATION_SCHEME is called from RADLSWR. The
-!    SETUP_RADIATION_SCHEME routine (in the RADIATION_SETUP module)
-!    should have been run first.
-!
-! AUTHOR
-! ------
-!   Robin Hogan, ECMWF
-!   Original: 2015-09-16
-!
-! MODIFICATIONS
-! -------------
-!
-! TO DO
-! -----
-!
-!-----------------------------------------------------------------------
-
-! Modules from ifs or ifsaux libraries
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-! USE YOERAD   , ONLY : YRERAD ! does not exist in MNH
-
-! MNH
-USE MODD_PARAM_ECRAD_n, ONLY : NAERMACC, NDECOLAT, XCLOUD_FRAC_STD,  &  ! replace YRERAD to get attributes
-                            &  LAPPROXLWUPDATE, LAPPROXSWUPDATE
-USE MODD_RADIATIONS_n , ONLY : NSWB_MNH,NSWB_OLD                         
-USE MODE_THERMO  , ONLY : QSAT
-USE MODD_DYN_n , ONLY : XTSTEP, NSTOP
-USE MODD_TIME , ONLY : TDTEXP
-USE MODD_TIME_n , ONLY : TDTMOD,TDTCUR
-USE MODI_ICE_EFFECTIVE_RADIUS
-USE MODI_LIQUID_EFFECTIVE_RADIUS
-USE MODI_CLOUD_OVERLAP_DECORR_LEN
-USE MODD_LUNIT_n , ONLY : TLUOUT
-! MNH
-USE YOMLUN    ,ONLY : NULOUT
-USE RADIATION_SETUP, ONLY : rad_config, &
-     &  NWEIGHT_UV,  IBAND_UV,  WEIGHT_UV, &
-     &  NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, &
-     &  ITYPE_TROP_BG_AER,  TROP_BG_AER_MASS_EXT, &
-     &  ITYPE_STRAT_BG_AER, STRAT_BG_AER_MASS_EXT
-     
-! USE YOMRIP0  , ONLY : NINDAT ! does not exist in MNH
-! USE YOMCT3   , ONLY : NSTEP  ! does not exist in MNH
-! USE YOMRIP   , ONLY : YRRIP  ! does not exist in MNH
-USE YOMCST   , ONLY : RSIGMA ! Stefan-Boltzmann constant
-
-
-! Modules from radiation library
-USE radiation_single_level,   ONLY : single_level_type
-USE radiation_thermodynamics, ONLY : thermodynamics_type
-USE radiation_gas
-USE radiation_cloud,          ONLY : cloud_type
-USE radiation_aerosol,        ONLY : aerosol_type
-USE radiation_flux,           ONLY : flux_type
-USE radiation_interface,      ONLY : radiation, set_gas_units
-USE radiation_save,           ONLY : save_inputs
-
-IMPLICIT NONE
-
-! INPUT ARGUMENTS
-
-! *** Array dimensions and ranges
-INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA    ! Start column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA    ! End column to process
-INTEGER(KIND=JPIM),INTENT(IN) :: KLON     ! Number of columns
-INTEGER(KIND=JPIM),INTENT(IN) :: KLEV     ! Number of levels
-INTEGER(KIND=JPIM),INTENT(IN) :: KAEROSOL ! Number of aerosol types
-
-! *** Single-level fields
-REAL(KIND=JPRB),   INTENT(IN) :: PSOLAR_IRRADIANCE ! (W m-2)
-REAL(KIND=JPRB),   INTENT(IN) :: PMU0(KLON) ! Cosine of solar zenith ang
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE_SKIN(KLON) ! (K)
-! Diffuse and direct components of surface shortwave albedo
-REAL(KIND=JPRB),   INTENT(IN) :: PALBEDO_DIF(KLON,NSWB_OLD)
-REAL(KIND=JPRB),   INTENT(IN) :: PALBEDO_DIR(KLON,NSWB_OLD)
-! Longwave emissivity outside and inside the window region
-REAL(KIND=JPRB),   INTENT(IN) :: PEMIS(KLON)
-REAL(KIND=JPRB),   INTENT(IN) :: PEMIS_WINDOW(KLON)
-! Longitude (radians), sine of latitude
-REAL(KIND=JPRB),   INTENT(IN) :: PGELAM(KLON)
-REAL(KIND=JPRB),   INTENT(IN) :: PGEMU(KLON)
-! Land-sea mask
-REAL(KIND=JPRB),   INTENT(IN) :: PLAND_SEA_MASK(KLON) 
-
-! *** Variables on full levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE(KLON,KLEV)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)
-! *** Variables on half levels
-REAL(KIND=JPRB),   INTENT(IN) :: PPRESSURE_H(KLON,KLEV+1)    ! (Pa)
-REAL(KIND=JPRB),   INTENT(IN) :: PTEMPERATURE_H(KLON,KLEV+1) ! (K)
-
-! *** Gas mass mixing ratios on full levels
-REAL(KIND=JPRB),   INTENT(IN) :: PQ(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCO2(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCH4(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PN2O(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PNO2(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCFC11(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCFC12(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PHCFC22(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCCL4(KLON,KLEV) 
-REAL(KIND=JPRB),   INTENT(IN) :: PO3_DP(KLON,KLEV) ! (Pa*kg/kg) !
-
-! *** Cloud fraction and hydrometeor mass mixing ratios
-REAL(KIND=JPRB),   INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_LIQUID(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_ICE(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_RAIN(KLON,KLEV)
-REAL(KIND=JPRB),   INTENT(IN) :: PQ_SNOW(KLON,KLEV)
-
-! *** Aerosol mass mixing ratios
-REAL(KIND=JPRB),   INTENT(IN) :: PAEROSOL_OLD(KLON,6,KLEV) ! Tegen in optical thickness at 550 nm
-REAL(KIND=JPRB),   INTENT(IN) :: PAEROSOL(KLON,KLEV,KAEROSOL)
-
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_LAND(KLON) 
-REAL(KIND=JPRB),   INTENT(IN) :: PCCN_SEA(KLON) 
-
-! OUTPUT ARGUMENTS
-
-! *** Net fluxes on half-levels (W m-2)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW(KLON,KLEV+1) 
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW(KLON,KLEV+1) 
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_CLEAR(KLON,KLEV+1) 
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_CLEAR(KLON,KLEV+1) 
-
-! *** Surface flux components (W m-2)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_SURF(KLON,NSWB_MNH) 
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_SURF(KLON) 
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_SURF_CLEAR(KLON,NSWB_MNH)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_SURF_CLEAR(KLON)
-! Direct component of surface flux into horizontal plane
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_SURF(KLON,NSWB_MNH)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_SURF_CLEAR(KLON,NSWB_MNH)
-! As PFLUX_DIR but into a plane perpendicular to the sun
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_DIR_SURF_INTO_SUN(KLON,NSWB_MNH)
-
-! *** Ultraviolet and photosynthetically active radiation (W m-2)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_UV(KLON)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_PAR(KLON)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_PAR_CLEAR(KLON)
-
-! *** Other single-level diagnostics
-! Top-of-atmosphere fluxes (W m-2)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_DN_TOA(KLON)
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_UP_TOA(KLON) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_UP_TOA(KLON) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_UP_TOA_CLEAR(KLON) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_UP_TOA_CLEAR(KLON) ! QL
-
-! Total fluxes - QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_DN(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_DN(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_DN_CLEAR(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_DN_CLEAR(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_UP(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_UP(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_SW_UP_CLEAR(KLON,KLEV+1) ! QL
-REAL(KIND=JPRB),  INTENT(OUT) :: PFLUX_LW_UP_CLEAR(KLON,KLEV+1) ! QL
-
-! Cloud effective radii in microns
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_LIQUID_UM(KLON,KLEV)
-REAL(KIND=JPRB),  INTENT(OUT) :: PRE_ICE_UM(KLON,KLEV)
-
-! Diagnosed longwave surface emissivity across the whole spectrum
-REAL(KIND=JPRB),  INTENT(OUT) :: PEMIS_OUT(KLON)   
-
-! Partial derivative of total-sky longwave upward flux at each level
-! with respect to upward flux at surface, used to correct heating
-! rates at gridpoints/timesteps between calls to the full radiation
-! scheme.  Note that this version uses the convention of level index
-! increasing downwards, unlike the local variable ZLwDerivative that
-! is returned from the LW radiation scheme.
-REAL(KIND=JPRB),  INTENT(OUT) :: PLWDERIVATIVE(KLON,KLEV+1)
-
-! Surface diffuse and direct downwelling shortwave flux in each
-! shortwave albedo band, used in RADINTG to update the surface fluxes
-! accounting for high-resolution albedo information
-REAL(KIND=JPRB),  INTENT(OUT) :: PSWDIFFUSEBAND(KLON,NSWB_MNH)
-REAL(KIND=JPRB),  INTENT(OUT) :: PSWDIRECTBAND (KLON,NSWB_MNH)
-
-! LOCAL VARIABLES
-TYPE(single_level_type)   :: single_level
-TYPE(thermodynamics_type) :: thermodynamics
-TYPE(gas_type)            :: gas
-TYPE(cloud_type)          :: cloud
-TYPE(aerosol_type)        :: aerosol
-TYPE(flux_type)           :: flux
-
-! Mass mixing ratio of ozone (kg/kg)
-REAL(KIND=JPRB)           :: ZO3(KLON,KLEV)
-
-! Cloud overlap decorrelation length for cloud boundaries in km
-REAL(KIND=JPRB)           :: ZDECORR_LEN_KM(KLON)
-
-! Ratio of cloud overlap decorrelation length for cloud water
-! inhomogeneities to that for cloud boundaries (typically 0.5)
-REAL(KIND=JPRB)           :: ZDECORR_LEN_RATIO
-
-! The surface net longwave flux if the surface was a black body, used
-! to compute the effective broadband surface emissivity
-REAL(KIND=JPRB)           :: ZBLACK_BODY_NET_LW(KIDIA:KFDIA)
-
-! Layer mass in kg m-2
-REAL(KIND=JPRB)           :: ZLAYER_MASS(KIDIA:KFDIA,KLEV)
-
-! Time integers
-INTEGER :: ITIM, IDAY
-
-! Loop indices
-INTEGER :: JLON, JLEV, JBAND, JB_ALBEDO, JAER
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-
-
-! Import time functions for iseed calculation
-!#include "../include/fcttim.func.h"
-! #include "liquid_effective_radius.intfb.h"
-! #include "ice_effective_radius.intfb.h"
-! #include "cloud_overlap_decorr_len.intfb.h"
-
-! PRINT*,"RADIATION_SCHEME"
-
-IF (LHOOK) CALL DR_HOOK('RADIATION_SCHEME',0,ZHOOK_HANDLE)
-
-! Redirect OUTPUT to MNH OUTPUT_LISTING
-NULOUT = TLUOUT%NLU
-
-! Allocate memory in radiation objects
-CALL single_level%allocate(KLON, NSWB_OLD, 2, &                ! ncol, nalbedobands, nemisbands
-     &                     use_sw_albedo_direct=.TRUE.)        ! mu0, tskin, albedo, emiss, seed for McICA 
-CALL thermodynamics%allocate(KLON, KLEV, use_h2o_sat=.true.)   ! p, t, qsat; hlevel, nlev+1
-CALL gas%allocate(KLON, KLEV)                                  ! mixing ratios
-CALL cloud%allocate(KLON, KLEV)                                ! ql, qi, radl, radi, clfr, cw-sig, covlp
-IF (NAERMACC > 0) THEN
-  CALL aerosol%allocate(KLON, 1, KLEV, KAEROSOL) ! MACC climatology
-ELSE
-  CALL aerosol%allocate(KLON, 1, KLEV, 6) ! Tegen climatology  ! mixing ratios per class
-ENDIF
-CALL flux%allocate(rad_config, 1, KLON, KLEV)                  ! output fluxes depend on config; cloud cover
-                                                               ! do_lw and do_sw set to .true. ?
-                                                               
-! Set thermodynamic profiles: simply copy over the half-level
-! pressure and temperature
-thermodynamics%pressure_hl   (KIDIA:KFDIA,:) = PPRESSURE_H   (KIDIA:KFDIA,:)
-thermodynamics%temperature_hl(KIDIA:KFDIA,:) = PTEMPERATURE_H(KIDIA:KFDIA,:)
-
-! IFS currently sets the half-level temperature at the surface to be
-! equal to the skin temperature. The radiation scheme takes as input
-! only the half-level temperatures and assumes the Planck function to
-! vary linearly in optical depth between half levels. In the lowest
-! atmospheric layer, where the atmospheric temperature can be much
-! cooler than the skin temperature, this can lead to significant
-! differences between the effective temperature of this lowest layer
-! and the true value in the model.
-!
-! We may approximate the temperature profile in the lowest model level
-! as piecewise linear between the top of the layer T[k-1/2], the
-! centre of the layer T[k] and the base of the layer Tskin.  The mean
-! temperature of the layer is then 0.25*T[k-1/2] + 0.5*T[k] +
-! 0.25*Tskin, which can be achieved by setting the atmospheric
-! temperature at the half-level corresponding to the surface as
-! follows:
-thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) &
-     &  = PTEMPERATURE(KIDIA:KFDIA,KLEV) &
-     &  + 0.5_JPRB * (PTEMPERATURE_H(KIDIA:KFDIA,KLEV+1) &
-     &               -PTEMPERATURE_H(KIDIA:KFDIA,KLEV))
-
-! Alternatively we respect the model's atmospheric temperature in the
-! lowest model level by setting the temperature at the lowest
-! half-level such that the mean temperature of the layer is correct:
-!thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) &
-!     &  = 2.0_JPRB * PTEMPERATURE(KIDIA:KFDIA,KLEV) &
-!     &             - PTEMPERATURE_H(KIDIA:KFDIA,KLEV)
-
-! Compute saturation specific humidity, used to hydrate aerosols. The
-! "2" for the last argument indicates that the routine is not being
-! called from within the convection scheme.
-!CALL SATUR(KIDIA, KFDIA, KLON, 1, KLEV, &
-!     &  PPRESSURE, PTEMPERATURE, thermodynamics%h2o_sat_liq, 2)  
-     
-!MNH     
-thermodynamics%h2o_sat_liq(:,:) = QSAT(REAL(PPRESSURE), REAL(PTEMPERATURE))
-thermodynamics%h2o_sat_liq(:,:) = thermodynamics%h2o_sat_liq(:,:) &
-                                & / (1.+thermodynamics%h2o_sat_liq(:,:)) ! mixing ratio => spec humid
-!MNH
-
-! Alternative approximate version using temperature and pressure from
-! the thermodynamics structure
-!CALL thermodynamics%calc_saturation_wrt_liquid(KIDIA, KFDIA)
-
-! Set single-level fileds
-single_level%solar_irradiance              = PSOLAR_IRRADIANCE
-single_level%cos_sza(KIDIA:KFDIA)          = PMU0(KIDIA:KFDIA)
-single_level%skin_temperature(KIDIA:KFDIA) = PTEMPERATURE_SKIN(KIDIA:KFDIA)
-single_level%sw_albedo(KIDIA:KFDIA,:)      = PALBEDO_DIF(KIDIA:KFDIA,:)
-single_level%sw_albedo_direct(KIDIA:KFDIA,:)=PALBEDO_DIR(KIDIA:KFDIA,:)
-
-! pause
-
-! Longwave emissivity is in two bands
-single_level%lw_emissivity(KIDIA:KFDIA,1)  = PEMIS(KIDIA:KFDIA)
-single_level%lw_emissivity(KIDIA:KFDIA,2)  = PEMIS_WINDOW(KIDIA:KFDIA)
-
-! Create the relevant seed from date and time get the starting day
-! and number of minutes since start
-! IDAY = NDD(NINDAT)  ! NINDAT is AAAAMMDD initial date NDD extract DD as INTEGER
-IDAY = TDTEXP%DATE%NDAY ! MNH
-ITIM = NINT((TDTMOD%xtime-TDTCUR%xtime) / 60.0_JPRB) ! YRRIP contains timestep infos ; number of minutes since beginning
-DO JLON = KIDIA, KFDIA
-  ! This method gives a unique value for roughly every 1-km square
-  ! on the globe and every minute.  ASIN(PGEMU)*60 gives rough
-  ! latitude in degrees, which we multiply by 100 to give a unique
-  ! value for roughly every km. PGELAM*60*100 gives a unique number
-  ! for roughly every km of longitude around the equator, which we
-  ! multiply by 180*100 so there is no overlap with the latitude
-  ! values.  The result can be contained in a 32-byte integer (but
-  ! since random numbers are generated with the help of integer
-  ! overflow, it should not matter if the number did overflow).
-  single_level%iseed(JLON) = ITIM + IDAY & 
-       &  +  NINT(PGELAM(JLON)*108000000.0_JPRB &
-       &          + ASIN(PGEMU(JLON))*6000.0_JPRB)
-ENDDO
-
-! Set cloud fields
-cloud%q_liq(KIDIA:KFDIA,:)    = PQ_LIQUID(KIDIA:KFDIA,:)
-cloud%q_ice(KIDIA:KFDIA,:)    = PQ_ICE(KIDIA:KFDIA,:) + PQ_SNOW(KIDIA:KFDIA,:)
-cloud%fraction(KIDIA:KFDIA,:) = PCLOUD_FRAC(KIDIA:KFDIA,:)
-
-! Compute effective radii and convert to metres - Could take it from LIMA
-CALL LIQUID_EFFECTIVE_RADIUS(KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQUID, PQ_RAIN, &
-     &  PLAND_SEA_MASK, PCCN_LAND, PCCN_SEA, &
-     &  PRE_LIQUID_UM) 
-    
-cloud%re_liq(KIDIA:KFDIA,:) = PRE_LIQUID_UM(KIDIA:KFDIA,:) * 1.0e-6_JPRB ! conversion into meters
-
-CALL ICE_EFFECTIVE_RADIUS(KIDIA, KFDIA, KLON, KLEV, &
-     &  PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, &
-     &  PRE_ICE_UM)
-     
-cloud%re_ice(KIDIA:KFDIA,:) = PRE_ICE_UM(KIDIA:KFDIA,:) * 1.0e-6_JPRB
-
-! Get the cloud overlap decorrelation length (for cloud boundaries),
-! in km, according to the parameterization specified by NDECOLAT,
-! and insert into the "cloud" object. Also get the ratio of
-! decorrelation lengths for cloud water content inhomogeneities and
-! cloud boundaries, and set it in the "rad_config" object.
-CALL CLOUD_OVERLAP_DECORR_LEN(KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, &
-     &    ZDECORR_LEN_KM, PDECORR_LEN_RATIO=ZDECORR_LEN_RATIO)
-     
-rad_config%cloud_inhom_decorr_scaling = ZDECORR_LEN_RATIO
-
-DO JLON = KIDIA,KFDIA
-  CALL cloud%set_overlap_param(thermodynamics, &
-       &                       ZDECORR_LEN_KM(JLON)*1000.0_JPRB, &
-       &                       istartcol=JLON, iendcol=JLON)
-ENDDO
-
-! Cloud water content fractional standard deviation is configurable
-! from namelist NAERAD but must be globally constant. Before it was
-! hard coded at 1.0.
-CALL cloud%create_fractional_std(KLON, KLEV, XCLOUD_FRAC_STD)
-
-! By default mid and high cloud effective size is 10 km
-CALL cloud%create_inv_cloud_effective_size(KLON,KLEV,1.0_JPRB/10000.0_JPRB)
-! But for boundary clouds (eta > 0.8) we set it to 1 km
-DO JLEV = 1,KLEV
-  DO JLON = KIDIA,KFDIA
-    IF (PPRESSURE(JLON,JLEV) > 0.8_JPRB * PPRESSURE_H(JLON,KLEV+1)) THEN
-      cloud%inv_cloud_effective_size(JLON,JLEV) = 1.0e-3_JPRB
-    ENDIF
-  ENDDO
-ENDDO
-
-
-! Compute the dry mass of each layer neglecting humidity effects, in
-! kg m-2, needed to scale some of the aerosol inputs
-CALL thermodynamics%get_layer_mass(ZLAYER_MASS)
-
-! Copy over aerosol mass mixing ratio
-IF (NAERMACC > 0) THEN
-
-  ! MACC aerosol climatology - this is already in mass mixing ratio
-  ! units with the required array orientation so we can copy it over
-  ! directly
-  aerosol%mixing_ratio(KIDIA:KFDIA,:,:) = PAEROSOL(KIDIA:KFDIA,:,:)
-
-  ! Add the tropospheric and stratospheric backgrounds contained in the
-  ! old Tegen arrays - this is very ugly!
-  IF (TROP_BG_AER_MASS_EXT > 0.0_JPRB) THEN
-    aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_TROP_BG_AER) &
-         &  = aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_TROP_BG_AER) &
-         &  + PAEROSOL_OLD(KIDIA:KFDIA,1,:) &
-         &  / (ZLAYER_MASS * TROP_BG_AER_MASS_EXT)
-  ENDIF
-  IF (STRAT_BG_AER_MASS_EXT > 0.0_JPRB) THEN
-    aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_STRAT_BG_AER) &
-         &  = aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_STRAT_BG_AER) &
-         &  + PAEROSOL_OLD(KIDIA:KFDIA,6,:) &
-         &  / (ZLAYER_MASS * STRAT_BG_AER_MASS_EXT)
-  ENDIF
-
-ELSE
-
-  ! Tegen aerosol climatology - the array PAEROSOL_OLD contains the
-  ! 550-nm optical depth in each layer. The optics data file
-  ! aerosol_ifs_rrtm_tegen.nc does not contain mass extinction
-  ! coefficient, but a scaling factor that the 550-nm optical depth
-  ! should be multiplied by to obtain the optical depth in each
-  ! spectral band.  Therefore, in order for the units to work out, we
-  ! need to divide by the layer mass (in kg m-2) to obtain the 550-nm
-  ! cross-section per unit mass of dry air (so in m2 kg-1).  We also
-  ! need to permute the array.
-  DO JLEV = 1,KLEV
-    DO JAER = 1,6
-      aerosol%mixing_ratio(KIDIA:KFDIA,JLEV,JAER) &
-         &  = PAEROSOL_OLD(KIDIA:KFDIA,JAER,JLEV) &
-         &  / ZLAYER_MASS(KIDIA:KFDIA,JLEV)
-    ENDDO
-  ENDDO
-
-ENDIF
-
-! Convert ozone Pa*kg/kg to kg/kg
-DO JLEV = 1,KLEV
-  DO JLON = KIDIA,KFDIA
-    ZO3(JLON,JLEV) = PO3_DP(JLON,JLEV) &
-         &         / (PPRESSURE_H(JLON,JLEV+1)-PPRESSURE_H(JLON,JLEV))
-  ENDDO
-ENDDO
-
-! Insert gas mixing ratios
-CALL gas%put(IH2O,    IMassMixingRatio, PQ)
-CALL gas%put(ICO2,    IMassMixingRatio, PCO2)
-CALL gas%put(ICH4,    IMassMixingRatio, PCH4)
-CALL gas%put(IN2O,    IMassMixingRatio, PN2O)
-CALL gas%put(ICFC11,  IMassMixingRatio, PCFC11)
-CALL gas%put(ICFC12,  IMassMixingRatio, PCFC12)
-CALL gas%put(IHCFC22, IMassMixingRatio, PHCFC22)
-CALL gas%put(ICCL4,   IMassMixingRatio, PCCL4)
-CALL gas%put(IO3,     IMassMixingRatio, ZO3)
-CALL gas%put_well_mixed(IO2, IVolumeMixingRatio, 0.20944_JPRB) ! fixed volume mixing ratio for oxygen
-
-! Ensure the units of the gas mixing ratios are what is required by
-! the gas absorption model
-call set_gas_units(rad_config, gas)
-! 
-! Call radiation scheme
-CALL radiation(KLON, KLEV, KIDIA, KFDIA, rad_config, &
-     &  single_level, thermodynamics, gas, cloud, aerosol, flux)
-
-! Compute required output fluxes
-! First the net fluxes
-PFLUX_SW(KIDIA:KFDIA,:) = flux%sw_dn(KIDIA:KFDIA,:) - flux%sw_up(KIDIA:KFDIA,:)
-PFLUX_LW(KIDIA:KFDIA,:) = flux%lw_dn(KIDIA:KFDIA,:) - flux%lw_up(KIDIA:KFDIA,:)
-PFLUX_SW_CLEAR(KIDIA:KFDIA,:) &
-     &  = flux%sw_dn_clear(KIDIA:KFDIA,:) - flux%sw_up_clear(KIDIA:KFDIA,:)
-PFLUX_LW_CLEAR(KIDIA:KFDIA,:) &
-     &  = flux%lw_dn_clear(KIDIA:KFDIA,:) - flux%lw_up_clear(KIDIA:KFDIA,:)
-     
-    
-! print*,"flux%sw_dn_surf_band(:,:)",flux%sw_dn_surf_band(:,:)
-!Now the surface fluxes
-PFLUX_SW_SURF      (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_surf_band        (:,KIDIA:KFDIA)) ! modif Quentin
-PFLUX_LW_SURF      (KIDIA:KFDIA) = flux%lw_dn             (KIDIA:KFDIA,KLEV+1)
-PFLUX_SW_SURF_CLEAR(KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_surf_clear_band  (:,KIDIA:KFDIA)) ! modif Quentin
-PFLUX_LW_SURF_CLEAR(KIDIA:KFDIA) = flux%lw_dn_clear       (KIDIA:KFDIA,KLEV+1)
-PFLUX_DIR_SURF     (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_direct_surf_band      (:,KIDIA:KFDIA)) ! modif Quentin
-PFLUX_DIR_SURF_CLEAR  (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_direct_surf_clear_band (:,KIDIA:KFDIA)) ! modif Quentin
-PFLUX_DIR_SURF_INTO_SUN(KIDIA:KFDIA,:) = 0.0_JPRB
-DO JBAND = 1,NSWB_MNH
-    WHERE (PMU0(KIDIA:KFDIA) > EPSILON(1.0_JPRB))    
-       PFLUX_DIR_SURF_INTO_SUN(KIDIA:KFDIA,JBAND) = PFLUX_DIR_SURF(KIDIA:KFDIA,JBAND) / PMU0(KIDIA:KFDIA)     
-    END WHERE
-END DO 
-
-! Top-of-atmosphere downwelling flux
-PFLUX_SW_DN_TOA(KIDIA:KFDIA) = flux%sw_dn(KIDIA:KFDIA,1)
-
-! Top-of-atmosphere upwelling fluxes - Q.L.
-PFLUX_SW_UP_TOA(KIDIA:KFDIA) = flux%sw_up(KIDIA:KFDIA,1)
-PFLUX_LW_UP_TOA(KIDIA:KFDIA) = flux%lw_up(KIDIA:KFDIA,1)
-PFLUX_SW_UP_TOA_CLEAR(KIDIA:KFDIA) = flux%sw_up_clear(KIDIA:KFDIA,1)
-PFLUX_LW_UP_TOA_CLEAR(KIDIA:KFDIA) = flux%lw_up_clear(KIDIA:KFDIA,1)
-
-
-
-! Total fluxes - QL
-! print*,"flux%sw_dn(KIDIA:KFDIA,:)",flux%sw_dn(KIDIA:KFDIA,:)
-
-PFLUX_SW_DN(KIDIA:KFDIA,:) = flux%sw_dn(KIDIA:KFDIA,:)
-PFLUX_SW_UP(KIDIA:KFDIA,:) = flux%sw_up(KIDIA:KFDIA,:)
-PFLUX_LW_DN(KIDIA:KFDIA,:) = flux%lw_dn(KIDIA:KFDIA,:)
-PFLUX_LW_UP(KIDIA:KFDIA,:) = flux%lw_up(KIDIA:KFDIA,:)
-PFLUX_SW_DN_CLEAR(KIDIA:KFDIA,:) = flux%sw_dn_clear(KIDIA:KFDIA,:)
-PFLUX_SW_UP_CLEAR(KIDIA:KFDIA,:) = flux%sw_up_clear(KIDIA:KFDIA,:)
-PFLUX_LW_DN_CLEAR(KIDIA:KFDIA,:) = flux%lw_dn_clear(KIDIA:KFDIA,:)
-PFLUX_LW_UP_CLEAR(KIDIA:KFDIA,:) = flux%lw_up_clear(KIDIA:KFDIA,:)
-
-
-! print*, "flux%sw_dn_band(:,1,1:10)"
-! print*,shape(flux%sw_dn_band)
-! print*, flux%sw_dn_band(1,1,1:5)
-! print*, flux%sw_dn_band(2,1,1:5)
-! print*, flux%sw_dn_band(3,1,1:5)
-! print*, flux%sw_dn_band(4,1,1:5)
-! print*, flux%sw_dn_band(5,1,1:5)
-! pause
-
-! Compute UV fluxes as weighted sum of appropriate shortwave bands
-PFLUX_UV       (KIDIA:KFDIA) = 0.0_JPRB
-DO JBAND = 1,NWEIGHT_UV
-  PFLUX_UV(KIDIA:KFDIA) = PFLUX_UV(KIDIA:KFDIA) + WEIGHT_UV(JBAND) &
-       &  * flux%sw_dn_surf_band(IBAND_UV(JBAND),KIDIA:KFDIA)
-ENDDO
-
-! Compute photosynthetically active radiation similarly
-PFLUX_PAR      (KIDIA:KFDIA) = 0.0_JPRB
-PFLUX_PAR_CLEAR(KIDIA:KFDIA) = 0.0_JPRB
-DO JBAND = 1,NWEIGHT_PAR
-  PFLUX_PAR(KIDIA:KFDIA) = PFLUX_PAR(KIDIA:KFDIA) + WEIGHT_PAR(JBAND) &
-       &  * flux%sw_dn_surf_band(IBAND_PAR(JBAND),KIDIA:KFDIA)
-  PFLUX_PAR_CLEAR(KIDIA:KFDIA) = PFLUX_PAR_CLEAR(KIDIA:KFDIA) &
-       &  + WEIGHT_PAR(JBAND) &
-       &  * flux%sw_dn_surf_clear_band(IBAND_PAR(JBAND),KIDIA:KFDIA)
-ENDDO
-
-! Compute effective broadband emissivity
-ZBLACK_BODY_NET_LW = PFLUX_LW_SURF(KIDIA:KFDIA) &
-     &  - RSIGMA*PTEMPERATURE_SKIN(KIDIA:KFDIA)**4
-PEMIS_OUT(KIDIA:KFDIA) = PEMIS(KIDIA:KFDIA)
-WHERE (ABS(ZBLACK_BODY_NET_LW) > 1.0E-5) 
-  PEMIS_OUT(KIDIA:KFDIA) = PFLUX_LW(KIDIA:KFDIA,KLEV+1) / ZBLACK_BODY_NET_LW
-END WHERE
-! Copy longwave derivatives
-IF (LAPPROXLWUPDATE) THEN
-  PLWDERIVATIVE(KIDIA:KFDIA,:) = flux%lw_derivatives(KIDIA:KFDIA,:)
-END IF
-
-! Store the shortwave downwelling fluxes in each albedo band
-
-IF (LAPPROXSWUPDATE) THEN
-  PSWDIFFUSEBAND(KIDIA:KFDIA,:) = 0.0_JPRB
-  PSWDIRECTBAND (KIDIA:KFDIA,:) = 0.0_JPRB
-  DO JBAND = 1,rad_config%n_bands_sw
-    JB_ALBEDO = rad_config%i_albedo_from_band_sw(JBAND)
-    DO JLON = KIDIA,KFDIA
-      PSWDIFFUSEBAND(JLON,JB_ALBEDO) = PSWDIFFUSEBAND(JLON,JB_ALBEDO) &
-           &  + flux%sw_dn_surf_band(JBAND,JLON) &
-           &  - flux%sw_dn_direct_surf_band(JBAND,JLON)
-      PSWDIRECTBAND(JLON,JB_ALBEDO)  = PSWDIRECTBAND(JLON,JB_ALBEDO) &
-           &  + flux%sw_dn_direct_surf_band(JBAND,JLON)
-    ENDDO
-  ENDDO
-ENDIF
-
-CALL single_level%deallocate
-CALL thermodynamics%deallocate
-CALL gas%deallocate
-CALL cloud%deallocate
-CALL aerosol%deallocate
-CALL flux%deallocate
-
-IF (LHOOK) CALL DR_HOOK('RADIATION_SCHEME',1,ZHOOK_HANDLE)
-
-END SUBROUTINE RADIATION_SCHEME
-
-END MODULE MODI_RADIATION_SCHEME
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90
deleted file mode 100644
index 045d7a395ce45b36020e410d3542098bb676afe3..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90
+++ /dev/null
@@ -1,368 +0,0 @@
-MODULE RADIATION_SETUP
-
-! RADIATION_SETUP - Setting up modular radiation scheme
-!
-! PURPOSE
-! -------
-!   The modular radiation scheme is contained in a separate
-!   library. SETUP_RADIATION_SCHEME in this module sets up a small
-!   number of global variables needed to store the information for it.
-!
-!   Lower case is used for variables and types taken from the
-!   radiation library
-!
-! INTERFACE
-! ---------
-!   SETUP_RADIATION_SCHEME is called from SUECRAD.  The radiation
-!   scheme is actually run using the RADIATION_SCHEME routine (not in
-!   this module).
-!
-! AUTHOR
-! ------
-!   Robin Hogan, ECMWF
-!   Original: 2015-09-16
-!
-! MODIFICATIONS
-! -------------
-!
-!-----------------------------------------------------------------------
-
-  USE PARKIND1,         ONLY : JPRB
-  USE radiation_config, ONLY : config_type, &
-       &                       ISolverMcICA, ISolverSpartacus, &
-       &                       ILiquidModelSlingo, ILiquidModelSOCRATES, &
-       &                       IIceModelFu, IIceModelBaran, &
-       &                       IOverlapExponential,IOverlapExponentialRandom
-
-  ! Store configuration information for the radiation scheme in a
-  ! global variable
-  !type(config_type) :: rad_config
-  USE MODD_PARAM_ECRAD_n , ONLY : rad_config
-
- IMPLICIT NONE
-
-  ! Ultraviolet weightings
-  INTEGER         :: NWEIGHT_UV
-  INTEGER         :: IBAND_UV(100)
-  REAL(KIND=JPRB) :: WEIGHT_UV(100)
-  ! Photosynthetically active radiation weightings
-  INTEGER         :: NWEIGHT_PAR
-  INTEGER         :: IBAND_PAR(100)
-  REAL(KIND=JPRB) :: WEIGHT_PAR(100)
-
-  ! Background aerosol is specified in an ugly way: using the old
-  ! Tegen fields that are in terms of optical depth, and converted to
-  ! mass mixing ratio via the relevant mass-extinction coefficient
-  INTEGER, PARAMETER :: ITYPE_TROP_BG_AER = 8 ! hydrophobic organic
-  INTEGER, PARAMETER :: ITYPE_STRAT_BG_AER=12 ! non-absorbing sulphate
-  REAL(KIND=JPRB)    :: TROP_BG_AER_MASS_EXT
-  REAL(KIND=JPRB)    :: STRAT_BG_AER_MASS_EXT
-
-CONTAINS
-
-  ! This routine copies information between the IFS radiation
-  ! configuration (stored in global variables) and the radiation
-  ! configuration of the modular radiation scheme (stored in
-  ! rad_config).  The optional input logical LOUTPUT controls whether
-  ! to print lots of information during the setup stage (default is
-  ! no).
-  SUBROUTINE SETUP_RADIATION_SCHEME(LOUTPUT)
-
-    USE YOMHOOK,  ONLY : LHOOK, DR_HOOK
-    USE YOMLUN,   ONLY : NULNAM, NULOUT, NULERR
-    USE YOESRTWN, ONLY : NMPSRTM
-!    USE YOERAD,   ONLY : YRERAD
-    USE MODD_PARAM_ECRAD_n , ONLY : LAPPROXLWUPDATE, NAERMACC, NLIQOPT, NICEOPT,  &
-                                 &  NLWSOLVER, NSWSOLVER, NLWSCATTERING, NOVLP,CDATADIR 
-   
-    USE radiation_interface,      ONLY : setup_radiation
-    USE radiation_aerosol_optics, ONLY : dry_aerosol_sw_mass_extinction
-
-!#include "posname.intfb.h"
-
-    ! Whether or not to provide information on the radiation scheme
-    ! configuration
-    LOGICAL, INTENT(IN), OPTIONAL :: LOUTPUT
-
-    ! Verbosity of configuration information 0=none, 1=warning,
-    ! 2=info, 3=progress, 4=detailed, 5=debug
-    INTEGER :: IVERBOSESETUP
-    INTEGER :: ISTAT
-
-    REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-    IF (LHOOK) CALL DR_HOOK('RADIATION_SETUP:SETUP_RADIATION_SCHEME',0,ZHOOK_HANDLE)
-
-    ! *** GENERAL SETUP ***
-
-    ! Configure verbosity of setup of radiation scheme
-    IVERBOSESETUP = 4 ! Provide plenty of information
-    IF (PRESENT(LOUTPUT)) THEN
-      IF (.NOT. LOUTPUT) THEN
-        IVERBOSESETUP = 1 ! Warnings and errors only
-      ENDIF
-    ENDIF
-    rad_config%iverbosesetup = IVERBOSESETUP
-
-    IF (IVERBOSESETUP > 1) THEN
-      WRITE(NULOUT,'(a)') '-------------------------------------------------------------------------------'
-      WRITE(NULOUT,'(a)') 'RADIATION_SETUP'
-    ENDIF
-
-    ! Normal operation of the radiation scheme displays only errors
-    ! and warnings
-    rad_config%iverbose = 1
-
-    ! For the time being, ensure a valid default directory name
-    rad_config%directory_name = CDATADIR
-
-    ! Do we do Hogan and Bozzo (2014) approximate longwave updates?
-    rad_config%do_lw_derivatives = LAPPROXLWUPDATE
-
-    ! Surface spectral fluxes are needed for spectral shortwave albedo
-    ! calculation
-    rad_config%do_surface_sw_spectral_flux = .TRUE.
-
-
-    ! *** SETUP GAS OPTICS ***
-
-    ! Assume IFS has already set-up RRTM, so the setup_radiation
-    ! routine below does not have to
-    rad_config%do_setup_ifsrrtm = .FALSE.
-!     rad_config%do_setup_ifsrrtm = .TRUE.
-
-
-    ! *** SETUP CLOUD OPTICS ***
-
-    ! Setup liquid optics
-    IF (NLIQOPT == 2) THEN
-      rad_config%i_liq_model = ILiquidModelSlingo
-    ELSEIF (NLIQOPT == 3) THEN
-      rad_config%i_liq_model = ILiquidModelSOCRATES
-    ELSE
-      WRITE(NULERR,'(a,i0)') 'Unavailable liquid optics model in modular radiation scheme: NLIQOPT=', &
-           &  NLIQOPT
-      CALL ABOR1('RADIATION_SETUP: error interpreting NLIQOPT')   
-    ENDIF
-
-    ! Setup ice optics
-    IF (NICEOPT == 3) THEN
-      rad_config%i_ice_model = IIceModelFu
-    ELSEIF (NICEOPT == 4) THEN
-      rad_config%i_ice_model = IIceModelBaran
-    ELSE
-      WRITE(NULERR,'(a,i0)') 'Unavailable ice optics model in modular radiation scheme: NICEOPT=', &
-           &  NICEOPT
-      CALL ABOR1('RADIATION_SETUP: error interpreting NICEOPT')   
-    ENDIF
-
-    ! For consistency with earlier versions of the IFS radiation
-    ! scheme, we perform shortwave delta-Eddington scaling *after* the
-    ! merge of the cloud, aerosol and gas optical properties.  Set
-    ! this to "false" to do the scaling on the cloud and aerosol
-    ! properties separately before merging with gases. Note that this
-    ! is not compatible with the SPARTACUS solver.
-    rad_config%do_sw_delta_scaling_with_gases = .TRUE.
-
-    ! Use Exponential-Exponential cloud overlap to match original IFS
-    ! implementation of Raisanen cloud generator
-    ! rad_config%i_overlap_scheme = IOverlapExponential
-    rad_config%i_overlap_scheme = NOVLP ! QL
-
-    ! *** SETUP AEROSOLS ***
-
-    rad_config%use_aerosols = .TRUE.
-
-    IF (NAERMACC > 0) THEN
-      ! Using MACC climatology - in this case the aerosol optics file
-      ! will be chosen automatically
-
-      ! 12 IFS aerosol classes: 1-3 Sea salt, 4-6 Boucher desert dust,
-      ! 7 hydrophilic organics, 8 hydrophobic organics, 9&10
-      ! hydrophobic black carbon, 11 ammonium sulphate, 12 inactive
-      ! SO2
-      rad_config%n_aerosol_types = 12
-
-      ! Indices to the aerosol optical properties in
-      ! aerosol_ifs_rrtm_*.nc, for each class, where negative numbers
-      ! index hydrophilic aerosol types and positive numbers index
-      ! hydrophobic aerosol types
-      rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types
-      rad_config%i_aerosol_type_map(1:12) = (/ &
-           &  -1, &  ! Sea salt, size bin 1 (OPAC)
-           &  -2, &  ! Sea salt, size bin 2 (OPAC)
-           &  -3, &  ! Sea salt, size bin 3 (OPAC)
-           &   7, &  ! Desert dust, size bin 1 (Woodward 2001)
-           &   8, &  ! Desert dust, size bin 2 (Woodward 2001)
-           &   9, &  ! Desert dust, size bin 3 (Woodward 2001)
-           &  -4, &  ! Hydrophilic organic matter (OPAC)
-           &  10, &  ! Hydrophobic organic matter (OPAC)
-           &  11, &  ! Black carbon (Boucher)
-           &  11, &  ! Black carbon (Boucher)
-           &  -5, &  ! Ammonium sulphate (OPAC)
-           &  14 /)  ! Stratospheric sulphate (hand edited from OPAC)
-
-      ! Background aerosol mass-extinction coefficients are obtained
-      ! after the configuration files have been read - see later in
-      ! this routine.
-
-    ELSE
-      ! Using Tegen climatology
-      rad_config%n_aerosol_types = 6
-      rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types
-      rad_config%i_aerosol_type_map(1:6) = (/ &
-           &  1, &  ! Continental background
-           &  2, &  ! Maritime
-           &  3, &  ! Desert
-           &  4, &  ! Urban
-           &  5, &  ! Volcanic active
-           &  6 /)  ! Stratospheric background
-
-      ! Manually set the aerosol optics file name (the directory will
-      ! be added automatically)
-      rad_config%aerosol_optics_override_file_name = 'aerosol_ifs_rrtm_tegen.nc'
-    ENDIF
-
-    ! *** SETUP SOLVER ***
-
-    ! 3D effects are off by default
-    rad_config%do_3d_effects = .FALSE.
-
-    ! Select longwave solver
-    SELECT CASE (NLWSOLVER)
-    CASE(0)
-      rad_config%i_solver_lw = ISolverMcICA
-    CASE(1)
-      rad_config%i_solver_lw = ISolverSpartacus
-    CASE(2)
-      rad_config%i_solver_lw = ISolverSpartacus
-      rad_config%do_3d_effects = .TRUE.
-    CASE DEFAULT
-      WRITE(NULERR,'(a,i0)') 'Unknown value for NLWSOLVER: ', NLWSOLVER
-      CALL ABOR1('RADIATION_SETUP: error interpreting NLWSOLVER')
-    END SELECT
-
-    ! Select shortwave solver
-
-    SELECT CASE (NSWSOLVER)
-    CASE(0)
-      rad_config%i_solver_sw = ISolverMcICA
-    CASE(1)
-      rad_config%i_solver_sw = ISolverSpartacus
-      rad_config%do_3d_effects = .FALSE.
-      IF (NLWSOLVER == 2) THEN
-        CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in LW but not SW')
-      ENDIF
-    CASE(2)
-      rad_config%i_solver_sw = ISolverSpartacus
-      rad_config%do_3d_effects = .TRUE.
-      IF (NLWSOLVER == 1) THEN
-        CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in SW but not LW')
-      ENDIF
-    CASE DEFAULT
-      WRITE(NULERR,'(a,i0)') 'Unknown value for NSWSOLVER: ', NSWSOLVER
-      CALL ABOR1('RADIATION_SETUP: error interpreting NSWSOLVER')
-    END SELECT
-
-    ! SPARTACUS solver requires delta scaling to be done separately
-    ! for clouds & aerosols
-    IF (rad_config%i_solver_sw == ISolverSpartacus) THEN
-      rad_config%do_sw_delta_scaling_with_gases = .FALSE.
-    ENDIF
-
-    ! Do we represent longwave scattering?
-    rad_config%do_lw_cloud_scattering = .FALSE.
-    rad_config%do_lw_aerosol_scattering = .FALSE.
-    SELECT CASE (NLWSCATTERING)
-    CASE(1)
-      rad_config%do_lw_cloud_scattering = .TRUE.
-    CASE(2)
-      rad_config%do_lw_cloud_scattering = .TRUE.
-      IF (NAERMACC > 0) THEN
-        ! Tegen climatology omits data required to do longwave
-        ! scattering by aerosols, so only turn this on with a more
-        ! recent scattering database
-        rad_config%do_lw_aerosol_scattering = .TRUE.
-      ENDIF
-    END SELECT
-
-
-    ! *** IMPLEMENT SETTINGS ***
-
-    ! For advanced configuration, the configuration data for the
-    ! "radiation" project can specified directly in the namelist.
-    ! However, the variable naming convention is not consistent with
-    ! the rest of the IFS.  For basic configuration there are specific
-    ! variables in the NAERAD namelist available in the YRERAD
-    ! structure.
-    ! CALL POSNAME(NULNAM, 'RADIATION', ISTAT)
-    ISTAT = 1 ! QL no namelist used, all in NAM_PARAM_ECRAD
-    SELECT CASE (ISTAT)
-      CASE(0)
-        CALL rad_config%read(unit=NULNAM)
-      CASE(1)
-        WRITE(NULOUT,'(a)') 'Namelist RADIATION not found, using settings from NAERAD only'
-      CASE DEFAULT
-        CALL ABOR1('RADIATION_SETUP: error reading RADIATION section of namelist file')
-    END SELECT
-
-    ! Print configuration
-    IF (IVERBOSESETUP > 1) THEN
-      WRITE(NULOUT,'(a)') 'Radiation scheme settings:'
-      CALL rad_config%print(IVERBOSE=IVERBOSESETUP)
-    ENDIF
-
-    ! Use configuration data to set-up radiation scheme, including
-    ! reading scattering datafiles
-    CALL setup_radiation(rad_config)
-
-    ! Populate the mapping between the 14 RRTM shortwave bands and the
-    ! 6 albedo inputs. The mapping according to the stated wavelength
-    ! ranges of the 6-band model does not match the hard-wired mapping
-    ! in NMPSRTM, but only the hard-wired values produce sensible
-    ! results...
-    rad_config%i_albedo_from_band_sw = NMPSRTM
-    !    call rad_config%define_sw_albedo_intervals(6, &
-    !         &  (/ 0.25e-6_jprb, 0.44e-6_jprb, 1.19e-6_jprb, &
-    !         &     2.38e-6_jprb, 4.00e-6_jprb /),  (/ 1,2,3,4,5,6 /))
-    
-    ! Likewise between the 16 RRTM longwave bands and the 2 emissivity
-    ! inputs (info taken from rrtm_ecrt_140gp_mcica.F90) representing
-    ! outside and inside the window region of the spectrum
-    ! rad_config%i_emiss_from_band_lw = (/ 1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1 /)
-    call rad_config%define_lw_emiss_intervals(3, &
-         &  (/ 8.0e-6_jprb,13.0e-6_jprb /),  (/ 1,2,1 /))
-
-    ! Get spectral weightings for UV and PAR
-    call rad_config%get_sw_weights(0.2e-6_jprb, 0.4415e-6_jprb, &
-         &  NWEIGHT_UV, IBAND_UV, WEIGHT_UV, 'ultraviolet')
-    call rad_config%get_sw_weights(0.4e-6_jprb, 0.7e-6_jprb, &
-         &  NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, &
-         &  'photosynthetically active radiation, PAR')
-
-    IF (NAERMACC > 0) THEN
-      ! With the MACC aerosol climatology we need to add in the
-      ! background aerosol afterwards using the Tegen arrays.  In this
-      ! case we first configure the background aerosol mass-extinction
-      ! coefficient at 550 nm, which corresponds to the 10th RRTMG
-      ! shortwave band.
-      TROP_BG_AER_MASS_EXT  = dry_aerosol_sw_mass_extinction(rad_config, &
-           &                                   ITYPE_TROP_BG_AER, 10)
-      STRAT_BG_AER_MASS_EXT = dry_aerosol_sw_mass_extinction(rad_config, &
-           &                                   ITYPE_STRAT_BG_AER, 10)
-      
-      WRITE(NULOUT,'(a,i0)') 'Tropospheric bacground uses aerosol type ', &
-           &                 ITYPE_TROP_BG_AER
-      WRITE(NULOUT,'(a,i0)') 'Stratospheric bacground uses aerosol type ', &
-           &                 ITYPE_STRAT_BG_AER
-    ENDIF
-      
-    IF (IVERBOSESETUP > 1) THEN
-      WRITE(NULOUT,'(a)') '-------------------------------------------------------------------------------'
-    ENDIF
-
-    IF (LHOOK) CALL DR_HOOK('RADIATION_SETUP:SETUP_RADIATION_SCHEME',1,ZHOOK_HANDLE)
-
-  END SUBROUTINE SETUP_RADIATION_SCHEME
-
-END MODULE RADIATION_SETUP
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90
deleted file mode 100644
index a26a5740d51a439791235810147b420531d1d4a7..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90
+++ /dev/null
@@ -1,29 +0,0 @@
-MODULE YOMCST
-
-USE PARKIND1  ,ONLY : JPRB
-
-IMPLICIT NONE
-
-SAVE
-
-! * RPI          : number Pi
-REAL(KIND=JPRB), PARAMETER :: RPI = 3.14159265358979323846_JPRB
-! * RSIGMA       : Stefan-Bolzman constant
-REAL(KIND=JPRB), PARAMETER :: RSIGMA = 5.67037321e-8_JPRB ! W m-2 K-4
-! * RG           : gravity constant
-REAL(KIND=JPRB), PARAMETER :: RG = 9.80665_JPRB ! m s-2
-! * RD           : R_dry (dry air constant)
-REAL(KIND=JPRB), PARAMETER :: RD = 287.058_JPRB! J kg-1 K-1
-! * RMD          : dry air molar mass
-REAL(KIND=JPRB), PARAMETER :: RMD = 28.9644_JPRB
-! * RMV          : vapour water molar mass
-REAL(KIND=JPRB), PARAMETER :: RMV = 18.0153_JPRB
-! * RMO3         : ozone molar mass
-REAL(KIND=JPRB), PARAMETER :: RMO3 = 47.9942_JPRB
-! * RI0          : solar constant
-REAL(KIND=JPRB), PARAMETER :: RI0 = 1366.0_JPRB
-! * RDAY          : day duration in s
-REAL(KIND=JPRB), PARAMETER :: RDAY = 86400_JPRB
-! * RTT          : freezing temperature
-REAL(KIND=JPRB), PARAMETER :: RTT=273.16_JPRB
-END MODULE YOMCST
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90
deleted file mode 100644
index f8758823086cffa742e46871378dbd83542dba5d..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90
+++ /dev/null
@@ -1,15 +0,0 @@
-MODULE YOMLUN
-
-USE PARKIND1,      ONLY : JPIM
-USE YOMLUN_IFSAUX, ONLY : NULOUT, NULERR
-
-IMPLICIT NONE
-
-SAVE
-
-INTEGER(KIND=JPIM) :: NULRAD = 145
-
-INTEGER(KIND=JPIM) :: NULNAM  =  4
-
-!     ------------------------------------------------------------------
-END MODULE YOMLUN
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90
deleted file mode 100644
index e2b5bca94223aad523ff94b3fc99d66334a36dfe..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90
+++ /dev/null
@@ -1,355 +0,0 @@
-SUBROUTINE RRTM_KGB1(DIRECTORY)
-
-!     Originally by Eli J. Mlawer, Atmospheric & Environmental Research.
-!     BAND 1:  10-250 cm-1 (low - H2O; high - H2O)
-!     Reformatted for F90 by JJMorcrette, ECMWF
-!     R. Elkhatib 12-10-2005 Split for faster and more robust compilation.
-!     G.Mozdzynski March 2011 read constants from files
-!     ABozzo May 2013 update to RRTMG v4.85
-!     band 1:  10-350 cm-1
-!     T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring.
-!     ------------------------------------------------------------------
-
-USE PARKIND1  ,ONLY : JPRB
-USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
-USE YOMLUN    ,ONLY : NULRAD , NULOUT
-USE MPL_MODULE,ONLY : MPL_BROADCAST
-USE YOMTAG    ,ONLY : MTAGRAD
-USE YOMMP0    , ONLY : NPROC, MYPROC
-
-USE YOERRTO1 , ONLY : KAO     ,KBO     ,SELFREFO   ,FRACREFAO ,&
- & FRACREFBO  ,FORREFO, KAO_MN2, KBO_MN2
-
-!     ------------------------------------------------------------------
-
-IMPLICIT NONE
-
-CHARACTER(LEN=*), INTENT(IN) :: DIRECTORY
-
-!CHARACTER(LEN = 80) :: CLZZZ
-CHARACTER(LEN = 255) :: CLF1
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-#include "abor1.intfb.h"
-
-IF (LHOOK) CALL DR_HOOK('RRTM_KGB1',0,ZHOOK_HANDLE)
-
-IF( MYPROC==1 )THEN
-  !CALL GETENV("DATA",CLZZZ)
-  !IF(CLZZZ /= " ") THEN
-  !  CLF1=TRIM(CLZZZ) // "/RADRRTM"
-  CLF1 = DIRECTORY // "/RADRRTM"
-  WRITE(NULOUT,'(A,A)') 'Reading ',TRIM(CLF1)
-  ! RRTM and SRTM files from ecrad are in big-endian format.
-  ! Here they are read as big-endian at opening because otherwise MNH assumes littel-endian
-  ! No need for complation option export GFORTRAN_CONVERT_UNIT="little_endian;big_endian:145"
-  OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT="BIG_ENDIAN")
-  !ELSE
-  !  OPEN(NULRAD,FILE='RADRRTM',FORM="UNFORMATTED",ACTION="READ",ERR=1000)
-  !ENDIF
-  READ(NULRAD,ERR=1001) KAO,KBO
-ENDIF
-IF( NPROC>1 )THEN
-  CALL MPL_BROADCAST (KAO,MTAGRAD,1,CDSTRING='RRTM_KGB1:')
-  CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB1:')
-ENDIF
-
-! Planck fraction mapping level: P = 212.7250 mbar, T = 223.06 K
-FRACREFAO(:) = (/ &
- & 2.1227E-01_JPRB,1.8897E-01_JPRB,1.3934E-01_JPRB,1.1557E-01_JPRB,9.5282E-02_JPRB,8.3359E-02_JPRB, &
- & 6.5333E-02_JPRB,5.2016E-02_JPRB,3.4272E-02_JPRB,4.0257E-03_JPRB,3.1857E-03_JPRB,2.6014E-03_JPRB, &
- & 1.9141E-03_JPRB,1.2612E-03_JPRB,5.3169E-04_JPRB,7.6476E-05_JPRB/)
-
-! Planck fraction mapping level: P = 212.7250 mbar, T = 223.06 K
-! These Planck fractions were calculated using lower atmosphere
-! parameters.
-FRACREFBO(:) = (/ &
- & 2.1227E-01_JPRB,1.8897E-01_JPRB,1.3934E-01_JPRB,1.1557E-01_JPRB,9.5282E-02_JPRB,8.3359E-02_JPRB, &
- & 6.5333E-02_JPRB,5.2016E-02_JPRB,3.4272E-02_JPRB,4.0257E-03_JPRB,3.1857E-03_JPRB,2.6014E-03_JPRB, &
- & 1.9141E-03_JPRB,1.2612E-03_JPRB,5.3169E-04_JPRB,7.6476E-05_JPRB/)
-
-!     The array FORREFO contains the coefficient of the water vapor
-!     foreign-continuum (including the energy term).  The first 
-!     index refers to reference temperature (296,260,224,260) and 
-!     pressure (970,475,219,3 mbar) levels.  The second index 
-!     runs over the g-channel (1 to 16).
-
-      FORREFO(1,:) = (/ &
-     & 3.6742e-02_JPRB,1.0664e-01_JPRB,2.6132e-01_JPRB,2.7906e-01_JPRB,2.8151e-01_JPRB,2.7465e-01_JPRB, &
-     & 2.8530e-01_JPRB,2.9123e-01_JPRB,3.0697e-01_JPRB,3.1801e-01_JPRB,3.2444e-01_JPRB,2.7746e-01_JPRB, &
-     & 3.1994e-01_JPRB,2.9750e-01_JPRB,2.1226e-01_JPRB,1.2847e-01_JPRB/)
-      FORREFO(2,:) = (/ &
-     & 4.0450e-02_JPRB,1.1085e-01_JPRB,2.9205e-01_JPRB,3.1934e-01_JPRB,3.1739e-01_JPRB,3.1450e-01_JPRB, &
-     & 3.2797e-01_JPRB,3.2223e-01_JPRB,3.3099e-01_JPRB,3.4800e-01_JPRB,3.4046e-01_JPRB,3.5700e-01_JPRB, &
-     & 3.8264e-01_JPRB,3.6679e-01_JPRB,3.3481e-01_JPRB,3.2113e-01_JPRB/)
-      FORREFO(3,:) = (/ &
-     & 4.6952e-02_JPRB,1.1999e-01_JPRB,3.1473e-01_JPRB,3.7015e-01_JPRB,3.6913e-01_JPRB,3.6352e-01_JPRB, &
-     & 3.7754e-01_JPRB,3.7402e-01_JPRB,3.7113e-01_JPRB,3.7720e-01_JPRB,3.8365e-01_JPRB,4.0876e-01_JPRB, &
-     & 4.2968e-01_JPRB,4.4186e-01_JPRB,4.3468e-01_JPRB,4.7083e-01_JPRB/)
-      FORREFO(4,:) = (/ &
-     & 7.0645e-02_JPRB,1.6618e-01_JPRB,2.8516e-01_JPRB,3.1819e-01_JPRB,3.0131e-01_JPRB,2.9552e-01_JPRB, &
-     & 2.8972e-01_JPRB,2.9348e-01_JPRB,2.8668e-01_JPRB,2.8483e-01_JPRB,2.8130e-01_JPRB,2.7757e-01_JPRB, &
-     & 2.9735e-01_JPRB,3.1684e-01_JPRB,3.0681e-01_JPRB,3.6778e-01_JPRB/)
-
-
-!     ------------------------------------------------------------------
-
-!     The array KAO contains absorption coefs at the 16 chosen g-values 
-!     for a range of pressure levels > ~100mb and temperatures.  The first
-!     index in the array, JT, which runs from 1 to 5, corresponds to 
-!     different temperatures.  More specifically, JT = 3 means that the 
-!     data are for the corresponding TREF for this  pressure level, 
-!     JT = 2 refers to the temperatureTREF-15, JT = 1 is for TREF-30, 
-!     JT = 4 is for TREF+15, and JT = 5 is for TREF+30.  The second 
-!     index, JP, runs from 1 to 13 and refers to the corresponding 
-!     pressure level in PREF (e.g. JP = 1 is for a pressure of 1053.63 mb).  
-!     The third index, IG, goes from 1 to 16, and tells us which 
-!     g-interval the absorption coefficients are for.
-
-
-
-!     The array KBO contains absorption coefs at the 16 chosen g-values 
-!     for a range of pressure levels < ~100mb and temperatures. The first 
-!     index in the array, JT, which runs from 1 to 5, corresponds to 
-!     different temperatures.  More specifically, JT = 3 means that the 
-!     data are for the reference temperature TREF for this pressure 
-!     level, JT = 2 refers to the temperature TREF-15, JT = 1 is for
-!     TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30.  
-!     The second index, JP, runs from 13 to 59 and refers to the JPth
-!     reference pressure level (see taumol.f for the value of these
-!     pressure levels in mb).  The third index, IG, goes from 1 to 16,
-!     and tells us which g-interval the absorption coefficients are for.
-
-
-
-     KAO_MN2(:, 1) = (/ &
-     & 5.12042E-08_JPRB, 5.51239E-08_JPRB, 5.93436E-08_JPRB, 6.38863E-08_JPRB, 6.87767E-08_JPRB, &
-     & 7.40415E-08_JPRB, 7.97093E-08_JPRB, 8.58110E-08_JPRB, 9.23797E-08_JPRB, 9.94513E-08_JPRB, &
-     & 1.07064E-07_JPRB, 1.15260E-07_JPRB, 1.24083E-07_JPRB, 1.33581E-07_JPRB, 1.43807E-07_JPRB, &
-     & 1.54815E-07_JPRB, 1.66666E-07_JPRB, 1.79424E-07_JPRB, 1.93159E-07_JPRB/)
-      KAO_MN2(:, 2) = (/ &
-     & 2.30938E-07_JPRB, 2.41696E-07_JPRB, 2.52955E-07_JPRB, 2.64738E-07_JPRB, 2.77071E-07_JPRB, &
-     & 2.89978E-07_JPRB, 3.03486E-07_JPRB, 3.17623E-07_JPRB, 3.32419E-07_JPRB, 3.47904E-07_JPRB, &
-     & 3.64111E-07_JPRB, 3.81072E-07_JPRB, 3.98824E-07_JPRB, 4.17402E-07_JPRB, 4.36846E-07_JPRB, &
-     & 4.57196E-07_JPRB, 4.78494E-07_JPRB, 5.00784E-07_JPRB, 5.24112E-07_JPRB/)
-      KAO_MN2(:, 3) = (/ &
-     & 6.70458E-07_JPRB, 7.04274E-07_JPRB, 7.39795E-07_JPRB, 7.77109E-07_JPRB, 8.16304E-07_JPRB, &
-     & 8.57476E-07_JPRB, 9.00724E-07_JPRB, 9.46154E-07_JPRB, 9.93876E-07_JPRB, 1.04400E-06_JPRB, &
-     & 1.09666E-06_JPRB, 1.15197E-06_JPRB, 1.21008E-06_JPRB, 1.27111E-06_JPRB, 1.33522E-06_JPRB, &
-     & 1.40256E-06_JPRB, 1.47331E-06_JPRB, 1.54761E-06_JPRB, 1.62567E-06_JPRB/)
-      KAO_MN2(:, 4) = (/ &
-     & 1.84182E-06_JPRB, 1.89203E-06_JPRB, 1.94360E-06_JPRB, 1.99658E-06_JPRB, 2.05101E-06_JPRB, &
-     & 2.10692E-06_JPRB, 2.16435E-06_JPRB, 2.22335E-06_JPRB, 2.28396E-06_JPRB, 2.34622E-06_JPRB, &
-     & 2.41017E-06_JPRB, 2.47587E-06_JPRB, 2.54337E-06_JPRB, 2.61270E-06_JPRB, 2.68392E-06_JPRB, &
-     & 2.75708E-06_JPRB, 2.83224E-06_JPRB, 2.90944E-06_JPRB, 2.98875E-06_JPRB/)
-      KAO_MN2(:, 5) = (/ &
-     & 3.41996E-06_JPRB, 3.32758E-06_JPRB, 3.23770E-06_JPRB, 3.15024E-06_JPRB, 3.06515E-06_JPRB, &
-     & 2.98235E-06_JPRB, 2.90180E-06_JPRB, 2.82341E-06_JPRB, 2.74715E-06_JPRB, 2.67294E-06_JPRB, &
-     & 2.60074E-06_JPRB, 2.53049E-06_JPRB, 2.46214E-06_JPRB, 2.39563E-06_JPRB, 2.33092E-06_JPRB, &
-     & 2.26796E-06_JPRB, 2.20670E-06_JPRB, 2.14709E-06_JPRB, 2.08910E-06_JPRB/)
-      KAO_MN2(:, 6) = (/ &
-     & 3.38746E-06_JPRB, 3.25966E-06_JPRB, 3.13669E-06_JPRB, 3.01836E-06_JPRB, 2.90449E-06_JPRB, &
-     & 2.79491E-06_JPRB, 2.68947E-06_JPRB, 2.58801E-06_JPRB, 2.49037E-06_JPRB, 2.39642E-06_JPRB, &
-     & 2.30601E-06_JPRB, 2.21902E-06_JPRB, 2.13530E-06_JPRB, 2.05475E-06_JPRB, 1.97723E-06_JPRB, &
-     & 1.90264E-06_JPRB, 1.83086E-06_JPRB, 1.76179E-06_JPRB, 1.69532E-06_JPRB/)
-      KAO_MN2(:, 7) = (/ &
-     & 3.17530E-06_JPRB, 3.07196E-06_JPRB, 2.97199E-06_JPRB, 2.87527E-06_JPRB, 2.78170E-06_JPRB, &
-     & 2.69118E-06_JPRB, 2.60360E-06_JPRB, 2.51887E-06_JPRB, 2.43690E-06_JPRB, 2.35759E-06_JPRB, &
-     & 2.28087E-06_JPRB, 2.20664E-06_JPRB, 2.13483E-06_JPRB, 2.06536E-06_JPRB, 1.99814E-06_JPRB, &
-     & 1.93312E-06_JPRB, 1.87021E-06_JPRB, 1.80934E-06_JPRB, 1.75046E-06_JPRB/)
-      KAO_MN2(:, 8) = (/ &
-     & 2.84701E-06_JPRB, 2.77007E-06_JPRB, 2.69521E-06_JPRB, 2.62237E-06_JPRB, 2.55150E-06_JPRB, &
-     & 2.48254E-06_JPRB, 2.41545E-06_JPRB, 2.35017E-06_JPRB, 2.28666E-06_JPRB, 2.22486E-06_JPRB, &
-     & 2.16473E-06_JPRB, 2.10623E-06_JPRB, 2.04930E-06_JPRB, 1.99392E-06_JPRB, 1.94003E-06_JPRB, &
-     & 1.88760E-06_JPRB, 1.83659E-06_JPRB, 1.78695E-06_JPRB, 1.73866E-06_JPRB/)
-      KAO_MN2(:, 9) = (/ &
-     & 2.79917E-06_JPRB, 2.73207E-06_JPRB, 2.66658E-06_JPRB, 2.60266E-06_JPRB, 2.54027E-06_JPRB, &
-     & 2.47937E-06_JPRB, 2.41994E-06_JPRB, 2.36192E-06_JPRB, 2.30530E-06_JPRB, 2.25004E-06_JPRB, &
-     & 2.19610E-06_JPRB, 2.14346E-06_JPRB, 2.09208E-06_JPRB, 2.04193E-06_JPRB, 1.99298E-06_JPRB, &
-     & 1.94520E-06_JPRB, 1.89857E-06_JPRB, 1.85306E-06_JPRB, 1.80864E-06_JPRB/)
-      KAO_MN2(:,10) = (/ &
-     & 2.74910E-06_JPRB, 2.64462E-06_JPRB, 2.54412E-06_JPRB, 2.44743E-06_JPRB, 2.35442E-06_JPRB, &
-     & 2.26495E-06_JPRB, 2.17887E-06_JPRB, 2.09606E-06_JPRB, 2.01641E-06_JPRB, 1.93978E-06_JPRB, &
-     & 1.86606E-06_JPRB, 1.79514E-06_JPRB, 1.72692E-06_JPRB, 1.66129E-06_JPRB, 1.59815E-06_JPRB, &
-     & 1.53742E-06_JPRB, 1.47899E-06_JPRB, 1.42278E-06_JPRB, 1.36871E-06_JPRB/)
-      KAO_MN2(:,11) = (/ &
-     & 2.63952E-06_JPRB, 2.60263E-06_JPRB, 2.56626E-06_JPRB, 2.53039E-06_JPRB, 2.49503E-06_JPRB, &
-     & 2.46016E-06_JPRB, 2.42578E-06_JPRB, 2.39188E-06_JPRB, 2.35845E-06_JPRB, 2.32549E-06_JPRB, &
-     & 2.29299E-06_JPRB, 2.26094E-06_JPRB, 2.22934E-06_JPRB, 2.19819E-06_JPRB, 2.16747E-06_JPRB, &
-     & 2.13717E-06_JPRB, 2.10731E-06_JPRB, 2.07786E-06_JPRB, 2.04882E-06_JPRB/)
-      KAO_MN2(:,12) = (/ &
-     & 2.94106E-06_JPRB, 2.82819E-06_JPRB, 2.71966E-06_JPRB, 2.61528E-06_JPRB, 2.51492E-06_JPRB, &
-     & 2.41841E-06_JPRB, 2.32560E-06_JPRB, 2.23635E-06_JPRB, 2.15053E-06_JPRB, 2.06800E-06_JPRB, &
-     & 1.98863E-06_JPRB, 1.91232E-06_JPRB, 1.83893E-06_JPRB, 1.76836E-06_JPRB, 1.70049E-06_JPRB, &
-     & 1.63524E-06_JPRB, 1.57248E-06_JPRB, 1.51214E-06_JPRB, 1.45411E-06_JPRB/)
-      KAO_MN2(:,13) = (/ &
-     & 2.94607E-06_JPRB, 2.87369E-06_JPRB, 2.80309E-06_JPRB, 2.73422E-06_JPRB, 2.66705E-06_JPRB, &
-     & 2.60152E-06_JPRB, 2.53760E-06_JPRB, 2.47526E-06_JPRB, 2.41445E-06_JPRB, 2.35513E-06_JPRB, &
-     & 2.29726E-06_JPRB, 2.24082E-06_JPRB, 2.18577E-06_JPRB, 2.13207E-06_JPRB, 2.07969E-06_JPRB, &
-     & 2.02859E-06_JPRB, 1.97875E-06_JPRB, 1.93014E-06_JPRB, 1.88272E-06_JPRB/)
-      KAO_MN2(:,14) = (/ &
-     & 2.58051E-06_JPRB, 2.48749E-06_JPRB, 2.39782E-06_JPRB, 2.31139E-06_JPRB, 2.22807E-06_JPRB, &
-     & 2.14775E-06_JPRB, 2.07033E-06_JPRB, 1.99570E-06_JPRB, 1.92376E-06_JPRB, 1.85441E-06_JPRB, &
-     & 1.78756E-06_JPRB, 1.72313E-06_JPRB, 1.66101E-06_JPRB, 1.60114E-06_JPRB, 1.54342E-06_JPRB, &
-     & 1.48778E-06_JPRB, 1.43415E-06_JPRB, 1.38245E-06_JPRB, 1.33262E-06_JPRB/)
-      KAO_MN2(:,15) = (/ &
-     & 3.03447E-06_JPRB, 2.88559E-06_JPRB, 2.74401E-06_JPRB, 2.60938E-06_JPRB, 2.48135E-06_JPRB, &
-     & 2.35961E-06_JPRB, 2.24384E-06_JPRB, 2.13375E-06_JPRB, 2.02906E-06_JPRB, 1.92951E-06_JPRB, &
-     & 1.83484E-06_JPRB, 1.74481E-06_JPRB, 1.65921E-06_JPRB, 1.57780E-06_JPRB, 1.50039E-06_JPRB, &
-     & 1.42677E-06_JPRB, 1.35677E-06_JPRB, 1.29020E-06_JPRB, 1.22690E-06_JPRB/)
-      KAO_MN2(:,16) = (/ &
-     & 1.48655E-06_JPRB, 1.48283E-06_JPRB, 1.47913E-06_JPRB, 1.47543E-06_JPRB, 1.47174E-06_JPRB, &
-     & 1.46806E-06_JPRB, 1.46439E-06_JPRB, 1.46072E-06_JPRB, 1.45707E-06_JPRB, 1.45343E-06_JPRB, &
-     & 1.44979E-06_JPRB, 1.44617E-06_JPRB, 1.44255E-06_JPRB, 1.43894E-06_JPRB, 1.43534E-06_JPRB, &
-     & 1.43176E-06_JPRB, 1.42817E-06_JPRB, 1.42460E-06_JPRB, 1.42104E-06_JPRB/)
-      KBO_MN2(:, 1) = (/ &
-     & 5.12042E-08_JPRB, 5.51239E-08_JPRB, 5.93436E-08_JPRB, 6.38863E-08_JPRB, 6.87767E-08_JPRB, &
-     & 7.40415E-08_JPRB, 7.97093E-08_JPRB, 8.58110E-08_JPRB, 9.23797E-08_JPRB, 9.94513E-08_JPRB, &
-     & 1.07064E-07_JPRB, 1.15260E-07_JPRB, 1.24083E-07_JPRB, 1.33581E-07_JPRB, 1.43807E-07_JPRB, &
-     & 1.54815E-07_JPRB, 1.66666E-07_JPRB, 1.79424E-07_JPRB, 1.93159E-07_JPRB/)
-      KBO_MN2(:, 2) = (/ &
-     & 2.30938E-07_JPRB, 2.41696E-07_JPRB, 2.52955E-07_JPRB, 2.64738E-07_JPRB, 2.77071E-07_JPRB, &
-     & 2.89978E-07_JPRB, 3.03486E-07_JPRB, 3.17623E-07_JPRB, 3.32419E-07_JPRB, 3.47904E-07_JPRB, &
-     & 3.64111E-07_JPRB, 3.81072E-07_JPRB, 3.98824E-07_JPRB, 4.17402E-07_JPRB, 4.36846E-07_JPRB, &
-     & 4.57196E-07_JPRB, 4.78494E-07_JPRB, 5.00784E-07_JPRB, 5.24112E-07_JPRB/)
-      KBO_MN2(:, 3) = (/ &
-     & 6.70458E-07_JPRB, 7.04274E-07_JPRB, 7.39795E-07_JPRB, 7.77109E-07_JPRB, 8.16304E-07_JPRB, &
-     & 8.57476E-07_JPRB, 9.00724E-07_JPRB, 9.46154E-07_JPRB, 9.93876E-07_JPRB, 1.04400E-06_JPRB, &
-     & 1.09666E-06_JPRB, 1.15197E-06_JPRB, 1.21008E-06_JPRB, 1.27111E-06_JPRB, 1.33522E-06_JPRB, &
-     & 1.40256E-06_JPRB, 1.47331E-06_JPRB, 1.54761E-06_JPRB, 1.62567E-06_JPRB/)
-      KBO_MN2(:, 4) = (/ &
-     & 1.84182E-06_JPRB, 1.89203E-06_JPRB, 1.94360E-06_JPRB, 1.99658E-06_JPRB, 2.05101E-06_JPRB, &
-     & 2.10692E-06_JPRB, 2.16435E-06_JPRB, 2.22335E-06_JPRB, 2.28396E-06_JPRB, 2.34622E-06_JPRB, &
-     & 2.41017E-06_JPRB, 2.47587E-06_JPRB, 2.54337E-06_JPRB, 2.61270E-06_JPRB, 2.68392E-06_JPRB, &
-     & 2.75708E-06_JPRB, 2.83224E-06_JPRB, 2.90944E-06_JPRB, 2.98875E-06_JPRB/)
-      KBO_MN2(:, 5) = (/ &
-     & 3.41996E-06_JPRB, 3.32758E-06_JPRB, 3.23770E-06_JPRB, 3.15024E-06_JPRB, 3.06515E-06_JPRB, &
-     & 2.98235E-06_JPRB, 2.90180E-06_JPRB, 2.82341E-06_JPRB, 2.74715E-06_JPRB, 2.67294E-06_JPRB, &
-     & 2.60074E-06_JPRB, 2.53049E-06_JPRB, 2.46214E-06_JPRB, 2.39563E-06_JPRB, 2.33092E-06_JPRB, &
-     & 2.26796E-06_JPRB, 2.20670E-06_JPRB, 2.14709E-06_JPRB, 2.08910E-06_JPRB/)
-      KBO_MN2(:, 6) = (/ &
-     & 3.38746E-06_JPRB, 3.25966E-06_JPRB, 3.13669E-06_JPRB, 3.01836E-06_JPRB, 2.90449E-06_JPRB, &
-     & 2.79491E-06_JPRB, 2.68947E-06_JPRB, 2.58801E-06_JPRB, 2.49037E-06_JPRB, 2.39642E-06_JPRB, &
-     & 2.30601E-06_JPRB, 2.21902E-06_JPRB, 2.13530E-06_JPRB, 2.05475E-06_JPRB, 1.97723E-06_JPRB, &
-     & 1.90264E-06_JPRB, 1.83086E-06_JPRB, 1.76179E-06_JPRB, 1.69532E-06_JPRB/)
-      KBO_MN2(:, 7) = (/ &
-     & 3.17530E-06_JPRB, 3.07196E-06_JPRB, 2.97199E-06_JPRB, 2.87527E-06_JPRB, 2.78170E-06_JPRB, &
-     & 2.69118E-06_JPRB, 2.60360E-06_JPRB, 2.51887E-06_JPRB, 2.43690E-06_JPRB, 2.35759E-06_JPRB, &
-     & 2.28087E-06_JPRB, 2.20664E-06_JPRB, 2.13483E-06_JPRB, 2.06536E-06_JPRB, 1.99814E-06_JPRB, &
-     & 1.93312E-06_JPRB, 1.87021E-06_JPRB, 1.80934E-06_JPRB, 1.75046E-06_JPRB/)
-      KBO_MN2(:, 8) = (/ &
-     & 2.84701E-06_JPRB, 2.77007E-06_JPRB, 2.69521E-06_JPRB, 2.62237E-06_JPRB, 2.55150E-06_JPRB, &
-     & 2.48254E-06_JPRB, 2.41545E-06_JPRB, 2.35017E-06_JPRB, 2.28666E-06_JPRB, 2.22486E-06_JPRB, &
-     & 2.16473E-06_JPRB, 2.10623E-06_JPRB, 2.04930E-06_JPRB, 1.99392E-06_JPRB, 1.94003E-06_JPRB, &
-     & 1.88760E-06_JPRB, 1.83659E-06_JPRB, 1.78695E-06_JPRB, 1.73866E-06_JPRB/)
-      KBO_MN2(:, 9) = (/ &
-     & 2.79917E-06_JPRB, 2.73207E-06_JPRB, 2.66658E-06_JPRB, 2.60266E-06_JPRB, 2.54027E-06_JPRB, &
-     & 2.47937E-06_JPRB, 2.41994E-06_JPRB, 2.36192E-06_JPRB, 2.30530E-06_JPRB, 2.25004E-06_JPRB, &
-     & 2.19610E-06_JPRB, 2.14346E-06_JPRB, 2.09208E-06_JPRB, 2.04193E-06_JPRB, 1.99298E-06_JPRB, &
-     & 1.94520E-06_JPRB, 1.89857E-06_JPRB, 1.85306E-06_JPRB, 1.80864E-06_JPRB/)
-      KBO_MN2(:,10) = (/ &
-     & 2.74910E-06_JPRB, 2.64462E-06_JPRB, 2.54412E-06_JPRB, 2.44743E-06_JPRB, 2.35442E-06_JPRB, &
-     & 2.26495E-06_JPRB, 2.17887E-06_JPRB, 2.09606E-06_JPRB, 2.01641E-06_JPRB, 1.93978E-06_JPRB, &
-     & 1.86606E-06_JPRB, 1.79514E-06_JPRB, 1.72692E-06_JPRB, 1.66129E-06_JPRB, 1.59815E-06_JPRB, &
-     & 1.53742E-06_JPRB, 1.47899E-06_JPRB, 1.42278E-06_JPRB, 1.36871E-06_JPRB/)
-      KBO_MN2(:,11) = (/ &
-     & 2.63952E-06_JPRB, 2.60263E-06_JPRB, 2.56626E-06_JPRB, 2.53039E-06_JPRB, 2.49503E-06_JPRB, &
-     & 2.46016E-06_JPRB, 2.42578E-06_JPRB, 2.39188E-06_JPRB, 2.35845E-06_JPRB, 2.32549E-06_JPRB, &
-     & 2.29299E-06_JPRB, 2.26094E-06_JPRB, 2.22934E-06_JPRB, 2.19819E-06_JPRB, 2.16747E-06_JPRB, &
-     & 2.13717E-06_JPRB, 2.10731E-06_JPRB, 2.07786E-06_JPRB, 2.04882E-06_JPRB/)
-      KBO_MN2(:,12) = (/ &
-     & 2.94106E-06_JPRB, 2.82819E-06_JPRB, 2.71966E-06_JPRB, 2.61528E-06_JPRB, 2.51492E-06_JPRB, &
-     & 2.41841E-06_JPRB, 2.32560E-06_JPRB, 2.23635E-06_JPRB, 2.15053E-06_JPRB, 2.06800E-06_JPRB, &
-     & 1.98863E-06_JPRB, 1.91232E-06_JPRB, 1.83893E-06_JPRB, 1.76836E-06_JPRB, 1.70049E-06_JPRB, &
-     & 1.63524E-06_JPRB, 1.57248E-06_JPRB, 1.51214E-06_JPRB, 1.45411E-06_JPRB/)
-      KBO_MN2(:,13) = (/ &
-     & 2.94607E-06_JPRB, 2.87369E-06_JPRB, 2.80309E-06_JPRB, 2.73422E-06_JPRB, 2.66705E-06_JPRB, &
-     & 2.60152E-06_JPRB, 2.53760E-06_JPRB, 2.47526E-06_JPRB, 2.41445E-06_JPRB, 2.35513E-06_JPRB, &
-     & 2.29726E-06_JPRB, 2.24082E-06_JPRB, 2.18577E-06_JPRB, 2.13207E-06_JPRB, 2.07969E-06_JPRB, &
-     & 2.02859E-06_JPRB, 1.97875E-06_JPRB, 1.93014E-06_JPRB, 1.88272E-06_JPRB/)
-      KBO_MN2(:,14) = (/ &
-     & 2.58051E-06_JPRB, 2.48749E-06_JPRB, 2.39782E-06_JPRB, 2.31139E-06_JPRB, 2.22807E-06_JPRB, &
-     & 2.14775E-06_JPRB, 2.07033E-06_JPRB, 1.99570E-06_JPRB, 1.92376E-06_JPRB, 1.85441E-06_JPRB, &
-     & 1.78756E-06_JPRB, 1.72313E-06_JPRB, 1.66101E-06_JPRB, 1.60114E-06_JPRB, 1.54342E-06_JPRB, &
-     & 1.48778E-06_JPRB, 1.43415E-06_JPRB, 1.38245E-06_JPRB, 1.33262E-06_JPRB/)
-      KBO_MN2(:,15) = (/ &
-     & 3.03447E-06_JPRB, 2.88559E-06_JPRB, 2.74401E-06_JPRB, 2.60938E-06_JPRB, 2.48135E-06_JPRB, &
-     & 2.35961E-06_JPRB, 2.24384E-06_JPRB, 2.13375E-06_JPRB, 2.02906E-06_JPRB, 1.92951E-06_JPRB, &
-     & 1.83484E-06_JPRB, 1.74481E-06_JPRB, 1.65921E-06_JPRB, 1.57780E-06_JPRB, 1.50039E-06_JPRB, &
-     & 1.42677E-06_JPRB, 1.35677E-06_JPRB, 1.29020E-06_JPRB, 1.22690E-06_JPRB/)
-      KBO_MN2(:,16) = (/ &
-     & 1.48655E-06_JPRB, 1.48283E-06_JPRB, 1.47913E-06_JPRB, 1.47543E-06_JPRB, 1.47174E-06_JPRB, &
-     & 1.46806E-06_JPRB, 1.46439E-06_JPRB, 1.46072E-06_JPRB, 1.45707E-06_JPRB, 1.45343E-06_JPRB, &
-     & 1.44979E-06_JPRB, 1.44617E-06_JPRB, 1.44255E-06_JPRB, 1.43894E-06_JPRB, 1.43534E-06_JPRB, &
-     & 1.43176E-06_JPRB, 1.42817E-06_JPRB, 1.42460E-06_JPRB, 1.42104E-06_JPRB/)
-
-
-!     The array SELFREFO contains the coefficient of the water vapor
-!     self-continuum (including the energy term).  The first index
-!     refers to temperature in 7.2 degree increments.  For instance,
-!     JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8,
-!     etc.  The second index runs over the g-channel (1 to 16).
-
-      SELFREFO(:, 1) = (/ &
-     & 2.16803e+00_JPRB, 1.98236e+00_JPRB, 1.81260e+00_JPRB, 1.65737e+00_JPRB, 1.51544e+00_JPRB, &
-     & 1.38567e+00_JPRB, 1.26700e+00_JPRB, 1.15850e+00_JPRB, 1.05929e+00_JPRB, 9.68576e-01_JPRB/)
-      SELFREFO(:, 2) = (/ &
-     & 3.70149e+00_JPRB, 3.43145e+00_JPRB, 3.18110e+00_JPRB, 2.94902e+00_JPRB, 2.73387e+00_JPRB, &
-     & 2.53441e+00_JPRB, 2.34951e+00_JPRB, 2.17810e+00_JPRB, 2.01919e+00_JPRB, 1.87188e+00_JPRB/)
-      SELFREFO(:, 3) = (/ &
-     & 6.17433e+00_JPRB, 5.62207e+00_JPRB, 5.11920e+00_JPRB, 4.66131e+00_JPRB, 4.24438e+00_JPRB, &
-     & 3.86474e+00_JPRB, 3.51906e+00_JPRB, 3.20430e+00_JPRB, 2.91769e+00_JPRB, 2.65672e+00_JPRB/)
-      SELFREFO(:, 4) = (/ &
-     & 6.56459e+00_JPRB, 5.94787e+00_JPRB, 5.38910e+00_JPRB, 4.88282e+00_JPRB, 4.42410e+00_JPRB, &
-     & 4.00848e+00_JPRB, 3.63190e+00_JPRB, 3.29070e+00_JPRB, 2.98155e+00_JPRB, 2.70145e+00_JPRB/)
-      SELFREFO(:, 5) = (/ &
-     & 6.49581e+00_JPRB, 5.91114e+00_JPRB, 5.37910e+00_JPRB, 4.89494e+00_JPRB, 4.45436e+00_JPRB, &
-     & 4.05344e+00_JPRB, 3.68860e+00_JPRB, 3.35660e+00_JPRB, 3.05448e+00_JPRB, 2.77956e+00_JPRB/)
-      SELFREFO(:, 6) = (/ &
-     & 6.50189e+00_JPRB, 5.89381e+00_JPRB, 5.34260e+00_JPRB, 4.84294e+00_JPRB, 4.39001e+00_JPRB, &
-     & 3.97944e+00_JPRB, 3.60727e+00_JPRB, 3.26990e+00_JPRB, 2.96409e+00_JPRB, 2.68687e+00_JPRB/)
-      SELFREFO(:, 7) = (/ &
-     & 6.64768e+00_JPRB, 6.01719e+00_JPRB, 5.44650e+00_JPRB, 4.92993e+00_JPRB, 4.46236e+00_JPRB, &
-     & 4.03914e+00_JPRB, 3.65605e+00_JPRB, 3.30930e+00_JPRB, 2.99543e+00_JPRB, 2.71134e+00_JPRB/)
-      SELFREFO(:, 8) = (/ &
-     & 6.43744e+00_JPRB, 5.87166e+00_JPRB, 5.35560e+00_JPRB, 4.88490e+00_JPRB, 4.45557e+00_JPRB, &
-     & 4.06397e+00_JPRB, 3.70679e+00_JPRB, 3.38100e+00_JPRB, 3.08384e+00_JPRB, 2.81281e+00_JPRB/)
-      SELFREFO(:, 9) = (/ &
-     & 6.55466e+00_JPRB, 5.99777e+00_JPRB, 5.48820e+00_JPRB, 5.02192e+00_JPRB, 4.59525e+00_JPRB, &
-     & 4.20484e+00_JPRB, 3.84759e+00_JPRB, 3.52070e+00_JPRB, 3.22158e+00_JPRB, 2.94787e+00_JPRB/)
-      SELFREFO(:,10) = (/ &
-     & 6.84510e+00_JPRB, 6.26933e+00_JPRB, 5.74200e+00_JPRB, 5.25902e+00_JPRB, 4.81667e+00_JPRB, &
-     & 4.41152e+00_JPRB, 4.04046e+00_JPRB, 3.70060e+00_JPRB, 3.38933e+00_JPRB, 3.10424e+00_JPRB/)
-      SELFREFO(:,11) = (/ &
-     & 6.83128e+00_JPRB, 6.25536e+00_JPRB, 5.72800e+00_JPRB, 5.24510e+00_JPRB, 4.80291e+00_JPRB, &
-     & 4.39799e+00_JPRB, 4.02722e+00_JPRB, 3.68770e+00_JPRB, 3.37681e+00_JPRB, 3.09212e+00_JPRB/)
-      SELFREFO(:,12) = (/ &
-     & 7.35969e+00_JPRB, 6.61719e+00_JPRB, 5.94960e+00_JPRB, 5.34936e+00_JPRB, 4.80968e+00_JPRB, &
-     & 4.32445e+00_JPRB, 3.88817e+00_JPRB, 3.49590e+00_JPRB, 3.14321e+00_JPRB, 2.82610e+00_JPRB/)
-      SELFREFO(:,13) = (/ &
-     & 7.50064e+00_JPRB, 6.80749e+00_JPRB, 6.17840e+00_JPRB, 5.60744e+00_JPRB, 5.08925e+00_JPRB, &
-     & 4.61894e+00_JPRB, 4.19210e+00_JPRB, 3.80470e+00_JPRB, 3.45310e+00_JPRB, 3.13399e+00_JPRB/)
-      SELFREFO(:,14) = (/ &
-     & 7.40801e+00_JPRB, 6.71328e+00_JPRB, 6.08370e+00_JPRB, 5.51316e+00_JPRB, 4.99613e+00_JPRB, &
-     & 4.52759e+00_JPRB, 4.10298e+00_JPRB, 3.71820e+00_JPRB, 3.36950e+00_JPRB, 3.05351e+00_JPRB/)
-      SELFREFO(:,15) = (/ &
-     & 7.51895e+00_JPRB, 6.68846e+00_JPRB, 5.94970e+00_JPRB, 5.29254e+00_JPRB, 4.70796e+00_JPRB, &
-     & 4.18795e+00_JPRB, 3.72538e+00_JPRB, 3.31390e+00_JPRB, 2.94787e+00_JPRB, 2.62227e+00_JPRB/)
-      SELFREFO(:,16) = (/ &
-     & 7.84774e+00_JPRB, 6.80673e+00_JPRB, 5.90380e+00_JPRB, 5.12065e+00_JPRB, 4.44138e+00_JPRB, &
-     & 3.85223e+00_JPRB, 3.34122e+00_JPRB, 2.89800e+00_JPRB, 2.51357e+00_JPRB, 2.18014e+00_JPRB/)
-
-
-
-
-
-IF (LHOOK) CALL DR_HOOK('RRTM_KGB1',1,ZHOOK_HANDLE)
-RETURN
-
-1000 CONTINUE
-CALL ABOR1("RRTM_KGB1:ERROR OPENING FILE RADRRTM")
-1001 CONTINUE
-CALL ABOR1("RRTM_KGB1:ERROR READING FILE RADRRTM")
-
-!     -----------------------------------------------------------------
-END SUBROUTINE RRTM_KGB1
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90
deleted file mode 100644
index 693f0ea061c906961b09fd259623803621febb0c..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90
+++ /dev/null
@@ -1,339 +0,0 @@
-#ifdef RS6K
-@PROCESS HOT(NOVECTOR) NOSTRICT
-#endif
-SUBROUTINE SRTM_GAS_OPTICAL_DEPTH &
- & ( KIDIA   , KFDIA   , KLEV    , PONEMINUS, &
- &   PRMU0, &
- &   KLAYTROP,&
- &   PCOLCH4  , PCOLCO2 , PCOLH2O , PCOLMOL  , PCOLO2 , PCOLO3 ,&
- &   PFORFAC , PFORFRAC , KINDFOR , PSELFFAC, PSELFFRAC, KINDSELF ,&
- &   PFAC00  , PFAC01   , PFAC10  , PFAC11 ,&
- &   KJP     , KJT      , KJT1 ,&
- !-- output arrays 
- &   POD, PSSA, PINCSOL)
-
-
-!**** *SRTM_GAS_OPTICAL_DEPTH* - SPECTRAL LOOP TO COMPUTE THE SHORTWAVE RADIATION FLUXES.
-
-!     PURPOSE.
-!     --------
-
-!          COMPUTE THE GAS OPTICAL DEPTH AT EACH SHORTWAVE G POINT
-
-!**   INTERFACE.
-!     ----------
-
-!          *SRTM_GAS_OPTICAL_DEPTH* IS CALLED FROM THE NEW RADIATION SCHEME
-
-!        IMPLICIT ARGUMENTS :
-!        --------------------
-
-!     ==== INPUTS ===
-!     ==== OUTPUTS ===
-
-!     METHOD.
-!     -------
-
-!     EXTERNALS.
-!     ----------
-
-!     REFERENCE.
-!     ----------
-
-!        SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT
-!        DOCUMENTATION
-!     AUTHOR.
-!     -------
-!        ADAPTED FROM SRTM_SPCVRT_MCICA (BY JEAN-JACQUES MORCRETTE) BY
-!        ROBIN HOGAN
-!
-!     MODIFICATIONS.
-!     --------------
-!        ORIGINAL : 2015-07-16
-
-!     ------------------------------------------------------------------
-
-USE PARKIND1 , ONLY : JPIM, JPRB
-USE YOMHOOK  , ONLY : LHOOK, DR_HOOK
-USE PARSRTM  , ONLY : JPB1, JPB2
-USE YOESRTM  , ONLY : JPGPT
-USE YOESRTWN , ONLY : NGC
-USE YOMDIMV  , ONLY : YRDIMV
-
-IMPLICIT NONE
-
-!     ------------------------------------------------------------------
-
-!*       0.1   ARGUMENTS
-!              ---------
-
-INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA, KFDIA
-INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PONEMINUS(KIDIA:KFDIA)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PRMU0(KIDIA:KFDIA)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KLAYTROP(KIDIA:KFDIA)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLCH4(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLCO2(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLH2O(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLMOL(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLO2(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PCOLO3(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFORFAC(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFORFRAC(KIDIA:KFDIA,YRDIMV%NFLEVG)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KINDFOR(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PSELFFAC(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PSELFFRAC(KIDIA:KFDIA,YRDIMV%NFLEVG)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KINDSELF(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFAC00(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFAC01(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFAC10(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB)   ,INTENT(IN)    :: PFAC11(KIDIA:KFDIA,YRDIMV%NFLEVG)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KJP(KIDIA:KFDIA,YRDIMV%NFLEVG)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KJT(KIDIA:KFDIA,YRDIMV%NFLEVG)
-INTEGER(KIND=JPIM),INTENT(IN)    :: KJT1(KIDIA:KFDIA,YRDIMV%NFLEVG)
-
-REAL(KIND=JPRB)   ,INTENT(OUT)   :: POD(KIDIA:KFDIA,YRDIMV%NFLEVG,JPGPT) ! Optical depth
-REAL(KIND=JPRB)   ,INTENT(OUT)   :: PSSA(KIDIA:KFDIA,YRDIMV%NFLEVG,JPGPT) ! Single scattering albedo
-REAL(KIND=JPRB)   ,INTENT(OUT)   :: PINCSOL(KIDIA:KFDIA,JPGPT) ! Incoming solar flux
-
-
-!     ------------------------------------------------------------------
-
-INTEGER(KIND=JPIM) :: IB1, IB2, IBM, IGT, IW(KIDIA:KFDIA), JB, JG, JK, JL, IC, ICOUNT
-
-INTEGER(KIND=JPIM) :: IND(KFDIA-KIDIA+1)
-
-
-!-- Output of SRTM_TAUMOLn routines
-REAL(KIND=JPRB) :: ZTAUG(KIDIA:KFDIA,YRDIMV%NFLEVG,16) ! Absorption optical depth
-REAL(KIND=JPRB) :: ZTAUR(KIDIA:KFDIA,YRDIMV%NFLEVG,16) ! Rayleigh optical depth
-REAL(KIND=JPRB) :: ZSFLXZEN(KIDIA:KFDIA,16) ! Incoming solar flux
-
-
-REAL(KIND=JPRB) :: ZTAU, ZPAO, ZPTO
-REAL(KIND=JPRB) :: ZPAOJ(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB) :: ZPTOJ(KIDIA:KFDIA,YRDIMV%NFLEVG)
-REAL(KIND=JPRB) :: ZRMU0D(KIDIA:KFDIA) 
- 
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-
-#include "srtm_taumol16.intfb.h"
-#include "srtm_taumol17.intfb.h"
-#include "srtm_taumol18.intfb.h"
-#include "srtm_taumol19.intfb.h"
-#include "srtm_taumol20.intfb.h"
-#include "srtm_taumol21.intfb.h"
-#include "srtm_taumol22.intfb.h"
-#include "srtm_taumol23.intfb.h"
-#include "srtm_taumol24.intfb.h"
-#include "srtm_taumol25.intfb.h"
-#include "srtm_taumol26.intfb.h"
-#include "srtm_taumol27.intfb.h"
-#include "srtm_taumol28.intfb.h"
-#include "srtm_taumol29.intfb.h"
-
-!     ------------------------------------------------------------------
-ASSOCIATE(NFLEVG=>YRDIMV%NFLEVG)
-IF (LHOOK) CALL DR_HOOK('SRTM_GAS_OPTICAL_DEPTH',0,ZHOOK_HANDLE)
-
-POD = 0.0	
-PSSA = 0.0
-PINCSOL = 0.0
-
-IB1=JPB1
-IB2=JPB2
-
-IC=0
-DO JL = KIDIA, KFDIA
-  IF (PRMU0(JL) > 0.0_JPRB) THEN
-    IC=IC+1
-    IND(IC)=JL
-    IW(JL)=0
-  ENDIF
-ENDDO
-ICOUNT=IC
-IF(ICOUNT==0)THEN
-  IF (LHOOK) CALL DR_HOOK('SRTM_SPCVRT_MCICA',1,ZHOOK_HANDLE)
-  RETURN
-ENDIF
-
-JB=IB1-1
-DO JB = IB1, IB2
-  DO IC=1,ICOUNT
-    JL=IND(IC)
-    IBM = JB-15
-    IGT = NGC(IBM)
-  ENDDO
-
-  !-- for each band, computes the gaseous and Rayleigh optical thickness 
-  !  for all g-points within the band
-
-  IF (JB == 16) THEN
-    CALL SRTM_TAUMOL16 &
-     & ( KIDIA   , KFDIA    , KLEV    ,&
-     &   PFAC00  , PFAC01   , PFAC10   , PFAC11   ,&
-     &   KJP     , KJT      , KJT1     , PONEMINUS,&
-     &   PCOLH2O , PCOLCH4  , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC , PSELFFRAC, KINDSELF, PFORFAC  , PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG    , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 17) THEN
-    CALL SRTM_TAUMOL17 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLCO2 , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 18) THEN
-    CALL SRTM_TAUMOL18 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLCH4 , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 19) THEN
-    CALL SRTM_TAUMOL19 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLCO2 , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 20) THEN
-    CALL SRTM_TAUMOL20 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     ,&
-     &   PCOLH2O , PCOLCH4 , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 21) THEN
-    CALL SRTM_TAUMOL21 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLCO2 , PCOLMOL  ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 22) THEN
-    CALL SRTM_TAUMOL22 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLMOL , PCOLO2   ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 23) THEN
-    CALL SRTM_TAUMOL23 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     ,&
-     &   PCOLH2O , PCOLMOL ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 24) THEN
-    CALL SRTM_TAUMOL24 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     , PONEMINUS ,&
-     &   PCOLH2O , PCOLMOL , PCOLO2   , PCOLO3 ,&
-     &   KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 25) THEN
-    !--- visible 16000-22650 cm-1   0.4415 - 0.6250 um
-    CALL SRTM_TAUMOL25 &
-     & ( KIDIA    , KFDIA   , KLEV     ,&
-     &   PFAC00   , PFAC01  , PFAC10 , PFAC11 ,&
-     &   KJP      , KJT     , KJT1   ,&
-     &   PCOLH2O  , PCOLMOL , PCOLO3 ,&
-     &   KLAYTROP ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR   , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 26) THEN
-    !--- UV-A 22650-29000 cm-1   0.3448 - 0.4415 um
-    CALL SRTM_TAUMOL26 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PCOLMOL ,KLAYTROP,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 27) THEN
-    !--- UV-B 29000-38000 cm-1   0.2632 - 0.3448 um
-    CALL SRTM_TAUMOL27 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP     , KJT     , KJT1     ,&
-     &   PCOLMOL , PCOLO3 ,&
-     &   KLAYTROP ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 28) THEN
-    !--- UV-C 38000-50000 cm-1   0.2000 - 0.2632 um
-    CALL SRTM_TAUMOL28 &
-     & ( KIDIA   , KFDIA   , KLEV    ,&
-     &   PFAC00  , PFAC01  , PFAC10 , PFAC11 ,&
-     &   KJP     , KJT     , KJT1   , PONEMINUS ,&
-     &   PCOLMOL , PCOLO2  , PCOLO3 ,&
-     &   KLAYTROP ,&
-     &   ZSFLXZEN, ZTAUG   , ZTAUR  , PRMU0     &
-     & )  
-
-  ELSEIF (JB == 29) THEN
-    CALL SRTM_TAUMOL29 &
-     & ( KIDIA    , KFDIA   , KLEV     ,&
-     &   PFAC00   , PFAC01  , PFAC10   , PFAC11 ,&
-     &   KJP      , KJT     , KJT1     ,&
-     &   PCOLH2O  , PCOLCO2 , PCOLMOL  ,&
-     &   KLAYTROP , PSELFFAC, PSELFFRAC, KINDSELF  , PFORFAC, PFORFRAC, KINDFOR ,&
-     &   ZSFLXZEN , ZTAUG   , ZTAUR    , PRMU0     &
-     & )  
-
-  ENDIF
-   
-  DO JG=1,IGT
-    DO IC=1,ICOUNT
-      JL=IND(IC)
-      IW(JL)=IW(JL)+1
-
-      ! Incoming solar flux into plane perp to incoming radiation
-      PINCSOL(JL,IW(JL)) = ZSFLXZEN(JL,JG)
-    ENDDO
-
-    DO JK=1,KLEV
-      DO IC=1,ICOUNT
-        JL=IND(IC)
-        POD (JL,JK,IW(JL)) = ZTAUR(JL,JK,JG) + ZTAUG(JL,JK,JG)
-        PSSA(JL,JK,IW(JL)) = ZTAUR(JL,JK,JG) / POD(JL,JK,IW(JL))
-      ENDDO
-    ENDDO
-
-  ENDDO   !-- end loop on JG (g point)
-
-ENDDO     !-- end loop on JB (band)
-
-!     ------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('SRTM_GAS_OPTICAL_DEPTH',1,ZHOOK_HANDLE)
-END ASSOCIATE
-END SUBROUTINE SRTM_GAS_OPTICAL_DEPTH
diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90
deleted file mode 100644
index c2295d630cb84690228df926cbe42accfbee4916..0000000000000000000000000000000000000000
--- a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90
+++ /dev/null
@@ -1,184 +0,0 @@
-SUBROUTINE SRTM_KGB16(DIRECTORY)
-
-!     Originally by J.Delamere, Atmospheric & Environmental Research.
-!     Revision: 2.4
-!     BAND 16:  2600-3000 cm-1 (low - H2O,CH4; high - nothing)
-!     Reformatted for F90 by JJMorcrette, ECMWF
-!     R. Elkhatib 12-10-2005 Split for faster and more robust compilation.
-!     G.Mozdzynski March 2011 read constants from files
-!     T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring.
-!     ------------------------------------------------------------------
-
-USE PARKIND1  , ONLY : JPRB
-USE YOMHOOK   , ONLY : LHOOK, DR_HOOK
-USE YOMLUN    , ONLY : NULRAD , NULOUT
-USE YOMMP0    , ONLY : NPROC, MYPROC
-USE MPL_MODULE, ONLY : MPL_BROADCAST
-USE YOMTAG    , ONLY : MTAGRAD
-USE YOESRTA16 , ONLY : KA, KB, SELFREF, FORREF, SFLUXREF, RAYL, STRRAT1, LAYREFFR
-
-!     ------------------------------------------------------------------
-
-IMPLICIT NONE
-
-CHARACTER(LEN=*), INTENT(IN) :: DIRECTORY
-
-! KURUCZ
-!CHARACTER(LEN = 80) :: CLZZZ
-CHARACTER(LEN = 80) :: CLF1
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-#include "abor1.intfb.h"
-
-IF (LHOOK) CALL DR_HOOK('SRTM_KGB16',0,ZHOOK_HANDLE)
-
-IF( MYPROC==1 )THEN
-  !CALL GETENV("DATA",CLZZZ)
-  !IF(CLZZZ /= " ") THEN
-  !  CLF1=TRIM(CLZZZ)//"/RADSRTM"
-  CLF1 = DIRECTORY // "/RADSRTM"
-  WRITE(NULOUT,'(A,A)') 'Reading ',TRIM(CLF1)
-  ! RRTM and SRTM files from ecrad are in big-endian format.
-  ! Here they are covnerted into little-endian at opening
-  ! No need for compialtion option export GFORTRAN_CONVERT_UNIT="little_endian;big_endian:145"
-!   OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT='swap')
-
-  OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT='BIG_ENDIAN')
-  !ELSE
-  !  OPEN(NULRAD,FILE='RADSRTM',FORM="UNFORMATTED",ACTION="READ",ERR=1000)
-  !ENDIF
-  READ(NULRAD,ERR=1001) KA,KB
-ENDIF
-IF( NPROC>1 )THEN
-  CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB16:')
-  CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB16:')
-ENDIF
-
-SFLUXREF = (/ &
- & 1.92269_JPRB    , 1.72844_JPRB    , 1.64326_JPRB    , 1.58451_JPRB     &
- & , 1.44031_JPRB    , 1.25108_JPRB    , 1.02724_JPRB    , 0.776759_JPRB    &
- & , 0.534444_JPRB   , 5.87755E-02_JPRB, 4.86706E-02_JPRB, 3.87989E-02_JPRB &
- & , 2.84532E-02_JPRB, 1.82431E-02_JPRB, 6.92320E-03_JPRB, 9.70770E-04_JPRB /)  
-
-!     Rayleigh extinction coefficient at v = 2925 cm-1.
-RAYL = 2.91E-10_JPRB
-
-STRRAT1 = 252.131_JPRB
-
-LAYREFFR = 18
-
-!     ------------------------------------------------------------------
-
-!     The array KA contains absorption coefs at the 16 chosen g-values 
-!     for a range of pressure levels> ~100mb, temperatures, and binary
-!     species parameters (see taumol.f for definition).  The first 
-!     index in the array, JS, runs from 1 to 9, and corresponds to 
-!     different values of the binary species parameter.  For instance, 
-!     JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, 
-!     JS = 3 corresponds to the parameter value 2/8, etc.  The second index
-!     in the array, JT, which runs from 1 to 5, corresponds to different
-!     temperatures.  More specifically, JT = 3 means that the data are for
-!     the reference temperature TREF for this  pressure level, JT = 2 refers
-!     to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5
-!     is for TREF+30.  The third index, JP, runs from 1 to 13 and refers
-!     to the JPth reference pressure level (see taumol.f for these levels
-!     in mb).  The fourth index, IG, goes from 1 to 16, and indicates
-!     which g-interval the absorption coefficients are for.
-!     -----------------------------------------------------------------
-
-!     -----------------------------------------------------------------
-!     The array KB contains absorption coefs at the 16 chosen g-values 
-!     for a range of pressure levels < ~100mb and temperatures. The first 
-!     index in the array, JT, which runs from 1 to 5, corresponds to 
-!     different temperatures.  More specifically, JT = 3 means that the 
-!     data are for the reference temperature TREF for this pressure 
-!     level, JT = 2 refers to the temperature TREF-15, JT = 1 is for
-!     TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30.  
-!     The second index, JP, runs from 13 to 59 and refers to the JPth
-!     reference pressure level (see taumol.f for the value of these
-!     pressure levels in mb).  The third index, IG, goes from 1 to 16,
-!     and tells us which g-interval the absorption coefficients are for.
-!     -----------------------------------------------------------------
-
-FORREF(:, 1) = (/ 0.525585E-05_JPRB, 0.527618E-05_JPRB, 0.746929E-04_JPRB /)
-FORREF(:, 2) = (/ 0.794660E-05_JPRB, 0.136902E-04_JPRB, 0.849878E-04_JPRB /)
-FORREF(:, 3) = (/ 0.197099E-04_JPRB, 0.733094E-04_JPRB, 0.121687E-03_JPRB /)
-FORREF(:, 4) = (/ 0.148274E-03_JPRB, 0.169776E-03_JPRB, 0.164848E-03_JPRB /)
-FORREF(:, 5) = (/ 0.230296E-03_JPRB, 0.210384E-03_JPRB, 0.182028E-03_JPRB /)
-FORREF(:, 6) = (/ 0.280575E-03_JPRB, 0.259217E-03_JPRB, 0.196080E-03_JPRB /)
-FORREF(:, 7) = (/ 0.329034E-03_JPRB, 0.291575E-03_JPRB, 0.207044E-03_JPRB /)
-FORREF(:, 8) = (/ 0.349989E-03_JPRB, 0.323471E-03_JPRB, 0.225712E-03_JPRB /)
-FORREF(:, 9) = (/ 0.366097E-03_JPRB, 0.321519E-03_JPRB, 0.253150E-03_JPRB /)
-FORREF(:,10) = (/ 0.383589E-03_JPRB, 0.355314E-03_JPRB, 0.262555E-03_JPRB /)
-FORREF(:,11) = (/ 0.375933E-03_JPRB, 0.372443E-03_JPRB, 0.261313E-03_JPRB /)
-FORREF(:,12) = (/ 0.370652E-03_JPRB, 0.382366E-03_JPRB, 0.250070E-03_JPRB /)
-FORREF(:,13) = (/ 0.375092E-03_JPRB, 0.379542E-03_JPRB, 0.265794E-03_JPRB /)
-FORREF(:,14) = (/ 0.389705E-03_JPRB, 0.384274E-03_JPRB, 0.322135E-03_JPRB /)
-FORREF(:,15) = (/ 0.372084E-03_JPRB, 0.390422E-03_JPRB, 0.370035E-03_JPRB /)
-FORREF(:,16) = (/ 0.437802E-03_JPRB, 0.373406E-03_JPRB, 0.373222E-03_JPRB /)
-
-!     -----------------------------------------------------------------
-!     The array SELFREF contains the coefficient of the water vapor
-!     self-continuum (including the energy term).  The first index
-!     refers to temperature in 7.2 degree increments.  For instance,
-!     JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8,
-!     etc.  The second index runs over the g-channel (1 to 16).
-
-SELFREF(:, 1) = (/ &
- & 0.126758E-02_JPRB, 0.105253E-02_JPRB, 0.873963E-03_JPRB, 0.725690E-03_JPRB, 0.602573E-03_JPRB, &
- & 0.500344E-03_JPRB, 0.415458E-03_JPRB, 0.344973E-03_JPRB, 0.286447E-03_JPRB, 0.237849E-03_JPRB /)  
-SELFREF(:, 2) = (/ &
- & 0.144006E-02_JPRB, 0.118514E-02_JPRB, 0.975351E-03_JPRB, 0.802697E-03_JPRB, 0.660606E-03_JPRB, &
- & 0.543667E-03_JPRB, 0.447429E-03_JPRB, 0.368226E-03_JPRB, 0.303044E-03_JPRB, 0.249400E-03_JPRB /)  
-SELFREF(:, 3) = (/ &
- & 0.294018E-02_JPRB, 0.227428E-02_JPRB, 0.175920E-02_JPRB, 0.136077E-02_JPRB, 0.105258E-02_JPRB, &
- & 0.814189E-03_JPRB, 0.629789E-03_JPRB, 0.487153E-03_JPRB, 0.376821E-03_JPRB, 0.291478E-03_JPRB /)  
-SELFREF(:, 4) = (/ &
- & 0.395290E-02_JPRB, 0.348405E-02_JPRB, 0.307081E-02_JPRB, 0.270658E-02_JPRB, 0.238556E-02_JPRB, &
- & 0.210261E-02_JPRB, 0.185322E-02_JPRB, 0.163341E-02_JPRB, 0.143967E-02_JPRB, 0.126891E-02_JPRB /)  
-SELFREF(:, 5) = (/ &
- & 0.419122E-02_JPRB, 0.385638E-02_JPRB, 0.354829E-02_JPRB, 0.326481E-02_JPRB, 0.300398E-02_JPRB, &
- & 0.276399E-02_JPRB, 0.254317E-02_JPRB, 0.234000E-02_JPRB, 0.215305E-02_JPRB, 0.198104E-02_JPRB /)  
-SELFREF(:, 6) = (/ &
- & 0.495659E-02_JPRB, 0.456777E-02_JPRB, 0.420945E-02_JPRB, 0.387924E-02_JPRB, 0.357494E-02_JPRB, &
- & 0.329450E-02_JPRB, 0.303606E-02_JPRB, 0.279790E-02_JPRB, 0.257842E-02_JPRB, 0.237615E-02_JPRB /)  
-SELFREF(:, 7) = (/ &
- & 0.526981E-02_JPRB, 0.490687E-02_JPRB, 0.456893E-02_JPRB, 0.425426E-02_JPRB, 0.396126E-02_JPRB, &
- & 0.368844E-02_JPRB, 0.343441E-02_JPRB, 0.319788E-02_JPRB, 0.297764E-02_JPRB, 0.277256E-02_JPRB /)  
-SELFREF(:, 8) = (/ &
- & 0.575426E-02_JPRB, 0.531597E-02_JPRB, 0.491106E-02_JPRB, 0.453699E-02_JPRB, 0.419141E-02_JPRB, &
- & 0.387216E-02_JPRB, 0.357722E-02_JPRB, 0.330475E-02_JPRB, 0.305303E-02_JPRB, 0.282048E-02_JPRB /)  
-SELFREF(:, 9) = (/ &
- & 0.549881E-02_JPRB, 0.514328E-02_JPRB, 0.481074E-02_JPRB, 0.449970E-02_JPRB, 0.420877E-02_JPRB, &
- & 0.393665E-02_JPRB, 0.368213E-02_JPRB, 0.344406E-02_JPRB, 0.322138E-02_JPRB, 0.301310E-02_JPRB /)  
-SELFREF(:,10) = (/ &
- & 0.605357E-02_JPRB, 0.561246E-02_JPRB, 0.520349E-02_JPRB, 0.482432E-02_JPRB, 0.447278E-02_JPRB, &
- & 0.414686E-02_JPRB, 0.384469E-02_JPRB, 0.356453E-02_JPRB, 0.330479E-02_JPRB, 0.306398E-02_JPRB /)  
-SELFREF(:,11) = (/ &
- & 0.640504E-02_JPRB, 0.587858E-02_JPRB, 0.539540E-02_JPRB, 0.495194E-02_JPRB, 0.454492E-02_JPRB, &
- & 0.417136E-02_JPRB, 0.382850E-02_JPRB, 0.351382E-02_JPRB, 0.322501E-02_JPRB, 0.295993E-02_JPRB /)  
-SELFREF(:,12) = (/ &
- & 0.677803E-02_JPRB, 0.615625E-02_JPRB, 0.559152E-02_JPRB, 0.507859E-02_JPRB, 0.461271E-02_JPRB, &
- & 0.418957E-02_JPRB, 0.380524E-02_JPRB, 0.345617E-02_JPRB, 0.313913E-02_JPRB, 0.285116E-02_JPRB /)  
-SELFREF(:,13) = (/ &
- & 0.690347E-02_JPRB, 0.627003E-02_JPRB, 0.569472E-02_JPRB, 0.517219E-02_JPRB, 0.469761E-02_JPRB, &
- & 0.426658E-02_JPRB, 0.387509E-02_JPRB, 0.351953E-02_JPRB, 0.319659E-02_JPRB, 0.290328E-02_JPRB /)  
-SELFREF(:,14) = (/ &
- & 0.692680E-02_JPRB, 0.632795E-02_JPRB, 0.578087E-02_JPRB, 0.528109E-02_JPRB, 0.482452E-02_JPRB, &
- & 0.440742E-02_JPRB, 0.402638E-02_JPRB, 0.367828E-02_JPRB, 0.336028E-02_JPRB, 0.306977E-02_JPRB /)  
-SELFREF(:,15) = (/ &
- & 0.754894E-02_JPRB, 0.681481E-02_JPRB, 0.615207E-02_JPRB, 0.555378E-02_JPRB, 0.501367E-02_JPRB, &
- & 0.452609E-02_JPRB, 0.408593E-02_JPRB, 0.368857E-02_JPRB, 0.332986E-02_JPRB, 0.300603E-02_JPRB /)  
-SELFREF(:,16) = (/ &
- & 0.760689E-02_JPRB, 0.709755E-02_JPRB, 0.662232E-02_JPRB, 0.617891E-02_JPRB, 0.576519E-02_JPRB, &
- & 0.537917E-02_JPRB, 0.501899E-02_JPRB, 0.468293E-02_JPRB, 0.436938E-02_JPRB, 0.407682E-02_JPRB /)  
-
-IF (LHOOK) CALL DR_HOOK('SRTM_KGB16',1,ZHOOK_HANDLE)
-RETURN
-
-1000 CONTINUE
-CALL ABOR1("SRTM_KGB16:ERROR OPENING FILE RADSRTM")
-1001 CONTINUE
-CALL ABOR1("SRTM_KGB16:ERROR READING FILE RADSRTM")
-
-END SUBROUTINE SRTM_KGB16
diff --git a/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/mpl_abort_mod.F90 b/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/mpl_abort_mod.F90
new file mode 100644
index 0000000000000000000000000000000000000000..9c5f7e1a9e21332c1abd325fcc243e11945054f6
--- /dev/null
+++ b/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/mpl_abort_mod.F90
@@ -0,0 +1,68 @@
+! (C) Copyright 2014- ECMWF.
+!
+! 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.
+
+MODULE MPL_ABORT_MOD
+
+USE MPL_DATA_MODULE
+USE MPL_MPIF
+USE OML_MOD
+USE YOMABRT, ONLY : MAB_CNT
+USE SDL_MOD, ONLY : SDL_TRACEBACK, SDL_DISABORT
+#ifdef NAG
+USE F90_UNIX_IO, ONLY: FLUSH
+#endif
+USE PARKIND1  ,ONLY : JPIM     ,JPRB
+USE YOMHOOK  , ONLY : LHOOK
+
+PRIVATE
+PUBLIC MPL_ABORT
+
+CONTAINS 
+
+SUBROUTINE MPL_ABORT(CDMESSAGE)
+
+IMPLICIT NONE
+
+CHARACTER*(*),INTENT(IN),OPTIONAL :: CDMESSAGE
+INTEGER(KIND=JPIM) :: IRETURN_CODE,IERROR,ITID,INUMTH
+
+CHARACTER(LEN=80) :: CLTRBK
+
+ITID=OML_MY_THREAD()
+INUMTH=OML_MAX_THREADS()
+
+IF (MPL_UNIT > 0) CALL FLUSH(MPL_UNIT)
+!------Traceback from only one thread
+!$OMP CRITICAL (CRIT_MPL_ABORT)
+!$OMP FLUSH(MAB_CNT)
+IF (MAB_CNT == 0) THEN
+  WRITE(MPL_ERRUNIT,'(A,I6,A,I6)') 'MPL_ABORT: CALLED FROM PROCESSOR ',MPL_RANK,' THRD',ITID
+  IF(PRESENT(CDMESSAGE)) THEN
+    WRITE(MPL_ERRUNIT,*) 'MPL_ABORT: THRD',ITID,"  ",CDMESSAGE
+  ENDIF
+  MAB_CNT=1
+!$OMP FLUSH(MAB_CNT)
+
+#if defined(__INTEL_COMPILER)
+  CALL GET_ENVIRONMENT_VARIABLE("EC_LINUX_TRBK",CLTRBK)
+#else
+  CLTRBK='1'
+#endif
+  IF (LHOOK .AND. CLTRBK=='1') THEN
+     !CALL TABORT() ! should not hang and calls DrHook's error traceback processing (more robust nowadays)
+  ELSE
+     !CALL SDL_TRACEBACK(ITID) ! this will no longer hang with Intel compiler because intel tracebackqq is called, not linux traceback
+  ENDIF
+ENDIF
+!$OMP END CRITICAL (CRIT_MPL_ABORT)
+CALL SDL_DISABORT(MPL_COMM_OML(ITID))
+
+END SUBROUTINE MPL_ABORT
+
+END MODULE MPL_ABORT_MOD
diff --git a/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/sdl_mod.F90 b/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/sdl_mod.F90
new file mode 100644
index 0000000000000000000000000000000000000000..0b3fb317b8e696a092080564a2d8157300ae9bfd
--- /dev/null
+++ b/src/LIB/RAD/ecrad-1.4.0_mnh/drhook/drhook/sdl_mod.F90
@@ -0,0 +1,172 @@
+! (C) Copyright 2014- ECMWF.
+!
+! 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.
+
+MODULE SDL_MOD
+
+!    Interface between user applications and system-dependent intrinsic
+!    routines, provided by the computer vendors.
+
+!    All routines which wish to call these routines must contain:
+!    USE SDL_MOD
+
+! Author :
+! ------
+!   11-Apr-2005 R. El Khatib  *METEO-FRANCE*
+!   26-Apr-2006 S.T.Saarinen  Dr.Hook trace, calls to EC_RAISE, Intel/ifort traceback
+
+USE PARKIND1  ,ONLY : JPIM  ,JPRB
+!USE YOMHOOK   ,ONLY : LHOOK ,DR_HOOK
+USE YOMHOOK   ,ONLY : LHOOK 
+USE OML_MOD   ,ONLY : OML_MY_THREAD
+USE MPL_MPIF  ,ONLY : MPI_COMM_WORLD
+IMPLICIT NONE
+
+SAVE
+
+PRIVATE
+
+INTEGER, PARAMETER :: SIGABRT = 6 ! Hardcoded
+
+PUBLIC :: SDL_SRLABORT, SDL_DISABORT, SDL_TRACEBACK
+
+CONTAINS
+
+!-----------------------------------------------------------------------------
+SUBROUTINE SDL_TRACEBACK(KTID)
+
+! Purpose :
+! -------
+!   Traceback
+
+!   KTID : thread 
+
+INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: KTID
+INTEGER(KIND=JPIM) ITID, IPRINT_OPTION, ILEVEL
+CHARACTER(LEN=80) :: CLTRBK
+#ifdef NECSX
+CHARACTER(LEN=*), PARAMETER :: CLNECMSG = '*** Calling NEC traceback ***'
+#endif
+IF (PRESENT(KTID)) THEN
+  ITID = KTID
+ELSE
+  ITID = OML_MY_THREAD()
+ENDIF
+IF (LHOOK) THEN
+  IPRINT_OPTION = 2
+  ILEVEL = 0
+  !CALL C_DRHOOK_PRINT(0, ITID, IPRINT_OPTION, ILEVEL) ! from drhook.c
+ENDIF
+#if defined(VPP)
+  CALL ERRTRA
+  IF (PRESENT(KTID)) CALL SLEEP(28)
+#elif defined(RS6K)
+  WRITE(0,*)'SDL_TRACEBACK: Calling XL_TRBK, THRD = ',ITID
+  CALL XL__TRBK()
+  WRITE(0,*)'SDL_TRACEBACK: Done XL_TRBK, THRD = ',ITID
+#elif defined(__INTEL_COMPILER)
+
+  CALL GET_ENVIRONMENT_VARIABLE("EC_LINUX_TRBK",CLTRBK)
+  IF (CLTRBK=='1') THEN
+    WRITE(0,*)'SDL_TRACEBACK: Calling LINUX_TRBK, THRD = ',ITID
+    !CALL LINUX_TRBK() ! See ifsaux/utilities/linuxtrbk.c
+    WRITE(0,*)'SDL_TRACEBACK: Done LINUX_TRBK, THRD = ',ITID
+  ELSE
+    WRITE(0,*)'SDL_TRACEBACK: Calling INTEL_TRBK, THRD = ',ITID
+    CALL INTEL_TRBK() ! See ifsaux/utilities/gentrbk.F90
+    WRITE(0,*)'SDL_TRACEBACK: Done INTEL_TRBK, THRD = ',ITID
+  ENDIF
+#elif defined(__NEC__)
+  ! A traceback using gdb-debugger, if available AND 
+  ! activated via 'export GDBDEBUGGER=1'
+  WRITE(0,*)'SDL_TRACEBACK: Calling GDB_TRBK, THRD = ',ITID
+  CALL GDB_TRBK() ! See ifsaux/utilities/linuxtrbk.c
+  WRITE(0,*)'SDL_TRACEBACK: Done GDB_TRBK, THRD = ',ITID
+#elif defined(LINUX) || defined(SUN4)
+  WRITE(0,*)'SDL_TRACEBACK: Calling LINUX_TRBK, THRD = ',ITID
+  !CALL LINUX_TRBK() ! See ifsaux/utilities/linuxtrbk.c
+  WRITE(0,*)'SDL_TRACEBACK: Done LINUX_TRBK, THRD = ',ITID
+#elif defined(NECSX)
+! MESPUT writes out onto unit 6
+  WRITE(6,*)'SDL_TRACEBACK: Calling NEC/MESPUT, THRD = ',ITID
+  CALL NECSX_TRBK(CLNECMSG)
+  CALL FLUSH(6)
+  WRITE(6,*)'SDL_TRACEBACK: Done NEC/MESPUT, THRD = ',ITID
+#else
+  WRITE(0,*)'SDL_TRACEBACK: No proper traceback implemented.'
+  ! A traceback using dbx-debugger, if available AND 
+  ! activated via 'export DBXDEBUGGER=1'
+  WRITE(0,*)'SDL_TRACEBACK: Calling DBX_TRBK, THRD = ',ITID
+  CALL DBX_TRBK() ! See ifsaux/utilities/linuxtrbk.c
+  WRITE(0,*)'SDL_TRACEBACK: Done DBX_TRBK, THRD = ',ITID
+  ! A traceback using gdb-debugger, if available AND 
+  ! activated via 'export GDBDEBUGGER=1'
+  WRITE(0,*)'SDL_TRACEBACK: Calling GDB_TRBK, THRD = ',ITID
+  CALL GDB_TRBK() ! See ifsaux/utilities/linuxtrbk.c
+  WRITE(0,*)'SDL_TRACEBACK: Done GDB_TRBK, THRD = ',ITID
+#endif
+
+END SUBROUTINE SDL_TRACEBACK
+!-----------------------------------------------------------------------------
+SUBROUTINE SDL_SRLABORT
+
+! Purpose :
+! -------
+!   To abort in serial environment
+
+!CALL EC_RAISE(SIGABRT)
+STOP 'SDL_SRLABORT'
+
+END SUBROUTINE SDL_SRLABORT
+!-----------------------------------------------------------------------------
+SUBROUTINE SDL_DISABORT(KCOMM)
+
+! Purpose :
+! -------
+!   To abort in distributed environment
+
+!   KCOMM : communicator
+
+INTEGER(KIND=JPIM), INTENT(IN) :: KCOMM
+
+INTEGER(KIND=JPIM) :: IRETURN_CODE,IERROR
+CHARACTER(LEN=80) :: CLJOBID
+CHARACTER(LEN=80) :: CLTRBK
+
+#ifdef VPP
+
+CALL VPP_ABORT()
+
+#else
+#if defined(__INTEL_COMPILER)
+! Intel compiler seems to hang in MPI_ABORT -- on all but the failing task(s)
+! ... when linux trbk is used. REK
+CALL GET_ENVIRONMENT_VARIABLE("EC_LINUX_TRBK",CLTRBK)
+IF (CLTRBK=='1') THEN
+IF (LHOOK) THEN
+  CALL GET_ENVIRONMENT_VARIABLE("SLURM_JOBID",CLJOBID)
+  IF (CLJOBID /= ' ') THEN
+    CALL SYSTEM("set -x; sleep 10; scancel --signal=TERM "//trim(CLJOBID)//" &")
+  ENDIF
+ENDIF
+ENDIF
+#endif
+
+IRETURN_CODE=SIGABRT
+!CALL MPI_ABORT(KCOMM,IRETURN_CODE,IERROR)
+CALL MPI_ABORT(MPI_COMM_WORLD,IRETURN_CODE,IERROR) ! Tracked by the supervisor/process-damager (manager) -- KCOMM /= MPI_COMM_WORLD may hang as sub-communicator
+
+#endif
+
+!CALL EC_RAISE(SIGABRT) ! In case ever ends up here
+STOP 'SDL_DISABORT'
+
+END SUBROUTINE SDL_DISABORT
+!-----------------------------------------------------------------------------
+
+END MODULE SDL_MOD
diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90
index 14a65ad60ebc6668b4a38851dc32ab1b06259041..522ac749e2f8ac6960198d55ea56ff653a6e76e3 100644
--- a/src/MNH/forcing.f90
+++ b/src/MNH/forcing.f90
@@ -163,6 +163,7 @@ use modd_budget,     only: lbudget_u,  lbudget_v,  lbudget_w,  lbudget_th, lbudg
 USE MODD_CONF
 USE MODD_CST
 USE MODD_DYN
+USE MODD_DYN_n, ONLY : LOCEAN
 USE MODD_FRC
 USE MODD_LUNIT
 USE MODD_PARAMETERS
@@ -737,11 +738,13 @@ END IF
 !
 !*       4.2.1    integration of the tendency forcing for uv
 !
-IF ( LTEND_UV_FRC ) THEN
- PRUS(:,:,:) = PRUS(:,:,:) +  MXM(PRHODJ) * ZTENDUF(:,:,:)
- PRVS(:,:,:) = PRVS(:,:,:) +  MYM(PRHODJ) * ZTENDVF(:,:,:)
+IF (.NOT. LOCEAN) THEN
+ IF ( LTEND_UV_FRC ) THEN
+  PRUS(:,:,:) = PRUS(:,:,:) +  MXM(PRHODJ) * ZTENDUF(:,:,:)
+  PRVS(:,:,:) = PRVS(:,:,:) +  MYM(PRHODJ) * ZTENDVF(:,:,:)
+ END IF
 END IF
-!
+ !
 !*       4.3    integration of the thermal and geostrophic wind
 !
 IF( LCORIO ) THEN
diff --git a/src/MNH/ibm_detect.f90 b/src/MNH/ibm_detect.f90
index b88a80445aad736413f45e64431eae8f3a3c3db1..3919727cc4297cc1ad3f7ebabbbe1b349333f47d 100644
--- a/src/MNH/ibm_detect.f90
+++ b/src/MNH/ibm_detect.f90
@@ -145,6 +145,7 @@ SUBROUTINE IBM_DETECT(PPHI)
   ALLOCATE(I_INDE_GHOST(IIB:IIE,IJB:IJE,IKB:IKE,4))
   ALLOCATE(ZIBM_TESTING(IIU,IJU,IKU,4))
   ALLOCATE(Z_PHI(8),ZPROD(6),ZVECT(3),Z_IMG(8,3),Z_GHO(8,3),I_INDE_TEMPO(3),I_INDE_TEMPO2(3))
+  ALLOCATE(Z_NORM_GHOST(IIU,IJU,IKU,3),Z_NORM_TEMPO(IIU,IJU,IKU,3))
   !
   !------------------------------------------------------------------------------
   !
@@ -464,7 +465,7 @@ SUBROUTINE IBM_DETECT(PPHI)
   ALLOCATE(XIBM_IMAGE_P(I_DIME_GHOSTP,I_NUMB_LAYERP,1,3,3))
   XIBM_IMAGE_P(:,:,:,:,:) = 0.
   !
-  ALLOCATE(Z_NORM_GHOST(IIU,IJU,IKU,3),Z_NORM_TEMPO(IIU,IJU,IKU,3),Z_NORM_TEMP1(IIU,IJU,IKU,4),Z_NORM_TEMP2(IIU,IJU,IKU), & 
+  ALLOCATE(Z_NORM_TEMP1(IIU,IJU,IKU,4),Z_NORM_TEMP2(IIU,IJU,IKU), & 
        Z_NORM_TEMP3(IIU,IJU,IKU))
   ALLOCATE(ZPHI(IIU,IJU,IKU,4))
   ZPHI = 0.
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 2d81ad2b5d816dc3b1c07af42069ece9976fad73..1f51553ec73a01ae39a89c179a4d6df80acad088 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -13,8 +13,8 @@ INTERFACE
 !
 USE MODD_IO, ONLY: TFILEDATA
 !
-INTEGER,          INTENT(IN)   :: KMI       ! Model Index
-TYPE(TFILEDATA),  INTENT(IN)   :: TPINIFILE ! Initial file
+INTEGER,                  INTENT(IN)   :: KMI       ! Model Index
+TYPE(TFILEDATA), POINTER, INTENT(IN)   :: TPINIFILE ! Initial file
 !
 END SUBROUTINE INI_MODEL_n
 !
@@ -494,8 +494,8 @@ IMPLICIT NONE
 !*       0.1   declarations of arguments
 !
 !
-INTEGER,          INTENT(IN)   :: KMI       ! Model Index
-TYPE(TFILEDATA),  INTENT(IN)   :: TPINIFILE ! Initial file
+INTEGER,                  INTENT(IN)   :: KMI       ! Model Index
+TYPE(TFILEDATA), POINTER, INTENT(IN)   :: TPINIFILE ! Initial file
 !
 !*       0.2   declarations of local variables
 !
@@ -604,18 +604,19 @@ ILUOUT = TLUOUT%NLU
 !             --------------
 !*       2.1  Read number of forcing fields
 !
-IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings.
+IF (.NOT. LOCEAN) THEN
+ IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings.
   CALL IO_Field_read(TPINIFILE,'FRC',NFRC,IRESP)
   IF ( (IRESP /= 0) .OR. (NFRC <=0) ) THEN
     WRITE(ILUOUT,'(A/A)') &
      "INI_MODEL_n ERROR: you want to read forcing variables from FMfile", &
      "                   but no fields have been found by IO_Field_read"
-!callabortstop
+ !callabortstop
     CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
   END IF
-END IF
-!
-! Modif PP for time evolving adv forcing
+ END IF
+ !
+ ! Modif PP for time evolving adv forcing
   IF ( L2D_ADV_FRC ) THEN ! Retrieve the number of time-dependent forcings.
     WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER ADV_FORCING"
     CALL IO_Field_read(TPINIFILE,'NADVFRC1',NADVFRC,IRESP)
@@ -627,9 +628,9 @@ END IF
       CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
     END IF
     WRITE(ILUOUT,*) 'NADVFRC = ', NADVFRC
-END IF
-!
-IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings.
+ END IF
+ !
+ IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings.
     WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER REL_FORCING"
     CALL IO_Field_read(TPINIFILE,'NRELFRC1',NRELFRC,IRESP)
     IF ( (IRESP /= 0) .OR. (NRELFRC <=0) ) THEN
@@ -640,6 +641,7 @@ IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings.
       CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
     END IF
     WRITE(ILUOUT,*) 'NRELFRC = ', NRELFRC
+ END IF
 END IF
 !*       2.2  Checks the position of vertical absorbing layer
 !
@@ -2647,7 +2649,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ')) THEN
     ENDIF
   ELSE
   ! case after a spawning
-    CINIFILEPGD = TPINIFILE%CNAME
+    TINIFILEPGD => TPINIFILE
   END IF
   !
   CALL GOTO_SURFEX(KMI)
@@ -2978,16 +2980,20 @@ END IF
 !
 !*     33.  Auto-coupling Atmos-Ocean LES NH
 !
-IF (LCOUPLES) THEN
- ALLOCATE(XSSUFL_C(IIU,IJU,1)); XSSUFL_C=0.0
- ALLOCATE(XSSVFL_C(IIU,IJU,1)); XSSVFL_C=0.0
- ALLOCATE(XSSTFL_C(IIU,IJU,1)); XSSTFL_C=0.0
- ALLOCATE(XSSRFL_C(IIU,IJU,1)); XSSRFL_C=0.
-ELSE
- ALLOCATE(XSSUFL_C(0,0,0))
- ALLOCATE(XSSVFL_C(0,0,0))
- ALLOCATE(XSSTFL_C(0,0,0))
- ALLOCATE(XSSRFL_C(0,0,0))
+! Atmos Flux at interface
+! Allocate to a non-zero size only if LCOUPLES=T. It must be allocated only once (=>IF KMI==1)
+IF ( KMI == 1 ) THEN
+  IF ( LCOUPLES ) THEN
+    ALLOCATE( XSSUFL(IIU,IJU) ); XSSUFL=0.0
+    ALLOCATE( XSSVFL(IIU,IJU) ); XSSVFL=0.0
+    ALLOCATE( XSSTFL(IIU,IJU) ); XSSTFL=0.0
+    ALLOCATE( XSSRFL(IIU,IJU) ); XSSRFL=0.0
+  ELSE
+    ALLOCATE( XSSVFL(0,0) )
+    ALLOCATE( XSSTFL(0,0) )
+    ALLOCATE( XSSRFL(0,0) )
+    ALLOCATE( XSSUFL(0,0) )
+  END IF
 END IF
 !
 END SUBROUTINE INI_MODEL_n
diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90
index 86b86a3e6e3a0b572e2686f371365d227c0713fb..7f1de616e99774a64fa58d65f0eca19adb8811d6 100644
--- a/src/MNH/lesn.f90
+++ b/src/MNH/lesn.f90
@@ -3277,7 +3277,7 @@ ELSE IF (CBL_HEIGHT_DEF=='FRI') THEN
                    +( XLES_SUBGRID_WV (:,NLES_CURRENT_TCOUNT,1)      &
                      +XLES_RESOLVED_WV(:,NLES_CURRENT_TCOUNT,1))**2 )
   ZFRIC_SURF = XLES_USTAR(NLES_CURRENT_TCOUNT)**2
-  CALL BL_DEPTH_DIAG(YLDIMPHYEX,ZFRIC_SURF, XLES_ZS, &
+  CALL BL_DEPTH_DIAG(YLDIMPHYEX,SIZE(ZFRIC_LES),ZFRIC_SURF, XLES_ZS, &
                      ZFRIC_LES,  XLES_Z,  &
                      XFTOP_O_FSURF,XLES_BL_HEIGHT(NLES_CURRENT_TCOUNT))
 END IF
diff --git a/src/MNH/mean_field.f90 b/src/MNH/mean_field.f90
index 573046c23188f3d2f7edd9804864543ceebb933b..a8a5cd98c508dc08f14cfb3f405ae686c3d5a230 100644
--- a/src/MNH/mean_field.f90
+++ b/src/MNH/mean_field.f90
@@ -67,6 +67,8 @@ USE MODD_CST
 USE MODD_PASPOL
 USE MODE_THERMO
 USE MODI_SHUMAN
+! To play with MPI
+USE MODD_ARGSLIST_ll, ONLY: LIST_ll
 !
 ! * EOL
 USE MODD_EOL_MAIN, ONLY: LMAIN_EOL, CMETH_EOL, NMODEL_EOL
@@ -77,6 +79,8 @@ USE MODD_EOL_ADR, ONLY: XFAERO_BLEQ_RA_GLB, XFAERO_BLEQ_RA_SUM
 USE MODD_EOL_ADR, ONLY: XAOA_BLEQ_GLB, XAOA_BLEQ_SUM
 USE MODD_EOL_ALM, ONLY: XFAERO_RE_SUM, XFAERO_RE_GLB
 !
+USE MODI_SHUMAN,  ONLY: MXF, MYF, MZF
+!
 USE MODE_MODELN_HANDLER
 USE MODI_UPDATE_WELFORD
 !
@@ -97,7 +101,6 @@ INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
 INTEGER           :: JI,JJ,JK   ! Loop indexes
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZUMEAN_OLD
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWMEAN_OLD
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTHMEAN_OLD
 !
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZRT
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZQSAT_W
@@ -115,6 +118,9 @@ REAL, DIMENSION(:,:),   ALLOCATABLE :: ZRH_P_MAXCOL
 !
 INTEGER :: IMI !Current model index
 !
+! For communication
+TYPE(LIST_ll), POINTER :: TZFIELDS_Cov_ll  ! Field list of Wind for exchange beofre covariances
+INTEGER                :: IINFO            ! Info integer
 !
 !-----------------------------------------------------------------------
 !
@@ -228,10 +234,8 @@ END IF
    IF (LCOV_FIELD) THEN
       ALLOCATE( ZUMEAN_OLD (IIU, IJU, IKU) )
       ALLOCATE( ZWMEAN_OLD (IIU, IJU, IKU) )
-      ALLOCATE( ZTHMEAN_OLD(IIU, IJU, IKU) )
       ZUMEAN_OLD (:,:,:) = XUM_MEAN (:,:,:)
       ZWMEAN_OLD (:,:,:) = XWM_MEAN (:,:,:)
-      ZTHMEAN_OLD(:,:,:) = XTHM_MEAN(:,:,:)
    END IF
 !  Welford method for variables whom we compute variances
 !
@@ -244,12 +248,24 @@ END IF
 !
 !  Welford method for covariances
 !
-   IF (LCOV_FIELD) THEN
-     XUV_MEAN  = XUV_MEAN + (PUT-ZUMEAN_OLD)*(PVT-XVM_MEAN)
-     XUW_MEAN  = XUW_MEAN + (PUT-ZUMEAN_OLD)*(PWT-XWM_MEAN)
-     XVW_MEAN  = XVW_MEAN + (PWT-ZWMEAN_OLD)*(PVT-XVM_MEAN)
-     XWTH_MEAN = XVW_MEAN + (PWT-ZWMEAN_OLD)*(PTHT-XTHM_MEAN)
-     DEALLOCATE( ZUMEAN_OLD, ZWMEAN_OLD, ZTHMEAN_OLD )
+   IF (LCOV_FIELD) THEN 
+! 
+    NULLIFY(TZFIELDS_Cov_ll)
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,PUT,        'MEAN_FIELD::PUT')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,PWT,        'MEAN_FIELD::PWT')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,PVT,        'MEAN_FIELD::PVT')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,ZUMEAN_OLD, 'MEAN_FIELD::ZUMEAN_OLD')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,ZWMEAN_OLD, 'MEAN_FIELD::ZWMEAN_OLD')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,XVM_MEAN,   'MEAN_FIELD::XVM_MEAN')
+    CALL ADD3DFIELD_ll( TZFIELDS_Cov_ll,XWM_MEAN,   'MEAN_FIELD::XWM_MEAN')
+    CALL UPDATE_HALO_ll(TZFIELDS_Cov_ll,IINFO)
+    CALL CLEANLIST_ll(  TZFIELDS_Cov_ll)
+!
+    XUV_MEAN  = XUV_MEAN  + (MXF(PUT)-MXF(ZUMEAN_OLD))*(MYF(PVT)-MYF(XVM_MEAN))
+    XUW_MEAN  = XUW_MEAN  + (MXF(PUT)-MXF(ZUMEAN_OLD))*(MZF(PWT)-MZF(XWM_MEAN))
+    XVW_MEAN  = XVW_MEAN  + (MZF(PWT)-MZF(ZWMEAN_OLD))*(MYF(PVT)-MYF(XVM_MEAN))
+    XWTH_MEAN = XWTH_MEAN + (MZF(PWT)-MZF(ZWMEAN_OLD))*(PTHT-XTHM_MEAN)
+    DEALLOCATE( ZUMEAN_OLD, ZWMEAN_OLD )
    END IF
 !
 !-----------------------------------------------------------------------
diff --git a/src/MNH/modd_oceanh.f90 b/src/MNH/modd_oceanh.f90
index e9936173ec35b1d57c9884cd19cd98774c9d0334..0716105b6ca32e75aad10eefc2768504d0e9dea2 100644
--- a/src/MNH/modd_oceanh.f90
+++ b/src/MNH/modd_oceanh.f90
@@ -40,8 +40,7 @@ IMPLICIT NONE
 INTEGER,          SAVE                  :: NFRCLT     ! number of sea surface forcings PLUS 1
 INTEGER,          SAVE                  :: NINFRT     ! Interval in second between forcings
 TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TFRCLT ! date/time of sea surface forcings
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE ::  XSSUFL,XSSVFL,XSSTFL,XSSOLA ! Time evol Flux U V T Solar_Rad at sea surface
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL_XY,XSSVFL_XY,XSSTFL_XY! XY flux shape
+REAL, SAVE, DIMENSION(:,:), ALLOCATABLE ::  XSSUFL,XSSVFL,XSSTFL,XSSRFL,XSSOLA ! Time evol Flux U,V,T,SW at sea surface
 REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XSSUFL_T,XSSVFL_T,XSSTFL_T,XSSOLA_T ! given time forcing fluxes
 !
 END MODULE MODD_OCEANH
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 209b07bd4db2a30db80b55888af34ac5f6b2f035..e988f0afef109a750eee64c3aefa107d2fad0e12 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -2355,7 +2355,7 @@ IF (OEXIT) THEN
   END IF
   !
   CALL IO_File_close(TINIFILE)
-  IF (CSURF=="EXTE") CALL IO_File_close(TINIFILEPGD)
+  IF ( CSURF == "EXTE" .AND. ASSOCIATED( TINIFILEPGD ) ) CALL IO_File_close( TINIFILEPGD )
 !
 !*       28.1   print statistics!
 !
diff --git a/src/MNH/nhoa_coupln.f90 b/src/MNH/nhoa_coupln.f90
index 072dfbeb3ca7aa64c133a8d0b2855e4a3d1fdea8..b156d2a4ccbf8f63a16220bf99a8ec96ec48cbbc 100644
--- a/src/MNH/nhoa_coupln.f90
+++ b/src/MNH/nhoa_coupln.f90
@@ -60,13 +60,15 @@ USE MODE_MODELN_HANDLER
 USE MODD_PARAMETERS
 USE MODD_NESTING
 USE MODD_CST
+USE MODD_REF, ONLY: XRHODREFZ
 USE MODD_REF_n        ! modules relative to the outer model $n
 USE MODD_FIELD_n
+USE MODD_METRICS_n
 USE MODD_CONF
 USE MODD_PARAM_n
 USE MODD_TURB_n
 USE MODD_DYN_n, ONLY : LOCEAN
-USE MODD_REF, ONLY: LCOUPLES
+USE MODD_OCEANH 
 !
 IMPLICIT NONE
 !
@@ -80,7 +82,7 @@ INTEGER,          INTENT(IN)    :: KKU      !
 !
 !*       0.2   declarations of local variables
 !
-INTEGER                :: IIB,IIE,IJB,IJE,IIU,IJU
+INTEGER                :: IIU,IJU
 INTEGER :: IKE
 INTEGER                :: ILBX,ILBY,ILBX2,ILBY2
 INTEGER,          INTENT(IN)    :: KTCOUNT  !  Temporal loop COUNTer
@@ -93,7 +95,8 @@ INTEGER :: IINFO_ll, IDIMX, IDIMY
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZCOUPUA,ZCOUPVA,ZCOUPTA
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZCOUPUO,ZCOUPVO,ZCOUPTO
 !surf flux  local work space
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZCOUPTFL,ZCOUPUFL,ZCOUPVFL
+REAL, DIMENSION(:,:), ALLOCATABLE :: ZCOUPTFL,ZCOUPUFL,ZCOUPVFL,ZCOUPQFL
+REAL                              :: ZCDN ! CONSTANT DRAG COEFF
 CHARACTER(LEN=4)                    :: ZINIT_TYPE
 !
 !---Coupled OA MesoNH----------------------------------------------------------------------------
@@ -101,11 +104,7 @@ CHARACTER(LEN=4)                    :: ZINIT_TYPE
 !            --------------
 IIU = SIZE(XRHODJ,1)
 IJU = SIZE(XRHODJ,2)
-
-! allocate flux local array
-ALLOCATE(ZCOUPTFL(IIU,IJU))
-ALLOCATE(ZCOUPUFL(IIU,IJU))
-ALLOCATE(ZCOUPVFL(IIU,IJU))
+ZCDN = 1.2E-3
 ! allocate sfc variable local array
 ALLOCATE(ZCOUPUA(IIU,IJU))
 ALLOCATE(ZCOUPVA(IIU,IJU))
@@ -113,7 +112,11 @@ ALLOCATE(ZCOUPTA(IIU,IJU))
 ALLOCATE(ZCOUPUO(IIU,IJU))
 ALLOCATE(ZCOUPVO(IIU,IJU))
 ALLOCATE(ZCOUPTO(IIU,IJU))
-! values in ocean sfc
+ALLOCATE(ZCOUPTFL(IIU,IJU))
+ALLOCATE(ZCOUPUFL(IIU,IJU))
+ALLOCATE(ZCOUPVFL(IIU,IJU))
+ALLOCATE(ZCOUPQFL(IIU,IJU))
+! loading values in ocean sfc
 IKE=KKU-JPVEXT
 ZCOUPUO(:,:)= XUT(:,:,IKE)
 ZCOUPVO(:,:)= XVT(:,:,IKE)
@@ -121,37 +124,31 @@ ZCOUPTO(:,:)= XTHT(:,:,IKE)
 !
 ! we are going to the atmos model i.e. Model 1
 CALL GOTO_MODEL(KDAD)
-IIB=1
-IIE=IIU
-IJB=1
-IJE=IJU
-!
 ! compute gradient between ocean & atmosphere
 ZCOUPUA(:,:)= XUT(:,:,2)-ZCOUPUO(:,:)
 ZCOUPVA(:,:)= XVT(:,:,2)-ZCOUPVO(:,:)
 ZCOUPTA(:,:)= XTHT(:,:,2)-ZCOUPTO(:,:)
-!
-! sfc flux computation  * RHO AIR !!!!
-! flux vu atmosp
-!
-ZCOUPTFL(:,:) = -1.2*1.E-3* SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPTA(:,:)
-ZCOUPUFL(:,:) = -1.2*1.E-3* SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPUA(:,:)
-ZCOUPVFL(:,:) = -1.2*1.E-3* SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPVA(:,:)
-!
-XSSUFL_C(:,:,1)= ZCOUPUFL(:,:)
-XSSVFL_C(:,:,1)= ZCOUPVFL(:,:)
-XSSTFL_C(:,:,1)= ZCOUPTFL(:,:)
-!
-!
-! We are going back in the ocean model  
-! same sign & unit at the top of ocean model and the bottom of atmospheric model
+!!!!!!!!!!!!
+!  Simple neutral bulk flux with Z0 fixed
+ZCOUPTFL(:,:) = -ZCDN*SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPTA(:,:)&
+                *XCPD*XRHODREFZ(2)        ! in W/M2 (as WASP)              
+ZCOUPUFL(:,:) = -ZCDN*XRHODREFZ(2)* SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPUA(:,:)
+ZCOUPVFL(:,:) = -ZCDN*XRHODREFZ(2)* SQRT(ZCOUPUA(:,:)**2 +ZCOUPVA(:,:)**2) * ZCOUPVA(:,:)
+!  EVAP-PR TO BE ADDED HERE 
+ZCOUPQFL(:,:)= 0.
+! keep in W/M2, N/m2, ..
+XSSUFL= ZCOUPUFL
+XSSVFL= ZCOUPVFL
+XSSTFL= ZCOUPTFL
+XSSRFL= ZCOUPQFL
+!
+!  back in the ocean model  
+!oce flux are directly computed in phys_param routine
+! same sign & unit fluxes at top of ocean model & bottom of atmospheric model
 !  rho_atmos * (w'u')_atmos = rho_ocean * (u'w')_ocean
-!  rho_atmos *Cp_atmos* (u'w')_atmos = rho_ocean * CP_ocean * (u'w')_ocean
+!  rho_atmos *Cp_atmos* (T'w')_atmos = rho_ocean * CP_ocean * (T'w')_ocean
 !
 CALL GOTO_MODEL(KMI)
-XSSUFL_C(:,:,1)= ZCOUPUFL(:,:)/XRH00OCEAN
-XSSVFL_C(:,:,1)= ZCOUPVFL(:,:)/XRH00OCEAN
-XSSTFL_C(:,:,1)= ZCOUPTFL(:,:)*1004./(3900.*XRH00OCEAN)
 DEALLOCATE(ZCOUPUA,ZCOUPVA,ZCOUPUO,ZCOUPVO,ZCOUPTA,ZCOUPTO)
 DEALLOCATE(ZCOUPTFL)
 !
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index edd731e427f3ff0b3b502f8ef82bfb74052ade40..ec037233cbe8673a3ba5815ece7f3839400a3e0b 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -317,7 +317,7 @@ USE MODD_PRECIP_n
 use modd_precision,        only: MNHTIME
 USE MODD_RADIATIONS_n
 USE MODD_RAIN_ICE_DESCR_n, ONLY: XRTMIN
-USE MODD_REF,              ONLY: LCOUPLES
+USE MODD_REF,              ONLY: LCOUPLES,XRHODREFZ
 USE MODD_REF_n
 USE MODD_SALT
 USE MODD_SHADOWS_n
@@ -865,24 +865,32 @@ END IF
 ! Sfc turbulent fluxes & Radiative tendency due to SW penetrating ocean
 ! 
 IF (LCOUPLES) THEN
-ZSFU(:,:)= XSSUFL_C(:,:,1)
-ZSFV(:,:)= XSSVFL_C(:,:,1)
-ZSFTH(:,:)= XSSTFL_C(:,:,1)
-ZSFRV(:,:)=XSSRFL_C(:,:,1)
-ELSE 
-IF (LOCEAN) THEN
-!
+! Flux computed in NHOA/WASP and are given in W/M2
+! convert in SI as in MESO-NH & for Ocean & Atmos model
+ IF (LOCEAN) THEN
+  ZSFU=  XSSUFL/CST%XRH00OCEAN
+  ZSFV=  XSSVFL/CST%XRH00OCEAN
+  ZSFTH= XSSTFL/(CST%XCL*CST%XRH00OCEAN)
+!to do: to add factor s/(1-s)
+  ZSFRV=-XSSRFL/CST%XRH00OCEAN
+ ELSE
+  ZSFU= XSSUFL/XRHODREFZ(2)
+  ZSFV= XSSVFL/XRHODREFZ(2)
+  ZSFTH=XSSTFL/(XCPD*XRHODREFZ(2))
+  ZSFRV=XSSRFL/(CST%XLVTT*XRHODREFZ(2))
+ ENDIF 
+ELSE ! no coupled 
+ IF (LOCEAN) THEN
   ALLOCATE( ZIZOCE(IKU)); ZIZOCE(:)=0. 
   ALLOCATE( ZPROSOL1(IKU))
   ALLOCATE( ZPROSOL2(IKU))
-  ALLOCATE(XSSOLA(IIU,IJU))
   ! Time interpolation
   JSW     = INT(TDTCUR%xtime/REAL(NINFRT))
   ZSWA    = TDTCUR%xtime/REAL(NINFRT)-REAL(JSW)
   ZSFRV = 0.
   ZSFTH  = (XSSTFL_T(JSW+1)*(1.-ZSWA)+XSSTFL_T(JSW+2)*ZSWA) 
-  ZSFU = (XSSUFL_T(JSW+1)*(1.-ZSWA)+XSSUFL_T(JSW+2)*ZSWA)
-  ZSFV = (XSSVFL_T(JSW+1)*(1.-ZSWA)+XSSVFL_T(JSW+2)*ZSWA)
+  ZSFU   = (XSSUFL_T(JSW+1)*(1.-ZSWA)+XSSUFL_T(JSW+2)*ZSWA)
+  ZSFV   = (XSSVFL_T(JSW+1)*(1.-ZSWA)+XSSVFL_T(JSW+2)*ZSWA)
 !
   ZIZOCE(IKU)   = XSSOLA_T(JSW+1)*(1.-ZSWA)+XSSOLA_T(JSW+2)*ZSWA
   ZPROSOL1(IKU) = CST%XROC*ZIZOCE(IKU)
@@ -896,12 +904,11 @@ IF (LOCEAN) THEN
     XRTHS(:,:,JKM) = XRTHS(:,:,JKM) + XRHODJ(:,:,JKM)*ZIZOCE(JKM)
   END DO
   if ( TBUCONF%LBUDGET_th ) call Budget_store_end ( TBUDGETS(NBUDGET_TH), 'OCEAN', xrths(:, :, :) )
-  DEALLOCATE (XSSOLA)
   DEALLOCATE( ZIZOCE) 
   DEALLOCATE (ZPROSOL1)
   DEALLOCATE (ZPROSOL2)
-END IF! LOCEAN NO LCOUPLES
-END IF!NO LCOUPLES
+END IF! TEST LOCEAN NO LCOUPLES
+END IF! TEST LCOUPLES
 !
 !
 CALL SECOND_MNH2(ZTIME2)
@@ -1324,7 +1331,7 @@ ELSE ! case no SURFEX (CSURF logical)
   ZCD_ROOF   = 0.
   ZSFRV_WALL = 0.
   ZSFRV_ROOF = 0.
-  IF (.NOT.LOCEAN) THEN
+  IF (.NOT.(LOCEAN.OR.LCOUPLES))THEN
     ZSFTH    = 0.
     ZSFRV    = 0.
     ZSFSV    = 0.
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index 00593e5415708626fd57a918fba957f323943fd7..bd4a70fcf039c3bb9d9016621b09ff65afecb5c0 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -1324,7 +1324,7 @@ IF (LOCEAN .AND. (.NOT.LCOUPLES) .AND. (KOCEMI==1)) THEN
     CLONGNAME  = 'SSOLA',                             &
     CUNITS     = 'kg m3 K m s-1',                     &
     CDIR       = '--',                                &
-    CCOMMENT   = 'sfc solar flux to force ocean LES', &
+    CCOMMENT   = 'sfc solar flux at sfc to force ocean LES', &
     NGRID      = 0,                                   &
     NTYPE      = TYPEREAL,                            &
     NDIMS      = 1,                                   &
diff --git a/src/MNH/set_rsou.f90 b/src/MNH/set_rsou.f90
index 4526251833db633bf65d0808d8f86cf6ad973943..e9a4dc78fe7ce1bdc111db69603d1dce3b4f90e7 100644
--- a/src/MNH/set_rsou.f90
+++ b/src/MNH/set_rsou.f90
@@ -272,6 +272,7 @@ USE MODD_NETCDF
 USE MODD_OCEANH
 USE MODD_PARAMETERS, ONLY: JPHEXT
 USE MODD_TYPE_DATE
+USE MODD_TIME_n,     ONLY : TDTCUR
 !
 USE MODE_ll
 USE MODE_MSG
@@ -400,7 +401,8 @@ REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_DEPTH
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_LE,ZOC_H
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_SW_DOWN,ZOC_SW_UP,ZOC_LW_DOWN,ZOC_LW_UP
 REAL, DIMENSION(:),     ALLOCATABLE :: ZOC_TAUX,ZOC_TAUY
-
+!
+REAL  :: ZJZTIME ! TIME(HOUR) READ in PRE_IDEA1.NAM
 !--------------------------------------------------------------------------------
 !
 !*	 1.     PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL
@@ -565,9 +567,10 @@ SELECT CASE(YKIND)
       TFRCLT(JKT)= ZFRCLT(JKT)
       XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
       XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      ! working in SI
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
+                 
+    ! working in SI
+      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL*XRH00OCEAN)
+      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL*XRH00OCEAN)
     END DO   
     DEALLOCATE(ZFRCLT)
     DEALLOCATE(ZSSUFL_T)
@@ -579,11 +582,12 @@ SELECT CASE(YKIND)
 ! 2.0.2  Ocean standard initialize from netcdf files
 !        U,V,T,S at Z levels + Forcings at model TOP (sea surface) 
 !--------------------------------------------------------------------------------   
-!
+!  WRITTEN TO READ NETCDF file for a DWL case of DYNAMO-CINDY
   CASE ('STANDOCE')
-!   
     XP00=XP00OCEAN
-    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top domain
+! HOUR OF FIRST FORCING on 14/11 TO USE AS READ in PRE_IDEA1.NAM
+    ZJZTIME= INT(TDTCUR%xtime)
+    READ(ILUPRE,*) ZPTOP           ! P_atmosphere at sfc =P top ocean domain
     READ(ILUPRE,*) YINFILE, YINFISF
     WRITE(ILUOUT,FMT=*) 'Netcdf files to read:', YINFILE, YINFISF
     ! Open file containing initial profiles
@@ -670,6 +674,8 @@ SELECT CASE(YKIND)
       ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model
       ! Z oriented in same time to have a model domain axis going
       ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top)
+      WRITE(ILUOUT,FMT=*) 'End gridmodel comput in trans domain: JKM  U V ZHEIGHTU', &
+      JKM,ZU(JKM),ZV(JKM),ZHEIGHTU(JKM)
     END DO
 !
     DEALLOCATE(ZOC_TEMPERATURE)
@@ -728,30 +734,36 @@ SELECT CASE(YKIND)
       WRITE(ILUOUT,FMT=*) JKM, ZOC_LE(JKM), ZOC_H(JKM),ZOC_SW_DOWN(JKM),ZOC_SW_UP(JKM),&
                           ZOC_LW_DOWN(JKM),ZOC_LW_UP(JKM),ZOC_TAUX(JKM),ZOC_TAUY(JKM)   
     ENDDO
-    ! IFRCLT FORCINGS at sea surface
-    IFRCLT=idimlen
+    ! IFRCLT FORCINGS at sea surface are givean each 10 min (6/hour)
+! start at ZJZTIME read in PRE_IDEA1.nam; skip forcings given from 13/11 22LT
+ZJZTIME=(ZJZTIME+2)*6
+   IFRCLT=idimlen-ZJZTIME
+WRITE(ILUOUT,FMT=*) 'FORCINGS GIVEN FROM 13/11/11 22LT;  FORCING Number USED ZJZTIME=', ZJZTIME
+WRITE(ILUOUT,FMT=*) idimlen,'NB of given forcing', 'nb of first used forcing= ',IFRCLT
     ALLOCATE(ZFRCLT(IFRCLT)) 
     ALLOCATE(ZSSUFL_T(IFRCLT)); ZSSUFL_T = 0.0
     ALLOCATE(ZSSVFL_T(IFRCLT)); ZSSVFL_T = 0.0
     ALLOCATE(ZSSTFL_T(IFRCLT)); ZSSTFL_T = 0.0
     ALLOCATE(ZSSOLA_T(IFRCLT)); ZSSOLA_T = 0.0
-    DO JKT=1,IFRCLT
+    DO JKM=1,IFRCLT
+    JKT=JKM +ZJZTIME
       ! Initial file for CINDY-DYNAMO: all fluxes correspond to the absolute value (>0)
       ! modele ocean: axe z dirigé du bas vers la sfc de l'océan
       ! => flux dirigé vers le haut (positif ocean vers l'atmopshere i.e. bas vers le haut)
-      ZSSOLA_T(JKT)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT)
-      ZSSTFL_T(JKT)=(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT))
+      ZSSOLA_T(JKM)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT)
+      ZSSTFL_T(JKM)=-(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT))
       ! assume that Tau given on file is along Ox
       ! rho_air UW_air = rho_ocean UW_ocean= N/m2
       ! uw_ocean
-      ZSSUFL_T(JKT)=ZOC_TAUX(JKT)
-      ZSSVFL_T(JKT)=ZOC_TAUY(JKT)
-      WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',&
-                          JKT,ZSSOLA_T(JKT),ZSSTFL_T(JKT),ZSSUFL_T(JKT),ZSSVFL_T(JKT) 
+      ZSSUFL_T(JKM)=ZOC_TAUX(JKT)
+      ZSSVFL_T(JKM)=ZOC_TAUY(JKT) 
+     WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',&
+                          JKM,ZSSOLA_T(JKM),ZSSTFL_T(JKM),ZSSUFL_T(JKM),ZSSVFL_T(JKM) 
     ENDDO
     ! Allocate and Writing the corresponding variables in module MODD_OCEAN_FRC
     NFRCLT=IFRCLT
     ! value to read later on file ? 
+! interval in s between 2 given forcings
     NINFRT=600
     ALLOCATE(TFRCLT(NFRCLT))
     ALLOCATE(XSSUFL_T(NFRCLT));XSSUFL_T(:)=0.
@@ -759,14 +771,13 @@ SELECT CASE(YKIND)
     ALLOCATE(XSSTFL_T(NFRCLT));XSSTFL_T(:)=0.
     ALLOCATE(XSSOLA_T(NFRCLT));XSSOLA_T(:)=0.
     ! on passe en unités SI, signe, etc pour le modele ocean
-    !  W/m2 => SI :  /(CP_mer * rho_mer)
-    ! a revoir dans tt le code pour mettre de svaleurs plus exactes
+    !  W/m2 => SI : m/S *K  /(CP_mer * rho_mer)
     DO JKT=1,NFRCLT
       TFRCLT(JKT)= ZFRCLT(JKT)
       XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN
       XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN
-      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN)
-      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN)
+      XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL  *XRH00OCEAN)
+      XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL  *XRH00OCEAN)
     END DO   
     DEALLOCATE(ZFRCLT)
     DEALLOCATE(ZSSUFL_T)
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 5d6517151f1749475da0f4ed554eafcf22efb772..f7f185e05649dd30a4d50bf95a6b7d0734fc227d 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -759,38 +759,6 @@ IF (MEAN_COUNT /= 0) THEN
   TZFIELD%CUNITS     = 'm s-1'
   TZFIELD%CCOMMENT   = 'X_Y_Z_U component of max wind'
   CALL IO_Field_write(TPFILE,TZFIELD,XUM_MAX)
-!
-  IF (LCOV_FIELD) THEN
-    !
-    TZFIELD%CMNHNAME   = 'UVME'
-    TZFIELD%CLONGNAME  = 'UVME'
-    TZFIELD%CUNITS     = 'm2 s-2'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_UV component of mean wind variance'
-    ZWORK3D = XUV_MEAN/MEAN_COUNT
-    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
-    !
-    TZFIELD%CMNHNAME   = 'UWME'
-    TZFIELD%CLONGNAME  = 'UWME'
-    TZFIELD%CUNITS     = 'm2 s-2'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_UW component of mean wind variance'
-    ZWORK3D = XUW_MEAN/MEAN_COUNT
-    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
-    !
-    TZFIELD%CMNHNAME   = 'VWME'
-    TZFIELD%CLONGNAME  = 'VWME'
-    TZFIELD%CUNITS     = 'm2 s-2'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_VW component of mean wind variance'
-    ZWORK3D = XVW_MEAN/MEAN_COUNT
-    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
-    !
-    TZFIELD%CMNHNAME   = 'WTHME'
-    TZFIELD%CLONGNAME  = 'WTHME'
-    TZFIELD%CUNITS     = 'm2 s-2'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_WTH component of mean wind variance'
-    ZWORK3D = XWTH_MEAN/MEAN_COUNT
-    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
-    !
-  END IF
 !
   TZFIELD = TFIELDMETADATA(                          &
     CMNHNAME   = 'generic for mean_count variables', & !Temporary name to ease identification
@@ -1030,6 +998,38 @@ IF (MEAN_COUNT /= 0) THEN
     TZFIELD%CCOMMENT   = 'X_Y_Z_max kinetic energy'
     CALL IO_Field_write(TPFILE,TZFIELD,XTKEM_MAX)
   END IF
+!
+  IF (LCOV_FIELD) THEN
+    !
+    TZFIELD%CMNHNAME   = 'UVME'
+    TZFIELD%CLONGNAME  = 'UVME'
+    TZFIELD%CUNITS     = 'm2 s-2'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_UV component of mean wind variance'
+    ZWORK3D = XUV_MEAN/MEAN_COUNT
+    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
+    !
+    TZFIELD%CMNHNAME   = 'UWME'
+    TZFIELD%CLONGNAME  = 'UWME'
+    TZFIELD%CUNITS     = 'm2 s-2'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_UW component of mean wind variance'
+    ZWORK3D = XUW_MEAN/MEAN_COUNT
+    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
+    !
+    TZFIELD%CMNHNAME   = 'VWME'
+    TZFIELD%CLONGNAME  = 'VWME'
+    TZFIELD%CUNITS     = 'm2 s-2'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_VW component of mean wind variance'
+    ZWORK3D = XVW_MEAN/MEAN_COUNT
+    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
+    !
+    TZFIELD%CMNHNAME   = 'WTHME'
+    TZFIELD%CLONGNAME  = 'WTHME'
+    TZFIELD%CUNITS     = 'm2 s-2'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_WTH component of mean wind variance'
+    ZWORK3D = XWTH_MEAN/MEAN_COUNT
+    CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D)
+    !
+  END IF
 !
 END IF
 !
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index c5f5aeadda9e915c1b2790d524cc47f1267ed8b1..caebcb7e1ad3de5cd15794506423becc93991b50 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -145,7 +145,7 @@ CPPFLAGS_RAD = -DMNH_ECRAD -DVER_ECRAD=$(VER_ECRAD)
 INC_RAD      += -I$(B)LIB/RAD/ecrad-$(VERSION_ECRAD)/include
 ifeq "$(VER_ECRAD)" "140"
 INC_RAD      += -I$(B)LIB/RAD/ecrad-$(VERSION_ECRAD)/drhook/include
-#IGNORE_DEP_MASTER   += yomhook.D
+IGNORE_DEP_MASTER   += yomhook_dummy.D
 endif
 ifneq "$(VER_ECRAD)" "140"
 IGNORE_DEP_MASTER   += read_albedo_data.D read_emiss_data.D
diff --git a/src/PHYEX/turb/mode_bl_depth_diag.f90 b/src/PHYEX/turb/mode_bl_depth_diag.f90
index 2cae3a3fe2cf48cfd1f0a9a4d55c52b57abde3cf..daafb106e2d2ebc995bb4add8c7aef8d6a9738bd 100644
--- a/src/PHYEX/turb/mode_bl_depth_diag.f90
+++ b/src/PHYEX/turb/mode_bl_depth_diag.f90
@@ -12,7 +12,7 @@ END INTERFACE
 !
 CONTAINS
 !
-SUBROUTINE BL_DEPTH_DIAG_3D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D)
+SUBROUTINE BL_DEPTH_DIAG_3D(D,KDIM, PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D)
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK
 !
 !
@@ -56,10 +56,11 @@ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
 IMPLICIT NONE
 !
 TYPE(DIMPHYEX_t),              INTENT(IN)           :: D
+INTEGER,                       INTENT(IN)           :: KDIM ! Vertical dimensions (LES grid vs full grid)
 REAL, DIMENSION(D%NIJT),       INTENT(IN)           :: PSURF        ! surface flux
 REAL, DIMENSION(D%NIJT),       INTENT(IN)           :: PZS          ! orography
-REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN)           :: PFLUX        ! flux
-REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL, DIMENSION(D%NIJT,KDIM),  INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(D%NIJT,KDIM),  INTENT(IN)           :: PZZ          ! altitude of flux points
 REAL,                          INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
 REAL, DIMENSION(D%NIJT),       INTENT(OUT)          :: BL_DEPTH_DIAG3D
 !
@@ -106,7 +107,7 @@ BL_DEPTH_DIAG3D(:) = BL_DEPTH_DIAG3D(:) / (1. - PFTOP_O_FSURF)
 IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',1,ZHOOK_HANDLE)
 END SUBROUTINE BL_DEPTH_DIAG_3D
 !
-SUBROUTINE BL_DEPTH_DIAG_1D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D)
+SUBROUTINE BL_DEPTH_DIAG_1D(D,KDIM, PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D)
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK
 !
 USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
@@ -114,31 +115,37 @@ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
 IMPLICIT NONE
 !
 TYPE(DIMPHYEX_t),       INTENT(IN)           :: D
+INTEGER,                INTENT(IN)           :: KDIM         ! Vertical dimensions (LES grid vs full grid)
 REAL,                   INTENT(IN)           :: PSURF        ! surface flux
 REAL,                   INTENT(IN)           :: PZS          ! orography
-REAL, DIMENSION(D%NKT), INTENT(IN)           :: PFLUX        ! flux
-REAL, DIMENSION(D%NKT), INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL, DIMENSION(KDIM),  INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(KDIM),  INTENT(IN)           :: PZZ          ! altitude of flux points
 REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
 REAL,                   INTENT(OUT)          :: BL_DEPTH_DIAG1D
+INTEGER :: JK ! loop counters
+INTEGER :: IKB,IIJB,IIJE,IKL
+REAL    :: ZFLX     ! flux at top of BL
 !
-REAL, DIMENSION(1,1)             :: ZSURF
-REAL, DIMENSION(1,1)             :: ZZS
-REAL, DIMENSION(1,1,D%NKT)       :: ZFLUX
-REAL, DIMENSION(1,1,D%NKT)       :: ZZZ
-REAL, DIMENSION(1,1)             :: ZBL_DEPTH_DIAG
-!
-INTEGER :: IKT
 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',0,ZHOOK_HANDLE)
-IKT=D%NKT
-ZSURF        = PSURF
-ZZS          = PZS
-ZFLUX(1,1,:) = PFLUX(:)
-ZZZ  (1,1,:) = PZZ  (:)
 !
-CALL BL_DEPTH_DIAG_3D(D,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF,ZBL_DEPTH_DIAG)
+IKB=D%NKTB
+IKL=D%NKL
 !
-BL_DEPTH_DIAG1D = ZBL_DEPTH_DIAG(1,1)
+BL_DEPTH_DIAG1D = 0.
+IF (PSURF/=0.) THEN
+  DO JK=IKB,KDIM-1,IKL
+    IF (PZZ(JK-IKL)>PZS) THEN
+      ZFLX = PSURF * PFTOP_O_FSURF
+      IF ( (PFLUX(JK)-ZFLX)*(PFLUX(JK-IKL)-ZFLX) <= 0. ) THEN
+        BL_DEPTH_DIAG1D = (PZZ  (JK-IKL) - PZS)     &
+                       + (PZZ  (JK) - PZZ  (JK-IKL))    &
+                       * (ZFLX          - PFLUX(JK-IKL)  )  &
+                       / (PFLUX(JK) - PFLUX(JK-IKL)   )
+      END IF
+    END IF
+  END DO
+END IF
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/PHYEX/turb/mode_sbl_depth.f90 b/src/PHYEX/turb/mode_sbl_depth.f90
index 8da65ac5643dc573d4e5706c1a4b76cbb8456464..948948c07295d73c570f98965799ee77928bea01 100644
--- a/src/PHYEX/turb/mode_sbl_depth.f90
+++ b/src/PHYEX/turb/mode_sbl_depth.f90
@@ -109,7 +109,7 @@ ZUSTAR2(:) = SQRT(ZWU(:)**2+ZWV(:)**2)
 !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
 ZWIND(:,:)=SQRT(PFLXU(:,:)**2+PFLXV(:,:)**2)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT)
-CALL BL_DEPTH_DIAG(D,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN)
+CALL BL_DEPTH_DIAG(D,D%NKT,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN)
 !$mnh_expand_array(JIJ=IIJB:IIJE)
 ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE)
@@ -118,7 +118,7 @@ ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:)
 !
 !* BL and SBL diagnosed with buoyancy flux criteria
 !
-CALL BL_DEPTH_DIAG(D,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER)
+CALL BL_DEPTH_DIAG(D,D%NKT,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER)
 !$mnh_expand_array(JIJ=IIJB:IIJE)
 ZSBL_THER(:)= CSTURB%XSBL_O_BL * ZSBL_THER(:)
 !$mnh_end_expand_array(JIJ=IIJB:IIJE)
diff --git a/src/SURFEX/teb_spartacus.F90 b/src/SURFEX/teb_spartacus.F90
index df4a2b1c96caf396d5fbd06d5183d67808dca19a..b0d9f6a7ff750a491f3c2d02558a2864975db36d 100644
--- a/src/SURFEX/teb_spartacus.F90
+++ b/src/SURFEX/teb_spartacus.F90
@@ -183,9 +183,9 @@ SUBROUTINE TEB_SPARTACUS (TOP, SPAOP, T, B, DMT, GDP, SB, TPN, PDIR_SW, PSCA_SW,
   REAL :: ZLAD_MEAN
   REAL, DIMENSION(SIZE(SB%XZ,1)) :: ZINTERPOL
   !
-  REAL, DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_DIRECT_SW
-  REAL, DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_DIFFUSE_SW
-  REAL, DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_LW
+  REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_DIRECT_SW
+  REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_DIFFUSE_SW
+  REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTOP_FLUX_DN_LW
   !
   REAL :: ZDZ_SP
   REAL :: ZH_COUNT