6 SUBROUTINE mixtl_n (O, OR, PLAT, PFSOL,PFNSOL,PSFTEAU,PSFU,PSFV,PSEATEMP)
76 TYPE(
ocean_t),
INTENT(INOUT) :: O
79 REAL,
DIMENSION(:),
INTENT(IN) :: PLAT
81 REAL,
DIMENSION(:) ,
INTENT(IN) :: PFSOL
82 REAL,
DIMENSION(:) ,
INTENT(IN) :: PFNSOL
83 REAL,
DIMENSION(:) ,
INTENT(IN) :: PSFTEAU
84 REAL,
DIMENSION(:) ,
INTENT(IN) :: PSFU
85 REAL,
DIMENSION(:) ,
INTENT(IN) :: PSFV
87 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PSEATEMP
90 COMPLEX,
DIMENSION(NOCKMIN:NOCKMAX,2) :: ZUC
91 COMPLEX,
DIMENSION(NOCKMIN:NOCKMAX) :: ZAI, ZBI, ZCI
92 COMPLEX,
DIMENSION(NOCKMIN:NOCKMAX) :: ZAU, ZBU, ZCU, ZYU
93 COMPLEX,
DIMENSION(NOCKMIN:NOCKMAX) :: ZOMU,ZWU
95 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZSEAT, ZSEAS, ZSEAE, ZSEAV, ZSEAU
96 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZSEAT_REL, ZSEAS_REL, ZSEAV_REL, ZSEAU_REL
98 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZA, ZB, ZC, ZA2, ZB2, ZC2, ZYT, ZYS, ZYE
100 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ADVT,ADVS
101 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ADVU,ADVV
102 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ADVE
104 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZTDTREL
105 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZSDTREL
106 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZUDTREL
107 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZVDTREL
109 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZLE,ZKMEL,ZKMELM
110 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZKMES,ZKMED,ZKMEWM,ZKMEWS
111 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZPTH,ZPDY
112 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZTENDE,ZDIFFV
113 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZOMT, ZOMS, ZOME
114 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZWT, ZWS, ZWE
115 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZU,ZV,ZT,ZS,ZE
116 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZZDRHO
117 REAL,
DIMENSION(NOCKMIN:NOCKMAX) :: ZDTFSOL
121 REAL :: ZSFU, ZSFV, ZFNSOL, ZFSOL, ZSFTEAU, ZLAT
122 REAL :: ZSEAHMO, ZSEATEMP
124 REAL :: ZSEUIL,ZEMIN,ZEMAX,ZTEST
128 REAL :: ZEE,ZPOT,ZXLME,ZXLPE,ZXROD,ZAUX,ZXDL
129 REAL :: ZDU,ZDV,ZRICH,ZDRHODZ
130 REAL :: ZT1, ZT2, ZT3, ZS1, ZS2
133 INTEGER :: J,JJ,JPT,JIN,IKHML
135 REAL(KIND=JPRB) :: ZHOOK_HANDLE
240 zsfteau = psfteau(jpt)
243 zews = sqrt(zsfu**2+zsfv**2)/
xrhosw 244 zf = 4.*
xpi*sin(zlat*
xpi/180.)/86400.
246 zseat(:) = o%XSEAT(jpt,:)
247 zseas(:) = o%XSEAS(jpt,:)
248 zseau(:) = o%XSEAU(jpt,:)
249 zseav(:) = o%XSEAV(jpt,:)
250 zseae(:) = o%XSEAE(jpt,:)
252 zseau_rel(:) = or%XSEAU_REL(jpt,:)
253 zseav_rel(:) = or%XSEAV_REL(jpt,:)
254 zseat_rel(:) = or%XSEAT_REL(jpt,:)
255 zseas_rel(:) = or%XSEAS_REL(jpt,:)
259 IF (j>=iup .AND. zseae(j)>=(zemin*sqrt(2.))) zseahmo = zseahmo-
xdz1(j)
261 o%XSEAHMO(jpt) = zseahmo
274 zzdrho(:) = (zseat(:)-zt1)*(zt2+zt3*(zseat(:)-zt1)) + zs2*(zseas(:)-zs1)
302 IF ((ztest==0.).AND.(zseae(j)>=zseuil))
THEN 309 IF (or%LDIAPYCNAL)
THEN 312 zdrhodz=(zzdrho(j)-zzdrho(j+1))/
xdz1(j)
313 zdu=zseau(j+1)-zseau(j)
314 zdv=zseav(j+1)-zseav(j)
315 IF((zdu*zdu+zdv*zdv).LE.1.e-7)
THEN 318 zrich = -zalg*zdrhodz/(zdu**2+zdv**2)/
xk4(j)
326 ELSEIF(zrich>=0.)
THEN 327 zkmes(j) = 5.e-3*(1.-(zrich/0.7)*(zrich/0.7))**3
344 zxrod=(zzdrho(j)+ zzdrho(j+1))*0.5
350 zaux=zpot +
xdz2(jj)*(zzdrho(jj)-zxrod)
358 zxlme=2.*(
xz2(j)-
xzhoc(j+1))/(zzdrho(j+1)-zxrod)/zalg
359 zxlme=sqrt(zxlme)*zseae(j)
362 zxdl=(zee-zpot)/(zzdrho(jin+1)-zxrod)
371 zaux=zpot +
xdz2(jj+1)*(zxrod-zzdrho(jj+1))
375 zxlpe=zxlpe+
xdz2(jj+1)
379 zxlpe=2.*(
xz2(j)-
xzhoc(j))/(zzdrho(j)-zxrod)/zalg
380 zxlpe=sqrt(zxlpe)*zseae(j)
383 zxdl=- (zee-zpot)/(zzdrho(jin)-zxrod)
388 zle(j)=sqrt(zxlme*zxlpe)
389 zkmel(j)=
xckl*zle(j)*zseae(j)
393 zle(ibot)=zle(ibot-1)
394 zkmel(ibot)=
xckl*zle(ibot)*zseae(ibot)
397 zkmelm(iup)=zkmel(iup)
399 zkmelm(j)= (zkmel(j)+zkmel(j-1))/2.
407 IF (or%LREL_CUR)
THEN 409 zudtrel(j) = - (zseau(j)-zseau_rel(j)) / or%XTAU_REL
410 zvdtrel(j) = - (zseav(j)-zseav_rel(j)) / or%XTAU_REL
425 ztdtrel(j) = - (zseat(j)-zseat_rel(j)) / or%XTAU_REL
426 zsdtrel(j) = - (zseas(j)-zseas_rel(j)) / or%XTAU_REL
430 IF (or%LFLX_CORR)
THEN 434 ztdtrel(iup) = or%XQCORR *(zseat_rel(iup)-zseat(iup)) / (
xrhosw*
xcpsw)
435 zfnsol = zfnsol + ztdtrel(iup)
439 zdtfnsol = zfnsol/
xdz2(iup)
453 za(j) = o%XOCEAN_TSTEP *
xk1(j) * (zkmel(j-1) + zkmes(j-1) + zkmews(j-1) + zkmed(j-1))
454 zai(j) = o%XOCEAN_TSTEP *
xk1(j) * (zkmel(j-1) + zkmes(j-1) + zkmewm(j-1) + zkmed(j-1))
455 za2(j) = o%XOCEAN_TSTEP *
xk2(j) * zkmelm(j)
457 zc(j) = o%XOCEAN_TSTEP *
xk2(j) * (zkmel(j) + zkmes(j) + zkmews(j) + zkmed(j))
458 zci(j) = o%XOCEAN_TSTEP *
xk2(j) * (zkmel(j) + zkmes(j) + zkmewm(j) + zkmed(j))
459 zc2(j) = o%XOCEAN_TSTEP *
xk3(j) * zkmelm(j+1)
462 zb(j) = 1. - za(j) - zc(j)
463 zbi(j) = 1. - zai(j) - zci(j)
464 zb2(j) = 1. - za2(j) - zc2(j) + o%XOCEAN_TSTEP * zseae(j)/zle(j)/
xzce 466 zau(j) = zai(j) * (1.,0.)
467 zcu(j) = zci(j) * (1.,0.)
468 zbu(j) = zbi(j) * (1.,0.) + o%XOCEAN_TSTEP * zf *
xgama * (0.,1.)
471 zomt(j) = 1./(zb(j) - za(j) * zomt(j-1) * zc(j-1))
472 zoms(j) = 1./(zb(j) - za(j) * zoms(j-1) * zc(j-1))
473 zomu(j) = 1./(zbu(j) - zau(j) * zomu(j-1) * zcu(j-1))
474 zome(j) = 1./(zb2(j) - za2(j) * zome(j-1) * zc2(j-1))
477 zyt(j) = zseat(j) + o%XOCEAN_TSTEP * (zdtfsol(j) + advt(j))
478 zys(j) = zseas(j) + o%XOCEAN_TSTEP * ( advs(j))
480 IF (.NOT.or%LFLX_CORR) zyt(j) = zyt(j) + o%XOCEAN_TSTEP * ztdtrel(j)
481 zys(j) = zys(j) + o%XOCEAN_TSTEP * zsdtrel(j)
484 zuc(j,1) = zseau(j)*(1.,0.) + zseav(j)*(0.,1.)
485 zyu(j) = zuc(j,1) + o%XOCEAN_TSTEP * (zuc(j,1)*zf*(1.-
xgama)*(0.,-1.) + advu(j)*(1.,0.) + advv(j)*(0.,1.))
487 IF (or%LREL_CUR) zyu(j) = zyu(j) + o%XOCEAN_TSTEP * (zudtrel(j)*(1.,0.) + zvdtrel(j)*(0.,1.))
490 zdrhodz = (zzdrho(j)-zzdrho(j+1))/
xdz1(j)
491 zdu = zseau(j+1)-zseau(j)
492 zdv = zseav(j+1)-zseav(j)
494 zpth(j) =
xckl * zle(j) * zalg * zdrhodz
495 zpdy(j) =
xckl * zle(j) *
xk4(j) * (zdu**2+zdv**2)
501 zye(j) = zseae(j) + o%XOCEAN_TSTEP * (0.5 * zseae(j)**2/zle(j)/
xzce + adve(j)) + zpth(j) + zpdy(j)
504 zyt(j) = zyt(j) + o%XOCEAN_TSTEP * zdtfnsol
505 zys(j) = zys(j) + o%XOCEAN_TSTEP * zseas(iup) * zsfteau /
xdz2(iup)
506 zyu(j) = zyu(j) - o%XOCEAN_TSTEP * ( zsfu*(1.,0.) + zsfv*(0.,1.) ) /
xdz2(iup) /
xrhosw 507 zye(j) = zye(j) + o%XOCEAN_TSTEP * zews /
xdz1(iup)
511 zwt(j) = zomt(j) * (zyt(j)- za(j)*zwt(j-1))
512 zws(j) = zoms(j) * (zys(j)- za(j)*zws(j-1))
513 zwu(j) = zomu(j) * (zyu(j)- zau(j)*zwu(j-1))
514 zwe(j) = zome(j) * (zye(j)- za2(j)*zwe(j-1))
522 zuc(ibot,2) = zwu(ibot)
525 zt(j) = zwt(j) - zc(j) * zomt(j) * zt(j+1)
526 zs(j) = zws(j) - zc(j) * zoms(j) * zs(j+1)
527 zuc(j,2) = zwu(j) - zcu(j) * zomu(j) * zuc(j+1,2)
528 ze(j) = zwe(j) - zc2(j) * zome(j) * ze(j+1)
533 zu(j) =
real(zuc(j,2))
534 zv(j) = aimag(zuc(j,2))
536 ze(j) = max(zemin,ze(j))
538 ze(j) = min(ze(j),zemax)
554 IF (o%LPROGSST) o%XSEATEND(jpt) = (zt(iup)-o%XSEAT(jpt,iup)) / o%XOCEAN_TSTEP
563 IF (o%XSEABATH(jpt,j)==0.)
THEN 564 zseat(j) = zseat(j-1)
565 zseas(j) = zseas(j-1)
566 zseau(j) = zseau(j-1)
567 zseav(j) = zseav(j-1)
568 zseae(j) = zseae(j-1)
573 zseatemp = zseat(iup) +
xtt 574 pseatemp(jpt) = zseatemp
577 o%XLE (jpt,j) = zle(j)
578 o%XLK (jpt,j) = zle(j)
579 o%XKMEL (jpt,j) = zkmel(j)
580 o%XKMELM(jpt,j) = zkmelm(j)
584 o%XSEAT(jpt,j) = zseat(j)
585 o%XSEAS(jpt,j) = zseas(j)
586 o%XSEAU(jpt,j) = zseau(j)
587 o%XSEAV(jpt,j) = zseav(j)
588 o%XSEAE(jpt,j) = zseae(j)
589 o%XDTFSOL(jpt,j) = zdtfsol(j)
592 o%XDTFNSOL(jpt) = zdtfnsol
real, dimension(:), pointer xk4
real, dimension(:), pointer xzhoc
real, dimension(:), pointer xk1
real, dimension(:), pointer xdz2
real, dimension(:), pointer xk3
real, dimension(:), pointer xk2
subroutine mixtl_n(O, OR, PLAT, PFSOL, PFNSOL, PSFTEAU, PSFU, PSFV, PSEATEMP)
real, dimension(:), pointer xz2
real, dimension(:), pointer xdz1
real, dimension(:), pointer xray