49 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
50 |
C == local variables == |
C == local variables == |
51 |
integer iarr |
integer iarr |
52 |
integer smoothOpNb |
integer numsmo |
53 |
character*(80) fnamegenIn |
character*(80) fnamegenIn |
54 |
character*(80) fnamegenOut |
character*(80) fnamegenOut |
55 |
character*(80) fnamegenTmp |
character*(80) fnamegenTmp |
62 |
integer replicated_ntimes |
integer replicated_ntimes |
63 |
logical doglobalread |
logical doglobalread |
64 |
logical ladinit |
logical ladinit |
65 |
|
logical dowc01 |
66 |
|
logical dosmooth |
67 |
_RL xx_gen(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) |
_RL xx_gen(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) |
68 |
#ifdef ALLOW_ECCO |
#ifdef ALLOW_ECCO |
69 |
_RL xx_gen_tmp(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) |
_RL xx_gen_tmp(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy) |
102 |
O diffrec, startrec, endrec, |
O diffrec, startrec, endrec, |
103 |
I myThid ) |
I myThid ) |
104 |
|
|
105 |
smoothOpNb=1 |
dosmooth=.false. |
106 |
|
dowc01 = .false. |
107 |
|
if (ctrlSmoothCorrel2D) dowc01=.TRUE. |
108 |
|
|
109 |
|
numsmo=1 |
110 |
do k2 = 1, maxCtrlProc |
do k2 = 1, maxCtrlProc |
111 |
if (xx_gentim2d_preproc(k2,iarr).EQ.'smooth') then |
if (xx_gentim2d_preproc(k2,iarr).EQ.'WC01') then |
112 |
if (xx_gentim2d_preproc_i(k2,iarr).NE.0) |
dowc01=.TRUE. |
113 |
& smoothOpNb=xx_gentim2d_preproc_i(k2,iarr) |
if (xx_gentim2d_preproc_i(k2,iarr).NE.0) |
114 |
|
& numsmo=xx_gentim2d_preproc_i(k2,iarr) |
115 |
|
endif |
116 |
|
if ((.NOT.dowc01).AND. |
117 |
|
& (xx_gentim2d_preproc(k2,iarr).EQ.'smooth')) then |
118 |
|
dosmooth=.TRUE. |
119 |
|
if (xx_gentim2d_preproc_i(k2,iarr).NE.0) |
120 |
|
& numsmo=xx_gentim2d_preproc_i(k2,iarr) |
121 |
endif |
endif |
122 |
enddo |
enddo |
123 |
|
|
283 |
& doglobalread, ladinit, optimcycle, |
& doglobalread, ladinit, optimcycle, |
284 |
& mythid, xx_gentim2d_dummy(iarr) ) |
& mythid, xx_gentim2d_dummy(iarr) ) |
285 |
#else |
#else |
286 |
CALL READ_REC_XY_RL( fnamegenOut, xx_gen, iRec, 1, myThid ) |
CALL READ_REC_XY_RL( fnamegenOut, xx_gen, iRec, 1, myThid ) |
287 |
#endif |
#endif |
288 |
|
|
289 |
#ifndef ALLOW_OPENAD |
#ifndef ALLOW_OPENAD |
290 |
jrec=1 |
jrec=1 |
291 |
do k2 = 1, maxCtrlProc |
do k2 = 1, maxCtrlProc |
292 |
if (xx_gentim2d_preproc(k2,iarr).EQ.'variaweight') jrec=irec |
if (xx_gentim2d_preproc(k2,iarr).EQ.'variaweight') jrec=irec |
293 |
enddo |
enddo |
294 |
call mdsreadfield( xx_gentim2d_weight(iarr), ctrlprec, 'RL', |
call mdsreadfield( xx_gentim2d_weight(iarr), ctrlprec, 'RL', |
295 |
& 1, wgentim2d(1-Olx,1-Oly,1,1,iarr), jrec, myThid ) |
& 1, wgentim2d(1-Olx,1-Oly,1,1,iarr), jrec, myThid ) |
|
#endif |
|
296 |
|
|
297 |
#ifdef ALLOW_SMOOTH |
#ifdef ALLOW_SMOOTH |
298 |
IF ( ctrlSmoothCorrel2D ) THEN |
IF (useSMOOTH) THEN |
299 |
IF ( useSMOOTH ) THEN |
IF (dowc01) call smooth_correl2D(xx_gen,maskC,numsmo,mythid) |
300 |
call smooth_correl2D(xx_gen,maskC,smoothOpNb,mythid) |
IF (dosmooth) call smooth2d(xx_gen,maskC,numsmo,mythid) |
301 |
|
ENDIF |
302 |
DO bj=myByLo(myThid), myByHi(myThid) |
#endif /* ALLOW_SMOOTH */ |
303 |
DO bi=myBxLo(myThid), myBxHi(myThid) |
|
304 |
DO j = 1,sNy |
DO bj=myByLo(myThid), myByHi(myThid) |
305 |
DO i = 1,sNx |
DO bi=myBxLo(myThid), myBxHi(myThid) |
306 |
if ((maskC(i,j,1,bi,bj).NE.0.).AND. |
DO j = 1,sNy |
307 |
|
DO i = 1,sNx |
308 |
|
if ((maskC(i,j,1,bi,bj).NE.0.).AND. |
309 |
& (wgentim2d(i,j,bi,bj,iarr).GT.0.)) then |
& (wgentim2d(i,j,bi,bj,iarr).GT.0.)) then |
310 |
xx_gen(i,j,bi,bj)=xx_gen(i,j,bi,bj) |
xx_gen(i,j,bi,bj)=xx_gen(i,j,bi,bj) |
311 |
& /sqrt(wgentim2d(i,j,bi,bj,iarr)) |
& /sqrt(wgentim2d(i,j,bi,bj,iarr)) |
312 |
else |
else |
313 |
xx_gen(i,j,bi,bj)=0. _d 0 |
xx_gen(i,j,bi,bj)=0. _d 0 |
314 |
endif |
endif |
|
ENDDO |
|
|
ENDDO |
|
315 |
ENDDO |
ENDDO |
316 |
ENDDO |
ENDDO |
317 |
|
ENDDO |
318 |
|
ENDDO |
319 |
|
#endif /* ALLOW_OPENAD */ |
320 |
|
|
321 |
CALL EXCH_XY_RL ( xx_gen , myThid ) |
CALL CTRL_BOUND_2D(xx_gen,maskC, |
322 |
ENDIF |
& xx_gentim2d_bounds(1,iarr),myThid) |
|
ENDIF |
|
|
#endif /* ALLOW_SMOOTH */ |
|
323 |
|
|
324 |
|
CALL EXCH_XY_RL ( xx_gen , myThid ) |
325 |
|
|
326 |
#ifdef ALLOW_AUTODIFF |
#ifdef ALLOW_AUTODIFF |
327 |
call active_write_xy( fnamegenOut, xx_gen, irec, optimcycle, |
call active_write_xy( fnamegenOut, xx_gen, irec, optimcycle, |