86 |
imax = snx+olx |
imax = snx+olx |
87 |
|
|
88 |
c-- Initialize background weights |
c-- Initialize background weights |
89 |
wtau0 = 0. |
whflux0m = whflux0 |
90 |
whflux0 = 0. |
wsflux0m = wsflux0 |
91 |
wsflux0 = 0. |
wtau0m = wtau0 |
|
whflux0m = 0 |
|
|
wsflux0m = 0. |
|
|
watemp0 = 0. |
|
|
waqh0 = 0. |
|
|
wwind0 = 0. |
|
92 |
|
|
93 |
c-- Initialize variance (weight) fields. |
c-- Initialize variance (weight) fields. |
94 |
do k = 1,nr |
do k = 1,nr |
111 |
wtauvm (i,j,bi,bj) = 0. _d 0 |
wtauvm (i,j,bi,bj) = 0. _d 0 |
112 |
watemp (i,j,bi,bj) = 0. _d 0 |
watemp (i,j,bi,bj) = 0. _d 0 |
113 |
waqh (i,j,bi,bj) = 0. _d 0 |
waqh (i,j,bi,bj) = 0. _d 0 |
114 |
|
wprecip (i,j,bi,bj) = 0. _d 0 |
115 |
|
wswflux (i,j,bi,bj) = 0. _d 0 |
116 |
|
wswdown (i,j,bi,bj) = 0. _d 0 |
117 |
wuwind (i,j,bi,bj) = 0. _d 0 |
wuwind (i,j,bi,bj) = 0. _d 0 |
118 |
wvwind (i,j,bi,bj) = 0. _d 0 |
wvwind (i,j,bi,bj) = 0. _d 0 |
119 |
wsst (i,j,bi,bj) = 0. _d 0 |
wsst (i,j,bi,bj) = 0. _d 0 |
120 |
wsss (i,j,bi,bj) = 0. _d 0 |
wsss (i,j,bi,bj) = 0. _d 0 |
121 |
wtp (i,j,bi,bj) = 0. _d 0 |
wtp (i,j,bi,bj) = 0. _d 0 |
122 |
wers (i,j,bi,bj) = 0. _d 0 |
wers (i,j,bi,bj) = 0. _d 0 |
|
wgfo (i,j,bi,bj) = 0. _d 0 |
|
123 |
wp (i,j,bi,bj) = 0. _d 0 |
wp (i,j,bi,bj) = 0. _d 0 |
124 |
wudrift (i,j,bi,bj) = 0. _d 0 |
wudrift (i,j,bi,bj) = 0. _d 0 |
125 |
wvdrift (i,j,bi,bj) = 0. _d 0 |
wvdrift (i,j,bi,bj) = 0. _d 0 |
126 |
cph( |
cph( |
127 |
whflux2 (i,j,bi,bj) = 0. _d 0 |
whflux2 (i,j,bi,bj) = 0. _d 0 |
128 |
wsflux2 (i,j,bi,bj) = 0. _d 0 |
wsflux2 (i,j,bi,bj) = 0. _d 0 |
129 |
wtauu2 (i,j,bi,bj) = 0. _d 0 |
wtauu2 (i,j,bi,bj) = 0. _d 0 |
130 |
wtauv2 (i,j,bi,bj) = 0. _d 0 |
wtauv2 (i,j,bi,bj) = 0. _d 0 |
131 |
cph) |
cph) |
132 |
enddo |
enddo |
133 |
enddo |
enddo |
140 |
wsalt (k,bi,bj) = 0. _d 0 |
wsalt (k,bi,bj) = 0. _d 0 |
141 |
wctdt (k,bi,bj) = 0. _d 0 |
wctdt (k,bi,bj) = 0. _d 0 |
142 |
wctds (k,bi,bj) = 0. _d 0 |
wctds (k,bi,bj) = 0. _d 0 |
143 |
|
wdiffkr(k,bi,bj) = wdiffkr0 |
144 |
|
wkapgm (k,bi,bj) = wkapgm0 |
145 |
|
wedtaux(k,bi,bj) = wedtau0 |
146 |
|
wedtauy(k,bi,bj) = wedtau0 |
147 |
do j = jmin,jmax |
do j = jmin,jmax |
148 |
do i = imin,imax |
do i = imin,imax |
149 |
wtheta2 (i,j,k,bi,bj) = 0. _d 0 |
wtheta2 (i,j,k,bi,bj) = 0. _d 0 |
150 |
wsalt2 (i,j,k,bi,bj) = 0. _d 0 |
wsalt2 (i,j,k,bi,bj) = 0. _d 0 |
151 |
|
wdiffkr2(i,j,k,bi,bj) = wdiffkr0 |
152 |
|
wkapgm2 (i,j,k,bi,bj) = wkapgm0 |
153 |
|
wedtaux2(i,j,k,bi,bj) = wedtau0 |
154 |
|
wedtauy2(i,j,k,bi,bj) = wedtau0 |
155 |
wthetaLev (i,j,k,bi,bj) = 0. _d 0 |
wthetaLev (i,j,k,bi,bj) = 0. _d 0 |
156 |
wsaltLev (i,j,k,bi,bj) = 0. _d 0 |
wsaltLev (i,j,k,bi,bj) = 0. _d 0 |
157 |
|
wdiffkrFld(i,j,k,bi,bj) = wdiffkr0 |
158 |
|
wkapgmFld (i,j,k,bi,bj) = wkapgm0 |
159 |
|
wedtauxFld(i,j,k,bi,bj) = wedtau0 |
160 |
|
wedtauyFld(i,j,k,bi,bj) = wedtau0 |
161 |
enddo |
enddo |
162 |
enddo |
enddo |
163 |
enddo |
enddo |
227 |
_BEGIN_MASTER(myThid) |
_BEGIN_MASTER(myThid) |
228 |
ilo = ifnblnk(data_errfile) |
ilo = ifnblnk(data_errfile) |
229 |
ihi = ilnblnk(data_errfile) |
ihi = ilnblnk(data_errfile) |
230 |
CALL OPEN_COPY_DATA_FILE( |
CALL OPEN_COPY_DATA_FILE( |
231 |
I data_errfile(ilo:ihi), |
I data_errfile(ilo:ihi), |
232 |
I 'ECCO_COST_WEIGHTS', |
I 'ECCO_COST_WEIGHTS', |
233 |
O gwunit, |
O gwunit, |
234 |
I myThid ) |
I myThid ) |
235 |
|
|
236 |
read(gwunit,*) |
read(gwunit,*) ratio |
|
#if (defined (ALLOW_HFLUX_COST_CONTRIBUTION) || defined (ALLOW_HFLUX_CONTROL)) |
|
|
& whflux0 |
|
|
#elif (defined (ALLOW_ATEMP_COST_CONTRIBUTION) || defined (ALLOW_ATEMP_CONTROL)) |
|
|
& watemp0 |
|
|
#endif |
|
|
#if (defined (ALLOW_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SFLUX_CONTROL)) |
|
|
& , wsflux0 |
|
|
#elif (defined (ALLOW_AQH_COST_CONTRIBUTION) || defined (ALLOW_AQH_CONTROL)) |
|
|
& , waqh0 |
|
|
#endif |
|
|
#if (defined (ALLOW_USTRESS_COST_CONTRIBUTION) || defined (ALLOW_USTRESS_CONTROL)) |
|
|
& , wtau0 |
|
|
#elif (defined (ALLOW_UWIND_COST_CONTRIBUTION) || defined (ALLOW_UWIND_CONTROL)) |
|
|
& , wwind0 |
|
|
#endif |
|
|
& , ratio |
|
237 |
#if (defined (ALLOW_OBCS_COST_CONTRIBUTION) || defined (ALLOW_OBCS_CONTROL)) |
#if (defined (ALLOW_OBCS_COST_CONTRIBUTION) || defined (ALLOW_OBCS_CONTROL)) |
238 |
& , wbaro |
& , wbaro |
239 |
#endif |
#endif |
|
|
|
240 |
do k = 1,nr |
do k = 1,nr |
241 |
read(gwunit,*) wti(k), wsi(k) |
read(gwunit,*) wti(k), wsi(k) |
242 |
#if (defined (ALLOW_OBCS_COST_CONTRIBUTION) || \ |
#if (defined (ALLOW_OBCS_COST_CONTRIBUTION) || defined (ALLOW_OBCS_CONTROL)) |
|
defined (ALLOW_OBCS_CONTROL)) |
|
243 |
& , wvi(k) |
& , wvi(k) |
244 |
#endif |
#endif |
245 |
end do |
end do |
246 |
close(gwunit) |
close(gwunit) |
247 |
|
|
|
whflux0m = whflux0 |
|
|
wsflux0m = wsflux0 |
|
|
wtau0m = wtau0 |
|
248 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
249 |
|
|
250 |
_BARRIER |
_BARRIER |
273 |
#ifdef ALLOW_OBCSN_COST_CONTRIBUTION |
#ifdef ALLOW_OBCSN_COST_CONTRIBUTION |
274 |
wobcsn(k,1) = wti(k) |
wobcsn(k,1) = wti(k) |
275 |
wobcsn(k,2) = wsi(k) |
wobcsn(k,2) = wsi(k) |
276 |
wobcsn(k,3) = wti(k)*0.02 |
wobcsn(k,3) = wvi(k) |
277 |
wobcsn(k,4) = wti(k)*0.02 |
wobcsn(k,4) = wvi(k) |
278 |
#endif |
#endif |
279 |
#ifdef ALLOW_OBCSS_COST_CONTRIBUTION |
#ifdef ALLOW_OBCSS_COST_CONTRIBUTION |
280 |
wobcss(k,1) = wti(k) |
wobcss(k,1) = wti(k) |
281 |
wobcss(k,2) = wsi(k) |
wobcss(k,2) = wsi(k) |
282 |
wobcss(k,3) = wti(k)*0.02 |
wobcss(k,3) = wvi(k) |
283 |
wobcss(k,4) = wti(k)*0.02 |
wobcss(k,4) = wvi(k) |
284 |
#endif |
#endif |
285 |
#ifdef ALLOW_OBCSW_COST_CONTRIBUTION |
#ifdef ALLOW_OBCSW_COST_CONTRIBUTION |
286 |
wobcsw(k,1) = wti(k) |
wobcsw(k,1) = wti(k) |
287 |
wobcsw(k,2) = wsi(k) |
wobcsw(k,2) = wsi(k) |
288 |
wobcsw(k,3) = wti(k)*0.02 |
wobcsw(k,3) = wvi(k) |
289 |
wobcsw(k,4) = wti(k)*0.02 |
wobcsw(k,4) = wvi(k) |
290 |
#endif |
#endif |
291 |
#ifdef ALLOW_OBCSE_COST_CONTRIBUTION |
#ifdef ALLOW_OBCSE_COST_CONTRIBUTION |
292 |
wobcse(k,1) = wti(k) |
wobcse(k,1) = wti(k) |
293 |
wobcse(k,2) = wsi(k) |
wobcse(k,2) = wsi(k) |
294 |
wobcse(k,3) = wti(k)*0.02 |
wobcse(k,3) = wvi(k) |
295 |
wobcse(k,4) = wti(k)*0.02 |
wobcse(k,4) = wvi(k) |
296 |
#endif |
#endif |
297 |
enddo |
enddo |
298 |
enddo |
enddo |
311 |
if ( wsaltLev(i,j,k,bi,bj).eq.0 ) then |
if ( wsaltLev(i,j,k,bi,bj).eq.0 ) then |
312 |
wsaltLev(i,j,k,bi,bj) = 0. _d 0 |
wsaltLev(i,j,k,bi,bj) = 0. _d 0 |
313 |
else |
else |
314 |
wsaltLev(i,j,k,bi,bj)=frame(i,j)/ |
wsaltLev(i,j,k,bi,bj)=frame(i,j)/( |
315 |
$ ( wsaltLev(i,j,k,bi,bj)*wsaltLev(i,j,k,bi,bj) ) |
$ wsaltLev(i,j,k,bi,bj)*wsaltLev(i,j,k,bi,bj) ) |
316 |
endif |
endif |
317 |
enddo |
enddo |
318 |
enddo |
enddo |
331 |
enddo |
enddo |
332 |
enddo |
enddo |
333 |
enddo |
enddo |
334 |
enddo |
enddo |
335 |
endif |
endif |
336 |
call active_write_xyz( 'wsaltLev', wsaltLev, |
call active_write_xyz( 'wsaltLev', wsaltLev, |
337 |
& 1, 0, mythid, dummy) |
& 1, 0, mythid, dummy) |
338 |
#endif |
#endif |
339 |
|
|
350 |
if ( wthetaLev(i,j,k,bi,bj).eq.0 ) then |
if ( wthetaLev(i,j,k,bi,bj).eq.0 ) then |
351 |
wthetaLev(i,j,k,bi,bj) = 0. _d 0 |
wthetaLev(i,j,k,bi,bj) = 0. _d 0 |
352 |
else |
else |
353 |
wthetaLev(i,j,k,bi,bj)=frame(i,j)/ |
wthetaLev(i,j,k,bi,bj)=frame(i,j)/( |
354 |
$ ( wthetaLev(i,j,k,bi,bj)*wthetaLev(i,j,k,bi,bj) ) |
$ wthetaLev(i,j,k,bi,bj)*wthetaLev(i,j,k,bi,bj) ) |
355 |
endif |
endif |
356 |
enddo |
enddo |
357 |
enddo |
enddo |
370 |
enddo |
enddo |
371 |
enddo |
enddo |
372 |
enddo |
enddo |
373 |
enddo |
enddo |
374 |
endif |
endif |
375 |
call active_write_xyz( 'wthetaLev', wthetaLev, |
call active_write_xyz( 'wthetaLev', wthetaLev, |
376 |
& 1, 0, mythid, dummy) |
& 1, 0, mythid, dummy) |
377 |
#endif |
#endif |
378 |
|
|
394 |
$ wsalt2(i,j,k,bi,bj).eq.0) then |
$ wsalt2(i,j,k,bi,bj).eq.0) then |
395 |
wsalt2(i,j,k,bi,bj) = 0. _d 0 |
wsalt2(i,j,k,bi,bj) = 0. _d 0 |
396 |
else |
else |
397 |
cph new weights by G. Forget dont need MAX |
wsalt2(i,j,k,bi,bj)=frame(i,j)/ |
398 |
wsalt2(i,j,k,bi,bj)=frame(i,j)/( |
$ ( wsalt2(i,j,k,bi,bj)*wsalt2(i,j,k,bi,bj) ) |
|
$ wsalt2(i,j,k,bi,bj)*wsalt2(i,j,k,bi,bj) ) |
|
399 |
endif |
endif |
400 |
enddo |
enddo |
401 |
enddo |
enddo |
436 |
$ wtheta2(i,j,k,bi,bj).eq.0) then |
$ wtheta2(i,j,k,bi,bj).eq.0) then |
437 |
wtheta2(i,j,k,bi,bj) = 0. _d 0 |
wtheta2(i,j,k,bi,bj) = 0. _d 0 |
438 |
else |
else |
439 |
cph new weights by G. Forget dont need MAX |
wtheta2(i,j,k,bi,bj)= frame(i,j)/ |
440 |
wtheta2(i,j,k,bi,bj)=frame(i,j)/( |
$ ( wtheta2(i,j,k,bi,bj)*wtheta2(i,j,k,bi,bj) ) |
|
$ wtheta2(i,j,k,bi,bj)*wtheta2(i,j,k,bi,bj) ) |
|
441 |
endif |
endif |
442 |
enddo |
enddo |
443 |
enddo |
enddo |
496 |
do i = imin,imax |
do i = imin,imax |
497 |
wp(i,j,bi,bj) = wp(i,j,bi,bj)*frame(i,j) |
wp(i,j,bi,bj) = wp(i,j,bi,bj)*frame(i,j) |
498 |
cph-indonesian( |
cph-indonesian( |
499 |
if ( xC(i,j,bi,bj) .GT. 115. .AND. |
if ( xC(i,j,bi,bj) .GT. 120. .AND. |
500 |
& xC(i,j,bi,bj) .LT. 130. .AND. |
& xC(i,j,bi,bj) .LT. 130. .AND. |
501 |
& yC(i,j,bi,bj) .GT. -10. .AND. |
& yC(i,j,bi,bj) .GT. -10. .AND. |
502 |
& yC(i,j,bi,bj) .LT. 10. ) then |
& yC(i,j,bi,bj) .LT. 10. ) then |
503 |
cph wp(i,j,bi,bj) = wp(i,j,bi,bj)*10000. |
wp(i,j,bi,bj) = wp(i,j,bi,bj)*100. |
|
wp(i,j,bi,bj) = 0. |
|
504 |
endif |
endif |
505 |
cph-indonesian) |
cph-indonesian) |
|
cph-medit( |
|
|
if ( ( xC(i,j,bi,bj) .GT. 355. .AND. |
|
|
& xC(i,j,bi,bj) .LT. 360. .AND. |
|
|
& yC(i,j,bi,bj) .GT. 30. .AND. |
|
|
& yC(i,j,bi,bj) .LT. 48. ) |
|
|
& .OR. |
|
|
& ( xC(i,j,bi,bj) .GT. 0. .AND. |
|
|
& xC(i,j,bi,bj) .LT. 39. .AND. |
|
|
& yC(i,j,bi,bj) .GT. 30. .AND. |
|
|
& yC(i,j,bi,bj) .LT. 48. ) ) then |
|
|
wp(i,j,bi,bj) = wp(i,j,bi,bj)*10. |
|
|
endif |
|
|
cph-medit) |
|
506 |
enddo |
enddo |
507 |
enddo |
enddo |
508 |
enddo |
enddo |
536 |
if (_hFacC(i,j,k,bi,bj) .eq. 0.) then |
if (_hFacC(i,j,k,bi,bj) .eq. 0.) then |
537 |
wtp (i,j,bi,bj) = 0. _d 0 |
wtp (i,j,bi,bj) = 0. _d 0 |
538 |
wers(i,j,bi,bj) = 0. _d 0 |
wers(i,j,bi,bj) = 0. _d 0 |
|
wgfo(i,j,bi,bj) = 0. _d 0 |
|
539 |
else |
else |
540 |
wtp (i,j,bi,bj) = ( wtp(i,j,bi,bj) * 0.01 * 0.5 ) |
wtp (i,j,bi,bj) = ( wtp(i,j,bi,bj) * 0.01 * 0.5 ) |
541 |
& *frame(i,j) |
& *frame(i,j) |
542 |
wers(i,j,bi,bj) = ( wtp(i,j,bi,bj) + 0.05 ) |
wers(i,j,bi,bj) = ( wtp(i,j,bi,bj) + 0.05 ) |
543 |
& *frame(i,j) |
& *frame(i,j) |
|
wgfo(i,j,bi,bj) = ( wtp(i,j,bi,bj) + 0.05 ) |
|
|
& *frame(i,j) |
|
544 |
endif |
endif |
545 |
cph-indonesian( |
cph-indonesian( |
546 |
if ( xC(i,j,bi,bj) .GT. 115. .AND. |
if ( xC(i,j,bi,bj) .GT. 120. .AND. |
547 |
& xC(i,j,bi,bj) .LT. 130. .AND. |
& xC(i,j,bi,bj) .LT. 130. .AND. |
548 |
& yC(i,j,bi,bj) .GT. -10. .AND. |
& yC(i,j,bi,bj) .GT. -10. .AND. |
549 |
& yC(i,j,bi,bj) .LT. 10. ) then |
& yC(i,j,bi,bj) .LT. 10. ) then |
550 |
wtp(i,j,bi,bj) = 0. |
wtp(i,j,bi,bj) = wtp(i,j,bi,bj)*100. |
551 |
wers(i,j,bi,bj) = 0. |
wers(i,j,bi,bj) = wers(i,j,bi,bj)*100. |
|
wgfo(i,j,bi,bj) = 0. |
|
552 |
endif |
endif |
553 |
cph-indonesian) |
cph-indonesian) |
|
cph-medit( |
|
|
if ( ( xC(i,j,bi,bj) .GT. 355. .AND. |
|
|
& xC(i,j,bi,bj) .LT. 360. .AND. |
|
|
& yC(i,j,bi,bj) .GT. 30. .AND. |
|
|
& yC(i,j,bi,bj) .LT. 48. ) |
|
|
& .OR. |
|
|
& ( xC(i,j,bi,bj) .GT. 0. .AND. |
|
|
& xC(i,j,bi,bj) .LT. 39. .AND. |
|
|
& yC(i,j,bi,bj) .GT. 30. .AND. |
|
|
& yC(i,j,bi,bj) .LT. 48. ) ) then |
|
|
wtp(i,j,bi,bj) = wtp(i,j,bi,bj) *10. |
|
|
wers(i,j,bi,bj) = wers(i,j,bi,bj)*10. |
|
|
wgfo(i,j,bi,bj) = wgfo(i,j,bi,bj)*10. |
|
|
endif |
|
|
cph-medit) |
|
554 |
enddo |
enddo |
555 |
enddo |
enddo |
556 |
enddo |
enddo |
576 |
if (wscatx(i,j,bi,bj) .lt. -9900.) then |
if (wscatx(i,j,bi,bj) .lt. -9900.) then |
577 |
wscatx(i,j,bi,bj) = 0. _d 0 |
wscatx(i,j,bi,bj) = 0. _d 0 |
578 |
endif |
endif |
|
c-- Rescale dyn -> N/M^2 |
|
579 |
wscatx(i,j,bi,bj) = wscatx(i,j,bi,bj) |
wscatx(i,j,bi,bj) = wscatx(i,j,bi,bj) |
|
c-- Missing values over water should have larger errors |
|
|
if ( wscatx(i,j,bi,bj).EQ.0. .AND. |
|
|
& maskW(i,j,k,bi,bj).NE.0. ) |
|
|
& wscatx(i,j,bi,bj) = 4.*wtau0 |
|
|
c-- Cut off extreme values |
|
|
if ( wscatx(i,j,bi,bj).GT.0.15 ) |
|
|
& wscatx(i,j,bi,bj) = 0.15 |
|
|
c-- Set mimimum background |
|
580 |
wscatx(i,j,bi,bj) = max(wscatx(i,j,bi,bj),wtau0) |
wscatx(i,j,bi,bj) = max(wscatx(i,j,bi,bj),wtau0) |
581 |
wscatx(i,j,bi,bj) = wscatx(i,j,bi,bj)*maskW(i,j,k,bi,bj) |
wscatx(i,j,bi,bj) = wscatx(i,j,bi,bj)*maskw(i,j,k,bi,bj) |
582 |
& *frame(i,j) |
& *frame(i,j) |
|
c |
|
583 |
if (wscaty(i,j,bi,bj) .lt. -9900.) then |
if (wscaty(i,j,bi,bj) .lt. -9900.) then |
584 |
wscaty(i,j,bi,bj) = 0. _d 0 |
wscaty(i,j,bi,bj) = 0. _d 0 |
585 |
endif |
endif |
|
c-- Rescale dyn -> N/M^2 |
|
586 |
wscaty(i,j,bi,bj) = wscaty(i,j,bi,bj) |
wscaty(i,j,bi,bj) = wscaty(i,j,bi,bj) |
|
c-- Missing values over water should have larger errors |
|
|
if ( wscaty(i,j,bi,bj).EQ.0. .AND. |
|
|
& maskS(i,j,k,bi,bj).NE.0. ) |
|
|
& wscaty(i,j,bi,bj) = 4.*wtau0 |
|
|
c-- Cut off extreme values |
|
|
if ( wscaty(i,j,bi,bj).GT.0.15 ) |
|
|
& wscaty(i,j,bi,bj) = 0.15 |
|
|
c-- Set mimimum background |
|
587 |
wscaty(i,j,bi,bj) = max(wscaty(i,j,bi,bj),wtau0) |
wscaty(i,j,bi,bj) = max(wscaty(i,j,bi,bj),wtau0) |
588 |
wscaty(i,j,bi,bj) = wscaty(i,j,bi,bj)*maskS(i,j,k,bi,bj) |
wscaty(i,j,bi,bj) = wscaty(i,j,bi,bj)*masks(i,j,k,bi,bj) |
589 |
& *frame(i,j) |
& *frame(i,j) |
590 |
enddo |
enddo |
591 |
enddo |
enddo |
626 |
enddo |
enddo |
627 |
#endif |
#endif |
628 |
|
|
629 |
#if (defined (ALLOW_USTRESS_COST_CONTRIBUTION)) |
#if (defined (ALLOW_USTRESS_COST_CONTRIBUTION) || defined (ALLOW_USTRESS_CONTROL)) |
630 |
nnz = 1 |
nnz = 1 |
631 |
ce irec = 2 |
ce irec = 2 |
632 |
ce( due to Patrick's processing: |
ce( due to Patrick's processing: |
634 |
ce) |
ce) |
635 |
if ( tauu_errfile .NE. ' ' ) then |
if ( tauu_errfile .NE. ' ' ) then |
636 |
call mdsreadfield( tauu_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( tauu_errfile, cost_iprec, cost_yftype, nnz, |
637 |
& wtauu, irec, mythid ) |
& wtauu, irec, mythid ) |
638 |
endif |
endif |
639 |
|
|
640 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
646 |
if (wtauu(i,j,bi,bj) .lt. -9900.) then |
if (wtauu(i,j,bi,bj) .lt. -9900.) then |
647 |
wtauu(i,j,bi,bj) = 0. _d 0 |
wtauu(i,j,bi,bj) = 0. _d 0 |
648 |
endif |
endif |
|
c-- Rescale dyn -> N/M^2 |
|
649 |
wtauu(i,j,bi,bj) = wtauu(i,j,bi,bj)*0.1 |
wtauu(i,j,bi,bj) = wtauu(i,j,bi,bj)*0.1 |
|
c-- Missing values over water should have larger errors |
|
|
if ( wtauu(i,j,bi,bj).EQ.0. .AND. |
|
|
& maskW(i,j,k,bi,bj).NE.0. ) |
|
|
& wtauu(i,j,bi,bj) = 4.*wtau0 |
|
|
c-- Cut off extreme values |
|
|
if ( wtauu(i,j,bi,bj).GT.0.12 ) |
|
|
& wtauu(i,j,bi,bj) = 0.12 |
|
|
c-- Set mimimum background |
|
650 |
wtauu(i,j,bi,bj) = max(wtauu(i,j,bi,bj),wtau0) |
wtauu(i,j,bi,bj) = max(wtauu(i,j,bi,bj),wtau0) |
651 |
wtauu(i,j,bi,bj) = wtauu(i,j,bi,bj)*maskW(i,j,k,bi,bj) |
wtauu(i,j,bi,bj) = wtauu(i,j,bi,bj)*maskw(i,j,k,bi,bj) |
652 |
& *frame(i,j) |
& *frame(i,j) |
653 |
cph( |
cph( |
654 |
cph wtauu2(i,j,bi,bj) = 2.*wtau0*maskW(i,j,k,bi,bj)*frame(i,j) |
wtauu2(i,j,bi,bj) = wtau0*maskW(i,j,k,bi,bj)*frame(i,j) |
|
wtauu2(i,j,bi,bj) = wtauu(i,j,bi,bj) |
|
655 |
cph) |
cph) |
656 |
enddo |
enddo |
657 |
enddo |
enddo |
658 |
enddo |
enddo |
659 |
enddo |
enddo |
660 |
|
|
661 |
#elif (defined (ALLOW_UWIND_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_UWIND_COST_CONTRIBUTION) || defined (ALLOW_UWIND_CONTROL)) |
662 |
|
|
663 |
nnz = 1 |
nnz = 1 |
664 |
ce irec = 2 |
ce irec = 2 |
667 |
ce) |
ce) |
668 |
if ( uwind_errfile .NE. ' ' ) then |
if ( uwind_errfile .NE. ' ' ) then |
669 |
call mdsreadfield( uwind_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( uwind_errfile, cost_iprec, cost_yftype, nnz, |
670 |
& wuwind, irec, mythid ) |
& wuwind, irec, mythid ) |
671 |
endif |
endif |
672 |
|
|
673 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
681 |
endif |
endif |
682 |
wuwind(i,j,bi,bj) = wuwind(i,j,bi,bj) |
wuwind(i,j,bi,bj) = wuwind(i,j,bi,bj) |
683 |
wuwind(i,j,bi,bj) = max(wuwind(i,j,bi,bj),wwind0) |
wuwind(i,j,bi,bj) = max(wuwind(i,j,bi,bj),wwind0) |
684 |
wuwind(i,j,bi,bj) = wuwind(i,j,bi,bj)*maskC(i,j,k,bi,bj) |
wuwind(i,j,bi,bj) = wuwind(i,j,bi,bj)*maskc(i,j,k,bi,bj) |
685 |
& *frame(i,j) |
& *frame(i,j) |
686 |
enddo |
enddo |
687 |
enddo |
enddo |
690 |
#endif |
#endif |
691 |
|
|
692 |
c-- Read meridional wind stress variance. |
c-- Read meridional wind stress variance. |
693 |
#if (defined (ALLOW_VSTRESS_COST_CONTRIBUTION)) |
#if (defined (ALLOW_VSTRESS_COST_CONTRIBUTION) || defined (ALLOW_VSTRESS_CONTROL)) |
694 |
nnz = 1 |
nnz = 1 |
695 |
ce irec = 2 |
ce irec = 2 |
696 |
ce( due to Patrick's processing: |
ce( due to Patrick's processing: |
699 |
|
|
700 |
if ( tauv_errfile .NE. ' ' ) then |
if ( tauv_errfile .NE. ' ' ) then |
701 |
call mdsreadfield( tauv_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( tauv_errfile, cost_iprec, cost_yftype, nnz, |
702 |
& wtauv, irec, mythid ) |
& wtauv, irec, mythid ) |
703 |
endif |
endif |
704 |
|
|
705 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
710 |
if (wtauv(i,j,bi,bj) .lt. -9900.) then |
if (wtauv(i,j,bi,bj) .lt. -9900.) then |
711 |
wtauv(i,j,bi,bj) = 0. _d 0 |
wtauv(i,j,bi,bj) = 0. _d 0 |
712 |
endif |
endif |
|
c-- Rescape dyn -> dyn |
|
713 |
wtauv(i,j,bi,bj) = wtauv(i,j,bi,bj)*0.1 |
wtauv(i,j,bi,bj) = wtauv(i,j,bi,bj)*0.1 |
|
c-- Missing values over water should have larger errors |
|
|
if ( wtauv(i,j,bi,bj).EQ.0. .AND. |
|
|
& maskS(i,j,k,bi,bj).NE.0. ) |
|
|
& wtauv(i,j,bi,bj) = 4.*wtau0 |
|
|
c-- Cut off extreme values |
|
|
if ( wtauv(i,j,bi,bj).GT.0.12 ) |
|
|
& wtauv(i,j,bi,bj) = 0.12 |
|
|
c-- Set mimimum background |
|
714 |
wtauv(i,j,bi,bj) = max(wtauv(i,j,bi,bj),wtau0) |
wtauv(i,j,bi,bj) = max(wtauv(i,j,bi,bj),wtau0) |
715 |
wtauv(i,j,bi,bj) = wtauv(i,j,bi,bj)*maskS(i,j,k,bi,bj) |
wtauv(i,j,bi,bj) = wtauv(i,j,bi,bj)*masks(i,j,k,bi,bj) |
716 |
& *frame(i,j) |
& *frame(i,j) |
717 |
cph( |
cph( |
718 |
cph wtauv2(i,j,bi,bj) = 2.*wtau0*maskS(i,j,k,bi,bj)*frame(i,j) |
wtauv2(i,j,bi,bj) = wtau0*maskS(i,j,k,bi,bj)*frame(i,j) |
|
wtauv2(i,j,bi,bj) = wtauv(i,j,bi,bj) |
|
719 |
cph) |
cph) |
720 |
enddo |
enddo |
721 |
enddo |
enddo |
722 |
enddo |
enddo |
723 |
enddo |
enddo |
724 |
|
|
725 |
#elif (defined (ALLOW_VWIND_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_VWIND_COST_CONTRIBUTION) || defined (ALLOW_VWIND_CONTROL)) |
726 |
|
|
727 |
nnz = 1 |
nnz = 1 |
728 |
ce irec = 2 |
ce irec = 2 |
732 |
|
|
733 |
if ( vwind_errfile .NE. ' ' ) then |
if ( vwind_errfile .NE. ' ' ) then |
734 |
call mdsreadfield( vwind_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( vwind_errfile, cost_iprec, cost_yftype, nnz, |
735 |
& wvwind, irec, mythid ) |
& wvwind, irec, mythid ) |
736 |
endif |
endif |
737 |
|
|
738 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
745 |
endif |
endif |
746 |
wvwind(i,j,bi,bj) = wvwind(i,j,bi,bj) |
wvwind(i,j,bi,bj) = wvwind(i,j,bi,bj) |
747 |
wvwind(i,j,bi,bj) = max(wvwind(i,j,bi,bj),wwind0) |
wvwind(i,j,bi,bj) = max(wvwind(i,j,bi,bj),wwind0) |
748 |
wvwind(i,j,bi,bj) = wvwind(i,j,bi,bj)*maskC(i,j,k,bi,bj) |
wvwind(i,j,bi,bj) = wvwind(i,j,bi,bj)*maskc(i,j,k,bi,bj) |
749 |
& *frame(i,j) |
& *frame(i,j) |
750 |
enddo |
enddo |
751 |
enddo |
enddo |
752 |
enddo |
enddo |
753 |
enddo |
enddo |
754 |
#endif |
#endif |
755 |
|
|
756 |
#if (defined (ALLOW_HFLUX_COST_CONTRIBUTION)) |
#if (defined (ALLOW_HFLUX_COST_CONTRIBUTION) || defined (ALLOW_HFLUX_CONTROL)) |
757 |
c-- Read heat flux flux variance. |
c-- Read heat flux flux variance. |
758 |
nnz = 1 |
nnz = 1 |
759 |
c-- First record in data file: mean field. |
c-- First record in data file: mean field. |
763 |
irec = 1 |
irec = 1 |
764 |
ce) |
ce) |
765 |
if ( hflux_errfile .NE. ' ' ) then |
if ( hflux_errfile .NE. ' ' ) then |
766 |
call mdsreadfield( hflux_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( hflux_errfile, cost_iprec, cost_yftype, nnz, |
767 |
& whflux, irec, mythid ) |
& whflux, irec, mythid ) |
768 |
endif |
endif |
769 |
|
|
770 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
782 |
whfluxm(i,j,bi,bj) = max(whfluxm(i,j,bi,bj),whflux0m) |
whfluxm(i,j,bi,bj) = max(whfluxm(i,j,bi,bj),whflux0m) |
783 |
& *frame(i,j) |
& *frame(i,j) |
784 |
cph( |
cph( |
785 |
cph whflux2(i,j,bi,bj) = 2.*whflux0*frame(i,j) |
whflux2(i,j,bi,bj) = whflux0*frame(i,j) |
|
whflux2(i,j,bi,bj) = whflux(i,j,bi,bj) |
|
786 |
cph) |
cph) |
787 |
enddo |
enddo |
788 |
enddo |
enddo |
789 |
enddo |
enddo |
790 |
enddo |
enddo |
791 |
#elif (defined (ALLOW_ATEMP_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_ATEMP_COST_CONTRIBUTION) || defined (ALLOW_ATEMP_CONTROL)) |
792 |
c-- Read atmos. temp. variance. |
c-- Read atmos. temp. variance. |
793 |
nnz = 1 |
nnz = 1 |
794 |
c-- First record in data file: mean field. |
c-- First record in data file: mean field. |
799 |
ce) |
ce) |
800 |
if ( atemp_errfile .NE. ' ' ) then |
if ( atemp_errfile .NE. ' ' ) then |
801 |
call mdsreadfield( atemp_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( atemp_errfile, cost_iprec, cost_yftype, nnz, |
802 |
& watemp, irec, mythid ) |
& watemp, irec, mythid ) |
803 |
endif |
endif |
804 |
|
|
805 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
810 |
if (watemp(i,j,bi,bj) .lt. -9900.) then |
if (watemp(i,j,bi,bj) .lt. -9900.) then |
811 |
watemp(i,j,bi,bj) = 0. _d 0 |
watemp(i,j,bi,bj) = 0. _d 0 |
812 |
endif |
endif |
813 |
c-- Data are in units of deg. |
c-- Data are in units of W/m**2. |
814 |
watemp(i,j,bi,bj) = watemp(i,j,bi,bj) |
watemp(i,j,bi,bj) = watemp(i,j,bi,bj) |
815 |
watemp(i,j,bi,bj) = max(watemp(i,j,bi,bj),watemp0) |
watemp(i,j,bi,bj) = max(watemp(i,j,bi,bj),watemp0) |
816 |
& *frame(i,j) |
& *frame(i,j) |
818 |
enddo |
enddo |
819 |
enddo |
enddo |
820 |
enddo |
enddo |
821 |
|
|
822 |
|
|
823 |
#endif |
#endif |
824 |
|
|
825 |
#if (defined (ALLOW_SFLUX_COST_CONTRIBUTION)) |
#if (defined (ALLOW_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SFLUX_CONTROL)) |
826 |
c-- Read salt flux variance. Second read: data in units of m/s. |
c-- Read salt flux variance. Second read: data in units of m/s. |
827 |
nnz = 1 |
nnz = 1 |
828 |
c-- First record in data file: mean field. |
c-- First record in data file: mean field. |
832 |
irec = 1 |
irec = 1 |
833 |
ce) |
ce) |
834 |
if ( sflux_errfile .NE. ' ' ) then |
if ( sflux_errfile .NE. ' ' ) then |
835 |
call mdsreadfield( sflux_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( sflux_errfile, cost_iprec, cost_yftype, nnz, |
836 |
& wsflux, irec, mythid ) |
& wsflux, irec, mythid ) |
837 |
endif |
endif |
838 |
|
|
839 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
851 |
wsfluxm(i,j,bi,bj) = max(wsfluxm(i,j,bi,bj),wsflux0m) |
wsfluxm(i,j,bi,bj) = max(wsfluxm(i,j,bi,bj),wsflux0m) |
852 |
& *frame(i,j) |
& *frame(i,j) |
853 |
cph( |
cph( |
854 |
cph wsflux2(i,j,bi,bj) = 2.*wsflux0*frame(i,j) |
wsflux2(i,j,bi,bj) = wsflux0*frame(i,j) |
|
wsflux2(i,j,bi,bj) = wsflux(i,j,bi,bj) |
|
855 |
cph) |
cph) |
856 |
enddo |
enddo |
857 |
enddo |
enddo |
858 |
enddo |
enddo |
859 |
enddo |
enddo |
860 |
#elif (defined (ALLOW_AQH_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_AQH_COST_CONTRIBUTION) || defined (ALLOW_AQH_CONTROL)) |
861 |
c-- Secific humid. variance. Second read: data in units of m/s. |
c-- Secific humid. variance. Second read: data in units of m/s. |
862 |
nnz = 1 |
nnz = 1 |
863 |
c-- First record in data file: mean field. |
c-- First record in data file: mean field. |
867 |
irec = 1 |
irec = 1 |
868 |
ce) |
ce) |
869 |
if ( aqh_errfile .NE. ' ' ) then |
if ( aqh_errfile .NE. ' ' ) then |
870 |
call mdsreadfield( aqh_errfile, cost_iprec, cost_yftype, nnz, |
call mdsreadfield( aqh_errfile, cost_iprec, cost_yftype, nnz, |
871 |
& waqh, irec, mythid ) |
& waqh, irec, mythid ) |
872 |
endif |
endif |
873 |
|
|
874 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
879 |
if (waqh(i,j,bi,bj) .lt. -9900.) then |
if (waqh(i,j,bi,bj) .lt. -9900.) then |
880 |
waqh(i,j,bi,bj) = 0. _d 0 |
waqh(i,j,bi,bj) = 0. _d 0 |
881 |
endif |
endif |
882 |
c-- Data are in units of |
c-- Data are in units of m/s. |
883 |
waqh(i,j,bi,bj) = waqh(i,j,bi,bj) |
waqh(i,j,bi,bj) = waqh(i,j,bi,bj) |
884 |
waqh(i,j,bi,bj) = max(waqh(i,j,bi,bj),waqh0) |
waqh(i,j,bi,bj) = max(waqh(i,j,bi,bj),waqh0) |
885 |
& *frame(i,j) |
& *frame(i,j) |
889 |
enddo |
enddo |
890 |
#endif |
#endif |
891 |
|
|
892 |
|
#if (defined (ALLOW_PRECIP_COST_CONTRIBUTION) || defined (ALLOW_PRECIP_CONTROL)) |
893 |
|
c-- Atmos. precipitation variance. Second read: data in units of m/s. |
894 |
|
nnz = 1 |
895 |
|
c-- First record in data file: mean field. |
896 |
|
c-- Second record in data file: rms field. |
897 |
|
ce irec = 2 |
898 |
|
ce( due to Patrick's processing: |
899 |
|
irec = 1 |
900 |
|
ce) |
901 |
|
if ( precip_errfile .NE. ' ' ) then |
902 |
|
call mdsreadfield( precip_errfile, cost_iprec, cost_yftype, nnz, |
903 |
|
& wprecip, irec, mythid ) |
904 |
|
endif |
905 |
|
|
906 |
|
do bj = jtlo,jthi |
907 |
|
do bi = itlo,ithi |
908 |
|
do j = jmin,jmax |
909 |
|
do i = imin,imax |
910 |
|
c-- Test for missing values. |
911 |
|
if (wprecip(i,j,bi,bj) .lt. -9900.) then |
912 |
|
wprecip(i,j,bi,bj) = 0. _d 0 |
913 |
|
endif |
914 |
|
c-- Data are in units of m/s. |
915 |
|
wprecip(i,j,bi,bj) = wprecip(i,j,bi,bj) |
916 |
|
wprecip(i,j,bi,bj) = max(wprecip(i,j,bi,bj),wprecip0) |
917 |
|
& *frame(i,j) |
918 |
|
enddo |
919 |
|
enddo |
920 |
|
enddo |
921 |
|
enddo |
922 |
|
#endif |
923 |
|
|
924 |
|
#if (defined (ALLOW_SWFLUX_COST_CONTRIBUTION) || defined (ALLOW_SWFLUX_CONTROL)) |
925 |
|
c-- Atmos. swfluxitation variance. Second read: data in units of m/s. |
926 |
|
nnz = 1 |
927 |
|
c-- First record in data file: mean field. |
928 |
|
c-- Second record in data file: rms field. |
929 |
|
ce irec = 2 |
930 |
|
ce( due to Patrick's processing: |
931 |
|
irec = 1 |
932 |
|
ce) |
933 |
|
if ( swflux_errfile .NE. ' ' ) then |
934 |
|
call mdsreadfield( swflux_errfile, cost_iprec, cost_yftype, nnz, |
935 |
|
& wswflux, irec, mythid ) |
936 |
|
endif |
937 |
|
|
938 |
|
do bj = jtlo,jthi |
939 |
|
do bi = itlo,ithi |
940 |
|
do j = jmin,jmax |
941 |
|
do i = imin,imax |
942 |
|
c-- Test for missing values. |
943 |
|
if (wswflux(i,j,bi,bj) .lt. -9900.) then |
944 |
|
wswflux(i,j,bi,bj) = 0. _d 0 |
945 |
|
endif |
946 |
|
c-- Data are in units of m/s. |
947 |
|
wswflux(i,j,bi,bj) = wswflux(i,j,bi,bj) |
948 |
|
wswflux(i,j,bi,bj) = max(wswflux(i,j,bi,bj),wswflux0) |
949 |
|
& *frame(i,j) |
950 |
|
enddo |
951 |
|
enddo |
952 |
|
enddo |
953 |
|
enddo |
954 |
|
#endif |
955 |
|
|
956 |
|
#if (defined (ALLOW_SWDOWN_COST_CONTRIBUTION) || defined (ALLOW_SWDOWN_CONTROL)) |
957 |
|
c-- Atmos. swdownitation variance. Second read: data in units of m/s. |
958 |
|
nnz = 1 |
959 |
|
c-- First record in data file: mean field. |
960 |
|
c-- Second record in data file: rms field. |
961 |
|
ce irec = 2 |
962 |
|
ce( due to Patrick's processing: |
963 |
|
irec = 1 |
964 |
|
ce) |
965 |
|
if ( swdown_errfile .NE. ' ' ) then |
966 |
|
call mdsreadfield( swdown_errfile, cost_iprec, cost_yftype, nnz, |
967 |
|
& wswdown, irec, mythid ) |
968 |
|
endif |
969 |
|
|
970 |
|
do bj = jtlo,jthi |
971 |
|
do bi = itlo,ithi |
972 |
|
do j = jmin,jmax |
973 |
|
do i = imin,imax |
974 |
|
c-- Test for missing values. |
975 |
|
if (wswdown(i,j,bi,bj) .lt. -9900.) then |
976 |
|
wswdown(i,j,bi,bj) = 0. _d 0 |
977 |
|
endif |
978 |
|
c-- Data are in units of m/s. |
979 |
|
wswdown(i,j,bi,bj) = wswdown(i,j,bi,bj) |
980 |
|
wswdown(i,j,bi,bj) = max(wswdown(i,j,bi,bj),wswdown0) |
981 |
|
& *frame(i,j) |
982 |
|
enddo |
983 |
|
enddo |
984 |
|
enddo |
985 |
|
enddo |
986 |
|
#endif |
987 |
|
|
988 |
c-- Units have to be checked! |
c-- Units have to be checked! |
989 |
do bj = jtlo,jthi |
do bj = jtlo,jthi |
990 |
do bi = itlo,ithi |
do bi = itlo,ithi |
996 |
if (wers(i,j,bi,bj) .ne. 0.) then |
if (wers(i,j,bi,bj) .ne. 0.) then |
997 |
wers(i,j,bi,bj) = 1./wers(i,j,bi,bj)/wers(i,j,bi,bj) |
wers(i,j,bi,bj) = 1./wers(i,j,bi,bj)/wers(i,j,bi,bj) |
998 |
endif |
endif |
|
if (wgfo(i,j,bi,bj) .ne. 0.) then |
|
|
wgfo(i,j,bi,bj) = 1./wgfo(i,j,bi,bj)/wgfo(i,j,bi,bj) |
|
|
endif |
|
|
cph( |
|
|
cph sst, sss: reduce weights by factor 2 |
|
999 |
if (wsst(i,j,bi,bj) .ne. 0.) then |
if (wsst(i,j,bi,bj) .ne. 0.) then |
1000 |
wsst(i,j,bi,bj) = 1./wsst(i,j,bi,bj)/wsst(i,j,bi,bj)/2. |
wsst(i,j,bi,bj) = 1./wsst(i,j,bi,bj)/wsst(i,j,bi,bj) |
1001 |
endif |
endif |
1002 |
if (wsss(i,j,bi,bj) .ne. 0.) then |
if (wsss(i,j,bi,bj) .ne. 0.) then |
1003 |
wsss(i,j,bi,bj) = 1./wsss(i,j,bi,bj)/wsss(i,j,bi,bj)/2. |
wsss(i,j,bi,bj) = 1./wsss(i,j,bi,bj)/wsss(i,j,bi,bj) |
1004 |
endif |
endif |
|
cph) |
|
1005 |
if (wp(i,j,bi,bj) .ne. 0.) then |
if (wp(i,j,bi,bj) .ne. 0.) then |
1006 |
wp(i,j,bi,bj) = 1./wp(i,j,bi,bj)/wp(i,j,bi,bj) |
wp(i,j,bi,bj) = 1./wp(i,j,bi,bj)/wp(i,j,bi,bj) |
1007 |
endif |
endif |
1008 |
if (wtauu(i,j,bi,bj) .ne. 0.) then |
if (wtauu(i,j,bi,bj) .ne. 0.) then |
1009 |
wtauu(i,j,bi,bj) = |
wtauu(i,j,bi,bj) = 1./wtauu(i,j,bi,bj)/wtauu(i,j,bi,bj) |
|
& 1./wtauu(i,j,bi,bj)/wtauu(i,j,bi,bj) |
|
1010 |
else |
else |
1011 |
wtauu(i,j,bi,bj) = 0.0 _d 0 |
wtauu(i,j,bi,bj) = 0.0 _d 0 |
1012 |
endif |
endif |
1023 |
wscatx(i,j,bi,bj) = 0.0 _d 0 |
wscatx(i,j,bi,bj) = 0.0 _d 0 |
1024 |
endif |
endif |
1025 |
if (wtauv(i,j,bi,bj) .ne. 0.) then |
if (wtauv(i,j,bi,bj) .ne. 0.) then |
1026 |
wtauv(i,j,bi,bj) = |
wtauv(i,j,bi,bj) = 1./wtauv(i,j,bi,bj)/wtauv(i,j,bi,bj) |
|
& 1./wtauv(i,j,bi,bj)/wtauv(i,j,bi,bj) |
|
1027 |
else |
else |
1028 |
wtauv(i,j,bi,bj) = 0.0 _d 0 |
wtauv(i,j,bi,bj) = 0.0 _d 0 |
1029 |
endif |
endif |
1063 |
else |
else |
1064 |
wsfluxm(i,j,bi,bj) = 0.0 _d 0 |
wsfluxm(i,j,bi,bj) = 0.0 _d 0 |
1065 |
endif |
endif |
|
cph) |
|
1066 |
if (wuwind(i,j,bi,bj) .ne. 0.) then |
if (wuwind(i,j,bi,bj) .ne. 0.) then |
1067 |
wuwind(i,j,bi,bj) = |
wuwind(i,j,bi,bj) = |
1068 |
& 1./wuwind(i,j,bi,bj)/wuwind(i,j,bi,bj) |
& 1./wuwind(i,j,bi,bj)/wuwind(i,j,bi,bj) |
1087 |
else |
else |
1088 |
waqh(i,j,bi,bj) = 0.0 _d 0 |
waqh(i,j,bi,bj) = 0.0 _d 0 |
1089 |
endif |
endif |
1090 |
|
if (wprecip(i,j,bi,bj) .ne. 0.) then |
1091 |
|
wprecip(i,j,bi,bj) = |
1092 |
|
& 1./wprecip(i,j,bi,bj)/wprecip(i,j,bi,bj) |
1093 |
|
else |
1094 |
|
wprecip(i,j,bi,bj) = 0.0 _d 0 |
1095 |
|
endif |
1096 |
|
if (wswflux(i,j,bi,bj) .ne. 0.) then |
1097 |
|
wswflux(i,j,bi,bj) = |
1098 |
|
& 1./wswflux(i,j,bi,bj)/wswflux(i,j,bi,bj) |
1099 |
|
else |
1100 |
|
wswflux(i,j,bi,bj) = 0.0 _d 0 |
1101 |
|
endif |
1102 |
|
if (wswdown(i,j,bi,bj) .ne. 0.) then |
1103 |
|
wswdown(i,j,bi,bj) = |
1104 |
|
& 1./wswdown(i,j,bi,bj)/wswdown(i,j,bi,bj) |
1105 |
|
else |
1106 |
|
wswdown(i,j,bi,bj) = 0.0 _d 0 |
1107 |
|
endif |
1108 |
|
|
1109 |
if (wsfluxmm(bi,bj).ne.0.) |
if (wsfluxmm(bi,bj).ne.0.) |
1110 |
& wsfluxmm(bi,bj) = 1./wsfluxmm(bi,bj)*wsfluxmm(bi,bj) |
& wsfluxmm(bi,bj) = 1./wsfluxmm(bi,bj)*wsfluxmm(bi,bj) |
1111 |
if (whfluxmm(bi,bj).ne.0.) |
if (whfluxmm(bi,bj).ne.0.) |
1112 |
& whfluxmm(bi,bj) = 1./whfluxmm(bi,bj)*whfluxmm(bi,bj) |
& whfluxmm(bi,bj) = 1./whfluxmm(bi,bj)*whfluxmm(bi,bj) |
1113 |
|
|
1114 |
cph( |
cph( |
1115 |
if (whflux2(i,j,bi,bj) .ne. 0.) then |
if (whflux2(i,j,bi,bj) .ne. 0.) then |
1116 |
whflux2(i,j,bi,bj) = |
whflux2(i,j,bi,bj) = |
1125 |
wsflux2(i,j,bi,bj) = 0.0 _d 0 |
wsflux2(i,j,bi,bj) = 0.0 _d 0 |
1126 |
endif |
endif |
1127 |
if (wtauu2(i,j,bi,bj) .ne. 0.) then |
if (wtauu2(i,j,bi,bj) .ne. 0.) then |
1128 |
wtauu2(i,j,bi,bj) = |
wtauu2(i,j,bi,bj) = |
1129 |
& 1./wtauu2(i,j,bi,bj)/wtauu2(i,j,bi,bj) |
& 1./wtauu2(i,j,bi,bj)/wtauu2(i,j,bi,bj) |
1130 |
else |
else |
1131 |
wtauu2(i,j,bi,bj) = 0.0 _d 0 |
wtauu2(i,j,bi,bj) = 0.0 _d 0 |
1140 |
enddo |
enddo |
1141 |
enddo |
enddo |
1142 |
|
|
|
cph( |
|
|
cph reduce wtheta, wsalt by factor 2. |
|
1143 |
do k = 1,nr |
do k = 1,nr |
1144 |
if (wtheta(k,bi,bj) .ne. 0.) then |
if (wtheta(k,bi,bj) .ne. 0.) then |
1145 |
wtheta(k,bi,bj) = ratio/wtheta(k,bi,bj)/wtheta(k,bi,bj)/2. |
wtheta(k,bi,bj) = ratio/wtheta(k,bi,bj)/wtheta(k,bi,bj) |
1146 |
else |
else |
1147 |
wtheta(k,bi,bj) = 0.0 _d 0 |
wtheta(k,bi,bj) = 0.0 _d 0 |
1148 |
endif |
endif |
1149 |
if (wsalt(k,bi,bj) .ne. 0.) then |
if (wsalt(k,bi,bj) .ne. 0.) then |
1150 |
wsalt(k,bi,bj) = ratio/wsalt(k,bi,bj)/wsalt(k,bi,bj)/2. |
wsalt(k,bi,bj) = ratio/wsalt(k,bi,bj)/wsalt(k,bi,bj) |
1151 |
else |
else |
1152 |
wsalt(k,bi,bj) = 0.0 _d 0 |
wsalt(k,bi,bj) = 0.0 _d 0 |
1153 |
endif |
endif |
1154 |
enddo |
enddo |
|
cph) |
|
1155 |
|
|
1156 |
#ifdef ALLOW_OBCS_COST_CONTRIBUTION |
#ifdef ALLOW_OBCS_COST_CONTRIBUTION |
1157 |
do iobcs = 1,nobcs |
do iobcs = 1,nobcs |
1195 |
enddo |
enddo |
1196 |
enddo |
enddo |
1197 |
|
|
1198 |
#if (defined (ALLOW_HFLUX_COST_CONTRIBUTION)) |
do bj = jtlo,jthi |
1199 |
|
do bi = itlo,ithi |
1200 |
|
do k = 1,nr |
1201 |
|
if (wdiffkr(k,bi,bj) .ne. 0.) then |
1202 |
|
wdiffkr(k,bi,bj) = 1./wdiffkr(k,bi,bj)/wdiffkr(k,bi,bj) |
1203 |
|
else |
1204 |
|
wdiffkr(k,bi,bj) = 0.0 _d 0 |
1205 |
|
endif |
1206 |
|
if (wkapgm(k,bi,bj) .ne. 0.) then |
1207 |
|
wkapgm(k,bi,bj) = 1./wkapgm(k,bi,bj)/wkapgm(k,bi,bj) |
1208 |
|
else |
1209 |
|
wkapgm(k,bi,bj) = 0.0 _d 0 |
1210 |
|
endif |
1211 |
|
if (wedtaux(k,bi,bj) .ne. 0.) then |
1212 |
|
wedtaux(k,bi,bj) = 1./wedtaux(k,bi,bj)/wedtaux(k,bi,bj) |
1213 |
|
else |
1214 |
|
wedtaux(k,bi,bj) = 0.0 _d 0 |
1215 |
|
endif |
1216 |
|
if (wedtauy(k,bi,bj) .ne. 0.) then |
1217 |
|
wedtauy(k,bi,bj) = 1./wedtauy(k,bi,bj)/wedtauy(k,bi,bj) |
1218 |
|
else |
1219 |
|
wedtauy(k,bi,bj) = 0.0 _d 0 |
1220 |
|
endif |
1221 |
|
do j = jmin,jmax |
1222 |
|
do i = imin,imax |
1223 |
|
if (wdiffkr2(i,j,k,bi,bj) .ne. 0.) then |
1224 |
|
wdiffkr2(i,j,k,bi,bj) = frame(i,j)/ |
1225 |
|
& wdiffkr2(i,j,k,bi,bj)/wdiffkr2(i,j,k,bi,bj) |
1226 |
|
else |
1227 |
|
wdiffkr2(i,j,k,bi,bj) = 0.0 _d 0 |
1228 |
|
endif |
1229 |
|
wdiffkrFld(i,j,k,bi,bj) = wdiffkr2(i,j,k,bi,bj) |
1230 |
|
c |
1231 |
|
if (wkapgm2(i,j,k,bi,bj) .ne. 0.) then |
1232 |
|
wkapgm2(i,j,k,bi,bj) = frame(i,j)/ |
1233 |
|
& wkapgm2(i,j,k,bi,bj)/wkapgm2(i,j,k,bi,bj) |
1234 |
|
else |
1235 |
|
wkapgm2(i,j,k,bi,bj) = 0.0 _d 0 |
1236 |
|
endif |
1237 |
|
wkapgmFld(i,j,k,bi,bj) = wkapgm2(i,j,k,bi,bj) |
1238 |
|
c |
1239 |
|
if (wedtaux2(i,j,k,bi,bj) .ne. 0.) then |
1240 |
|
wedtaux2(i,j,k,bi,bj) = frame(i,j)/ |
1241 |
|
& wedtaux2(i,j,k,bi,bj)/wedtaux2(i,j,k,bi,bj) |
1242 |
|
else |
1243 |
|
wedtaux2(i,j,k,bi,bj) = 0.0 _d 0 |
1244 |
|
endif |
1245 |
|
wedtauxFld(i,j,k,bi,bj) = wedtaux2(i,j,k,bi,bj) |
1246 |
|
c |
1247 |
|
if (wedtauy2(i,j,k,bi,bj) .ne. 0.) then |
1248 |
|
wedtauy2(i,j,k,bi,bj) = frame(i,j)/ |
1249 |
|
& wedtauy2(i,j,k,bi,bj)/wedtauy2(i,j,k,bi,bj) |
1250 |
|
else |
1251 |
|
wedtauy2(i,j,k,bi,bj) = 0.0 _d 0 |
1252 |
|
endif |
1253 |
|
wedtauyFld(i,j,k,bi,bj) = wedtauy2(i,j,k,bi,bj) |
1254 |
|
enddo |
1255 |
|
enddo |
1256 |
|
enddo |
1257 |
|
enddo |
1258 |
|
enddo |
1259 |
|
c |
1260 |
|
c write masks and weights to files to be read by a master process |
1261 |
|
c |
1262 |
|
call active_write_xyz_loc( 'maskCtrlC', maskC, |
1263 |
|
& 1, 0, mythid, dummy) |
1264 |
|
call active_write_xyz_loc( 'maskCtrlW', maskW, |
1265 |
|
& 1, 0, mythid, dummy) |
1266 |
|
call active_write_xyz_loc( 'maskCtrlS', maskS, |
1267 |
|
& 1, 0, mythid, dummy) |
1268 |
|
|
1269 |
|
#if (defined (ALLOW_HFLUX_COST_CONTRIBUTION) || defined (ALLOW_HFLUX_CONTROL)) |
1270 |
call active_write_xy_loc( 'whflux', whflux, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'whflux', whflux, 1, 0, mythid, dummy) |
1271 |
call active_write_xy_loc( 'whflux2', whflux2, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'whflux2', whflux2, 1, 0, mythid, dummy) |
1272 |
#elif (defined (ALLOW_ATEMP_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_ATEMP_COST_CONTRIBUTION) || defined (ALLOW_ATEMP_CONTROL)) |
1273 |
call active_write_xy_loc( 'watemp', watemp, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'watemp', watemp, 1, 0, mythid, dummy) |
1274 |
#endif |
#endif |
1275 |
|
|
1276 |
#if (defined (ALLOW_SFLUX_COST_CONTRIBUTION)) |
#if (defined (ALLOW_SFLUX_COST_CONTRIBUTION) || defined (ALLOW_SFLUX_CONTROL)) |
1277 |
call active_write_xy_loc( 'wsflux', wsflux, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wsflux', wsflux, 1, 0, mythid, dummy) |
1278 |
call active_write_xy_loc( 'wsflux2', wsflux2, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wsflux2', wsflux2, 1, 0, mythid, dummy) |
1279 |
#elif (defined (ALLOW_AQH_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_AQH_COST_CONTRIBUTION) || defined (ALLOW_AQH_CONTROL)) |
1280 |
call active_write_xy_loc( 'waqh', waqh, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'waqh', waqh, 1, 0, mythid, dummy) |
1281 |
#endif |
#endif |
1282 |
|
|
1283 |
#if (defined (ALLOW_USTRESS_COST_CONTRIBUTION)) |
#if (defined (ALLOW_PRECIP_COST_CONTRIBUTION) || defined (ALLOW_PRECIP_CONTROL)) |
1284 |
|
call active_write_xy_loc( 'wprecip', wprecip, 1, 0, mythid, dummy) |
1285 |
|
#endif |
1286 |
|
|
1287 |
|
#if (defined (ALLOW_SWFLUX_COST_CONTRIBUTION) || defined (ALLOW_SWFLUX_CONTROL)) |
1288 |
|
call active_write_xy_loc( 'wswflux', wswflux, 1, 0, mythid, dummy) |
1289 |
|
#endif |
1290 |
|
|
1291 |
|
#if (defined (ALLOW_SWDOWN_COST_CONTRIBUTION) || defined (ALLOW_SWDOWN_CONTROL)) |
1292 |
|
call active_write_xy_loc( 'wswdown', wswdown, 1, 0, mythid, dummy) |
1293 |
|
#endif |
1294 |
|
|
1295 |
|
#if (defined (ALLOW_USTRESS_COST_CONTRIBUTION) || defined (ALLOW_USTRESS_CONTROL)) |
1296 |
call active_write_xy_loc( 'wtauu', wtauu, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wtauu', wtauu, 1, 0, mythid, dummy) |
1297 |
call active_write_xy_loc( 'wtauu2', wtauu2, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wtauu2', wtauu2, 1, 0, mythid, dummy) |
1298 |
#elif (defined (ALLOW_UWIND_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_UWIND_COST_CONTRIBUTION) || defined (ALLOW_UWIND_CONTROL)) |
1299 |
call active_write_xy_loc( 'wuwind', wuwind, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wuwind', wuwind, 1, 0, mythid, dummy) |
1300 |
#endif |
#endif |
1301 |
|
|
1302 |
#if (defined (ALLOW_VSTRESS_COST_CONTRIBUTION)) |
#if (defined (ALLOW_VSTRESS_COST_CONTRIBUTION) || defined (ALLOW_VSTRESS_CONTROL)) |
1303 |
call active_write_xy_loc( 'wtauv', wtauv, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wtauv', wtauv, 1, 0, mythid, dummy) |
1304 |
call active_write_xy_loc( 'wtauv2', wtauv2, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wtauv2', wtauv2, 1, 0, mythid, dummy) |
1305 |
#elif (defined (ALLOW_VWIND_COST_CONTRIBUTION)) |
#elif (defined (ALLOW_VWIND_COST_CONTRIBUTION) || defined (ALLOW_VWIND_CONTROL)) |
1306 |
call active_write_xy_loc( 'wvwind', wvwind, 1, 0, mythid, dummy) |
call active_write_xy_loc( 'wvwind', wvwind, 1, 0, mythid, dummy) |
1307 |
#endif |
#endif |
1308 |
|
|
1309 |
|
#if (defined (ALLOW_SST_COST_CONTRIBUTION) || defined (ALLOW_SST_CONTROL)) |
1310 |
|
call active_write_xy_loc( 'wsst', wsst, 1, 0, mythid, dummy) |
1311 |
|
#endif |
1312 |
|
|
1313 |
|
#if (defined (ALLOW_SSS_COST_CONTRIBUTION) || defined (ALLOW_SSS_CONTROL)) |
1314 |
|
call active_write_xy_loc( 'wsss', wsss, 1, 0, mythid, dummy) |
1315 |
|
#endif |
1316 |
|
|
1317 |
#ifdef ALLOW_OBCSN_COST_CONTRIBUTION |
#ifdef ALLOW_OBCSN_COST_CONTRIBUTION |
1318 |
#endif |
#endif |
1319 |
|
|