SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/mixtln.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE MIXTL_n(PFSOL,PFNSOL,PSFTEAU,PSFU,PSFV,PSEATEMP)
00003 !     #######################################################################
00004 !
00005 !!****  *MIXTLN (1D MODEL)*  
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !     Oceanic 1D model in TKE Closure scheme
00010 !     
00011 !!**  METHOD
00012 !!    ------
00013 !
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------ 
00019 !!      
00020 !!    REFERENCE
00021 !!    ---------
00022 !     Gaspar et al, 1990 : A simple eddy kinetic energy model for simulations of 
00023 !     the oceanic vertical mixing : Tests at station Papa and Long-term upper ocean 
00024 !     study site, JGR, 95,C9, 16,179--16,193. 
00025 !!      
00026 !!    AUTHOR
00027 !!    ------
00028 !!     C. Lebeaupin  *Météo-France* 
00029 !!
00030 !!    MODIFICATIONS
00031 !!    -------------
00032 !!      Original     02/2008
00033 !!     01/2012 : H. Giordani, P. Peyrille
00034 !!                       Add FLAGS: 
00035 !!                       LREL_TS: relaxation on T, S
00036 !!                       LREL_CUR: damping on current
00037 !!                       FOR LREL_CUR: implicit and explicit codinf is made
00038 !!                       for conveniency, DTREL=Ucur term, DSREL=VCURterm
00039 !!                Corrections:
00040 !!                   coriolis terms in current equation, 
00041 !!                   richardson nb in diapycnal mixing, 
00042 !!                   remove threshold value for mixing tendency
00043 !!    07/2012, P. Le Moigne : CMO1D phasing
00044 !-------------------------------------------------------------------------------
00045 !
00046 !*       0.     DECLARATIONS
00047 !               ------------
00048 !
00049 USE MODD_CSTS
00050 USE MODD_OCEAN_CSTS
00051 USE MODD_SEAFLUX_n, ONLY : XSEABATHY
00052 USE MODD_OCEAN_n
00053 USE MODD_OCEAN_GRID_n
00054 !
00055 USE MODD_SURF_PAR,   ONLY : XUNDEF
00056 !
00057 ! Module containing relaxation fields
00058 USE MODD_OCEAN_REL_n , ONLY : XSEAT_REL, XSEAS_REL, XTAU_REL, &
00059                             LREL_CUR, LREL_TS, &
00060                             XQCORR, LFLX_CORR, LDIAPYCNAL,&
00061                             XSEAU_REL, XSEAV_REL
00062 !
00063 USE MODD_SEAFLUX_GRID_n, ONLY :  XLAT
00064 !
00065 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00066 USE PARKIND1  ,ONLY : JPRB
00067 !
00068 IMPLICIT NONE
00069 !
00070 !*      0.1    declarations of arguments
00071 !
00072 !
00073 REAL, DIMENSION(:)  ,INTENT(IN)       :: PFSOL   ! solar flux (W/m2)
00074 REAL, DIMENSION(:)  ,INTENT(IN)       :: PFNSOL  ! non solar flux (W/m2)
00075 REAL, DIMENSION(:)  ,INTENT(IN)       :: PSFTEAU ! fresh water flux(kg/m2/s)
00076 REAL, DIMENSION(:)  ,INTENT(IN)       :: PSFU    ! zonal stress (Pa)
00077 REAL, DIMENSION(:)  ,INTENT(IN)       :: PSFV    ! meridian stress (Pa)
00078 !
00079 REAL, DIMENSION(:)  ,INTENT(OUT)    :: PSEATEMP! sea surface temperature (K)
00080 !*      0.2    declarations of local variables
00081 !
00082  COMPLEX, DIMENSION(NOCKMIN:NOCKMAX,2) :: ZUC           ! vecteur vent en ecriture complexe
00083  COMPLEX, DIMENSION(NOCKMIN:NOCKMAX) :: ZAI, ZBI, ZCI     !matrices pour resolution numérique
00084  COMPLEX, DIMENSION(NOCKMIN:NOCKMAX) :: ZAU, ZBU, ZCU, ZYU !matrices pour resolution numérique
00085  COMPLEX, DIMENSION(NOCKMIN:NOCKMAX) :: ZOMU,ZWU
00086 !
00087 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZSEAT, ZSEAS, ZSEAE, ZSEAV, ZSEAU
00088 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZSEAT_REL, ZSEAS_REL, ZSEAV_REL, ZSEAU_REL
00089 !
00090 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZA, ZB, ZC, ZA2, ZB2, ZC2, ZYT, ZYS, ZYE        !matrices pour resolution numérique
00091 !
00092 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ADVT,ADVS !advection horiz. temperature and salinity
00093 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ADVU,ADVV !advection horiz. of current
00094 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ADVE      !advection of turbulent kinetic energy
00095 !
00096 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZTDTREL  ! Tendancy derived from  relxation (K/s)
00097 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZSDTREL  ! ---- salinity   ---------- (%/s)
00098 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZUDTREL  ! Tendancy term derived from relaxation on U current (m/s2)
00099 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZVDTREL  !  ------------------------------------    V        (m/s2)
00100 !
00101 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZLE,ZKMEL,ZKMELM
00102 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZKMES,ZKMED,ZKMEWM,ZKMEWS
00103 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZPTH,ZPDY
00104 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZTENDE,ZDIFFV
00105 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZOMT, ZOMS, ZOME !vector for matrix inversion
00106 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZWT, ZWS, ZWE
00107 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZU,ZV,ZT,ZS,ZE
00108 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZZDRHO
00109 REAL, DIMENSION(NOCKMIN:NOCKMAX) :: ZDTFSOL
00110 !
00111 REAL :: ZDTFNSOL
00112 !
00113 REAL :: ZSFU, ZSFV, ZFNSOL, ZFSOL, ZSFTEAU, ZLAT
00114 REAL :: ZSEAHMO, ZSEATEMP
00115 !
00116 REAL :: ZSEUIL,ZEMIN,ZEMAX,ZTEST
00117 !
00118 REAL :: ZF, ZEWS
00119 REAL :: ZALG
00120 REAL :: ZEE,ZPOT,ZXLME,ZXLPE,ZXROD,ZAUX,ZXDL
00121 REAL :: ZDU,ZDV,ZRICH,ZDRHODZ
00122 REAL :: ZT1, ZT2, ZT3, ZS1, ZS2
00123 !
00124 INTEGER :: IUP,IBOT
00125 INTEGER :: J,JJ,JPT,JIN,IKHML
00126 !
00127 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00128 !
00129 !----------------------------------------------------------------------------
00130 !       1.     Initializations
00131 !__________________________________________________________________________
00132 !Take account of an horizontale advection
00133 
00134 !-------------------------------------------------------------------------------
00135 !
00136 IF (LHOOK) CALL DR_HOOK('MIXTL_N',0,ZHOOK_HANDLE)
00137 IUP=NOCKMIN+1
00138 IBOT=NOCKMAX
00139 !
00140 ZSEUIL=2.23E-3
00141 ZEMIN=1.E-3
00142 ZEMAX=0.1
00143 !
00144 ZT1=13.5
00145 ZT2=-0.19494
00146 ZT3=-0.49038E-2
00147 ZS1=32.6
00148 ZS2=0.77475
00149 !
00150 ZALG = XG / XRHOSW
00151 !
00152 !-------------------------------------------------------------------------------
00153 !
00154 !iterations on grid points
00155 DO JPT=1,SIZE(PFSOL)
00156 !
00157   ZTEST=0.
00158   IKHML=1
00159 !
00160   !simplified variables inside this loop
00161   ZLAT    = XLAT   (JPT)
00162   ZFSOL   = PFSOL  (JPT)
00163   ZFNSOL  = PFNSOL (JPT)
00164   ZSFTEAU = PSFTEAU(JPT)
00165   ZSFU    = PSFU   (JPT)
00166   ZSFV    = PSFV   (JPT)
00167   ZEWS    = SQRT(ZSFU**2+ZSFV**2)/XRHOSW
00168   ZF      = 4.*XPI*SIN(ZLAT*XPI/180.)/86400.
00169 
00170   ZSEAHMO=0.
00171   DO J=IUP-1,IBOT
00172     ZSEAT(J) = XSEAT(JPT,J)
00173     ZSEAS(J) = XSEAS(JPT,J)
00174     ZSEAU(J) = XSEAU(JPT,J)
00175     ZSEAV(J) = XSEAV(JPT,J)    
00176     ZSEAE(J) = XSEAE(JPT,J)
00177     !
00178     ZSEAU_REL(J) = XSEAU_REL(JPT,J)
00179     ZSEAV_REL(J) = XSEAV_REL(JPT,J)
00180     ZSEAT_REL(J) = XSEAT_REL(JPT,J)
00181     ZSEAS_REL(J) = XSEAS_REL(JPT,J)
00182     !
00183     IF (J>=IUP .AND. ZSEAE(J)>=(ZEMIN*SQRT(2.))) ZSEAHMO = ZSEAHMO-XDZ1(J)
00184   ENDDO
00185   XSEAHMO(JPT) = ZSEAHMO
00186 
00187  !precalculation of DRHO
00188   DO J=IUP-1,IBOT
00189     ZU(J)=0.
00190     ZV(J)=0.
00191     ZT(J)=0.
00192     ZS(J)=0.
00193     ZE(J)=0.
00194     ADVT(J)=0.
00195     ADVS(J)=0.
00196     ADVU(J)=0.
00197     ADVV(J)=0.
00198     ADVE(J)=0.
00199     ZZDRHO(J)=(ZSEAT(J)-ZT1)*(ZT2+ZT3*(ZSEAT(J)-ZT1)) + ZS2*(ZSEAS(J)-ZS1)
00200     ZUDTREL(J)=0.
00201     ZVDTREL(J)=0.
00202     ZTDTREL(J)=0.
00203     ZSDTREL(J)=0.
00204     ZDTFSOL(J)=0.
00205   ENDDO
00206   ZDTFNSOL=0.
00207 !
00208 ! Control print
00209 !IF (LREL_CUR)  WRITE(*,*) "WARNING :: Damping on current will be done"
00210 !IF (LREL_TS)  WRITE(*,*) "WARNING :: Relaxation on T, S ocean will be done "
00211 !IF (LDIAPYCNAL)  WRITE(*,*) "WARNING :: diapycnal mixing has been activated"
00212 !IF (LFLX_CORR) WRITE(*,*) "WARNING :: ocean fluxes correctin has been activated"
00213 !
00214 !------------------------------------------------------------------------------
00215 !
00216 !       2.     Oceanic vertical mixing 
00217 !              -----------------------
00218 !!
00219 !!       2.a    Diapycnal mixing
00220 !!              ----------------
00221 !!
00222   DO J=IBOT-1,IUP,-1
00223     ZKMES(J) =0.
00224     ZKMEWM(J)=0.
00225     ZKMEWS(J)=0.
00226     ZKMED(J) =0.
00227     IF ((ZTEST==0.).AND.(ZSEAE(J)>=ZSEUIL)) THEN
00228       IKHML=J
00229       ZTEST=1.
00230     ENDIF
00231   ENDDO
00232   
00233   !! Modif PP - HG : flag diapycnal
00234   IF (LDIAPYCNAL) THEN
00235     !
00236     DO J=IKHML,IBOT-1
00237       ZDRHODZ=(ZZDRHO(J)-ZZDRHO(J+1))/XDZ1(J)
00238       ZDU=ZSEAU(J+1)-ZSEAU(J)
00239       ZDV=ZSEAV(J+1)-ZSEAV(J)
00240       IF((ZDU*ZDU+ZDV*ZDV).LE.1.E-7) THEN 
00241         ZRICH = 0.8
00242       ELSE
00243         ZRICH = -ZALG*ZDRHODZ/(ZDU**2+ZDV**2)/XK4(J)
00244       ENDIF  
00245 !coefficient de mélange aux ondes internes
00246       ZKMEWM(J)=1.E-3
00247       ZKMEWS(J)=1.E-4
00248 !coefficient de mélange du au cisaillement
00249       IF(ZRICH>0.7) THEN
00250         ZKMES(J) = 0.
00251       ELSEIF(ZRICH>=0.) THEN
00252         ZKMES(J) = 5.E-3*(1.-(ZRICH/0.7)*(ZRICH/0.7))**3
00253       ELSE
00254         ZKMES(J) = 5.E-3
00255       ENDIF
00256     ENDDO
00257     !plm si ldiapycnal=F zkmes non modofie et zrich ne sert a rien !
00258     !plm ELSE
00259     !plm  ZRICH=-ZALG*ZDRHODZ / (ZDU**2+ZDV**2) / XK4(J) 
00260     !  
00261   ENDIF
00262 !
00263 !       2.b    Mixing length and coefficient 
00264 !              -----------------------------
00265 !
00266   DO J=IUP,IBOT-1
00267 
00268     ZEE=ZSEAE(J)**2/ZALG
00269     ZXROD=(ZZDRHO(J)+ ZZDRHO(J+1))*0.5   
00270 
00271     ZXLME=0.
00272     ZPOT=0.
00273     JIN=J
00274     DO JJ=J+1,IBOT
00275       ZAUX=ZPOT + XDZ2(JJ)*(ZZDRHO(JJ)-ZXROD)
00276       IF (ZAUX<ZEE) THEN
00277         JIN=JJ
00278         ZPOT=ZAUX
00279         ZXLME=ZXLME+XDZ2(JJ)
00280       ENDIF
00281     ENDDO
00282     IF (JIN==J) THEN
00283       ZXLME=2.*(XZ2(J)-XZHOC(J+1))/(ZZDRHO(J+1)-ZXROD)/ZALG
00284       ZXLME=SQRT(ZXLME)*ZSEAE(J)
00285     ELSE
00286       IF (JIN/=IBOT) THEN
00287         ZXDL=(ZEE-ZPOT)/(ZZDRHO(JIN+1)-ZXROD)
00288         ZXLME=ZXLME+ZXDL
00289       ENDIF
00290     ENDIF
00291 
00292     ZXLPE=0.
00293     ZPOT=0.
00294     JIN=J
00295     DO JJ=J-1,NOCKMIN,-1
00296       ZAUX=ZPOT + XDZ2(JJ+1)*(ZXROD-ZZDRHO(JJ+1))
00297       IF (ZAUX<ZEE) THEN
00298         JIN=JJ
00299         ZPOT=ZAUX
00300         ZXLPE=ZXLPE+XDZ2(JJ+1)
00301       ENDIF
00302     ENDDO
00303     IF (JIN==J) THEN
00304       ZXLPE=2.*(XZ2(J)-XZHOC(J))/(ZZDRHO(J)-ZXROD)/ZALG
00305       ZXLPE=SQRT(ZXLPE)*ZSEAE(J)
00306     ELSE 
00307       IF (JIN/=NOCKMIN) THEN
00308         ZXDL=- (ZEE-ZPOT)/(ZZDRHO(JIN)-ZXROD)
00309         ZXLPE=ZXLPE+ZXDL
00310       ENDIF
00311     ENDIF
00312 
00313     ZLE(J)=SQRT(ZXLME*ZXLPE)
00314     ZKMEL(J)=XCKL*ZLE(J)*ZSEAE(J)
00315   
00316   ENDDO
00317 
00318   ZLE(IBOT)=ZLE(IBOT-1)
00319   ZKMEL(IBOT)=XCKL*ZLE(IBOT)*ZSEAE(IBOT)
00320 
00321   !first coef at all levels: because needed at j+1 further
00322   ZKMELM(IUP)=ZKMEL(IUP)
00323   DO J=IUP+1,IBOT
00324     ZKMELM(J)= (ZKMEL(J)+ZKMEL(J-1))/2.
00325   ENDDO
00326 
00327 !--------------------------------------------------------------------------------------------------------
00328 !
00329 !!       2.c    Numerical resolution of evolution equations
00330 !!              -------------------------------------------
00331 !
00332   DO J=IUP,IBOT
00333     IF (LREL_CUR) THEN
00334       ZUDTREL(J) =  - (ZSEAU(J)-ZSEAU_REL(J))  / XTAU_REL 
00335       ZVDTREL(J) =  - (ZSEAV(J)-ZSEAV_REL(J))  / XTAU_REL 
00336     ENDIF
00337     ! flux solaire
00338     ZDTFSOL(J) = XRAY(J)*ZFSOL/XDZ2(J) 
00339   ENDDO
00340 !
00341   IF (LREL_TS) THEN
00342 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00343 ! RELAXATION IS MADE INSTEAD OF FLUX CORRECTION
00344 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
00345     DO J=IUP,IBOT
00346       ! flux non solaire
00347       ZTDTREL(J) =  - (ZSEAT(J)-ZSEAT_REL(J)) / XTAU_REL
00348       ZSDTREL(J) =  - (ZSEAS(J)-ZSEAS_REL(J)) / XTAU_REL
00349     ENDDO
00350   ENDIF
00351 !
00352   IF (LFLX_CORR) THEN
00353     ! NO relaxation
00354     ! Barnier correction on surface fluxes          
00355     ! flux non solaire corrige
00356     ZTDTREL(IUP) =  XQCORR *(ZSEAT_REL(IUP)-ZSEAT(IUP)) / (XRHOSW*XCPSW)
00357     ZFNSOL = ZFNSOL + ZTDTREL(IUP)
00358   ENDIF
00359 !
00360 ! flux non solaire
00361   ZDTFNSOL = ZFNSOL/XDZ2(IUP) 
00362 !
00363 !!
00364 !loop on levels
00365   ZA (:) = 0.
00366   ZAI(:) = 0.
00367   ZA2(:) = 0.
00368   ZC (:) = 0.
00369   ZCI(:) = 0.
00370   ZC2(:) = 0.
00371   DO J=IUP,IBOT
00372 
00373     IF (J<IBOT) THEN
00374       IF (J>IUP) THEN
00375         ZA (J) = XOCEAN_TSTEP * XK1(J) * (ZKMEL(J-1) + ZKMES(J-1) + ZKMEWS(J-1) + ZKMED(J-1)) 
00376         ZAI(J) = XOCEAN_TSTEP * XK1(J) * (ZKMEL(J-1) + ZKMES(J-1) + ZKMEWM(J-1) + ZKMED(J-1))
00377         ZA2(J) = XOCEAN_TSTEP * XK2(J) * ZKMELM(J)
00378       ENDIF
00379       ZC (J) = XOCEAN_TSTEP * XK2(J) * (ZKMEL(J)   + ZKMES(J)   + ZKMEWS(J)   + ZKMED(J)) 
00380       ZCI(J) = XOCEAN_TSTEP * XK2(J) * (ZKMEL(J)   + ZKMES(J)   + ZKMEWM(J)   + ZKMED(J))
00381       ZC2(J) = XOCEAN_TSTEP * XK3(J) * ZKMELM(J+1)
00382     ENDIF
00383   
00384     ZB (J) = 1. - ZA (J) - ZC (J)
00385     ZBI(J) = 1. - ZAI(J) - ZCI(J)
00386     ZB2(J) = 1. - ZA2(J) - ZC2(J) + XOCEAN_TSTEP * ZSEAE(J)/ZLE(J)/XZCE
00387 
00388     ZAU(J)    = ZAI(J) * (1.,0.) 
00389     ZCU(J)    = ZCI(J) * (1.,0.) 
00390     ZBU(J)    = ZBI(J) * (1.,0.) + XOCEAN_TSTEP * ZF * XGAMA * (0.,1.)
00391     
00392 
00393     ZOMT(J)   = 1./(ZB (J) - ZA (J) * ZOMT(J-1) * ZC (J-1)) 
00394     ZOMS(J)   = 1./(ZB (J) - ZA (J) * ZOMS(J-1) * ZC (J-1))    
00395     ZOMU(J)   = 1./(ZBU(J) - ZAU(J) * ZOMU(J-1) * ZCU(J-1)) 
00396     ZOME(J)   = 1./(ZB2(J) - ZA2(J) * ZOME(J-1) * ZC2(J-1))
00397  
00398 
00399     ZYT(J)    = ZSEAT(J) + XOCEAN_TSTEP * (ZDTFSOL(J) + ADVT(J)) 
00400     ZYS(J)    = ZSEAS(J) + XOCEAN_TSTEP * (             ADVS(J))  
00401     IF (LREL_TS) THEN
00402       IF (.NOT.LFLX_CORR) ZYT(J) = ZYT(J) + XOCEAN_TSTEP * ZTDTREL(J)
00403       ZYS(J) = ZYS(J) + XOCEAN_TSTEP * ZSDTREL(J)
00404     ENDIF
00405     
00406     ZUC(J,1)  = ZSEAU(J)*(1.,0.) + ZSEAV(J)*(0.,1.)
00407     ZYU(J)    = ZUC(J,1) + XOCEAN_TSTEP * (ZUC(J,1)*ZF*(1.-XGAMA)*(0.,-1.) + ADVU(J)*(1.,0.) + ADVV(J)*(0.,1.))
00408     ! damping on current if LREL_CUR=T in explicit scheme
00409     IF (LREL_CUR) ZYU(J) = ZYU(J) + XOCEAN_TSTEP * (ZUDTREL(J)*(1.,0.) + ZVDTREL(J)*(0.,1.))  
00410 
00411     IF (J<IBOT) THEN
00412       ZDRHODZ   = (ZZDRHO(J)-ZZDRHO(J+1))/XDZ1(J)
00413       ZDU       = ZSEAU(J+1)-ZSEAU(J)
00414       ZDV       = ZSEAV(J+1)-ZSEAV(J)
00415 
00416       ZPTH(J)   = XCKL * ZLE(J) * ZALG * ZDRHODZ
00417       ZPDY(J)   = XCKL * ZLE(J) * XK4(J) * (ZDU**2+ZDV**2)
00418     ELSE
00419       ZPTH(J) = ZPTH(J-1)
00420       ZPDY(J) = ZPDY(J-1)
00421     ENDIF
00422 
00423     ZYE(J)    = ZSEAE(J) + XOCEAN_TSTEP * (0.5 * ZSEAE(J)**2/ZLE(J)/XZCE + ADVE(J)) + ZPTH(J) + ZPDY(J)
00424 
00425     IF (J==IUP) THEN
00426       ZYT(J) = ZYT(J) + XOCEAN_TSTEP * ZDTFNSOL
00427       ZYS(J) = ZYS(J) + XOCEAN_TSTEP * ZSEAS(IUP) * ZSFTEAU / XDZ2(IUP)
00428       ZYU(J) = ZYU(J) - XOCEAN_TSTEP * ( ZSFU*(1.,0.) + ZSFV*(0.,1.) ) / XDZ2(IUP) / XRHOSW
00429       ZYE(J) = ZYE(J) + XOCEAN_TSTEP * ZEWS / XDZ1(IUP)
00430     ENDIF
00431 
00432 
00433     ZWT(J)    = ZOMT(J) * (ZYT(J)- ZA (J)*ZWT(J-1))
00434     ZWS(J)    = ZOMS(J) * (ZYS(J)- ZA (J)*ZWS(J-1))
00435     ZWU(J)    = ZOMU(J) * (ZYU(J)- ZAU(J)*ZWU(J-1))
00436     ZWE(J)    = ZOME(J) * (ZYE(J)- ZA2(J)*ZWE(J-1))
00437 
00438   ENDDO
00439 !
00440 !---------------------------------------------------------------------------------------------------
00441 !
00442   ZT(IBOT)    = ZWT(IBOT)
00443   ZS(IBOT)    = ZWS(IBOT)  
00444   ZUC(IBOT,2) = ZWU(IBOT)
00445   ZE(IBOT)    = ZWE(IBOT)  
00446   DO J=IBOT-1,IUP,-1
00447     ZT (J)   = ZWT(J) - ZC (J) * ZOMT(J) * ZT (J+1)
00448     ZS (J)   = ZWS(J) - ZC (J) * ZOMS(J) * ZS (J+1)
00449     ZUC(J,2) = ZWU(J) - ZCU(J) * ZOMU(J) * ZUC(J+1,2)
00450     ZE (J)   = ZWE(J) - ZC2(J) * ZOME(J) * ZE (J+1)
00451   ENDDO
00452 !
00453 !
00454   DO J=IUP,IBOT
00455     ZU(J)  = REAL (ZUC(J,2))
00456     ZV(J)  = AIMAG(ZUC(J,2))
00457     !
00458     ZE(J)  = MAX(ZEMIN,ZE(J))
00459   ! Transformation to preserve E <EMAX; secure if mixt crash
00460     ZE(J)  = MIN(ZE(J),ZEMAX)
00461   !bilan TKE
00462     !ZTENDE(J) = (ZE(J)*ZE(J)-ZSEAE(J)**2)/XOCEAN_TSTEP
00463     !ZDIFFV(J) = ZTENDE(J) - ZSEAE(J)*(ZPDY(J) + ZPTH(J))
00464     !
00465     ZSEAT(J)  = ZT(J)
00466     ZSEAS(J)  = ZS(J)    
00467     ZSEAU(J)  = ZU(J)
00468     ZSEAV(J)  = ZV(J)
00469     ZSEAE(J)  = ZE(J)
00470   ENDDO
00471 !
00472 !------------------------------------------------------------------------------
00473 !!       3.     New oceanic profiles
00474 !!              --------------------
00475 !!
00476   IF (LPROGSST) XSEATEND(JPT) = (ZT(IUP)-ZSEAT(IUP)) / XOCEAN_TSTEP
00477   ZSEAT(NOCKMIN)  = ZT(IUP)
00478   ZSEAS(NOCKMIN)  = ZS(IUP)  
00479   ZSEAU(NOCKMIN)  = ZU(IUP)
00480   ZSEAV(NOCKMIN)  = ZV(IUP)
00481   ZSEAE(NOCKMIN)  = ZE(IUP)
00482 
00483   !bathymetrie
00484   DO J=IUP,IBOT
00485     IF (XSEABATH(JPT,J)==0.) THEN
00486       ZSEAT(J)  = ZSEAT(J-1) 
00487       ZSEAS(J)  = ZSEAS(J-1)            
00488       ZSEAU(J)  = ZSEAU(J-1)
00489       ZSEAV(J)  = ZSEAV(J-1)
00490       ZSEAE(J)  = ZSEAE(J-1)
00491     ENDIF
00492   ENDDO
00493 !
00494 !SST diagnosticed with 1D oceanic model
00495   ZSEATEMP = ZSEAT(IUP) + XTT
00496   PSEATEMP(JPT) = ZSEATEMP
00497 !
00498   DO J=IUP,IBOT
00499     XLE   (JPT,J) = ZLE   (J)
00500     XLK   (JPT,J) = ZLE   (J)
00501     XKMEL (JPT,J) = ZKMEL (J)
00502     XKMELM(JPT,J) = ZKMELM(J)
00503   ENDDO
00504 
00505   DO J=IUP-1,IBOT
00506     XSEAT(JPT,J) = ZSEAT(J)
00507     XSEAS(JPT,J) = ZSEAS(J)
00508     XSEAU(JPT,J) = ZSEAU(J)
00509     XSEAV(JPT,J) = ZSEAV(J)
00510     XSEAE(JPT,J) = ZSEAE(J)
00511     XDTFSOL(JPT,J) = ZDTFSOL(J)
00512   ENDDO
00513 
00514   XDTFNSOL(JPT) = ZDTFNSOL
00515 
00516 ENDDO
00517 !  
00518 IF (LHOOK) CALL DR_HOOK('MIXTL_N',1,ZHOOK_HANDLE)
00519 !
00520 !!-------------------------------------------------------------------------------
00521 !!
00522 !ENDDO !end of iterations on sea surfex grid points
00523 !!------------------------------------------------------------------------------
00524 !
00525 END SUBROUTINE MIXTL_n