6 |
CBOP |
CBOP |
7 |
C !ROUTINE: EXF_BULK_LARGEYEAGER04 |
C !ROUTINE: EXF_BULK_LARGEYEAGER04 |
8 |
C !INTERFACE: |
C !INTERFACE: |
9 |
SUBROUTINE EXF_BULK_LARGEYEAGER04( mytime, myiter, mythid ) |
SUBROUTINE EXF_BULK_LARGEYEAGER04( myTime, myIter, myThid ) |
10 |
|
|
11 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
12 |
C *==========================================================* |
C *==========================================================* |
52 |
|
|
53 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
54 |
C input: |
C input: |
55 |
_RL myTime |
C myTime :: Current time in simulation |
56 |
INTEGER myIter |
C myIter :: Current iteration number in simulation |
57 |
INTEGER myThid ! my Thread Id number |
C myThid :: My Thread Id number |
58 |
|
_RL myTime |
59 |
|
INTEGER myIter |
60 |
|
INTEGER myThid |
61 |
C output: |
C output: |
62 |
CEOP |
CEOP |
63 |
|
|
64 |
#ifdef ALLOW_BULK_LARGEYEAGER04 |
#ifdef ALLOW_BULK_LARGEYEAGER04 |
65 |
|
|
66 |
C == Local variables == |
C == Local variables == |
67 |
INTEGER i,j,k,bi,bj !current grid point indices |
C i,j :: grid point indices |
68 |
|
C bi,bj :: tile indices |
69 |
|
C ssq :: saturation specific humidity [kg/kg] in eq. with Sea-Surface water |
70 |
|
INTEGER i,j,bi,bj |
71 |
|
|
72 |
_RL czol |
_RL czol |
73 |
_RL Tsf ! surface temperature [K] |
_RL Tsf ! surface temperature [K] |
78 |
_RL delq ! specific humidity difference [kg/kg] |
_RL delq ! specific humidity difference [kg/kg] |
79 |
_RL deltap |
_RL deltap |
80 |
_RL ustar ! friction velocity [m/s] |
_RL ustar ! friction velocity [m/s] |
81 |
_RL tstar ! temperature scale [K] |
_RL tstar ! turbulent temperature scale [K] |
82 |
_RL qstar ! humidity scale [kg/kg] |
_RL qstar ! turbulent humidity scale [kg/kg] |
83 |
_RL ssttmp |
_RL ssttmp |
84 |
_RL ssq |
_RL ssq |
85 |
_RL rd ! = sqrt(Cd) [-] |
_RL rd ! = sqrt(Cd) [-] |
97 |
_RL psixh ! latent & sensib. stability function |
_RL psixh ! latent & sensib. stability function |
98 |
_RL zwln ! = log(zwd/zref) |
_RL zwln ! = log(zwd/zref) |
99 |
_RL ztln ! = log(zth/zref) |
_RL ztln ! = log(zth/zref) |
100 |
_RL tau ! surface stress coef = rhoA * Ws * Cd |
_RL tau ! surface stress coef = rhoA * Ws * sqrt(Cd) |
101 |
|
_RL windStress ! surface wind-stress (@ grid cell center) |
102 |
_RL tmpbulk |
_RL tmpbulk |
103 |
INTEGER iter |
INTEGER iter |
104 |
|
|
119 |
C-- HPF directive to help TAMC |
C-- HPF directive to help TAMC |
120 |
CHPF$ INDEPENDENT |
CHPF$ INDEPENDENT |
121 |
#endif |
#endif |
122 |
do bj = mybylo(mythid),mybyhi(mythid) |
DO bj = myByLo(myThid),myByHi(myThid) |
123 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
124 |
C-- HPF directive to help TAMC |
C-- HPF directive to help TAMC |
125 |
CHPF$ INDEPENDENT |
CHPF$ INDEPENDENT |
126 |
#endif |
#endif |
127 |
do bi = mybxlo(mythid),mybxhi(mythid) |
DO bi = myBxLo(myThid),myBxHi(myThid) |
128 |
k = 1 |
DO j = 1,sNy |
129 |
do j = 1,sny |
DO i = 1,sNx |
|
do i = 1,snx |
|
130 |
|
|
131 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
132 |
act1 = bi - myBxLo(myThid) |
act1 = bi - myBxLo(myThid) |
177 |
#else /* ifndef ALLOW_ATM_WIND */ |
#else /* ifndef ALLOW_ATM_WIND */ |
178 |
C in this case ustress and vstress are defined a u and v points |
C in this case ustress and vstress are defined a u and v points |
179 |
C respectively, and we need to average to mass points to avoid |
C respectively, and we need to average to mass points to avoid |
180 |
C tau = 0 near coasts or other boundaries |
C windStress = 0 near coasts or other boundaries |
181 |
tau = sqrt(0.5* |
windStress = sqrt(0.5 _d 0* |
182 |
& (ustress(i, j,bi,bj)*ustress(i ,j,bi,bj) |
& (ustress(i, j,bi,bj)*ustress(i ,j,bi,bj) |
183 |
& +ustress(i+1,j,bi,bj)*ustress(i+1,j,bi,bj) |
& +ustress(i+1,j,bi,bj)*ustress(i+1,j,bi,bj) |
184 |
& +vstress(i,j, bi,bj)*vstress(i,j ,bi,bj) |
& +vstress(i,j, bi,bj)*vstress(i,j ,bi,bj) |
185 |
& +vstress(i,j+1,bi,bj)*vstress(i,j+1,bi,bj)) |
& +vstress(i,j+1,bi,bj)*vstress(i,j+1,bi,bj) |
186 |
& ) |
& ) ) |
187 |
ustar = sqrt(tau/atmrho) |
ustar = sqrt(windStess/atmrho) |
188 |
#endif /* ALLOW_ATM_WIND */ |
#endif /* ALLOW_ATM_WIND */ |
189 |
|
|
190 |
C-- initial guess for exchange other coefficients: |
C-- initial guess for exchange other coefficients: |
318 |
& vwind(i,j,bi,bj) |
& vwind(i,j,bi,bj) |
319 |
#endif |
#endif |
320 |
#endif /* ifndef ALLOW_ATM_TEMP */ |
#endif /* ifndef ALLOW_ATM_TEMP */ |
321 |
enddo |
ENDDO |
322 |
enddo |
ENDDO |
323 |
enddo |
ENDDO |
324 |
enddo |
ENDDO |
325 |
|
|
326 |
#endif /* ALLOW_BULKFORMULAE */ |
#endif /* ALLOW_BULK_LARGEYEAGER04 */ |
327 |
|
|
328 |
|
RETURN |
329 |
END |
END |