SURFEX v7.3
General documentation of Surfex
|
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