78 |
|
|
79 |
C !LOCAL VARIABLES: ==================================================== |
C !LOCAL VARIABLES: ==================================================== |
80 |
C i,j :: loop indices |
C i,j :: loop indices |
81 |
INTEGER i,j |
INTEGER i,j !,k |
82 |
cjrs next |
c jrs next |
83 |
_RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
84 |
_RL Khplus,gradij,gradim1,gradjm1,calc_grad |
_RL Khplus,gradij,gradim1,gradjm1,calc_grad |
85 |
|
C _RL dep_frac |
86 |
real *8 khconst,khmin,khmax |
real *8 khconst,khmin,khmax |
87 |
parameter ( khconst=5.d15 ) |
parameter ( khconst=5.d15 ) !2.5d15 |
88 |
parameter ( khmin=1000.0 ) |
parameter ( khmin=1000.0 ) |
89 |
parameter ( khmax=40000.0 ) |
parameter ( khmax=40000.0 ) !15000.0 |
90 |
cjrs try constants 6e14, 3e15, 5e15, 10e15 |
cjrs try constants 6e14, 3e15, 5e15, 10e15 |
91 |
|
|
92 |
c jrs next |
c jrs next |
93 |
C print *,'in calc_mld for Khplus ' |
C print *,'in calc_mld for Khplus ' |
94 |
CALL FIND_RHO( |
Cold CALL FIND_RHO( |
95 |
& bi,bj,1-Olx,sNx+OLx,1-OLy,sNy+OLy,1,1, |
C & bi,bj,1-Olx,sNx+OLx,1-OLy,sNy+OLy,1,1, |
96 |
& theta,salt,rhoK,myThid) |
C & theta,salt,rhoK,myThid) |
97 |
|
CALL FIND_RHO_2D( |
98 |
|
& 1-Olx,sNx+OLx,1-OLy,sNy+OLy,1, |
99 |
|
& theta(1-OLx,1-OLy,1,bi,bj), salt(1-OLx,1-OLy,1,bi,bj), |
100 |
|
& rhoK, 1, bi, bj, myThid) |
101 |
|
|
102 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
103 |
DO i=1-Olx+1,sNx+Olx |
DO i=1-Olx+1,sNx+Olx |
104 |
|
|
105 |
|
|
106 |
if (hfacc(i,j,1,bi,bj).ne.0) then |
if (hfacc(i,j,1,bi,bj).ne.0) then |
107 |
gradij=calc_grad(i,j,bi,bj,rhoK) |
gradij= calc_grad(i,j,bi,bj,rhoK) |
108 |
endif |
endif |
109 |
|
|
110 |
if ( (hfacc(i,j,1,bi,bj).ne.0).and. |
if ( (hfacc(i,j,1,bi,bj).ne.0).and. |
111 |
& (hfacc(i-1,j,1,bi,bj).ne.0) ) then |
& (hfacc(i-1,j,1,bi,bj).ne.0) ) then |
112 |
gradim1=calc_grad(i-1,j,bi,bj,rhoK) |
gradim1= 0.! calc_grad(i-1,j,bi,bj,rhoK) |
113 |
if ((gradij.ne.0).and.(gradim1.ne.0)) then |
if ((gradij.ne.0).and.(gradim1.ne.0)) then |
114 |
Khplus= khconst*(gradij+gradim1)/2 |
Khplus= khconst*(gradij+gradim1)/2 |
115 |
elseif (gradij.ne.0) then |
elseif (gradij.ne.0) then |
121 |
endif |
endif |
122 |
if (Khplus.lt.khmin) Khplus=khmin |
if (Khplus.lt.khmin) Khplus=khmin |
123 |
if (Khplus.gt.khmax) Khplus=khmax |
if (Khplus.gt.khmax) Khplus=khmax |
124 |
if (j.ge.43) Khplus=khmin |
if (yC(i,j,bi,bj) .GE. 80.) Khplus=khmin |
125 |
diffkh3d_x(i,j,1)=Khplus |
diffkh3d_x(i,j,1)=Khplus |
|
c diffkh3d_x(i,j,2)=0.5*Khplus |
|
|
c diffkh3d_x(i,j,3)=0.2*Khplus |
|
126 |
C print *,'Khplus_x: ',i,j,Khplus |
C print *,'Khplus_x: ',i,j,Khplus |
127 |
|
|
128 |
else |
else |
131 |
|
|
132 |
if ( (hfacc(i,j,1,bi,bj).ne.0).and. |
if ( (hfacc(i,j,1,bi,bj).ne.0).and. |
133 |
& (hfacc(i,j-1,1,bi,bj).ne.0) ) then |
& (hfacc(i,j-1,1,bi,bj).ne.0) ) then |
134 |
gradjm1=calc_grad(i,j-1,bi,bj,rhoK) |
gradjm1=0.!calc_grad(i,j-1,bi,bj,rhoK) |
135 |
if ((gradij.ne.0).and.(gradjm1.ne.0)) then |
if ((gradij.ne.0).and.(gradjm1.ne.0)) then |
136 |
Khplus= khconst*(gradij+gradjm1)/2 |
Khplus= khconst*(gradij+gradjm1)/2 |
137 |
elseif (gradij.ne.0) then |
elseif (gradij.ne.0) then |
143 |
endif |
endif |
144 |
if (Khplus.lt.khmin) Khplus=khmin |
if (Khplus.lt.khmin) Khplus=khmin |
145 |
if (Khplus.gt.khmax) Khplus=khmax |
if (Khplus.gt.khmax) Khplus=khmax |
146 |
if (j.ge.43) Khplus=khmin |
if (yC(i,j,bi,bj).GE. 80.) Khplus=khmin |
147 |
diffkh3d_y(i,j,1)=Khplus |
diffkh3d_y(i,j,1)=Khplus |
148 |
c diffkh3d_y(i,j,2)=0.5*Khplus |
c diffkh3d_y(i,j,2)=0.5*Khplus |
149 |
c diffkh3d_y(i,j,3)=0.2*Khplus |
c diffkh3d_y(i,j,3)=0.2*Khplus |
152 |
else |
else |
153 |
diffkh3d_y(i,j,1)=0.d0 |
diffkh3d_y(i,j,1)=0.d0 |
154 |
endif |
endif |
155 |
|
c DO k=2,7 |
156 |
|
c if (-hMixLayer(i,j,bi,bj).ge.rF(k)) then |
157 |
|
c diffkh3d_x(i,j,k)=0.d0 |
158 |
|
c diffkh3d_y(i,j,k)=0.d0 |
159 |
|
c elseif (-hMixLayer(i,j,bi,bj).ge.rF(k+1)) then |
160 |
|
c dep_frac=(hMixLayer(i,j,bi,bj)+rF(k))/drF(k)* |
161 |
|
c & (240.+rC(k))/240. |
162 |
|
c diffkh3d_x(i,j,k)= dep_frac*diffkh3d_x(i,j,1) |
163 |
|
c diffkh3d_y(i,j,k)= dep_frac*diffkh3d_y(i,j,1) |
164 |
|
c else |
165 |
|
c dep_frac = (240.+rC(k))/240. |
166 |
|
c diffkh3d_x(i,j,k)= dep_frac*diffkh3d_x(i,j,1) |
167 |
|
c diffkh3d_y(i,j,k)= dep_frac*diffkh3d_y(i,j,1) |
168 |
|
c endif |
169 |
|
c ENDDO |
170 |
|
|
171 |
ENDDO |
ENDDO |
172 |
ENDDO |
ENDDO |