36 |
C !USES: =============================================================== |
C !USES: =============================================================== |
37 |
IMPLICIT NONE |
IMPLICIT NONE |
38 |
#include "SIZE.h" |
#include "SIZE.h" |
39 |
|
#include "EEPARAMS.h" |
40 |
#include "GAD.h" |
#include "GAD.h" |
41 |
|
|
42 |
C !INPUT PARAMETERS: =================================================== |
C !INPUT PARAMETERS: =================================================== |
84 |
C [iMin,iMax]Upd :: loop range to update tracer field |
C [iMin,iMax]Upd :: loop range to update tracer field |
85 |
C [jMin,jMax]Upd :: loop range to update tracer field |
C [jMin,jMax]Upd :: loop range to update tracer field |
86 |
C nbStrips :: number of strips (if region to update is splitted) |
C nbStrips :: number of strips (if region to update is splitted) |
87 |
_RL two, three |
_RL three |
|
PARAMETER( two = 2. _d 0 ) |
|
88 |
PARAMETER( three = 3. _d 0 ) |
PARAMETER( three = 3. _d 0 ) |
89 |
INTEGER i,j |
INTEGER i,j |
90 |
INTEGER ns, nbStrips |
INTEGER ns, nbStrips |
121 |
CEOP |
CEOP |
122 |
|
|
123 |
recip_dT = 0. |
recip_dT = 0. |
124 |
IF ( deltaTloc.GT.0. _d 0 ) recip_dT = 1.0 _d 0 / deltaTloc |
IF ( deltaTloc.GT.zeroRL ) recip_dT = 1.0 _d 0 / deltaTloc |
125 |
|
|
126 |
C- Set loop ranges for updating tracer field (splitted in 2 strips) |
C- Set loop ranges for updating tracer field (splitted in 2 strips) |
127 |
nbStrips = 1 |
nbStrips = 1 |
176 |
DO i=iMinUpd(ns),iMaxUpd(ns) |
DO i=iMinUpd(ns),iMaxUpd(ns) |
177 |
vLoc = vTrans(i,j)*deltaTloc |
vLoc = vTrans(i,j)*deltaTloc |
178 |
C-- Flux from (j-1) to (j) when V>0 (i.e., take right side of box j-1) |
C-- Flux from (j-1) to (j) when V>0 (i.e., take right side of box j-1) |
179 |
fp_v (i,j) = MAX( 0. _d 0, vLoc ) |
fp_v (i,j) = MAX( zeroRL, vLoc ) |
180 |
alp (i,j) = fp_v(i,j)/sm_v(i,j-1) |
alp (i,j) = fp_v(i,j)/sm_v(i,j-1) |
181 |
alpq = alp(i,j)*alp(i,j) |
alpq = alp(i,j)*alp(i,j) |
182 |
alp1 = 1. _d 0 - alp(i,j) |
alp1 = 1. _d 0 - alp(i,j) |
196 |
fp_zz(i,j) = alp(i,j)*sm_zz(i,j-1) |
fp_zz(i,j) = alp(i,j)*sm_zz(i,j-1) |
197 |
fp_xz(i,j) = alp(i,j)*sm_xz(i,j-1) |
fp_xz(i,j) = alp(i,j)*sm_xz(i,j-1) |
198 |
C-- Flux from (j) to (j-1) when V<0 (i.e., take left side of box j) |
C-- Flux from (j) to (j-1) when V<0 (i.e., take left side of box j) |
199 |
fn_v (i,j) = MAX( 0. _d 0, -vLoc ) |
fn_v (i,j) = MAX( zeroRL, -vLoc ) |
200 |
aln (i,j) = fn_v(i,j)/sm_v(i, j ) |
aln (i,j) = fn_v(i,j)/sm_v(i, j ) |
201 |
alnq = aln(i,j)*aln(i,j) |
alnq = aln(i,j)*aln(i,j) |
202 |
aln1 = 1. _d 0 - aln(i,j) |
aln1 = 1. _d 0 - aln(i,j) |
231 |
DO j=jMinUpd(1),jMaxUpd(1) |
DO j=jMinUpd(1),jMaxUpd(1) |
232 |
DO i=iMinUpd(ns),iMaxUpd(ns) |
DO i=iMinUpd(ns),iMaxUpd(ns) |
233 |
#ifdef ALLOW_OBCS |
#ifdef ALLOW_OBCS |
234 |
IF ( maskIn(i,j).NE.0. ) THEN |
IF ( maskIn(i,j).NE.zeroRS ) THEN |
235 |
#endif /* ALLOW_OBCS */ |
#endif /* ALLOW_OBCS */ |
236 |
alf1 = 1. _d 0 - aln(i,j) - alp(i,j+1) |
alf1 = 1. _d 0 - aln(i,j) - alp(i,j+1) |
237 |
alf1q = alf1*alf1 |
alf1q = alf1*alf1 |
259 |
DO j=jMinUpd(1),jMaxUpd(1) |
DO j=jMinUpd(1),jMaxUpd(1) |
260 |
DO i=iMinUpd(ns),iMaxUpd(ns) |
DO i=iMinUpd(ns),iMaxUpd(ns) |
261 |
#ifdef ALLOW_OBCS |
#ifdef ALLOW_OBCS |
262 |
IF ( maskIn(i,j).NE.0. ) THEN |
IF ( maskIn(i,j).NE.zeroRS ) THEN |
263 |
#endif /* ALLOW_OBCS */ |
#endif /* ALLOW_OBCS */ |
264 |
sm_v (i,j) = sm_v (i,j) + fp_v (i,j) + fn_v (i,j+1) |
sm_v (i,j) = sm_v (i,j) + fp_v (i,j) + fn_v (i,j+1) |
265 |
alfp = fp_v(i, j )/sm_v(i,j) |
alfp = fp_v(i, j )/sm_v(i,j) |
274 |
& + alfn*alfn*fn_yy(i,j+1) |
& + alfn*alfn*fn_yy(i,j+1) |
275 |
& - 5. _d 0*(-alpmn*alf1*sm_y(i,j) + alfp*alp1*fp_y(i,j) |
& - 5. _d 0*(-alpmn*alf1*sm_y(i,j) + alfp*alp1*fp_y(i,j) |
276 |
& - alfn*aln1*fn_y(i,j+1) |
& - alfn*aln1*fn_y(i,j+1) |
277 |
& + two*alfp*alfn*sm_o(i,j) + (alp1-alfp)*locTp |
& + twoRL*alfp*alfn*sm_o(i,j) + (alp1-alfp)*locTp |
278 |
& + (aln1-alfn)*locTn |
& + (aln1-alfn)*locTn |
279 |
& ) |
& ) |
280 |
sm_xy(i,j) = alf1*sm_xy(i,j) + alfp*fp_xy(i,j) |
sm_xy(i,j) = alf1*sm_xy(i,j) + alfp*fp_xy(i,j) |
281 |
& + alfn*fn_xy(i,j+1) |
& + alfn*fn_xy(i,j+1) |