11 |
SUBROUTINE DIAGNOSTICS_INTERP_VERT( |
SUBROUTINE DIAGNOSTICS_INTERP_VERT( |
12 |
I listId, md, ndId, ip, im, lm, |
I listId, md, ndId, ip, im, lm, |
13 |
U qtmp1, |
U qtmp1, |
14 |
I undef, |
O qtmp2, |
15 |
|
I undefRL, |
16 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
17 |
|
|
18 |
C !DESCRIPTION: |
C !DESCRIPTION: |
42 |
C im :: counter-mate pointer to storage array |
C im :: counter-mate pointer to storage array |
43 |
C lm :: index in the averageCycle |
C lm :: index in the averageCycle |
44 |
C qtmp1 :: diagnostics field output array |
C qtmp1 :: diagnostics field output array |
45 |
C undef :: |
C qtmp2 :: temp working array (same size as output array) |
46 |
|
C undefRL :: |
47 |
C myTime :: current time of simulation (s) |
C myTime :: current time of simulation (s) |
48 |
C myIter :: current iteration number |
C myIter :: current iteration number |
49 |
C myThid :: my Thread Id number |
C myThid :: my Thread Id number |
50 |
INTEGER listId, md, ndId, ip, im, lm |
INTEGER listId, md, ndId, ip, im, lm |
51 |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
_RL qtmp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
52 |
_RL undef |
_RL qtmp2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
53 |
|
_RL undefRL |
54 |
_RL myTime |
_RL myTime |
55 |
INTEGER myIter, myThid |
INTEGER myIter, myThid |
56 |
CEOP |
CEOP |
66 |
INTEGER i, j, k |
INTEGER i, j, k |
67 |
INTEGER bi, bj |
INTEGER bi, bj |
68 |
_RL qtmpsrf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL qtmpsrf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
|
_RL qtmp2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,NrMax,nSx,nSy) |
|
69 |
INTEGER kLev |
INTEGER kLev |
70 |
_RL qprs (sNx,sNy) |
_RL qprs (sNx,sNy) |
71 |
_RL qinp (sNx,sNy,NrMax) |
_RL qinp (sNx,sNy,NrMax) |
72 |
_RL pkz (sNx,sNy,NrMax) |
_RL pkz (sNx,sNy,NrMax) |
73 |
_RL pksrf(sNx,sNy) |
_RL pksrf(sNx,sNy) |
74 |
_RL pk, pkTop, tmpLev |
_RL pk, pkTop |
75 |
_RL kappa |
_RL kappa |
76 |
INTEGER jpoint1,ipoint1 |
INTEGER jpoint1, ipoint1 |
77 |
INTEGER jpoint2,ipoint2 |
INTEGER jpoint2, ipoint2 |
78 |
LOGICAL pInc |
LOGICAL pInc |
79 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
80 |
|
|
112 |
|
|
113 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
114 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
115 |
tmpLev = 1. _d 0 |
CALL DIAGNOSTICS_GET_DIAG( 1, undefRL, |
|
CALL GETDIAG( tmpLev,undef, |
|
116 |
O qtmpsrf(1-OLx,1-OLy,bi,bj), |
O qtmpsrf(1-OLx,1-OLy,bi,bj), |
117 |
I jpoint1,0,ipoint1,0, bi,bj,myThid ) |
I jpoint1,0,ipoint1,0, bi,bj,myThid ) |
118 |
c WRITE(0,*) 'rSurf:',bi,bj,qtmpsrf(15,15,bi,bj) |
c WRITE(0,*) 'rSurf:',bi,bj,qtmpsrf(15,15,bi,bj) |
119 |
DO k = 1,kdiag(jpoint2) |
CALL DIAGNOSTICS_GET_DIAG( 0, undefRL, |
120 |
tmpLev = k |
O qtmp2(1-OLx,1-OLy,1,bi,bj), |
|
CALL GETDIAG(tmpLev,undef, |
|
|
O qtmp2(1-OLx,1-OLy,k,bi,bj), |
|
121 |
I jpoint2,0,ipoint2,0, bi,bj,myThid ) |
I jpoint2,0,ipoint2,0, bi,bj,myThid ) |
|
ENDDO |
|
122 |
ENDDO |
ENDDO |
123 |
ENDDO |
ENDDO |
124 |
|
|
175 |
IF (maskC(i,j,kLev,bi,bj).NE.0.) THEN |
IF (maskC(i,j,kLev,bi,bj).NE.0.) THEN |
176 |
qinp(i,j,k)= qtmp1(i,j,kLev,bi,bj) |
qinp(i,j,k)= qtmp1(i,j,kLev,bi,bj) |
177 |
ELSE |
ELSE |
178 |
qinp(i,j,k)= undef |
qinp(i,j,k)= undefRL |
179 |
ENDIF |
ENDIF |
180 |
pkz(i,j,k) = qtmp2(i,j,kLev,bi,bj)**kappa |
pkz(i,j,k) = qtmp2(i,j,kLev,bi,bj)**kappa |
181 |
ENDDO |
ENDDO |
189 |
CALL DIAGNOSTICS_INTERP_P2P( |
CALL DIAGNOSTICS_INTERP_P2P( |
190 |
O qprs, |
O qprs, |
191 |
I qinp,pkz,pksrf,pkTop,pk, |
I qinp,pkz,pksrf,pkTop,pk, |
192 |
I undef,pInc,sNx*sNy,kdiag(ndId),myThid ) |
I undefRL,pInc,sNx*sNy,kdiag(ndId),myThid ) |
193 |
C- Transfert qprs to qtmp1: |
C- Transfert qprs to qtmp1: |
194 |
DO j = 1,sNy |
DO j = 1,sNy |
195 |
DO i = 1,sNx |
DO i = 1,sNx |
196 |
IF (qprs(i,j).EQ.undef) THEN |
IF (qprs(i,j).EQ.undefRL) THEN |
197 |
qtmp1(i,j,k,bi,bj) = 0. |
qtmp1(i,j,k,bi,bj) = 0. |
198 |
ELSE |
ELSE |
199 |
qtmp1(i,j,k,bi,bj) = qprs(i,j) |
qtmp1(i,j,k,bi,bj) = qprs(i,j) |