63 INTEGER :: I,ITMP,NODE_NORTHPOLE_GL,IERR,NDOM
64 INTEGER,
ALLOCATABLE :: TMP(:)
76 IF(abs(
vy(i)-90.0_sp) .LE. 10e-4)
THEN 82 IF (ndom .GT. 1)
CALL fatal_error(
'Found more than one north pole node in the grid',&
83 &
'This should never happen, TGE should crash first?')
94 WRITE(ipt,*)
"! //////////////////////////////////////////////" 96 WRITE(ipt,*)
"! NO NORTH POLE FOUND; PROCEED WITH SPHERICAL MODEL!" 98 WRITE(ipt,*)
"! FOUND THE GLOBAL NORTH POLE NODE::", node_northpole_gl
100 WRITE(ipt,*)
"THE NORTH POLE IS ON A PROCESSOR BOUNDARY" 101 WRITE(ipt,*)
"Be afraid, be very afraid...." 102 CALL fatal_error(
"THE NORTH POLE IS ON A PROCESSOR BOUNDARY")
105 WRITE(ipt,*)
"! //////////////////////////////////////////////" 119 ALLOCATE(tmp(mt)); tmp = 0
134 ALLOCATE(tmp(nt)); tmp = 0
157 INTEGER,
ALLOCATABLE :: TEMP(:)
163 ALLOCATE(temp(ne)); temp = zero
179 ALLOCATE(temp(ncv)); temp = zero
205 INTEGER :: I,J,K,IA,IB,J1,J2,K1,K2,K3,I1,I2,II
206 REAL(SP) :: DIJ,ELIJ,XIJ,YIJ,UIJ,VIJ
207 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
208 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ
209 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP
210 REAL(SP) :: XFLUX(0:NT),YFLUX(0:NT)
211 REAL(SP) :: FACT,FM1,ISWETTMP
215 REAL(SP) :: UIJ1_TMP,VIJ1_TMP,UIJ2_TMP,VIJ2_TMP,TXXIJ_TMP,TYYIJ_TMP
216 REAL(SP) :: XADV_TMP,YADV_TMP,PSTX_TMP,PSTY_TMP
217 REAL(SP) :: UIJ_TMP,VIJ_TMP,UN_TMP
218 REAL(SP) :: DLTXC_TMP,DLTYC_TMP
219 REAL(SP) :: VX1_TMP,VX2_TMP,VY1_TMP,VY2_TMP
220 REAL(SP) :: UAIA,VAIA,UAIB,VAIB,UAK1,VAK1,UAK2,VAK2,UAK3,VAK3
221 REAL(SP) :: XIJC_TMP,YIJC_TMP,XCIA_TMP,YCIA_TMP,XCIB_TMP,YCIB_TMP
222 REAL(SP) :: XIJ_TMP,YIJ_TMP
226 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
234 SELECT CASE(horizontal_mixing_type)
242 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
243 & trim(horizontal_mixing_type) )
277 dij=0.5_sp*(
d(j1)+
d(j2))
278 elij=0.5_sp*(
el(j1)+
el(j2))
290 uaia = -
va(ia)*cos(
xc(ia)*deg2rad)-
ua(ia)*sin(
xc(ia)*deg2rad)
291 vaia = -
va(ia)*sin(
xc(ia)*deg2rad)+
ua(ia)*cos(
xc(ia)*deg2rad)
292 uak1 = -
va(k1)*cos(
xc(k1)*deg2rad)-
ua(k1)*sin(
xc(k1)*deg2rad)
293 vak1 = -
va(k1)*sin(
xc(k1)*deg2rad)+
ua(k1)*cos(
xc(k1)*deg2rad)
294 uak2 = -
va(k2)*cos(
xc(k2)*deg2rad)-
ua(k2)*sin(
xc(k2)*deg2rad)
295 vak2 = -
va(k2)*sin(
xc(k2)*deg2rad)+
ua(k2)*cos(
xc(k2)*deg2rad)
296 uak3 = -
va(k3)*cos(
xc(k3)*deg2rad)-
ua(k3)*sin(
xc(k3)*deg2rad)
297 vak3 = -
va(k3)*sin(
xc(k3)*deg2rad)+
ua(k3)*cos(
xc(k3)*deg2rad)
308 xijc_tmp = rearth * cos(
yijc(i)*deg2rad) * cos(
xijc(i)*deg2rad) &
309 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
310 yijc_tmp = rearth * cos(
yijc(i)*deg2rad) * sin(
xijc(i)*deg2rad) &
311 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
312 xcia_tmp = rearth * cos(
yc(ia)*deg2rad) * cos(
xc(ia)*deg2rad) &
313 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
314 ycia_tmp = rearth * cos(
yc(ia)*deg2rad) * sin(
xc(ia)*deg2rad) &
315 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
317 xij_tmp = xijc_tmp-xcia_tmp
318 yij_tmp = yijc_tmp-ycia_tmp
320 uij1=uaia+cofa1*xij_tmp+cofa2*yij_tmp
321 vij1=vaia+cofa5*xij_tmp+cofa6*xij_tmp
328 uaib = -
va(ib)*cos(
xc(ib)*deg2rad)-
ua(ib)*sin(
xc(ib)*deg2rad)
329 vaib = -
va(ib)*sin(
xc(ib)*deg2rad)+
ua(ib)*cos(
xc(ib)*deg2rad)
330 uak1 = -
va(k1)*cos(
xc(k1)*deg2rad)-
ua(k1)*sin(
xc(k1)*deg2rad)
331 vak1 = -
va(k1)*sin(
xc(k1)*deg2rad)+
ua(k1)*cos(
xc(k1)*deg2rad)
332 uak2 = -
va(k2)*cos(
xc(k2)*deg2rad)-
ua(k2)*sin(
xc(k2)*deg2rad)
333 vak2 = -
va(k2)*sin(
xc(k2)*deg2rad)+
ua(k2)*cos(
xc(k2)*deg2rad)
334 uak3 = -
va(k3)*cos(
xc(k3)*deg2rad)-
ua(k3)*sin(
xc(k3)*deg2rad)
335 vak3 = -
va(k3)*sin(
xc(k3)*deg2rad)+
ua(k3)*cos(
xc(k3)*deg2rad)
346 xcib_tmp = rearth * cos(
yc(ib)*deg2rad) * cos(
xc(ib)*deg2rad) &
347 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
348 ycib_tmp = rearth * cos(
yc(ib)*deg2rad) * sin(
xc(ib)*deg2rad) &
349 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
351 xij_tmp = xijc_tmp-xcib_tmp
352 yij_tmp = yijc_tmp-ycib_tmp
353 uij2=uaib+cofa3*xij_tmp+cofa4*yij_tmp
354 vij2=vaib+cofa7*xij_tmp+cofa8*yij_tmp
357 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
358 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
365 vx1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * cos(
vx(
ienode(i,1))*deg2rad) &
366 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
367 vy1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * sin(
vx(
ienode(i,1))*deg2rad) &
368 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
370 vx2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * cos(
vx(
ienode(i,2))*deg2rad) &
371 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
372 vy2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * sin(
vx(
ienode(i,2))*deg2rad) &
373 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
375 dltxc_tmp = vx2_tmp-vx1_tmp
376 dltyc_tmp = vy2_tmp-vy1_tmp
379 txxij=(cofa1+cofa3)*viscof
380 tyyij=(cofa6+cofa8)*viscof
381 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
382 fxx=dij*(txxij*dltyc_tmp-txyij*dltxc_tmp)
383 fyy=dij*(txyij*dltyc_tmp-tyyij*dltxc_tmp)
390 uij_tmp=0.5_sp*(uij1+uij2)
391 vij_tmp=0.5_sp*(vij1+vij2)
392 un_tmp=-uij_tmp*dltyc_tmp + vij_tmp*dltxc_tmp
397 xadv_tmp=dij*un_tmp*&
398 ((1.0_sp-sign(1.0_sp,un_tmp))*uij2_tmp &
399 +(1.0_sp+sign(1.0_sp,un_tmp))*uij1_tmp)*0.5_sp
400 yadv_tmp=dij*un_tmp* &
401 ((1.0_sp-sign(1.0_sp,un_tmp))*vij2_tmp &
402 +(1.0_sp+sign(1.0_sp,un_tmp))*vij1_tmp)*0.5_sp
405 xflux(ia)=xflux(ia)+(xadv_tmp+fxx*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
406 yflux(ia)=yflux(ia)+(yadv_tmp+fyy*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
407 xflux(ib)=xflux(ib)-(xadv_tmp+fxx*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
408 yflux(ib)=yflux(ib)-(yadv_tmp+fyy*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
410 xflux(ia)=xflux(ia)+(xadv_tmp+fxx*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
411 yflux(ia)=yflux(ia)+(yadv_tmp+fyy*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
413 xflux(ib)=xflux(ib)-(xadv_tmp+fxx*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
414 yflux(ib)=yflux(ib)-(yadv_tmp+fyy*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
435 pstx(ia)=
pstx(ia)-
grav_e(ia)*
d1(ia)*elij*dltyc_tmp/(2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
436 psty(ia)=
psty(ia)+
grav_e(ia)*
d1(ia)*elij*dltxc_tmp/(2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
437 pstx(ib)=
pstx(ib)+
grav_e(ib)*
d1(ib)*elij*dltyc_tmp/(2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
438 psty(ib)=
psty(ib)-
grav_e(ib)*
d1(ib)*elij*dltxc_tmp/(2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
440 pstx(ia)=
pstx(ia)-
grav_e(ia)*
d1(ia)*elij*dltyc_tmp/(2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
441 psty(ia)=
psty(ia)+
grav_e(ia)*
d1(ia)*elij*dltxc_tmp/(2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
443 pstx(ib)=
pstx(ib)+
grav_e(ib)*
d1(ib)*elij*dltyc_tmp/(2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
444 psty(ib)=
psty(ib)-
grav_e(ib)*
d1(ib)*elij*dltxc_tmp/(2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
462 REAL(SP) :: XFLUX(0:NT,KB),YFLUX(0:NT,KB)
464 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
465 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ,UN
466 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP,TPA,TPB
467 REAL(SP) :: XIJA,YIJA,XIJB,YIJB,UIJ,VIJ
469 INTEGER :: I,IA,IB,J1,J2,K1,K2,K3,K4,K5,K6,K,II,J,I1,I2
471 REAL(SP) :: UIJ1_TMP,VIJ1_TMP,UIJ2_TMP,VIJ2_TMP,TXXIJ_TMP,TYYIJ_TMP
472 REAL(SP) :: XADV_TMP,YADV_TMP
473 REAL(SP) :: UIJ_TMP,VIJ_TMP,UN_TMP
474 REAL(SP) :: DLTXC_TMP,DLTYC_TMP
475 REAL(SP) :: VX1_TMP,VX2_TMP,VY1_TMP,VY2_TMP
476 REAL(SP) :: UIA,VIA,UIB,VIB,UK1,VK1,UK2,VK2,UK3,VK3,UK4,VK4,UK5,VK5,UK6,VK6
477 REAL(SP) :: XIJC_TMP,YIJC_TMP,XCIA_TMP,YCIA_TMP,XCIB_TMP,YCIB_TMP
479 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
486 SELECT CASE(horizontal_mixing_type)
494 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
495 & trim(horizontal_mixing_type) )
537 xijc_tmp = rearth * cos(
yijc(i)*deg2rad) * cos(
xijc(i)*deg2rad) &
538 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
539 yijc_tmp = rearth * cos(
yijc(i)*deg2rad) * sin(
xijc(i)*deg2rad) &
540 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
541 xcia_tmp = rearth * cos(
yc(ia)*deg2rad) * cos(
xc(ia)*deg2rad) &
542 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
543 ycia_tmp = rearth * cos(
yc(ia)*deg2rad) * sin(
xc(ia)*deg2rad) &
544 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
545 xcib_tmp = rearth * cos(
yc(ib)*deg2rad) * cos(
xc(ib)*deg2rad) &
546 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
547 ycib_tmp = rearth * cos(
yc(ib)*deg2rad) * sin(
xc(ib)*deg2rad) &
548 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
550 xija = xijc_tmp-xcia_tmp
551 yija = yijc_tmp-ycia_tmp
552 xijb = xijc_tmp-xcib_tmp
553 yijb = yijc_tmp-ycib_tmp
557 dij= 0.5_sp*(
dt(j1)*
dz(j1,k)+
dt(j2)*
dz(j2,k))
559 uia = -
v(ia,k)*cos(
xc(ia)*deg2rad)-
u(ia,k)*sin(
xc(ia)*deg2rad)
560 via = -
v(ia,k)*sin(
xc(ia)*deg2rad)+
u(ia,k)*cos(
xc(ia)*deg2rad)
561 uib = -
v(ib,k)*cos(
xc(ib)*deg2rad)-
u(ib,k)*sin(
xc(ib)*deg2rad)
562 vib = -
v(ib,k)*sin(
xc(ib)*deg2rad)+
u(ib,k)*cos(
xc(ib)*deg2rad)
563 uk1 = -
v(k1,k)*cos(
xc(k1)*deg2rad)-
u(k1,k)*sin(
xc(k1)*deg2rad)
564 vk1 = -
v(k1,k)*sin(
xc(k1)*deg2rad)+
u(k1,k)*cos(
xc(k1)*deg2rad)
565 uk2 = -
v(k2,k)*cos(
xc(k2)*deg2rad)-
u(k2,k)*sin(
xc(k2)*deg2rad)
566 vk2 = -
v(k2,k)*sin(
xc(k2)*deg2rad)+
u(k2,k)*cos(
xc(k2)*deg2rad)
567 uk3 = -
v(k3,k)*cos(
xc(k3)*deg2rad)-
u(k3,k)*sin(
xc(k3)*deg2rad)
568 vk3 = -
v(k3,k)*sin(
xc(k3)*deg2rad)+
u(k3,k)*cos(
xc(k3)*deg2rad)
569 uk4 = -
v(k4,k)*cos(
xc(k4)*deg2rad)-
u(k4,k)*sin(
xc(k4)*deg2rad)
570 vk4 = -
v(k4,k)*sin(
xc(k4)*deg2rad)+
u(k4,k)*cos(
xc(k4)*deg2rad)
571 uk5 = -
v(k5,k)*cos(
xc(k5)*deg2rad)-
u(k5,k)*sin(
xc(k5)*deg2rad)
572 vk5 = -
v(k5,k)*sin(
xc(k5)*deg2rad)+
u(k5,k)*cos(
xc(k5)*deg2rad)
573 uk6 = -
v(k6,k)*cos(
xc(k6)*deg2rad)-
u(k6,k)*sin(
xc(k6)*deg2rad)
574 vk6 = -
v(k6,k)*sin(
xc(k6)*deg2rad)+
u(k6,k)*cos(
xc(k6)*deg2rad)
584 uij1=uia+cofa1*xija+cofa2*yija
585 vij1=via+cofa5*xija+cofa6*yija
596 uij2=uib+cofa3*xijb+cofa4*yijb
597 vij2=vib+cofa7*xijb+cofa8*yijb
600 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
601 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
607 vx1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * cos(
vx(
ienode(i,1))*deg2rad) &
608 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
609 vy1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * sin(
vx(
ienode(i,1))*deg2rad)&
610 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
612 vx2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * cos(
vx(
ienode(i,2))*deg2rad)&
613 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
614 vy2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * sin(
vx(
ienode(i,2))*deg2rad)&
615 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
617 dltxc_tmp = vx2_tmp-vx1_tmp
618 dltyc_tmp = vy2_tmp-vy1_tmp
620 txxij=(cofa1+cofa3)*viscof
621 tyyij=(cofa6+cofa8)*viscof
622 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
623 fxx=dij*(txxij*dltyc_tmp-txyij*dltxc_tmp)
624 fyy=dij*(txyij*dltyc_tmp-tyyij*dltxc_tmp)
631 uij_tmp=0.5_sp*(uij1+uij2)
632 vij_tmp=0.5_sp*(vij1+vij2)
633 un_tmp=-uij_tmp*dltyc_tmp + vij_tmp*dltxc_tmp
641 xadv_tmp=dij*un_tmp*&
642 ((1.0_sp-sign(1.0_sp,un_tmp))*uij2_tmp &
643 +(1.0_sp+sign(1.0_sp,un_tmp))*uij1_tmp)*0.5_sp
644 yadv_tmp=dij*un_tmp* &
645 ((1.0_sp-sign(1.0_sp,un_tmp))*vij2_tmp &
646 +(1.0_sp+sign(1.0_sp,un_tmp))*vij1_tmp)*0.5_sp
648 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
649 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
650 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
651 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
653 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
654 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
656 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
657 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
673 REAL(SP) :: XFLUX(0:NT,KB),YFLUX(0:NT,KB)
674 REAL(SP) :: PSTX_TM(0:NT,KB),PSTY_TM(0:NT,KB)
675 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
676 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ,UN
677 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP,TPA,TPB
678 REAL(SP) :: XIJA,YIJA,XIJB,YIJB,UIJ,VIJ
679 REAL(SP) :: SITA,DIJ,ELIJ,TMPA,TMPB,TMP,XFLUXV,YFLUXV
680 REAL(SP) :: FACT,FM1,EXFLUX,ISWETTMP
681 INTEGER :: I,IA,IB,J1,J2,K1,K2,K3,K4,K5,K6,K,II,J,I1,I2
684 REAL(SP) :: UIJ1_TMP,VIJ1_TMP,UIJ2_TMP,VIJ2_TMP,UIJ3_TMP,VIJ3_TMP
685 REAL(SP) :: U_TMP,V_TMP,UF_TMP,VF_TMP
686 REAL(SP) :: TXXIJ_TMP,TYYIJ_TMP
687 REAL(SP) :: XADV_TMP,YADV_TMP,PSTX_TMP,PSTY_TMP
688 REAL(SP) :: UIJ_TMP,VIJ_TMP,EXFLUX_TMP
689 REAL(SP) :: DLTXC_TMP,DLTYC_TMP
690 REAL(SP) :: VX1_TMP,VX2_TMP,VY1_TMP,VY2_TMP
691 REAL(SP) :: UIA,VIA,UIB,VIB,UK1,VK1,UK2,VK2,UK3,VK3,UK4,VK4,UK5,VK5,UK6,VK6
692 REAL(SP) :: XIJC_TMP,YIJC_TMP,XCIA_TMP,YCIA_TMP,XCIB_TMP,YCIB_TMP
696 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
698 INTEGER :: STG, K_STG
705 SELECT CASE(horizontal_mixing_type)
713 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
714 & trim(horizontal_mixing_type) )
729 pstx_tm(ia,k) = 0.0_sp
730 psty_tm(ia,k) = 0.0_sp
735 pstx_tm(ib,k) = 0.0_sp
736 psty_tm(ib,k) = 0.0_sp
754 elij=0.5_sp*(
egf(j1)+
egf(j2))
767 xijc_tmp = rearth * cos(
yijc(i)*deg2rad) * cos(
xijc(i)*deg2rad) &
768 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
769 yijc_tmp = rearth * cos(
yijc(i)*deg2rad) * sin(
xijc(i)*deg2rad) &
770 * 2._sp /(1._sp+sin(
yijc(i)*deg2rad))
772 xcia_tmp = rearth * cos(
yc(ia)*deg2rad) * cos(
xc(ia)*deg2rad) &
773 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
774 ycia_tmp = rearth * cos(
yc(ia)*deg2rad) * sin(
xc(ia)*deg2rad) &
775 * 2._sp /(1._sp+sin(
yc(ia)*deg2rad))
776 xcib_tmp = rearth * cos(
yc(ib)*deg2rad) * cos(
xc(ib)*deg2rad) &
777 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
778 ycib_tmp = rearth * cos(
yc(ib)*deg2rad) * sin(
xc(ib)*deg2rad) &
779 * 2._sp /(1._sp+sin(
yc(ib)*deg2rad))
781 xija = xijc_tmp-xcia_tmp
782 yija = yijc_tmp-ycia_tmp
783 xijb = xijc_tmp-xcib_tmp
784 yijb = yijc_tmp-ycib_tmp
788 dij=0.5_sp*(
dt(j1)*
dz(j1,k)+
dt(j2)*
dz(j2,k))
790 uia = -
v(ia,k)*cos(
xc(ia)*deg2rad)-
u(ia,k)*sin(
xc(ia)*deg2rad)
791 via = -
v(ia,k)*sin(
xc(ia)*deg2rad)+
u(ia,k)*cos(
xc(ia)*deg2rad)
792 uib = -
v(ib,k)*cos(
xc(ib)*deg2rad)-
u(ib,k)*sin(
xc(ib)*deg2rad)
793 vib = -
v(ib,k)*sin(
xc(ib)*deg2rad)+
u(ib,k)*cos(
xc(ib)*deg2rad)
794 uk1 = -
v(k1,k)*cos(
xc(k1)*deg2rad)-
u(k1,k)*sin(
xc(k1)*deg2rad)
795 vk1 = -
v(k1,k)*sin(
xc(k1)*deg2rad)+
u(k1,k)*cos(
xc(k1)*deg2rad)
796 uk2 = -
v(k2,k)*cos(
xc(k2)*deg2rad)-
u(k2,k)*sin(
xc(k2)*deg2rad)
797 vk2 = -
v(k2,k)*sin(
xc(k2)*deg2rad)+
u(k2,k)*cos(
xc(k2)*deg2rad)
798 uk3 = -
v(k3,k)*cos(
xc(k3)*deg2rad)-
u(k3,k)*sin(
xc(k3)*deg2rad)
799 vk3 = -
v(k3,k)*sin(
xc(k3)*deg2rad)+
u(k3,k)*cos(
xc(k3)*deg2rad)
800 uk4 = -
v(k4,k)*cos(
xc(k4)*deg2rad)-
u(k4,k)*sin(
xc(k4)*deg2rad)
801 vk4 = -
v(k4,k)*sin(
xc(k4)*deg2rad)+
u(k4,k)*cos(
xc(k4)*deg2rad)
802 uk5 = -
v(k5,k)*cos(
xc(k5)*deg2rad)-
u(k5,k)*sin(
xc(k5)*deg2rad)
803 vk5 = -
v(k5,k)*sin(
xc(k5)*deg2rad)+
u(k5,k)*cos(
xc(k5)*deg2rad)
804 uk6 = -
v(k6,k)*cos(
xc(k6)*deg2rad)-
u(k6,k)*sin(
xc(k6)*deg2rad)
805 vk6 = -
v(k6,k)*sin(
xc(k6)*deg2rad)+
u(k6,k)*cos(
xc(k6)*deg2rad)
816 uij1=uia+cofa1*xija+cofa2*yija
817 vij1=via+cofa5*xija+cofa6*yija
828 uij2=uib+cofa3*xijb+cofa4*yijb
829 vij2=vib+cofa7*xijb+cofa8*yijb
833 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
834 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
841 vx1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * cos(
vx(
ienode(i,1))*deg2rad) &
842 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
843 vy1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * sin(
vx(
ienode(i,1))*deg2rad)&
844 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
846 vx2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * cos(
vx(
ienode(i,2))*deg2rad)&
847 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
848 vy2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * sin(
vx(
ienode(i,2))*deg2rad)&
849 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
851 dltxc_tmp = vx2_tmp-vx1_tmp
852 dltyc_tmp = vy2_tmp-vy1_tmp
854 txxij=(cofa1+cofa3)*viscof
855 tyyij=(cofa6+cofa8)*viscof
856 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
857 fxx=dij*(txxij*dltyc_tmp-txyij*dltxc_tmp)
858 fyy=dij*(txyij*dltyc_tmp-tyyij*dltxc_tmp)
866 uij_tmp=0.5_sp*(uij1+uij2)
867 vij_tmp=0.5_sp*(vij1+vij2)
868 exflux_tmp = dij*(-uij_tmp*dltyc_tmp + vij_tmp*dltxc_tmp)
875 xadv_tmp=exflux_tmp*&
876 ((1.0_sp-sign(1.0_sp,exflux_tmp))*uij2_tmp &
877 +(1.0_sp+sign(1.0_sp,exflux_tmp))*uij1_tmp)*0.5_sp
878 yadv_tmp=exflux_tmp* &
879 ((1.0_sp-sign(1.0_sp,exflux_tmp))*vij2_tmp &
880 +(1.0_sp+sign(1.0_sp,exflux_tmp))*vij1_tmp)*0.5_sp
882 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
883 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
884 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
885 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
887 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
888 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
890 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
891 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
894 vx1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * cos(
vx(
ienode(i,1))*deg2rad) &
895 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
896 vy1_tmp = rearth * cos(
vy(
ienode(i,1))*deg2rad) * sin(
vx(
ienode(i,1))*deg2rad) &
897 * 2._sp /(1._sp+sin(
vy(
ienode(i,1))*deg2rad))
899 vx2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * cos(
vx(
ienode(i,2))*deg2rad) &
900 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
901 vy2_tmp = rearth * cos(
vy(
ienode(i,2))*deg2rad) * sin(
vx(
ienode(i,2))*deg2rad) &
902 * 2._sp /(1._sp+sin(
vy(
ienode(i,2))*deg2rad))
904 dltxc_tmp = vx2_tmp-vx1_tmp
905 dltyc_tmp = vy2_tmp-vy1_tmp
908 pstx_tm(ia,k)=pstx_tm(ia,k)-
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltyc_tmp/ &
909 (2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
910 psty_tm(ia,k)=psty_tm(ia,k)+
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltxc_tmp/ &
911 (2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
912 pstx_tm(ib,k)=pstx_tm(ib,k)+
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltyc_tmp/ &
913 (2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
914 psty_tm(ib,k)=psty_tm(ib,k)-
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltxc_tmp/ &
915 (2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
917 pstx_tm(ia,k)=pstx_tm(ia,k)-
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltyc_tmp/ &
918 (2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
919 psty_tm(ia,k)=psty_tm(ia,k)+
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltxc_tmp/ &
920 (2._sp /(1._sp+sin(
yc(ia)*deg2rad)))
922 pstx_tm(ib,k)=pstx_tm(ib,k)+
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltyc_tmp/ &
923 (2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
924 psty_tm(ib,k)=psty_tm(ib,k)-
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltxc_tmp/ &
925 (2._sp /(1._sp+sin(
yc(ib)*deg2rad)))
934 xflux(i,k)=xflux(i,k)+pstx_tm(i,k)
935 yflux(i,k)=yflux(i,k)+psty_tm(i,k)
947 uij1_tmp = -
v(i,k)*cos(
xc(i)*deg2rad)-
u(i,k)*sin(
xc(i)*deg2rad)
948 vij1_tmp = -
v(i,k)*sin(
xc(i)*deg2rad)+
u(i,k)*cos(
xc(i)*deg2rad)
949 uij2_tmp = -
v(i,k+1)*cos(
xc(i)*deg2rad)-
u(i,k+1)*sin(
xc(i)*deg2rad)
950 vij2_tmp = -
v(i,k+1)*sin(
xc(i)*deg2rad)+
u(i,k+1)*cos(
xc(i)*deg2rad)
951 xfluxv=-
w(i,k+1)*(uij1_tmp*
dz1(i,k+1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
952 yfluxv=-
w(i,k+1)*(vij1_tmp*
dz1(i,k+1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
953 ELSE IF(k == kbm1)
THEN 954 uij1_tmp = -
v(i,k)*cos(
xc(i)*deg2rad)-
u(i,k)*sin(
xc(i)*deg2rad)
955 vij1_tmp = -
v(i,k)*sin(
xc(i)*deg2rad)+
u(i,k)*cos(
xc(i)*deg2rad)
956 uij2_tmp = -
v(i,k-1)*cos(
xc(i)*deg2rad)-
u(i,k-1)*sin(
xc(i)*deg2rad)
957 vij2_tmp = -
v(i,k-1)*sin(
xc(i)*deg2rad)+
u(i,k-1)*cos(
xc(i)*deg2rad)
958 xfluxv=
w(i,k)*(uij1_tmp*
dz1(i,k-1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))
959 yfluxv=
w(i,k)*(vij1_tmp*
dz1(i,k-1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))
961 uij1_tmp = -
v(i,k)*cos(
xc(i)*deg2rad)-
u(i,k)*sin(
xc(i)*deg2rad)
962 vij1_tmp = -
v(i,k)*sin(
xc(i)*deg2rad)+
u(i,k)*cos(
xc(i)*deg2rad)
963 uij2_tmp = -
v(i,k-1)*cos(
xc(i)*deg2rad)-
u(i,k-1)*sin(
xc(i)*deg2rad)
964 vij2_tmp = -
v(i,k-1)*sin(
xc(i)*deg2rad)+
u(i,k-1)*cos(
xc(i)*deg2rad)
965 uij3_tmp = -
v(i,k+1)*cos(
xc(i)*deg2rad)-
u(i,k+1)*sin(
xc(i)*deg2rad)
966 vij3_tmp = -
v(i,k+1)*sin(
xc(i)*deg2rad)+
u(i,k+1)*cos(
xc(i)*deg2rad)
967 xfluxv=
w(i,k)*(uij1_tmp*
dz1(i,k-1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))- &
968 w(i,k+1)*(uij1_tmp*
dz1(i,k+1)+uij3_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
969 yfluxv=
w(i,k)*(vij1_tmp*
dz1(i,k-1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))- &
970 w(i,k+1)*(vij1_tmp*
dz1(i,k+1)+vij3_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
972 u_tmp = -
v(i,k)*cos(
xc(i)*deg2rad)-
u(i,k)*sin(
xc(i)*deg2rad)
973 v_tmp = -
v(i,k)*sin(
xc(i)*deg2rad)+
u(i,k)*cos(
xc(i)*deg2rad)
978 xflux(i,k)=xflux(i,k)+xfluxv*
art(i)&
980 yflux(i,k)=yflux(i,k)+yfluxv*
art(i)&
999 REAL(SP) :: XFLUX(0:MT)
1000 REAL(SP) :: DIJ,UIJ,VIJ
1001 INTEGER :: I,J,K,I1,IA,IB,JJ,J1,J2,II
1003 REAL(SP) :: UIJ_TMP,VIJ_TMP,EXFLUX_TMP
1004 REAL(SP) :: DLTXE_TMP,DLTYE_TMP
1005 REAL(SP) :: VX1_TMP,VX2_TMP,VY1_TMP,VY2_TMP
1038 uij_tmp = -vij*cos(
xc(i1)*deg2rad)-uij*sin(
xc(i1)*deg2rad)
1039 vij_tmp = -vij*sin(
xc(i1)*deg2rad)+uij*cos(
xc(i1)*deg2rad)
1041 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad)&
1042 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1043 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad)&
1044 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1046 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad)&
1047 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1048 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad)&
1049 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1051 dltxe_tmp = vx2_tmp-vx1_tmp
1052 dltye_tmp = vy2_tmp-vy1_tmp
1054 exflux_tmp = dij*(-uij_tmp*dltye_tmp+vij_tmp*dltxe_tmp)
1058 xflux(ia) = xflux(ia)-exflux_tmp
1060 xflux(ib) = xflux(ib)+exflux_tmp
1075 INTEGER,
INTENT(IN) :: K
1076 REAL(SP),
DIMENSION(0:NT) :: RESX,RESY
1079 REAL(SP) :: UARK_TMP,VARK_TMP,UAF_TMP,VAF_TMP,UA_TMP,VA_TMP
1081 REAL(SP) :: WUSURF2_TMP,WVSURF2_TMP,WUBOT_TMP,WVBOT_TMP
1092 ua_tmp = -
va(i)*cos(
xc(i)*deg2rad)-
ua(i)*sin(
xc(i)*deg2rad)
1093 va_tmp = -
va(i)*sin(
xc(i)*deg2rad)+
ua(i)*cos(
xc(i)*deg2rad)
1098 wubot_tmp = -
wvbot(i)*cos(
xc(i)*deg2rad)-
wubot(i)*sin(
xc(i)*deg2rad)
1099 wvbot_tmp = -
wvbot(i)*sin(
xc(i)*deg2rad)+
wubot(i)*cos(
xc(i)*deg2rad)
1103 -(wusurf2_tmp+wubot_tmp)*
art(i)
1106 -(wvsurf2_tmp+wvbot_tmp)*
art(i)
1111 uark_tmp = -
vark(i)*cos(
xc(i)*deg2rad)-
uark(i)*sin(
xc(i)*deg2rad)
1112 vark_tmp = -
vark(i)*sin(
xc(i)*deg2rad)+
uark(i)*cos(
xc(i)*deg2rad)
1114 uaf_tmp = (uark_tmp*(
h1(i)+
elrk1(i)) &
1115 -alpha_rk(k)*dte*resx(i)/
art(i))/(
h1(i)+
elf1(i))
1116 vaf_tmp = (vark_tmp*(
h1(i)+
elrk1(i)) &
1117 -alpha_rk(k)*dte*resy(i)/
art(i))/(
h1(i)+
elf1(i))
1119 uaf(i) = vaf_tmp*cos(
xc(i)*deg2rad)-uaf_tmp*sin(
xc(i)*deg2rad)
1120 vaf(i) = uaf_tmp*cos(
xc(i)*deg2rad)+vaf_tmp*sin(
xc(i)*deg2rad)
1137 REAL(SP) :: XFLUX(MT,KBM1)
1138 REAL(SP) :: DIJ,UIJ,VIJ,UN,EXFLUX,TMP1,DIJ1,UIJ1,VIJ1
1139 INTEGER :: I,K,IA,IB,I1 ,J,JJ,J1,J2,II
1141 REAL(SP) :: UIJ_TMP,VIJ_TMP,VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP,UIJ1_TMP,VIJ1_TMP
1142 REAL(SP) :: DLTXE_TMP,DLTYE_TMP,EXFLUX_TMP
1159 xflux(ia,k) = 0.0_sp
1162 xflux(ib,k) = 0.0_sp
1180 uij_tmp = -vij*cos(
xc(i1)*deg2rad)-uij*sin(
xc(i1)*deg2rad)
1181 vij_tmp = -vij*sin(
xc(i1)*deg2rad)+uij*cos(
xc(i1)*deg2rad)
1183 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad)&
1184 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1185 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad)&
1186 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1188 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad)&
1189 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1190 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad)&
1191 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1193 dltxe_tmp = vx2_tmp-vx1_tmp
1194 dltye_tmp = vy2_tmp-vy1_tmp
1196 exflux_tmp = dij*(-uij_tmp*dltye_tmp+vij_tmp*dltxe_tmp)
1200 xflux(ia,k) = xflux(ia,k)-exflux_tmp
1202 xflux(ib,k) = xflux(ib,k)+exflux_tmp
1214 SUBROUTINE adv_s_xy(XFLUX,XFLUX_ADV,PSPX,PSPY,PSPXD,PSPYD,VISCOFF,K,CETA)
1219 INTEGER,
INTENT(IN) :: K
1221 REAL(SP),
DIMENSION(0:MT,KB) :: XFLUX,XFLUX_ADV
1222 REAL(SP),
DIMENSION(M) :: PSPX,PSPY,PSPXD,PSPYD,VISCOFF
1224 REAL(SP),
DIMENSION(3*(NT),KBM1) :: DTIJ
1226 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2
1227 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF
1228 REAL(SP) :: FACT,FM1
1229 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,JTMP,JJ,II
1230 REAL(SP) :: TXPI,TYPI
1232 REAL(SP) :: VX_TMP,VY_TMP,VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP,VX3_TMP,VY3_TMP
1233 REAL(SP) :: XI_TMP,YI_TMP,VXA_TMP,VYA_TMP,VXB_TMP,VYB_TMP
1234 REAL(SP) :: UIJ_TMP,VIJ_TMP,DLTXE_TMP,DLTYE_TMP,UVN_TMP,EXFLUX_TMP
1235 REAL(SP) :: PUPX_TMP,PUPY_TMP,PVPX_TMP,PVPY_TMP
1236 REAL(SP) :: PSPX_TMP,PSPY_TMP,PSPXD_TMP,PSPYD_TMP
1237 REAL(SP) :: U_TMP,V_TMP
1238 REAL(SP) :: X11,Y11,X22,Y22,X33,Y33,TMP1,TMP2
1241 REAL(SP) :: XIJE1_TMP,YIJE1_TMP,XIJE2_TMP,YIJE2_TMP
1242 REAL(SP) :: S1MIN, S1MAX, S2MIN, S2MAX
1252 SELECT CASE(horizontal_mixing_type)
1260 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
1261 & trim(horizontal_mixing_type) )
1272 xflux(ia,k) = 0.0_sp
1273 xflux_adv(ia,k) = 0.0_sp
1275 xflux(ib,k) = 0.0_sp
1276 xflux_adv(ib,k) = 0.0_sp
1286 dtij(i,k)=
dt1(i1)*
dz1(i1,k)
1304 j1=jtmp+1-(jtmp+1)/4*3
1305 j2=jtmp+2-(jtmp+2)/4*3
1307 vx_tmp = rearth * cos(
vy(i)*deg2rad) * cos(
vx(i)*deg2rad) &
1308 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
1309 vy_tmp = rearth * cos(
vy(i)*deg2rad) * sin(
vx(i)*deg2rad) &
1310 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
1312 vx1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * cos(
vx(
nv(i1,j1))*deg2rad) &
1313 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
1314 vy1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * sin(
vx(
nv(i1,j1))*deg2rad) &
1315 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
1317 vx2_tmp= rearth * cos(
yc(i1)*deg2rad) * cos(
xc(i1)*deg2rad) &
1318 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
1319 vy2_tmp= rearth * cos(
yc(i1)*deg2rad) * sin(
xc(i1)*deg2rad) &
1320 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
1322 vx3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * cos(
vx(
nv(i1,j2))*deg2rad) &
1323 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
1324 vy3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * sin(
vx(
nv(i1,j2))*deg2rad) &
1325 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
1327 x11=0.5_sp*(vx_tmp+vx1_tmp)
1328 y11=0.5_sp*(vy_tmp+vy1_tmp)
1331 x33=0.5_sp*(vx_tmp+vx3_tmp)
1332 y33=0.5_sp*(vy_tmp+vy3_tmp)
1334 u_tmp = -
v(i1,k)*cos(
xc(i1)*deg2rad)-
u(i1,k)*sin(
xc(i1)*deg2rad)
1335 v_tmp = -
v(i1,k)*sin(
xc(i1)*deg2rad)+
u(i1,k)*cos(
xc(i1)*deg2rad)
1337 pupx_tmp=pupx_tmp+u_tmp*(y11-y33)
1338 pupy_tmp=pupy_tmp+u_tmp*(x33-x11)
1339 pvpx_tmp=pvpx_tmp+v_tmp*(y11-y33)
1340 pvpy_tmp=pvpy_tmp+v_tmp*(x33-x11)
1343 pupx_tmp=pupx_tmp/
art1(i)
1344 pupy_tmp=pupy_tmp/
art1(i)
1345 pvpx_tmp=pvpx_tmp/
art1(i)
1346 pvpy_tmp=pvpy_tmp/
art1(i)
1347 tmp1=pupx_tmp**2+pvpy_tmp**2
1348 tmp2=0.5_sp*(pupy_tmp+pvpx_tmp)**2
1349 viscoff(i)=sqrt(tmp1+tmp2)*
art1(i)
1361 IF((ia <= m .AND. ib <= m) .AND. i1 <= n)
THEN 1365 xije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad) &
1366 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1367 yije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad) &
1368 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1370 xije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad) &
1371 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1372 yije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad) &
1373 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1374 xi_tmp =0.5_sp*(xije1_tmp+xije2_tmp)
1375 yi_tmp =0.5_sp*(yije1_tmp+yije2_tmp)
1384 vxa_tmp = rearth * cos(
vy(ia)*deg2rad) * cos(
vx(ia)*deg2rad) &
1385 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1386 vya_tmp = rearth * cos(
vy(ia)*deg2rad) * sin(
vx(ia)*deg2rad) &
1387 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1389 vxb_tmp = rearth * cos(
vy(ib)*deg2rad) * cos(
vx(ib)*deg2rad) &
1390 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1391 vyb_tmp = rearth * cos(
vy(ib)*deg2rad) * sin(
vx(ib)*deg2rad) &
1392 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1404 pspx_tmp=-pspy(ib)*cos(
vx(ib)*deg2rad)-pspx(ib)*sin(
vx(ib)*deg2rad)
1405 pspy_tmp=-pspy(ib)*sin(
vx(ib)*deg2rad)+pspx(ib)*cos(
vx(ib)*deg2rad)
1407 pspxd_tmp=-pspyd(ib)*cos(
vx(ib)*deg2rad)-pspxd(ib)*sin(
vx(ib)*deg2rad)
1408 pspyd_tmp=-pspyd(ib)*sin(
vx(ib)*deg2rad)+pspxd(ib)*cos(
vx(ib)*deg2rad)
1410 fij1=
s1(ia,k)+dxa*pspx(ia)+dya*pspy(ia)
1411 fij2=
s1(ib,k)+dxb*pspx_tmp+dyb*pspy_tmp
1417 txx=0.5_sp*(pspxd(ia)+pspxd_tmp)*viscof
1418 tyy=0.5_sp*(pspyd(ia)+pspyd_tmp)*viscof
1420 pspx_tmp=-pspy(ia)*cos(
vx(ia)*deg2rad)-pspx(ia)*sin(
vx(ia)*deg2rad)
1421 pspy_tmp=-pspy(ia)*sin(
vx(ia)*deg2rad)+pspx(ia)*cos(
vx(ia)*deg2rad)
1423 pspxd_tmp=-pspyd(ia)*cos(
vx(ia)*deg2rad)-pspxd(ia)*sin(
vx(ia)*deg2rad)
1424 pspyd_tmp=-pspyd(ia)*sin(
vx(ia)*deg2rad)+pspxd(ia)*cos(
vx(ia)*deg2rad)
1426 fij1=
s1(ia,k)+dxa*pspx_tmp+dya*pspy_tmp
1427 fij2=
s1(ib,k)+dxb*pspx(ib)+dyb*pspy(ib)
1433 txx=0.5_sp*(pspxd_tmp+pspxd(ib))*viscof
1434 tyy=0.5_sp*(pspyd_tmp+pspyd(ib))*viscof
1438 s1min=min(s1min,
s1(ia,k))
1440 s1max=max(s1max,
s1(ia,k))
1442 s2min=min(s2min,
s1(ib,k))
1444 s2max=max(s2max,
s1(ib,k))
1445 IF(fij1 < s1min) fij1=s1min
1446 IF(fij1 > s1max) fij1=s1max
1447 IF(fij2 < s2min) fij2=s2min
1448 IF(fij2 > s2max) fij2=s2max
1451 uij_tmp = -
v(i1,k)*cos(
xc(i1)*deg2rad)-
u(i1,k)*sin(
xc(i1)*deg2rad)
1452 vij_tmp = -
v(i1,k)*sin(
xc(i1)*deg2rad)+
u(i1,k)*cos(
xc(i1)*deg2rad)
1454 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad)
1455 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad)
1457 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad)
1458 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad)
1460 dltxe_tmp = vx2_tmp-vx1_tmp
1461 dltye_tmp = vy2_tmp-vy1_tmp
1463 fxx=-dtij(i,k)*txx*dltye_tmp
1464 fyy= dtij(i,k)*tyy*dltxe_tmp
1466 uvn_tmp = vij_tmp*dltxe_tmp - uij_tmp*dltye_tmp
1467 exflux_tmp = -uvn_tmp*dtij(i,k)*((1.0_sp+sign(1.0_sp,uvn_tmp))*fij2+ &
1468 (1.0_sp-sign(1.0_sp,uvn_tmp))*fij1)*0.5_sp
1471 xflux(ia,k)=xflux(ia,k)+exflux_tmp+fxx+fyy
1472 xflux_adv(ia,k)=xflux_adv(ia,k)+exflux_tmp
1474 xflux(ib,k)=xflux(ib,k)-exflux_tmp-fxx-fyy
1475 xflux_adv(ib,k)=xflux_adv(ib,k)-exflux_tmp
1488 SUBROUTINE adv_t_xy(XFLUX,XFLUX_ADV,PTPX,PTPY,PTPXD,PTPYD,VISCOFF,K,CETA)
1493 INTEGER,
INTENT(IN) :: K
1494 REAL(SP),
DIMENSION(0:MT,KB) :: XFLUX,XFLUX_ADV
1495 REAL(SP),
DIMENSION(M) :: PTPX,PTPY,PTPXD,PTPYD,VISCOFF
1496 REAL(SP),
DIMENSION(3*(NT),KBM1) :: DTIJ
1498 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2
1499 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF
1500 REAL(SP) :: FACT,FM1
1501 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,JTMP,JJ,II
1502 REAL(SP) :: TXPI,TYPI
1504 REAL(SP) :: VX_TMP,VY_TMP,VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP,VX3_TMP,VY3_TMP
1505 REAL(SP) :: XI_TMP,YI_TMP,VXA_TMP,VYA_TMP,VXB_TMP,VYB_TMP
1506 REAL(SP) :: UIJ_TMP,VIJ_TMP,DLTXE_TMP,DLTYE_TMP,UVN_TMP,EXFLUX_TMP
1507 REAL(SP) :: PUPX_TMP,PUPY_TMP,PVPX_TMP,PVPY_TMP
1508 REAL(SP) :: PTPX_TMP,PTPY_TMP,PTPXD_TMP,PTPYD_TMP
1509 REAL(SP) :: U_TMP,V_TMP
1510 REAL(SP) :: X11,Y11,X22,Y22,X33,Y33,TMP1,TMP2
1513 REAL(SP) :: XIJE1_TMP,YIJE1_TMP,XIJE2_TMP,YIJE2_TMP
1514 REAL(SP) :: T1MIN, T1MAX, T2MIN, T2MAX
1525 SELECT CASE(horizontal_mixing_type)
1533 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
1534 & trim(horizontal_mixing_type) )
1545 xflux(ia,k) = 0.0_sp
1546 xflux_adv(ia,k) = 0.0_sp
1548 xflux(ib,k) = 0.0_sp
1549 xflux_adv(ib,k) = 0.0_sp
1559 dtij(i,k)=
dt1(i1)*
dz1(i1,k)
1575 j1=jtmp+1-(jtmp+1)/4*3
1576 j2=jtmp+2-(jtmp+2)/4*3
1578 vx_tmp = rearth * cos(
vy(i)*deg2rad) * cos(
vx(i)*deg2rad) &
1579 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
1580 vy_tmp = rearth * cos(
vy(i)*deg2rad) * sin(
vx(i)*deg2rad) &
1581 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
1583 vx1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * cos(
vx(
nv(i1,j1))*deg2rad) &
1584 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
1585 vy1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * sin(
vx(
nv(i1,j1))*deg2rad) &
1586 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
1588 vx2_tmp= rearth * cos(
yc(i1)*deg2rad) * cos(
xc(i1)*deg2rad) &
1589 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
1590 vy2_tmp= rearth * cos(
yc(i1)*deg2rad) * sin(
xc(i1)*deg2rad) &
1591 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
1593 vx3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * cos(
vx(
nv(i1,j2))*deg2rad) &
1594 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
1595 vy3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * sin(
vx(
nv(i1,j2))*deg2rad) &
1596 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
1598 x11=0.5_sp*(vx_tmp+vx1_tmp)
1599 y11=0.5_sp*(vy_tmp+vy1_tmp)
1602 x33=0.5_sp*(vx_tmp+vx3_tmp)
1603 y33=0.5_sp*(vy_tmp+vy3_tmp)
1605 u_tmp = -
v(i1,k)*cos(
xc(i1)*deg2rad)-
u(i1,k)*sin(
xc(i1)*deg2rad)
1606 v_tmp = -
v(i1,k)*sin(
xc(i1)*deg2rad)+
u(i1,k)*cos(
xc(i1)*deg2rad)
1608 pupx_tmp=pupx_tmp+u_tmp*(y11-y33)
1609 pupy_tmp=pupy_tmp+u_tmp*(x33-x11)
1610 pvpx_tmp=pvpx_tmp+v_tmp*(y11-y33)
1611 pvpy_tmp=pvpy_tmp+v_tmp*(x33-x11)
1614 pupx_tmp=pupx_tmp/
art1(i)
1615 pupy_tmp=pupy_tmp/
art1(i)
1616 pvpx_tmp=pvpx_tmp/
art1(i)
1617 pvpy_tmp=pvpy_tmp/
art1(i)
1618 tmp1=pupx_tmp**2+pvpy_tmp**2
1619 tmp2=0.5_sp*(pupy_tmp+pvpx_tmp)**2
1620 viscoff(i)=sqrt(tmp1+tmp2)*
art1(i)
1631 IF(ia <= m .AND. ib <= m .AND. i1 <= n)
THEN 1635 xije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad) &
1636 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1637 yije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad) &
1638 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1640 xije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad) &
1641 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1642 yije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad) &
1643 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1644 xi_tmp =0.5_sp*(xije1_tmp+xije2_tmp)
1645 yi_tmp =0.5_sp*(yije1_tmp+yije2_tmp)
1653 vxa_tmp = rearth * cos(
vy(ia)*deg2rad) * cos(
vx(ia)*deg2rad) &
1654 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1655 vya_tmp = rearth * cos(
vy(ia)*deg2rad) * sin(
vx(ia)*deg2rad) &
1656 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1658 vxb_tmp = rearth * cos(
vy(ib)*deg2rad) * cos(
vx(ib)*deg2rad) &
1659 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1660 vyb_tmp = rearth * cos(
vy(ib)*deg2rad) * sin(
vx(ib)*deg2rad) &
1661 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1673 ptpx_tmp=-ptpy(ib)*cos(
vx(ib)*deg2rad)-ptpx(ib)*sin(
vx(ib)*deg2rad)
1674 ptpy_tmp=-ptpy(ib)*sin(
vx(ib)*deg2rad)+ptpx(ib)*cos(
vx(ib)*deg2rad)
1676 ptpxd_tmp=-ptpyd(ib)*cos(
vx(ib)*deg2rad)-ptpxd(ib)*sin(
vx(ib)*deg2rad)
1677 ptpyd_tmp=-ptpyd(ib)*sin(
vx(ib)*deg2rad)+ptpxd(ib)*cos(
vx(ib)*deg2rad)
1679 fij1=
t1(ia,k)+dxa*ptpx(ia)+dya*ptpy(ia)
1680 fij2=
t1(ib,k)+dxb*ptpx_tmp+dyb*ptpy_tmp
1686 txx=0.5_sp*(ptpxd(ia)+ptpxd_tmp)*viscof
1687 tyy=0.5_sp*(ptpyd(ia)+ptpyd_tmp)*viscof
1689 ptpx_tmp=-ptpy(ia)*cos(
vx(ia)*deg2rad)-ptpx(ia)*sin(
vx(ia)*deg2rad)
1690 ptpy_tmp=-ptpy(ia)*sin(
vx(ia)*deg2rad)+ptpx(ia)*cos(
vx(ia)*deg2rad)
1692 ptpxd_tmp=-ptpyd(ia)*cos(
vx(ia)*deg2rad)-ptpxd(ia)*sin(
vx(ia)*deg2rad)
1693 ptpyd_tmp=-ptpyd(ia)*sin(
vx(ia)*deg2rad)+ptpxd(ia)*cos(
vx(ia)*deg2rad)
1695 fij1=
t1(ia,k)+dxa*ptpx_tmp+dya*ptpy_tmp
1696 fij2=
t1(ib,k)+dxb*ptpx(ib)+dyb*ptpy(ib)
1702 txx=0.5_sp*(ptpxd_tmp+ptpxd(ib))*viscof
1703 tyy=0.5_sp*(ptpyd_tmp+ptpyd(ib))*viscof
1707 t1min=min(t1min,
t1(ia,k))
1709 t1max=max(t1max,
t1(ia,k))
1711 t2min=min(t2min,
t1(ib,k))
1713 t2max=max(t2max,
t1(ib,k))
1714 IF(fij1 < t1min) fij1=t1min
1715 IF(fij1 > t1max) fij1=t1max
1716 IF(fij2 < t2min) fij2=t2min
1717 IF(fij2 > t2max) fij2=t2max
1720 uij_tmp = -
v(i1,k)*cos(
xc(i1)*deg2rad)-
u(i1,k)*sin(
xc(i1)*deg2rad)
1721 vij_tmp = -
v(i1,k)*sin(
xc(i1)*deg2rad)+
u(i1,k)*cos(
xc(i1)*deg2rad)
1723 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad)
1724 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad)
1726 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad)
1727 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad)
1729 dltxe_tmp = vx2_tmp-vx1_tmp
1730 dltye_tmp = vy2_tmp-vy1_tmp
1732 fxx=-dtij(i,k)*txx*dltye_tmp
1733 fyy= dtij(i,k)*tyy*dltxe_tmp
1735 uvn_tmp = vij_tmp*dltxe_tmp - uij_tmp*dltye_tmp
1736 exflux_tmp = -uvn_tmp*dtij(i,k)*((1.0_sp+sign(1.0_sp,uvn_tmp))*fij2+ &
1737 (1.0_sp-sign(1.0_sp,uvn_tmp))*fij1)*0.5_sp
1740 xflux(ia,k)=xflux(ia,k)+exflux_tmp+fxx+fyy
1741 xflux_adv(ia,k)=xflux_adv(ia,k)+exflux_tmp
1743 xflux(ib,k)=xflux(ib,k)-exflux_tmp-fxx-fyy
1744 xflux_adv(ib,k)=xflux_adv(ib,k)-exflux_tmp
1756 SUBROUTINE adv_n_xy(XFLUX,PWPX,PWPY,ISS,ID,DEP2,SPCDIR,N32)
1765 REAL :: N32(MDC,MSC,0:MT),N32_TMP(MDC,MSC,0:MT)
1766 INTEGER :: ID,ISS,IG,IG2,IDT,IDD
1767 REAL :: CANX,CANY,CANX_TMP,CANY_TMP,ADDEXFLUX2455
1768 REAL :: SPCDIR(MDC,6)
1769 REAL(SP) :: DEP2(MT)
1770 REAL :: DEPLOC,KWAVELOC,CGLOC,NN,ND,SPCSIGL
1771 REAL(SP),
DIMENSION(0:MT) :: XFLUX
1772 REAL(SP),
DIMENSION(M) :: PWPX,PWPY
1773 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2
1774 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,JTMP,JJ,II,L
1775 REAL(SP) :: VX_TMP,VY_TMP,VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP,VX3_TMP,VY3_TMP
1776 REAL(SP) :: XI_TMP,YI_TMP,VXA_TMP,VYA_TMP,VXB_TMP,VYB_TMP
1777 REAL(SP) :: UL_DEGREE,DL_DEGREE,CENTER_DEGREE,FF11
1778 REAL(SP) :: UIJ_TMP,VIJ_TMP,DLTXE_TMP,DLTYE_TMP,UVN_TMP,EXFLUX_TMP
1779 REAL(SP) :: PUPX_TMP,PUPY_TMP,PVPX_TMP,PVPY_TMP
1780 REAL(SP) :: PWPX_TMP,PWPY_TMP
1781 REAL(SP) :: U_TMP,V_TMP
1782 REAL(SP) :: ADDYIJE1,ADDYIJE2
1783 REAL(SP) :: ADD_DLTXE ,ADD_DLTYE,ADD_DLTXTRIE,ADD_DLTYTRIE
1784 REAL(SP) :: X11,Y11,X22,Y22,X33,Y33,TMP1,TMP2
1785 REAL(SP) :: XIJE1_TMP,YIJE1_TMP,XIJE2_TMP,YIJE2_TMP
1786 REAL(SP) :: AC1MIN, AC1MAX, AC2MIN, AC2MAX
1822 IF (
vx(i1)<ul_degree .OR.
vx(i1)>dl_degree)
THEN 1829 n32_tmp(id,iss,i1)=n32(idd,iss,i1)
1832 IF (
vx(i2)<ul_degree .OR.
vx(i2)>dl_degree)
THEN 1839 n32_tmp(id,iss,i2)=n32(idd,iss,i2)
1842 center_degree=l*45.0
1843 ul_degree=center_degree+22.5
1844 dl_degree=center_degree-22.5
1846 IF(
vx(i1)<ul_degree .AND.
vx(i1)>dl_degree)
THEN 1847 idt=mdc-(mdc*(l+2)/8)
1856 n32_tmp(id,iss,i1)=n32(idd,iss,i1)
1858 IF(
vx(i2)<ul_degree .AND.
vx(i2)>dl_degree)
THEN 1859 idt=mdc-(mdc*(l+2)/8)
1868 n32_tmp(id,iss,i2)=n32(idd,iss,i2)
1871 ff11=0.5*(n32_tmp(id,iss,i1)+n32_tmp(id,iss,i2))
1874 add_dltxtrie=add_dltxtrie+
dltxtrie(i,j)
1875 add_dltytrie=add_dltytrie+
dltytrie(i,j)
1878 pwpx(i)=pwpx(i)/
art2(i)
1879 pwpy(i)=pwpy(i)/
art2(i)
1885 addyije1=addyije1+
yije(i,1)
1886 addyije2=addyije2+
yije(i,2)
1888 addyije1=addyije1/
npcv 1889 addyije2=addyije2/
npcv 1899 IF(ia <= m .AND. ib <= m .AND. i1 <= n)
THEN 1903 xije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad) &
1904 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1905 yije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad) &
1906 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
1908 xije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad) &
1909 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1910 yije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad) &
1911 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
1912 xi_tmp =0.5_sp*(xije1_tmp+xije2_tmp)
1913 yi_tmp =0.5_sp*(yije1_tmp+yije2_tmp)
1916 vxa_tmp = rearth * cos(
vy(ia)*deg2rad) * cos(
vx(ia)*deg2rad) &
1917 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1918 vya_tmp = rearth * cos(
vy(ia)*deg2rad) * sin(
vx(ia)*deg2rad) &
1919 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
1921 vxb_tmp = rearth * cos(
vy(ib)*deg2rad) * cos(
vx(ib)*deg2rad) &
1922 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1923 vyb_tmp = rearth * cos(
vy(ib)*deg2rad) * sin(
vx(ib)*deg2rad) &
1924 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
1934 pwpx_tmp=-pwpy(ib)*cos(
vx(ib)*deg2rad)-pwpx(ib)*sin(
vx(ib)*deg2rad)
1935 pwpy_tmp=-pwpy(ib)*sin(
vx(ib)*deg2rad)+pwpx(ib)*cos(
vx(ib)*deg2rad)
1940 IF (
vx(ib)<ul_degree .OR.
vx(ib)>dl_degree)
THEN 1947 n32_tmp(id,iss,ib)=n32(idd,iss,ib)
1951 center_degree=l*45.0
1952 ul_degree=center_degree+22.5
1953 dl_degree=center_degree-22.5
1954 IF(
vx(ib)<ul_degree .AND.
vx(ib)>dl_degree)
THEN 1955 idt=mdc-(mdc*(l+2)/8)
1964 n32_tmp(id,iss,ib)=n32(idd,iss,ib)
1968 fij2=n32_tmp(id,iss,ib)
1980 pwpx_tmp=-pwpy(ia)*cos(
vx(ia)*deg2rad)-pwpx(ia)*sin(
vx(ia)*deg2rad)
1981 pwpy_tmp=-pwpy(ia)*sin(
vx(ia)*deg2rad)+pwpx(ia)*cos(
vx(ia)*deg2rad)
1987 IF (
vx(ia)<ul_degree .OR.
vx(ia)>dl_degree)
THEN 1994 n32_tmp(id,iss,ia)=n32(idd,iss,ia)
1998 center_degree=l*45.0
1999 ul_degree=center_degree+22.5
2000 dl_degree=center_degree-22.5
2001 IF(
vx(ia)<ul_degree .AND.
vx(ia)>dl_degree)
THEN 2002 idt=mdc-(mdc*(l+2)/8)
2011 n32_tmp(id,iss,ia)=n32(idd,iss,ia)
2014 fij1=n32_tmp(id,iss,ia)
2019 CALL swapar1(i1,iss,id,dep2(1),kwaveloc,cgloc)
2024 center_degree=l*45.0-22.5
2025 ul_degree=center_degree+22.5
2026 dl_degree=center_degree-22.5
2028 IF(
xc(i1)<ul_degree .AND.
xc(i1)>dl_degree)
THEN 2029 idt=mdc-(mdc*(l+2)/8-5)
2041 CALL sproxy(i1,iss,idd,canx,cany,cgloc,spcdir(idd,2),spcdir(idd,3),uij_tmp,vij_tmp)
2043 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad) &
2044 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
2045 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad) &
2046 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
2048 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad) &
2049 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
2050 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad) &
2051 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
2053 dltxe_tmp = vx2_tmp-vx1_tmp
2054 dltye_tmp = vy2_tmp-vy1_tmp
2056 canx_tmp = -cany*cos(
xc(i1)*deg2rad)-canx*sin(
xc(i1)*deg2rad)
2057 cany_tmp = -cany*sin(
xc(i1)*deg2rad)+canx*cos(
xc(i1)*deg2rad)
2059 uvn_tmp = cany_tmp*dltxe_tmp - canx_tmp*dltye_tmp
2060 exflux_tmp = -uvn_tmp*((1.0_sp+sign(1.0_sp,uvn_tmp))*fij2+ &
2061 (1.0_sp-sign(1.0_sp,uvn_tmp))*fij1)*0.5_sp
2064 xflux(ia)=xflux(ia)+exflux_tmp
2067 xflux(ib)=xflux(ib)-exflux_tmp
2074 IF(
dbg_set(
dbg_sbr))
WRITE(ipt,*)
"End: ADV_N_XY(ID,ISS):",id,iss
2087 REAL(SP) :: DRIJK1(0:N,3,KBM1), DRIJK2(0:N,KBM1)
2088 REAL(SP) :: DIJ,DRHO1,DRHO2
2089 INTEGER :: I,II,K,J,J1,J2,IJK
2090 REAL(SP) :: VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP
2108 j1=j+1-int((j+1)/4)*3
2109 j2=j+2-int((j+2)/4)*3
2111 dij=0.5_sp*(
dt(
nv(i,j1))+
dt(
nv(i,j2)))
2113 vy1_tmp=rearth*cos(
vy(
nv(i,j1))*deg2rad)*sin(
vx(
nv(i,j1))*deg2rad)
2114 vy2_tmp=rearth*cos(
vy(
nv(i,j2))*deg2rad)*sin(
vx(
nv(i,j2))*deg2rad)
2116 drho1=(vy1_tmp-vy2_tmp)*drijk1(i,j,k)*
dt1(i)
2117 drho2=(vy1_tmp-vy2_tmp)*dij*drijk2(i,k)
2121 vx1_tmp=rearth*cos(
vy(
nv(i,j1))*deg2rad)*cos(
vx(
nv(i,j1))*deg2rad)
2122 vx2_tmp=rearth*cos(
vy(
nv(i,j2))*deg2rad)*cos(
vx(
nv(i,j2))*deg2rad)
2124 drho1=(vx2_tmp-vx1_tmp)*drijk1(i,j,k)*
dt1(i)
2125 drho2=(vx2_tmp-vx1_tmp)*dij*drijk2(i,k)
2152 REAL(DP) X1,X2,X3,Y1,Y2,Y3,DELT,AI1,AI2,AI3,BI1,BI2,BI3,CI1,CI2,CI3
2153 REAL(DP) DELTX,DELTY,TEMP1,ANG1,ANG2,B1,B2,ANGLE
2154 REAL(DP),
ALLOCATABLE :: XC_TMP(:),YC_TMP(:),VX_TMP(:),VY_TMP(:)
2155 INTEGER I,II,J,JJ,J1,J2
2171 ALLOCATE(xc_tmp(0:nt)); xc_tmp = 0.0_sp
2172 ALLOCATE(yc_tmp(0:nt)); yc_tmp = 0.0_sp
2173 ALLOCATE(vx_tmp(0:mt)); vx_tmp = 0.0_sp
2174 ALLOCATE(vy_tmp(0:mt)); vy_tmp = 0.0_sp
2177 xc_tmp(i) = rearth * cos(
yc(i)*deg2rad) * cos(
xc(i)*deg2rad) &
2178 * 2._sp /(1._sp+sin(
yc(i)*deg2rad))
2179 yc_tmp(i) = rearth * cos(
yc(i)*deg2rad) * sin(
xc(i)*deg2rad) &
2180 * 2._sp /(1._sp+sin(
yc(i)*deg2rad))
2184 vx_tmp(i) = rearth * cos(
vy(i)*deg2rad) * cos(
vx(i)*deg2rad) &
2185 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
2186 vy_tmp(i) = rearth * cos(
vy(i)*deg2rad) * sin(
vx(i)*deg2rad) &
2187 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
2191 IF(
isbce(i) == 0)
THEN 2192 y1 = yc_tmp(
nbe(i,1))-yc_tmp(i)
2193 y2 = yc_tmp(
nbe(i,2))-yc_tmp(i)
2194 y3 = yc_tmp(
nbe(i,3))-yc_tmp(i)
2195 x1=xc_tmp(
nbe(i,1))-xc_tmp(i)
2196 x2=xc_tmp(
nbe(i,2))-xc_tmp(i)
2197 x3=xc_tmp(
nbe(i,3))-xc_tmp(i)
2206 delt=(x1*y2-x2*y1)**2+(x1*y3-x3*y1)**2+(x2*y3-x3*y2)**2
2209 a1u_xy(i,1)=(y1+y2+y3)*(x1*y1+x2*y2+x3*y3)- &
2210 (x1+x2+x3)*(y1**2+y2**2+y3**2)
2212 a1u_xy(i,2)=(y1**2+y2**2+y3**2)*x1-(x1*y1+x2*y2+x3*y3)*y1
2214 a1u_xy(i,3)=(y1**2+y2**2+y3**2)*x2-(x1*y1+x2*y2+x3*y3)*y2
2216 a1u_xy(i,4)=(y1**2+y2**2+y3**2)*x3-(x1*y1+x2*y2+x3*y3)*y3
2219 a2u_xy(i,1)=(x1+x2+x3)*(x1*y1+x2*y2+x3*y3)- &
2220 (y1+y2+y3)*(x1**2+x2**2+x3**2)
2222 a2u_xy(i,2)=(x1**2+x2**2+x3**2)*y1-(x1*y1+x2*y2+x3*y3)*x1
2224 a2u_xy(i,3)=(x1**2+x2**2+x3**2)*y2-(x1*y1+x2*y2+x3*y3)*x2
2226 a2u_xy(i,4)=(x1**2+x2**2+x3**2)*y3-(x1*y1+x2*y2+x3*y3)*x3
2230 x1=vx_tmp(
nv(i,1))-xc_tmp(i)
2231 x2=vx_tmp(
nv(i,2))-xc_tmp(i)
2232 x3=vx_tmp(
nv(i,3))-xc_tmp(i)
2233 y1=vy_tmp(
nv(i,1))-yc_tmp(i)
2234 y2=vy_tmp(
nv(i,2))-yc_tmp(i)
2235 y3=vy_tmp(
nv(i,3))-yc_tmp(i)
2259 DEALLOCATE(xc_tmp,yc_tmp,vx_tmp,vy_tmp)
2270 SUBROUTINE adv_q_xy(XFLUX,PQPX,PQPY,PQPXD,PQPYD,VISCOFF,Q,UQ,VQ,K,UQ1,VQ1,CETA)
2281 INTEGER,
INTENT(IN) :: K
2282 REAL(SP),
DIMENSION(0:MT,KB) :: XFLUX,Q
2283 REAL(SP),
DIMENSION(M) :: PQPX,PQPY,PQPXD,PQPYD,VISCOFF
2284 REAL(SP),
DIMENSION(3*(NT),KBM1) :: DTIJ
2286 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2
2287 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF
2288 REAL(SP) :: FACT,FM1
2289 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,JTMP,JJ,II
2290 REAL(SP) :: TXPI,TYPI
2292 REAL(SP) :: VX_TMP,VY_TMP,VX1_TMP,VY1_TMP,VX2_TMP,VY2_TMP,VX3_TMP,VY3_TMP
2293 REAL(SP) :: XI_TMP,YI_TMP,VXA_TMP,VYA_TMP,VXB_TMP,VYB_TMP
2294 REAL(SP) :: UIJ_TMP,VIJ_TMP,DLTXE_TMP,DLTYE_TMP,UVN_TMP,EXFLUX_TMP
2295 REAL(SP) :: PUPX_TMP,PUPY_TMP,PVPX_TMP,PVPY_TMP
2296 REAL(SP) :: PQPX_TMP,PQPY_TMP,PQPXD_TMP,PQPYD_TMP
2297 REAL(SP) :: U_TMP,V_TMP
2298 REAL(SP) :: X11,Y11,X22,Y22,X33,Y33,TMP1,TMP2
2300 REAL(SP) :: XIJE1_TMP,YIJE1_TMP,XIJE2_TMP,YIJE2_TMP
2301 REAL(SP) :: Q1MIN, Q1MAX, Q2MIN, Q2MAX
2303 REAL(SP),
DIMENSION(0:NT,KB) :: UQ,VQ
2305 REAL(SP),
DIMENSION(0:,:) :: UQ1, VQ1
2313 SELECT CASE(horizontal_mixing_type)
2321 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
2322 & trim(horizontal_mixing_type) )
2334 xflux(ia,k) = 0.0_sp
2336 xflux(ib,k) = 0.0_sp
2346 dtij(i,k)=
dt1(i1)*
dz1(i1,k)
2365 j1=jtmp+1-(jtmp+1)/4*3
2366 j2=jtmp+2-(jtmp+2)/4*3
2368 vx_tmp = rearth * cos(
vy(i)*deg2rad) * cos(
vx(i)*deg2rad) &
2369 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
2370 vy_tmp = rearth * cos(
vy(i)*deg2rad) * sin(
vx(i)*deg2rad) &
2371 * 2._sp /(1._sp+sin(
vy(i)*deg2rad))
2373 vx1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * cos(
vx(
nv(i1,j1))*deg2rad) &
2374 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
2375 vy1_tmp= rearth * cos(
vy(
nv(i1,j1))*deg2rad) * sin(
vx(
nv(i1,j1))*deg2rad) &
2376 * 2._sp /(1._sp+sin(
vy(
nv(i1,j1))*deg2rad))
2378 vx2_tmp= rearth * cos(
yc(i1)*deg2rad) * cos(
xc(i1)*deg2rad) &
2379 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
2380 vy2_tmp= rearth * cos(
yc(i1)*deg2rad) * sin(
xc(i1)*deg2rad) &
2381 * 2._sp /(1._sp+sin(
yc(i1)*deg2rad))
2383 vx3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * cos(
vx(
nv(i1,j2))*deg2rad) &
2384 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
2385 vy3_tmp= rearth * cos(
vy(
nv(i1,j2))*deg2rad) * sin(
vx(
nv(i1,j2))*deg2rad) &
2386 * 2._sp /(1._sp+sin(
vy(
nv(i1,j2))*deg2rad))
2388 x11=0.5_sp*(vx_tmp+vx1_tmp)
2389 y11=0.5_sp*(vy_tmp+vy1_tmp)
2392 x33=0.5_sp*(vx_tmp+vx3_tmp)
2393 y33=0.5_sp*(vy_tmp+vy3_tmp)
2395 u_tmp = -vq(i1,k)*cos(
xc(i1)*deg2rad)-uq(i1,k)*sin(
xc(i1)*deg2rad)
2396 v_tmp = -vq(i1,k)*sin(
xc(i1)*deg2rad)+uq(i1,k)*cos(
xc(i1)*deg2rad)
2398 pupx_tmp=pupx_tmp+u_tmp*(y11-y33)
2399 pupy_tmp=pupy_tmp+u_tmp*(x33-x11)
2400 pvpx_tmp=pvpx_tmp+v_tmp*(y11-y33)
2401 pvpy_tmp=pvpy_tmp+v_tmp*(x33-x11)
2404 pupx_tmp=pupx_tmp/
art1(i)
2405 pupy_tmp=pupy_tmp/
art1(i)
2406 pvpx_tmp=pvpx_tmp/
art1(i)
2407 pvpy_tmp=pvpy_tmp/
art1(i)
2408 tmp1=pupx_tmp**2+pvpy_tmp**2
2409 tmp2=0.5_sp*(pupy_tmp+pvpx_tmp)**2
2410 viscoff(i)=sqrt(tmp1+tmp2)*
art1(i)
2422 IF((ia <= m .AND. ib <= m) .AND. i1 <= n)
THEN 2423 xije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad) &
2424 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
2425 yije1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad) &
2426 * 2._sp /(1._sp+sin(
yije(i,1)*deg2rad))
2428 xije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad) &
2429 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
2430 yije2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad) &
2431 * 2._sp /(1._sp+sin(
yije(i,2)*deg2rad))
2432 xi_tmp =0.5_sp*(xije1_tmp+xije2_tmp)
2433 yi_tmp =0.5_sp*(yije1_tmp+yije2_tmp)
2436 vxa_tmp = rearth * cos(
vy(ia)*deg2rad) * cos(
vx(ia)*deg2rad) &
2437 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
2438 vya_tmp = rearth * cos(
vy(ia)*deg2rad) * sin(
vx(ia)*deg2rad) &
2439 * 2._sp /(1._sp+sin(
vy(ia)*deg2rad))
2441 vxb_tmp = rearth * cos(
vy(ib)*deg2rad) * cos(
vx(ib)*deg2rad) &
2442 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
2443 vyb_tmp = rearth * cos(
vy(ib)*deg2rad) * sin(
vx(ib)*deg2rad) &
2444 * 2._sp /(1._sp+sin(
vy(ib)*deg2rad))
2452 pqpx_tmp=-pqpy(ib)*cos(
vx(ib)*deg2rad)-pqpx(ib)*sin(
vx(ib)*deg2rad)
2453 pqpy_tmp=-pqpy(ib)*sin(
vx(ib)*deg2rad)+pqpx(ib)*cos(
vx(ib)*deg2rad)
2455 pqpxd_tmp=-pqpyd(ib)*cos(
vx(ib)*deg2rad)-pqpxd(ib)*sin(
vx(ib)*deg2rad)
2456 pqpyd_tmp=-pqpyd(ib)*sin(
vx(ib)*deg2rad)+pqpxd(ib)*cos(
vx(ib)*deg2rad)
2458 fij1=q(ia,k)+dxa*pqpx(ia)+dya*pqpy(ia)
2459 fij2=q(ib,k)+dxb*pqpx_tmp+dyb*pqpy_tmp
2465 txx=0.5_sp*(pqpxd(ia)+pqpxd_tmp)*viscof
2466 tyy=0.5_sp*(pqpyd(ia)+pqpyd_tmp)*viscof
2468 pqpx_tmp=-pqpy(ia)*cos(
vx(ia)*deg2rad)-pqpx(ia)*sin(
vx(ia)*deg2rad)
2469 pqpy_tmp=-pqpy(ia)*sin(
vx(ia)*deg2rad)+pqpx(ia)*cos(
vx(ia)*deg2rad)
2471 pqpxd_tmp=-pqpyd(ia)*cos(
vx(ia)*deg2rad)-pqpxd(ia)*sin(
vx(ia)*deg2rad)
2472 pqpyd_tmp=-pqpyd(ia)*sin(
vx(ia)*deg2rad)+pqpxd(ia)*cos(
vx(ia)*deg2rad)
2474 fij1=q(ia,k)+dxa*pqpx_tmp+dya*pqpy_tmp
2475 fij2=q(ib,k)+dxb*pqpx(ib)+dyb*pqpy(ib)
2481 txx=0.5_sp*(pqpxd_tmp+pqpxd(ib))*viscof
2482 tyy=0.5_sp*(pqpyd_tmp+pqpyd(ib))*viscof
2485 q1min=minval(q(
nbsn(ia,1:
ntsn(ia)-1),k))
2486 q1min=min(q1min, q(ia,k))
2487 q1max=maxval(q(
nbsn(ia,1:
ntsn(ia)-1),k))
2488 q1max=max(q1max, q(ia,k))
2489 q2min=minval(q(
nbsn(ib,1:
ntsn(ib)-1),k))
2490 q2min=min(q2min, q(ib,k))
2491 q2max=maxval(q(
nbsn(ib,1:
ntsn(ib)-1),k))
2492 q2max=max(q2max, q(ib,k))
2493 IF(fij1 < q1min) fij1=q1min
2494 IF(fij1 > q1max) fij1=q1max
2495 IF(fij2 < q2min) fij2=q2min
2496 IF(fij2 > q2max) fij2=q2max
2502 uij_tmp = -vq(i1,k)*cos(
xc(i1)*deg2rad)-uq(i1,k)*sin(
xc(i1)*deg2rad)
2503 vij_tmp = -vq(i1,k)*sin(
xc(i1)*deg2rad)+uq(i1,k)*cos(
xc(i1)*deg2rad)
2505 vx1_tmp = rearth * cos(
yije(i,1)*deg2rad) * cos(
xije(i,1)*deg2rad)
2506 vy1_tmp = rearth * cos(
yije(i,1)*deg2rad) * sin(
xije(i,1)*deg2rad)
2508 vx2_tmp = rearth * cos(
yije(i,2)*deg2rad) * cos(
xije(i,2)*deg2rad)
2509 vy2_tmp = rearth * cos(
yije(i,2)*deg2rad) * sin(
xije(i,2)*deg2rad)
2511 dltxe_tmp = vx2_tmp-vx1_tmp
2512 dltye_tmp = vy2_tmp-vy1_tmp
2514 fxx=-dtij(i,k)*txx*dltye_tmp
2515 fyy= dtij(i,k)*tyy*dltxe_tmp
2517 uvn_tmp = vij_tmp*dltxe_tmp - uij_tmp*dltye_tmp
2518 exflux_tmp = -uvn_tmp*dtij(i,k)*((1.0_sp+sign(1.0_sp,uvn_tmp))*fij2+ &
2519 (1.0_sp-sign(1.0_sp,uvn_tmp))*fij1)*0.5_sp
2522 xflux(ia,k)=xflux(ia,k)+exflux_tmp+fxx+fyy
2524 xflux(ib,k)=xflux(ib,k)-exflux_tmp-fxx-fyy
integer, dimension(:,:), allocatable, target ienode
integer, dimension(:), allocatable, target ntsn
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:), allocatable, target elrk1
real(sp), dimension(:), allocatable, target va
real(sp), dimension(:), allocatable, target d
real(sp), dimension(:,:), allocatable, target yije
subroutine advave_edge_xy(XFLUX, YFLUX, IFCETA)
real(sp), dimension(:), allocatable, target cor
real(sp), dimension(:), allocatable, target d1
real(sp), dimension(:), allocatable, target adx2d
real(dp), dimension(:,:), allocatable awy_xy
real(sp), dimension(:), allocatable, target psty
real(sp), dimension(:), allocatable, target art
subroutine find_northpole
subroutine adv_s_xy(XFLUX, XFLUX_ADV, PSPX, PSPY, PSPXD, PSPYD, VISCOFF, K, CETA)
real(sp), dimension(:), allocatable, target uark
real(sp), dimension(:), allocatable, target el
real(sp), dimension(:), allocatable, target advua
real(sp), dimension(:,:), allocatable, target v
subroutine baropg_xy(DRIJK1, DRIJK2)
logical function dbg_set(vrb)
integer, dimension(:), allocatable npedge_lst
real(dp), dimension(:,:), allocatable awx_xy
real(sp), dimension(:), allocatable, target art1
real(sp), dimension(:), allocatable, target yc
real(sp), dimension(:,:), allocatable, target t1
integer, dimension(:), pointer ngid_x
real(sp), dimension(:), allocatable cc_hvc
real(sp), dimension(:,:), allocatable, target w
real(sp), dimension(:), allocatable iucp
real(sp), dimension(:), allocatable, target egf
real(sp), dimension(:,:), allocatable, target dltytrie
real(sp), dimension(:,:), allocatable, target xije
subroutine adv_t_xy(XFLUX, XFLUX_ADV, PTPX, PTPY, PTPXD, PTPYD, VISCOFF, K, CETA)
real(sp), dimension(:), allocatable, target art2
subroutine vertvl_edge_xy(XFLUX, CETA)
integer, dimension(:), allocatable, target ntrg
real(sp), dimension(:,:), allocatable, target u
integer, dimension(:), allocatable, target isbc
real(sp), dimension(:,:), allocatable, target s1
integer, dimension(:,:), allocatable, target iec
subroutine adv_n_xy(XFLUX, PWPX, PWPY, ISS, ID, DEP2, SPCDIR, N32)
real(sp), dimension(:,:), allocatable, target drhox
real(sp), dimension(:), allocatable, target wubot
integer, dimension(:,:), allocatable, target niec
integer, dimension(:,:), allocatable, target nbvt
subroutine swapar1(I, IS, ID, DEP2, KWAVEL, CGOL)
real(sp), dimension(:), allocatable, target pstx
integer, dimension(:), allocatable cell_northarea
real(sp), dimension(:), allocatable, target vx
real(dp), dimension(:,:), allocatable aw0_xy
real(sp), dimension(:), allocatable, target grav_e
real(sp), dimension(:), allocatable, target wvbot
real(sp), dimension(:), allocatable, target wvsurf2
real(sp), dimension(:), allocatable, target vaf
real(sp), dimension(:), allocatable nn_hvc
real(sp), dimension(:), allocatable, target vy
integer, dimension(:), allocatable, target ntve
integer, dimension(:,:), allocatable, target nbe
subroutine adv_uv_edge_xy(XFLUX, YFLUX, CETA, STG, K_STG)
integer, dimension(:,:), allocatable, target nv
real(sp), dimension(:), allocatable, target xijc
real(dp), dimension(:,:), allocatable a2u_xy
integer, dimension(:), allocatable np_lst
real(sp), dimension(:,:), allocatable, target drhoy
subroutine adv_q_xy(XFLUX, PQPX, PQPY, PQPXD, PQPYD, VISCOFF, Q, UQ, VQ, K, UQ1, VQ1, CETA)
real(sp), dimension(:), allocatable, target wusurf2
real(sp), dimension(:), allocatable, target ua
integer, dimension(:), allocatable ncedge_lst
real(sp), dimension(:,:), allocatable, target dz
real(sp), dimension(:), allocatable, target ady2d
subroutine sproxy(I1, IS, ID, CAXL, CAYL, CG0L, ECOSL, ESINL, UX2L, UY2L)
subroutine extel_edge_xy(K, XFLUX)
real(sp), dimension(:), allocatable, target yijc
real(dp), dimension(:,:), allocatable a1u_xy
real(sp), dimension(:,:), allocatable, target dltxtrie
integer, dimension(:,:), allocatable, target nbve
real(sp), dimension(:), allocatable, target dt1
integer, dimension(:), allocatable node_northarea
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:), allocatable, target h1
subroutine extuv_edge_xy(K)
real(sp), dimension(:), allocatable, target xc
real(sp), dimension(:), allocatable, target uaf
real(sp), dimension(:), allocatable, target dry2d
real(sp), dimension(:,:), allocatable, target dz1
real(sp), dimension(:), allocatable, target elf1
integer, dimension(:), allocatable, target isbce
integer, dimension(:,:), allocatable, target nbsn
real(sp), dimension(:), allocatable, target ah_bottom
integer, parameter dbg_sbr
real(sp), dimension(:), allocatable, target vark
subroutine advection_edge_xy(XFLUX, YFLUX)
integer, dimension(:), allocatable mp_lst
real(sp), dimension(:), allocatable, target advva
real(sp), dimension(:), allocatable, target dt
integer, parameter dbg_log
real(sp), dimension(:), allocatable, target drx2d