/[MITgcm]/MITgcm/pkg/ctrl/ctrl_map_ini_gentim2d.F
ViewVC logotype

Diff of /MITgcm/pkg/ctrl/ctrl_map_ini_gentim2d.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.8 by gforget, Tue May 26 21:34:42 2015 UTC revision 1.10 by gforget, Fri Jun 12 17:43:32 2015 UTC
# Line 49  C     == routine arguments == Line 49  C     == routine arguments ==
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
# Line 62  C     == local variables == Line 62  C     == local variables ==
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)
# Line 100  C--   generic 2D control variables Line 102  C--   generic 2D control variables
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    
# Line 117  C--   generic 2D control variables Line 130  C--   generic 2D control variables
130          write(fnamegenTmp(1:80),'(2a,i10.10)')          write(fnamegenTmp(1:80),'(2a,i10.10)')
131       &       fnamebase(1:ilgen),'.tmp.',optimcycle       &       fnamebase(1:ilgen),'.tmp.',optimcycle
132    
133  c-- cycle  c-- docycle
134    
135          replicated_nrec=endrec          replicated_nrec=endrec
136          replicated_ntimes=0          replicated_ntimes=0
137          do k2 = 1, maxCtrlProc          do k2 = 1, maxCtrlProc
138           if (xx_gentim2d_preproc(k2,iarr).EQ.'replicate') then           if (xx_gentim2d_preproc(k2,iarr).EQ.'docycle') then
139             if (xx_gentim2d_preproc_i(k2,iarr).NE.0) then             if (xx_gentim2d_preproc_i(k2,iarr).NE.0) then
140              replicated_nrec=min(endrec,xx_gentim2d_preproc_i(k2,iarr))              replicated_nrec=min(endrec,xx_gentim2d_preproc_i(k2,iarr))
141              replicated_ntimes=              replicated_ntimes=
# Line 270  CADJ STORE xx_gentim2d_dummy = ctrltape, Line 283  CADJ STORE xx_gentim2d_dummy = ctrltape,
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,

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22