48 |
_RL rad, rD |
_RL rad, rD |
49 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
50 |
|
|
51 |
_BARRIER |
C-- Initialise temperature field to the vertical reference profile |
52 |
|
DO bj = myByLo(myThid), myByHi(myThid) |
53 |
IF ( hydrogThetaFile .EQ. ' ' ) THEN |
DO bi = myBxLo(myThid), myBxHi(myThid) |
54 |
C-- Example 1 |
DO K=1,Nr |
55 |
C-- Initialise temperature field to a circular patch. |
DO J=1-Oly,sNy+Oly |
56 |
iC = Nx/2 |
DO I=1-Olx,sNx+Olx |
57 |
jC = Ny/2 |
theta(I,J,K,bi,bj) = tRef(K) |
|
rad = MIN(Ny/8,Nx/8) |
|
|
DO bj = myByLo(myThid), myByHi(myThid) |
|
|
DO bi = myBxLo(myThid), myBxHi(myThid) |
|
|
DO K=1,Nr |
|
|
DO J=1,sNy |
|
|
DO I=1,sNx |
|
|
theta(I,J,K,bi,bj) = 0. _d 0 |
|
|
iG = myXGlobalLo-1+(bi-1)*sNx+I |
|
|
jG = myYGlobalLo-1+(bj-1)*sNy+J |
|
|
iD = iG-iC |
|
|
jD = jG-jC |
|
|
rD = SQRT(FLOAT(iD*iD+jD*jD)) |
|
|
IF ( rD .LT. rad ) theta(I,J,K,bi,bj) = 1. _d 0 |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDDO |
|
|
ENDDO |
|
|
C-- Example 2 |
|
|
C-- Initialise temperature field to the vertical reference profile |
|
|
DO bj = myByLo(myThid), myByHi(myThid) |
|
|
DO bi = myBxLo(myThid), myBxHi(myThid) |
|
|
DO K=1,Nr |
|
|
DO J=1,sNy |
|
|
DO I=1,sNx |
|
|
theta(I,J,K,bi,bj) = tRef(K) |
|
|
ENDDO |
|
58 |
ENDDO |
ENDDO |
59 |
ENDDO |
ENDDO |
60 |
ENDDO |
ENDDO |
61 |
ENDDO |
ENDDO |
62 |
ELSE |
ENDDO |
63 |
|
|
64 |
|
IF ( hydrogThetaFile .NE. ' ' ) THEN |
65 |
_BEGIN_MASTER( myThid ) |
_BEGIN_MASTER( myThid ) |
66 |
CALL READ_FLD_XYZ_RL( hydrogThetaFile, ' ', theta, 0, myThid ) |
CALL READ_FLD_XYZ_RL( hydrogThetaFile, ' ', theta, 0, myThid ) |
67 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
68 |
|
_EXCH_XYZ_R8(theta,myThid) |
69 |
ENDIF |
ENDIF |
70 |
C Set initial tendency terms |
|
71 |
|
C Apply mask and test consistancy |
72 |
localWarnings=0 |
localWarnings=0 |
73 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
74 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
75 |
DO K=1,Nr |
DO K=1,Nr |
76 |
DO J=1,sNy |
DO J=1,sNy |
77 |
DO I=1,sNx |
DO I=1,sNx |
|
gt (I,J,K,bi,bj) = 0. _d 0 |
|
|
gtNM1(I,J,K,bi,bj) = 0. _d 0 |
|
78 |
IF (hFacC(I,J,K,bi,bj).EQ.0) theta(I,J,K,bi,bj) = 0. |
IF (hFacC(I,J,K,bi,bj).EQ.0) theta(I,J,K,bi,bj) = 0. |
79 |
IF (hFacC(I,J,K,bi,bj).NE.0.AND.theta(I,J,K,bi,bj).EQ.0.) |
IF (hFacC(I,J,K,bi,bj).NE.0.AND.theta(I,J,K,bi,bj).EQ.0. |
80 |
& THEN |
& .AND. tRef(k).NE.0.) THEN |
81 |
localWarnings=localWarnings+1 |
localWarnings=localWarnings+1 |
82 |
ENDIF |
ENDIF |
83 |
ENDDO |
ENDDO |
92 |
CALL PRINT_ERROR( msgBuf , myThid) |
CALL PRINT_ERROR( msgBuf , myThid) |
93 |
STOP 'ABNORMAL END: S/R INI_THETA' |
STOP 'ABNORMAL END: S/R INI_THETA' |
94 |
ENDIF |
ENDIF |
|
C |
|
|
_EXCH_XYZ_R8(theta , myThid ) |
|
|
_EXCH_XYZ_R8(gt , myThid ) |
|
|
_EXCH_XYZ_R8(gtNM1 , myThid ) |
|
95 |
|
|
96 |
CALL PLOT_FIELD_XYZRL( theta, 'Initial Temperature' , |
CALL PLOT_FIELD_XYZRL( theta, 'Initial Temperature' , |
97 |
& Nr, 1, myThid ) |
& Nr, 1, myThid ) |