8 |
C !ROUTINE: FIND_ALPHA |
C !ROUTINE: FIND_ALPHA |
9 |
C !INTERFACE: |
C !INTERFACE: |
10 |
SUBROUTINE FIND_ALPHA ( |
SUBROUTINE FIND_ALPHA ( |
11 |
I bi, bj, iMin, iMax, jMin, jMax, k, kRef, eqn, |
I bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
12 |
O alphaloc ) |
O alphaloc ) |
13 |
|
|
14 |
C !DESCRIPTION: \bv |
C !DESCRIPTION: \bv |
20 |
C | k - is the Theta/Salt level |
C | k - is the Theta/Salt level |
21 |
C | kRef - determines pressure reference level |
C | kRef - determines pressure reference level |
22 |
C | (not used in 'LINEAR' mode) |
C | (not used in 'LINEAR' mode) |
|
C | eqn - determines the eqn. of state: 'LINEAR' or 'POLY3' |
|
23 |
C | |
C | |
24 |
C | alphaloc - drho / dT (kg/m^3/C) |
C | alphaloc - drho / dT (kg/m^3/C) |
25 |
C | |
C | |
41 |
integer bi,bj,iMin,iMax,jMin,jMax |
integer bi,bj,iMin,iMax,jMin,jMax |
42 |
integer k ! Level of Theta/Salt slice |
integer k ! Level of Theta/Salt slice |
43 |
integer kRef ! Pressure reference level |
integer kRef ! Pressure reference level |
|
character*(*) eqn |
|
44 |
_RL alphaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL alphaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
45 |
|
|
46 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
124 |
s1 = salt(i,j,k,bi,bj) |
s1 = salt(i,j,k,bi,bj) |
125 |
if ( s1 .lt. 0. _d 0 ) then |
if ( s1 .lt. 0. _d 0 ) then |
126 |
C issue a warning |
C issue a warning |
127 |
write(*,'(a,i3,a,i3,a,i3,a,e13.5)') |
write(*,'(a,i3,a,i3,a,i3,a,i3,a,i3,a,e13.5)') |
128 |
& ' FIND_ALPHA: WARNING, salinity(', |
& ' FIND_ALPHA: WARNING, salinity(', |
129 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
130 |
s1 = 0. _d 0 |
s1 = 0. _d 0 |
203 |
elseif ( equationOfState.eq.'MDJWF' ) then |
elseif ( equationOfState.eq.'MDJWF' ) then |
204 |
|
|
205 |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
206 |
& eqn, theta, salt, rhoLoc, myThid ) |
& theta, salt, rhoLoc, myThid ) |
207 |
CALL FIND_RHODEN( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
CALL FIND_RHODEN( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
208 |
& theta, salt, rhoDen, myThid ) |
& theta, salt, rhoDen, myThid ) |
209 |
|
|
214 |
s1 = salt(i,j,k,bi,bj) |
s1 = salt(i,j,k,bi,bj) |
215 |
if ( s1 .lt. 0. _d 0 ) then |
if ( s1 .lt. 0. _d 0 ) then |
216 |
C issue a warning |
C issue a warning |
217 |
write(*,'(a,i3,a,i3,a,i3,a,e13.5)') |
write(*,'(a,i3,a,i3,a,i3,a,i3,a,i3,a,e13.5)') |
218 |
& ' FIND_ALPHA: WARNING, salinity(', |
& ' FIND_ALPHA: WARNING, salinity(', |
219 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
220 |
s1 = 0. _d 0 |
s1 = 0. _d 0 |
253 |
end |
end |
254 |
|
|
255 |
subroutine FIND_BETA ( |
subroutine FIND_BETA ( |
256 |
I bi, bj, iMin, iMax, jMin, jMax, k, kRef, eqn, |
I bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
257 |
O betaloc ) |
O betaloc ) |
258 |
C /==========================================================\ |
C /==========================================================\ |
259 |
C | o SUBROUTINE FIND_BETA | |
C | o SUBROUTINE FIND_BETA | |
263 |
C | k - is the Theta/Salt level | |
C | k - is the Theta/Salt level | |
264 |
C | kRef - determines pressure reference level | |
C | kRef - determines pressure reference level | |
265 |
C | (not used in 'LINEAR' mode) | |
C | (not used in 'LINEAR' mode) | |
|
C | eqn - determines the eqn. of state: 'LINEAR' or 'POLY3' | |
|
266 |
C | | |
C | | |
267 |
C | betaloc - drho / dS (kg/m^3/PSU) | |
C | betaloc - drho / dS (kg/m^3/PSU) | |
268 |
C | | |
C | | |
281 |
integer bi,bj,iMin,iMax,jMin,jMax |
integer bi,bj,iMin,iMax,jMin,jMax |
282 |
integer k ! Level of Theta/Salt slice |
integer k ! Level of Theta/Salt slice |
283 |
integer kRef ! Pressure reference level |
integer kRef ! Pressure reference level |
|
character*(*) eqn |
|
284 |
_RL betaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL betaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
285 |
|
|
286 |
c Local |
c Local |
361 |
s1 = salt(i,j,k,bi,bj) |
s1 = salt(i,j,k,bi,bj) |
362 |
if ( s1 .lt. 0. _d 0 ) then |
if ( s1 .lt. 0. _d 0 ) then |
363 |
C issue a warning |
C issue a warning |
364 |
write(*,'(a,i3,a,i3,a,i3,a,e13.5)') |
write(*,'(a,i3,a,i3,a,i3,a,i3,a,i3,a,e13.5)') |
365 |
& ' FIND_BETA: WARNING, salinity(', |
& ' FIND_BETA: WARNING, salinity(', |
366 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
367 |
s1 = 0. _d 0 |
s1 = 0. _d 0 |
426 |
elseif ( equationOfState.eq.'MDJWF' ) then |
elseif ( equationOfState.eq.'MDJWF' ) then |
427 |
|
|
428 |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
CALL FIND_RHO( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
429 |
& eqn, theta, salt, rhoLoc, myThid ) |
& theta, salt, rhoLoc, myThid ) |
430 |
CALL FIND_RHODEN( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
CALL FIND_RHODEN( bi, bj, iMin, iMax, jMin, jMax, k, kRef, |
431 |
& theta, salt, rhoDen, myThid ) |
& theta, salt, rhoDen, myThid ) |
432 |
|
|
437 |
s1 = salt(i,j,k,bi,bj) |
s1 = salt(i,j,k,bi,bj) |
438 |
if ( s1 .lt. 0. _d 0 ) then |
if ( s1 .lt. 0. _d 0 ) then |
439 |
C issue a warning |
C issue a warning |
440 |
write(*,'(a,i3,a,i3,a,i3,a,e13.5)') |
write(*,'(a,i3,a,i3,a,i3,a,i3,a,i3,a,e13.5)') |
441 |
& ' FIND_BETA: WARNING, salinity(', |
& ' FIND_BETA: WARNING, salinity(', |
442 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
& i,',',j,',',k,',',bi,',',bj,') = ', s1 |
443 |
s1 = 0. _d 0 |
s1 = 0. _d 0 |