23 |
I mytime, mythid |
I mytime, mythid |
24 |
I , kmtj, shsq, dvsq, ustar |
I , kmtj, shsq, dvsq, ustar |
25 |
I , bo, bosol, dbloc, Ritop, coriol |
I , bo, bosol, dbloc, Ritop, coriol |
26 |
|
I , diffusKzS, diffusKzT |
27 |
I , ikppkey |
I , ikppkey |
28 |
O , diffus |
O , diffus |
29 |
U , ghat |
U , ghat |
48 |
#include "SIZE.h" |
#include "SIZE.h" |
49 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
50 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
#include "DYNVARS.h" |
|
|
#include "FFIELDS.h" |
|
51 |
#include "KPP_PARAMS.h" |
#include "KPP_PARAMS.h" |
52 |
|
|
53 |
c input |
c input |
54 |
c myTime - current time in simulation |
c myTime - current time in simulation |
55 |
c myThid - thread number for this instance of the routine |
c myThid - thread number for this instance of the routine |
56 |
c kmtj (imt) - number of vertical layers on this row |
c kmtj (imt) - number of vertical layers on this row |
57 |
c shsq (imt,Nr) - (local velocity shear)^2 ((m/s)^2) |
c shsq (imt,Nr) - (local velocity shear)^2 ((m/s)^2) |
58 |
c dvsq (imt,Nr) - (velocity shear re sfc)^2 ((m/s)^2) |
c dvsq (imt,Nr) - (velocity shear re sfc)^2 ((m/s)^2) |
59 |
c ustar (imt) - surface friction velocity (m/s) |
c ustar (imt) - surface friction velocity (m/s) |
60 |
c bo (imt) - surface turbulent buoy. forcing (m^2/s^3) |
c bo (imt) - surface turbulent buoy. forcing (m^2/s^3) |
61 |
c bosol (imt) - radiative buoyancy forcing (m^2/s^3) |
c bosol (imt) - radiative buoyancy forcing (m^2/s^3) |
62 |
c dbloc (imt,Nr) - local delta buoyancy across interfaces (m/s^2) |
c dbloc (imt,Nr) - local delta buoyancy across interfaces (m/s^2) |
63 |
c dblocSm(imt,Nr) - horizontally smoothed dbloc (m/s^2) |
c dblocSm(imt,Nr) - horizontally smoothed dbloc (m/s^2) |
64 |
c stored in ghat to save space |
c stored in ghat to save space |
65 |
c Ritop (imt,Nr) - numerator of bulk Richardson Number |
c Ritop (imt,Nr) - numerator of bulk Richardson Number |
66 |
c (zref-z) * delta buoyancy w.r.t. surface ((m/s)^2) |
c (zref-z) * delta buoyancy w.r.t. surface ((m/s)^2) |
67 |
c coriol (imt) - Coriolis parameter (1/s) |
c coriol (imt) - Coriolis parameter (1/s) |
68 |
|
c diffusKzS(imt,Nr)- background vertical diffusivity for scalars (m^2/s) |
69 |
|
c diffusKzT(imt,Nr)- background vertical diffusivity for theta (m^2/s) |
70 |
c note: there is a conversion from 2-D to 1-D for input output variables, |
c note: there is a conversion from 2-D to 1-D for input output variables, |
71 |
c e.g., hbl(sNx,sNy) -> hbl(imt), |
c e.g., hbl(sNx,sNy) -> hbl(imt), |
72 |
c where hbl(i,j) -> hbl((j-1)*sNx+i) |
c where hbl(i,j) -> hbl((j-1)*sNx+i) |
73 |
|
|
74 |
_RL mytime |
_RL mytime |
75 |
integer mythid |
integer mythid |
76 |
integer kmtj (imt ) |
integer kmtj (imt ) |
77 |
_KPP_RL shsq (imt,Nr) |
_KPP_RL shsq (imt,Nr) |
78 |
_KPP_RL dvsq (imt,Nr) |
_KPP_RL dvsq (imt,Nr) |
79 |
_KPP_RL ustar (imt ) |
_KPP_RL ustar (imt ) |
80 |
_KPP_RL bo (imt ) |
_KPP_RL bo (imt ) |
81 |
_KPP_RL bosol (imt ) |
_KPP_RL bosol (imt ) |
82 |
_KPP_RL dbloc (imt,Nr) |
_KPP_RL dbloc (imt,Nr) |
83 |
_KPP_RL Ritop (imt,Nr) |
_KPP_RL Ritop (imt,Nr) |
84 |
_KPP_RL coriol(imt ) |
_KPP_RL coriol (imt ) |
85 |
|
_RL diffusKzS(imt,Nr) |
86 |
|
_RL diffusKzT(imt,Nr) |
87 |
|
|
88 |
integer ikppkey |
integer ikppkey |
89 |
|
|
135 |
cph) |
cph) |
136 |
call Ri_iwmix ( |
call Ri_iwmix ( |
137 |
I kmtj, shsq, dbloc, ghat |
I kmtj, shsq, dbloc, ghat |
138 |
|
I , diffusKzS, diffusKzT |
139 |
I , ikppkey |
I , ikppkey |
140 |
O , diffus ) |
O , diffus ) |
141 |
|
|
214 |
do i = 1, imt |
do i = 1, imt |
215 |
if (k .lt. kbl(i)) then |
if (k .lt. kbl(i)) then |
216 |
diffus(i,k,1) = max ( blmc(i,k,1), viscAr ) |
diffus(i,k,1) = max ( blmc(i,k,1), viscAr ) |
217 |
diffus(i,k,2) = max ( blmc(i,k,2), diffKrNrS(k) ) |
diffus(i,k,2) = max ( blmc(i,k,2), diffusKzS(i,Nr) ) |
218 |
diffus(i,k,3) = max ( blmc(i,k,3), diffKrNrT(k) ) |
diffus(i,k,3) = max ( blmc(i,k,3), diffusKzT(i,Nr) ) |
219 |
else |
else |
220 |
ghat(i,k) = 0. |
ghat(i,k) = 0. |
221 |
endif |
endif |
261 |
IMPLICIT NONE |
IMPLICIT NONE |
262 |
|
|
263 |
#include "SIZE.h" |
#include "SIZE.h" |
|
#include "EEPARAMS.h" |
|
|
#include "PARAMS.h" |
|
264 |
#include "KPP_PARAMS.h" |
#include "KPP_PARAMS.h" |
|
#include "FFIELDS.h" |
|
265 |
|
|
266 |
c input |
c input |
267 |
c------ |
c------ |
659 |
|
|
660 |
subroutine Ri_iwmix ( |
subroutine Ri_iwmix ( |
661 |
I kmtj, shsq, dbloc, dblocSm |
I kmtj, shsq, dbloc, dblocSm |
662 |
|
I , diffusKzS, diffusKzT |
663 |
I , ikppkey |
I , ikppkey |
664 |
O , diffus ) |
O , diffus ) |
665 |
|
|
680 |
c shsq (imt,Nr) (local velocity shear)^2 ((m/s)^2) |
c shsq (imt,Nr) (local velocity shear)^2 ((m/s)^2) |
681 |
c dbloc (imt,Nr) local delta buoyancy (m/s^2) |
c dbloc (imt,Nr) local delta buoyancy (m/s^2) |
682 |
c dblocSm(imt,Nr) horizontally smoothed dbloc (m/s^2) |
c dblocSm(imt,Nr) horizontally smoothed dbloc (m/s^2) |
683 |
|
c diffusKzS(imt,Nr)- background vertical diffusivity for scalars (m^2/s) |
684 |
|
c diffusKzT(imt,Nr)- background vertical diffusivity for theta (m^2/s) |
685 |
integer kmtj (imt) |
integer kmtj (imt) |
686 |
_KPP_RL shsq (imt,Nr) |
_KPP_RL shsq (imt,Nr) |
687 |
_KPP_RL dbloc (imt,Nr) |
_KPP_RL dbloc (imt,Nr) |
688 |
_KPP_RL dblocSm(imt,Nr) |
_KPP_RL dblocSm(imt,Nr) |
689 |
|
_RL diffusKzS(imt,Nr) |
690 |
|
_RL diffusKzT(imt,Nr) |
691 |
integer ikppkey |
integer ikppkey |
692 |
|
|
693 |
c output |
c output |
792 |
#ifndef EXCLUDE_KPP_SHEAR_MIX |
#ifndef EXCLUDE_KPP_SHEAR_MIX |
793 |
if ( .NOT. inAdMode ) then |
if ( .NOT. inAdMode ) then |
794 |
diffus(i,ki,1) = viscAr + fcon * difmcon + fRi * difm0 |
diffus(i,ki,1) = viscAr + fcon * difmcon + fRi * difm0 |
795 |
diffus(i,ki,2) = diffKrNrS(ki)+ fcon*difscon + fRi*difs0 |
diffus(i,ki,2) = diffusKzS(i,ki)+fcon*difscon+fRi*difs0 |
796 |
diffus(i,ki,3) = diffKrNrT(ki)+ fcon*difscon + fRi*difs0 |
diffus(i,ki,3) = diffusKzT(i,ki)+fcon*diftcon+fRi*dift0 |
797 |
else |
else |
798 |
diffus(i,ki,1) = viscAr |
diffus(i,ki,1) = viscAr |
799 |
diffus(i,ki,2) = diffKrNrS(ki) |
diffus(i,ki,2) = diffusKzS(i,ki) |
800 |
diffus(i,ki,3) = diffKrNrT(ki) |
diffus(i,ki,3) = diffusKzT(i,ki) |
801 |
endif |
endif |
802 |
#else |
#else |
803 |
diffus(i,ki,1) = viscAr |
diffus(i,ki,1) = viscAr |
804 |
diffus(i,ki,2) = diffKrNrS(ki) |
diffus(i,ki,2) = diffusKzS(i,ki) |
805 |
diffus(i,ki,3) = diffKrNrT(ki) |
diffus(i,ki,3) = diffusKzT(i,ki) |
806 |
#endif |
#endif |
807 |
|
|
808 |
end do |
end do |