58 |
DO iTrc=1,PTRACERS_numInUse |
DO iTrc=1,PTRACERS_numInUse |
59 |
DO j = jMin, jMax |
DO j = jMin, jMax |
60 |
DO i = iMin, iMax |
DO i = iMin, iMax |
|
C Restoring to zero at the surface on a 10-day timescale |
|
61 |
surfaceForcingPtr(i,j,bi,bj,iTrc) = |
surfaceForcingPtr(i,j,bi,bj,iTrc) = |
62 |
& + 1. _d 0 / (10. _d 0 * 86400. _d 0) |
& + 1. _d 0 / (10. _d 0 * 86400. _d 0) |
63 |
& * ( 0. _d 0 - pTracer(i,j,ks,bi,bj,iTrc) ) |
& * ( 0. _d 0 - pTracer(i,j,ks,bi,bj,iTrc) ) |
89 |
ENDIF |
ENDIF |
90 |
|
|
91 |
ENDDO |
ENDDO |
92 |
ENDIF |
|
93 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
94 |
|
ELSE |
95 |
|
#else /* EXACT_CONSERV */ |
96 |
|
IF (.TRUE.) THEN |
97 |
#endif /* EXACT_CONSERV */ |
#endif /* EXACT_CONSERV */ |
98 |
|
|
99 |
|
C-- EmPmR does not really affect the water column height (for tracer budget) |
100 |
|
C and is converted to a salt tendency. |
101 |
|
|
102 |
|
IF (convertFW2Salt .EQ. -1.) THEN |
103 |
|
C- use local surface tracer field to calculate forcing term: |
104 |
|
|
105 |
|
DO iTrc=1,PTRACERS_numInUse |
106 |
|
|
107 |
|
IF (PtRACERS_EvPrRn(iTrc).NE.UNSET_RL) THEN |
108 |
|
C account for Rain/Evap tracer content (PtRACERS_EvPrRn) using |
109 |
|
C local surface tracer |
110 |
|
DO j = jMin, jMax |
111 |
|
DO i = iMin, iMax |
112 |
|
surfaceForcingPtr(i,j,bi,bj,iTrc) = |
113 |
|
& surfaceForcingPtr(i,j,bi,bj,iTrc) |
114 |
|
& + EmPmR(i,j,bi,bj) |
115 |
|
& *( pTracer(i,j,ks,bi,bj,iTrc) - PtRACERS_EvPrRn(iTrc) ) |
116 |
|
& *mass2rUnit |
117 |
|
ENDDO |
118 |
|
ENDDO |
119 |
|
ENDIF |
120 |
|
|
121 |
|
ENDDO |
122 |
|
|
123 |
|
ELSE |
124 |
|
C- use uniform tracer value to calculate forcing term: |
125 |
|
|
126 |
|
DO iTrc=1,PTRACERS_numInUse |
127 |
|
|
128 |
|
IF (PtRACERS_EvPrRn(iTrc).NE.UNSET_RL) THEN |
129 |
|
C account for Rain/Evap tracer content (PtRACERS_EvPrRn) assuming uniform |
130 |
|
C surface tracer (=PTRACERS_ref) |
131 |
|
DO j = jMin, jMax |
132 |
|
DO i = iMin, iMax |
133 |
|
surfaceForcingPtr(i,j,bi,bj,iTrc) = |
134 |
|
& surfaceForcingPtr(i,j,bi,bj,iTrc) |
135 |
|
& + EmPmR(i,j,bi,bj) |
136 |
|
& *( PTRACERS_ref(ks,iTrc) - PtRACERS_EvPrRn(iTrc) ) |
137 |
|
& *mass2rUnit |
138 |
|
ENDDO |
139 |
|
ENDDO |
140 |
|
ENDIF |
141 |
|
|
142 |
|
ENDDO |
143 |
|
|
144 |
|
C- end local-surface-tracer / uniform-value distinction |
145 |
|
ENDIF |
146 |
|
|
147 |
|
ENDIF |
148 |
|
|
149 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
150 |
|
|
151 |
#endif /* ALLOW_PTRACERS */ |
#endif /* ALLOW_PTRACERS */ |
152 |
|
|
153 |
RETURN |
RETURN |