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

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

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

revision 1.31 by heimbach, Fri May 29 06:12:05 2009 UTC revision 1.54 by gforget, Tue Feb 5 22:45:56 2013 UTC
# Line 1  Line 1 
 C  
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4  #include "CTRL_CPPOPTIONS.h"  #include "CTRL_OPTIONS.h"
5    #ifdef ALLOW_EXF
6    # include "EXF_OPTIONS.h"
7    #endif
8    
9    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
10    
11        subroutine ctrl_init( mythid )        subroutine ctrl_init( mythid )
12    
# Line 10  c     ================================== Line 14  c     ==================================
14  c     SUBROUTINE ctrl_init  c     SUBROUTINE ctrl_init
15  c     ==================================================================  c     ==================================================================
16  c  c
17  c     o Set parts of the vector of control variables and initialize the  c     o The vector of control variables is defined here.
 c       rest to zero.  
 c  
 c       The vector of control variables is initialized here. The  
 c       temperature and salinity contributions are read from file.  
 c       Subsequently, the latter are dimensionalized and the tile  
 c       edges are updated.  
 c  
 c     started: Christian Eckert eckert@mit.edu 30-Jun-1999  
 c  
 c     changed: Christian Eckert eckert@mit.edu 23-Feb-2000  
 c              - Restructured the code in order to create a package  
 c                for the MITgcmUV.  
 c  
 c              Patrick Heimbach heimbach@mit.edu 30-May-2000  
 c              - diffsec was falsely declared.  
 c  
 c              Patrick Heimbach heimbach@mit.edu 06-Jun-2000  
 c              - Transferred some filename declarations  
 c                from ctrl_pack/ctrl_unpack to here  
 c              - Transferred mask-per-tile to here  
 c              - computation of control vector length here  
 c  
 c              Patrick Heimbach heimbach@mit.edu 16-Jun-2000  
 c              - Added call to ctrl_pack  
 c              - Alternatively: transfer writing of scale files to  
 c                ctrl_unpack  
 c  
 c              Dimitris Menemenlis menemenlis@mit.edu 7-Mar-2003  
 c              - To be consistent with usage in ctrl_getrec.F,  
 c                startrec and endrec need to be referenced to  
 c                model time = 0, not to startTime.  
 c                Also "- modelstep" -> "+ modelstep/2":  
 c old:      startrec = int((modelstart - diffsecs)/  
 c old:   &                 xx_???period) + 1  
 c old:      endrec = int((modelend   - diffsecs - modelstep)/  
 c old:   &                 xx_???period) + 2  
 c new:      startrec = int((modelstart + startTime - diffsecs)/  
 c new:   &                 xx_???period) + 1  
 c new:      endrec = int((modelend + startTime - diffsecs + modelstep/2)/  
 c new:   &                 xx_???period) + 2  
 c  
 c              heimbach@mit.edu totally restructured 28-Oct-2003  
18  c  c
19  c     ==================================================================  c     ==================================================================
20  c     SUBROUTINE ctrl_init  c     SUBROUTINE ctrl_init
# Line 66  c     == global variables == Line 28  c     == global variables ==
28  #include "SIZE.h"  #include "SIZE.h"
29  #include "PARAMS.h"  #include "PARAMS.h"
30  #include "GRID.h"  #include "GRID.h"
31    #include "CTRL_SIZE.h"
32  #include "ctrl.h"  #include "ctrl.h"
33    #include "CTRL_GENARR.h"
34  #include "optim.h"  #include "optim.h"
35    #ifdef ALLOW_EXF
36  #ifdef ALLOW_CAL  # include "EXF_PARAM.h"
 # include "cal.h"  
37  #endif  #endif
38  #ifdef ALLOW_OBCS_CONTROL  #ifdef ALLOW_DIC_CONTROL
39  # include "OBCS.h"  # include "DIC_CTRL.h"
40  #endif  #endif
41    
42  c     == routine arguments ==  c     == routine arguments ==
# Line 83  c     == routine arguments == Line 46  c     == routine arguments ==
46  c     == local variables ==  c     == local variables ==
47    
48        integer bi,bj        integer bi,bj
49        integer i,j,k        integer i,j
50        integer itlo,ithi        integer itlo,ithi
51        integer jtlo,jthi        integer jtlo,jthi
52        integer jmin,jmax        integer jmin,jmax
53        integer imin,imax        integer imin,imax
54    
       integer ntmp  
55        integer ivar        integer ivar
       integer iobcs  
       integer il  
       integer errio  
56        integer startrec        integer startrec
57        integer endrec        integer endrec
58        integer diffrec        integer diffrec
59        integer difftime(4)        integer iarr
       _RL     diffsecs  
60    
61        character*(max_len_prec) record  #ifdef ALLOW_OBCS_CONTROL_MODES
62        character*(max_len_mbuf) msgbuf        INTEGER  k,length_of_rec,dUnit
63        character*2 whichxyz        INTEGER  MDS_RECLEN
64          EXTERNAL MDS_RECLEN
65    #endif
66    
67  c     == external ==  c     == external ==
68    
# Line 122  c     == end of interface == Line 82  c     == end of interface ==
82    
83  c--     Set default values.  c--     Set default values.
84        do ivar = 1,maxcvars        do ivar = 1,maxcvars
85           ncvarindex(ivar) = -1         ncvarindex(ivar) = -1
86           ncvarrecs(ivar)  =  0         ncvarrecs(ivar)  =  0
87           ncvarxmax(ivar)  =  0         ncvarxmax(ivar)  =  0
88           ncvarymax(ivar)  =  0         ncvarymax(ivar)  =  0
89           ncvarnrmax(ivar) =  0         ncvarnrmax(ivar) =  0
90           ncvargrd(ivar)   = '?'         ncvargrd(ivar)   = '?'
91        enddo        enddo
92    
93        _BARRIER        _BARRIER
# Line 148  cph    index 23             for bottom d Line 108  cph    index 23             for bottom d
108  cph    index 24  cph    index 24
109  cph    index 25-26          for edtaux, edtauy  cph    index 25-26          for edtaux, edtauy
110  cph    index 27-29          for uvel0, vvel0, etan0  cph    index 27-29          for uvel0, vvel0, etan0
111  cph    index 30-31          for relax. SST, SSS  cph    index 30-31          for generic 2d, 3d field
112  cph    index 32    reserved for precip (atmos. state)  cph    index 32    reserved for precip (atmos. state)
113  cph    index 33    reserved for swflux (atmos. state)  cph    index 33    reserved for swflux (atmos. state)
114  cph    index 34    reserved for swdown (atmos. state)  cph    index 34    reserved for swdown (atmos. state)
# Line 161  cph          40                 runoff Line 121  cph          40                 runoff
121  cph          41                 seaice SIAREA  cph          41                 seaice SIAREA
122  cph          42                 seaice SIHEFF  cph          42                 seaice SIHEFF
123  cph          43                 seaice SIHSNOW  cph          43                 seaice SIHSNOW
124    cph          44                 gmredi kapredi
125    cph          45                 shelfice shifwflx
126    cph          47-52              mean atmos. state
127  cph)  cph)
128    
129  c----------------------------------------------------------------------  c----------------------------------------------------------------------
130  c--  c--
131  #ifdef ALLOW_THETA0_CONTROL  #ifdef ALLOW_THETA0_CONTROL
132  c--   Initial state temperature contribution.  c--   Initial state temperature contribution.
133        call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
134       &     xx_theta_file, 1, 101, 1, 1, 1,       &     xx_theta_file, 1, 101, 1, 1, 1,
135       &     snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
136  #endif /* ALLOW_THETA0_CONTROL */  #endif /* ALLOW_THETA0_CONTROL */
137    
# Line 176  c--------------------------------------- Line 139  c---------------------------------------
139  c--  c--
140  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
141  c--   Initial state salinity contribution.  c--   Initial state salinity contribution.
142        call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
143       &     xx_salt_file, 2, 102, 1, 1, 1,       &     xx_salt_file, 2, 102, 1, 1, 1,
144       &     snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
145  #endif /* ALLOW_SALT0_CONTROL */  #endif /* ALLOW_SALT0_CONTROL */
# Line 189  c--------------------------------------- Line 152  c---------------------------------------
152  c--  c--
153  #if (defined (ALLOW_HFLUX_CONTROL))  #if (defined (ALLOW_HFLUX_CONTROL))
154  c--   Heat flux.  c--   Heat flux.
155          call ctrl_init_rec ( xx_hflux_file,
156  # ifdef ALLOW_CAL       I     xx_hfluxstartdate1, xx_hfluxstartdate2, xx_hfluxperiod, 1,
157          call cal_FullDate( xx_hfluxstartdate1, xx_hfluxstartdate2,       O     xx_hfluxstartdate, diffrec, startrec, endrec,
158       &                     xx_hfluxstartdate , mythid )       I     mythid )
159          call cal_TimePassed( xx_hfluxstartdate, modelstartdate,        call ctrl_init_ctrlvar (
160       &                       difftime, mythid )       &     xx_hflux_file, 3, 103, diffrec, startrec, endrec,
161          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_hfluxperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_hfluxperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_hfluxperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_hflux_file, 3, 103, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
162    
163  #elif (defined (ALLOW_ATEMP_CONTROL))  #elif (defined (ALLOW_ATEMP_CONTROL))
164  c--   Atmos. temperature  c--   Atmos. temperature
165          call ctrl_init_rec ( xx_atemp_file,
166  # ifdef ALLOW_CAL       I     xx_atempstartdate1, xx_atempstartdate2, xx_atempperiod, 1,
167          call cal_FullDate( xx_atempstartdate1, xx_atempstartdate2,       O     xx_atempstartdate, diffrec, startrec, endrec,
168       &                     xx_atempstartdate , mythid )       I     mythid )
169          call cal_TimePassed( xx_atempstartdate, modelstartdate,        call ctrl_init_ctrlvar (
170       &                       difftime, mythid )       &     xx_atemp_file, 7, 107, diffrec, startrec, endrec,
171          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_atempperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_atempperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_atempperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_atemp_file, 7, 107, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
172    
173  #elif (defined (ALLOW_HFLUX0_CONTROL))  #elif (defined (ALLOW_HFLUX0_CONTROL))
174  c--   initial forcing only  c--   initial forcing only
175          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
176       &       xx_hflux_file, 3, 103, 1, 1, 1,       &     xx_hflux_file, 3, 103, 1, 1, 1,
177       &       snx, sny, 1, 'c', 'xy', mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
178    
179  #endif /* ALLOW_HFLUX_CONTROL */  #endif /* ALLOW_HFLUX_CONTROL */
180    
# Line 253  c--------------------------------------- Line 182  c---------------------------------------
182  c--  c--
183  #if (defined (ALLOW_SFLUX_CONTROL))  #if (defined (ALLOW_SFLUX_CONTROL))
184  c--   Salt flux.  c--   Salt flux.
185          call ctrl_init_rec ( xx_sflux_file,
186         I     xx_sfluxstartdate1, xx_sfluxstartdate2, xx_sfluxperiod, 1,
187         O     xx_sfluxstartdate, diffrec, startrec, endrec,
188         I     mythid )
189          call ctrl_init_ctrlvar (
190         &     xx_sflux_file, 4, 104, diffrec, startrec, endrec,
191         &     snx, sny, 1, 'c', 'xy', mythid )
192    
 # ifdef ALLOW_CAL  
         call cal_FullDate( xx_sfluxstartdate1, xx_sfluxstartdate2,  
      &                     xx_sfluxstartdate , mythid )  
         call cal_TimePassed( xx_sfluxstartdate, modelstartdate,  
      &                       difftime, mythid )  
         call cal_ToSeconds ( difftime, diffsecs, mythid )  
         if ( xx_sfluxperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_sfluxperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_sfluxperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_sflux_file, 4, 104, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
   
193  #elif (defined (ALLOW_AQH_CONTROL))  #elif (defined (ALLOW_AQH_CONTROL))
194  c--   Atmos. humidity  c--   Atmos. humidity
195          call ctrl_init_rec ( xx_aqh_file,
196  # ifdef ALLOW_CAL       I     xx_aqhstartdate1, xx_aqhstartdate2, xx_aqhperiod, 1,
197          call cal_FullDate( xx_aqhstartdate1, xx_aqhstartdate2,       O     xx_aqhstartdate, diffrec, startrec, endrec,
198       &                     xx_aqhstartdate , mythid )       I     mythid )
199          call cal_TimePassed( xx_aqhstartdate, modelstartdate,        call ctrl_init_ctrlvar (
200       &                       difftime, mythid )       &     xx_aqh_file, 8, 108, diffrec, startrec, endrec,
201          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_aqhperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_aqhperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_aqhperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_aqh_file, 8, 108, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
202    
203  #elif (defined (ALLOW_SFLUX0_CONTROL))  #elif (defined (ALLOW_SFLUX0_CONTROL))
204  c--   initial forcing only  c--   initial forcing only
205          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
206       &       xx_sflux_file, 4, 104, 1, 1, 1,       &     xx_sflux_file, 4, 104, 1, 1, 1,
207       &       snx, sny, 1, 'c', 'xy', mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
208    
209  #endif /* ALLOW_SFLUX_CONTROL */  #endif /* ALLOW_SFLUX_CONTROL */
210    
211  c----------------------------------------------------------------------  c----------------------------------------------------------------------
212  c--  c--
213    #ifdef ALLOW_EXF
214          IF ( .NOT.useAtmWind ) THEN
215    #endif
216  #if (defined (ALLOW_USTRESS_CONTROL))  #if (defined (ALLOW_USTRESS_CONTROL))
217  c--   Zonal wind stress.  c--   Zonal wind stress.
218          call ctrl_init_rec ( xx_tauu_file,
219  # ifdef ALLOW_CAL       I     xx_tauustartdate1, xx_tauustartdate2, xx_tauuperiod, 1,
220          call cal_FullDate( xx_tauustartdate1,  xx_tauustartdate2,       O     xx_tauustartdate, diffrec, startrec, endrec,
221       &                     xx_tauustartdate,   mythid )       I     mythid )
222          call cal_TimePassed( xx_tauustartdate, modelstartdate,        call ctrl_init_ctrlvar (
223       &                       difftime, mythid )       &     xx_tauu_file, 5, 105, diffrec, startrec, endrec,
224          call cal_ToSeconds ( difftime, diffsecs, mythid )  #ifndef ALLOW_ROTATE_UV_CONTROLS
225          if ( xx_tauuperiod .EQ. 0 ) then       &     snx, sny, 1, 'w', 'xy', mythid )
226          startrec=1  #else
227          endrec=12       &     snx, sny, 1, 'c', 'xy', mythid )
228          else  #endif
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_tauuperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_tauuperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_tauu_file, 5, 105, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'w', 'xy', mythid )  
   
 #elif (defined (ALLOW_UWIND_CONTROL))  
 c--   Zonal wind speed.  
   
 # ifdef ALLOW_CAL  
         call cal_FullDate( xx_uwindstartdate1, xx_uwindstartdate2,  
      &                     xx_uwindstartdate , mythid )  
         call cal_TimePassed( xx_uwindstartdate, modelstartdate,  
      &                       difftime, mythid )  
         call cal_ToSeconds ( difftime, diffsecs, mythid )  
         if ( xx_uwindperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_uwindperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_uwindperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_uwind_file, 9, 109, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
229    
230  #elif (defined (ALLOW_TAUU0_CONTROL))  #elif (defined (ALLOW_TAUU0_CONTROL))
231  c--   initial forcing only  c--   initial forcing only
232          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
233       &       xx_tauu_file, 5, 105, 1, 1, 1,       &     xx_tauu_file, 5, 105, 1, 1, 1,
234       &       snx, sny, 1, 'w', 'xy', mythid )       &     snx, sny, 1, 'w', 'xy', mythid )
235    
236  #endif /* ALLOW_USTRESS_CONTROL */  #endif /* ALLOW_USTRESS_CONTROL */
237    #ifdef ALLOW_EXF
238          ENDIF
239    #endif
240    
241    #if (defined (ALLOW_UWIND_CONTROL))
242    #ifdef ALLOW_EXF
243          IF ( useAtmWind ) THEN
244    #endif
245    c--   Zonal wind speed.
246          call ctrl_init_rec ( xx_uwind_file,
247         I     xx_uwindstartdate1, xx_uwindstartdate2, xx_uwindperiod, 1,
248         O     xx_uwindstartdate, diffrec, startrec, endrec,
249         I     mythid )
250          call ctrl_init_ctrlvar (
251         &     xx_uwind_file, 9, 109, diffrec, startrec, endrec,
252         &     snx, sny, 1, 'c', 'xy', mythid )
253    #ifdef ALLOW_EXF
254          ENDIF
255    #endif
256    #endif /* ALLOW_UWIND_CONTROL */
257    
258  c----------------------------------------------------------------------  c----------------------------------------------------------------------
259  c--  c--
260    #ifdef ALLOW_EXF
261          IF ( .NOT.useAtmWind ) THEN
262    #endif
263  #if (defined (ALLOW_VSTRESS_CONTROL))  #if (defined (ALLOW_VSTRESS_CONTROL))
264  c--   Meridional wind stress.  c--   Meridional wind stress.
265          call ctrl_init_rec ( xx_tauv_file,
266  # ifdef ALLOW_CAL       I     xx_tauvstartdate1, xx_tauvstartdate2, xx_tauvperiod, 1,
267          call cal_FullDate( xx_tauvstartdate1,  xx_tauvstartdate2,       O     xx_tauvstartdate, diffrec, startrec, endrec,
268       &                     xx_tauvstartdate,   mythid )       I     mythid )
269          call cal_TimePassed( xx_tauvstartdate, modelstartdate,        call ctrl_init_ctrlvar (
270       &                       difftime, mythid )       &     xx_tauv_file, 6, 106, diffrec, startrec, endrec,
271          call cal_ToSeconds ( difftime, diffsecs, mythid )  #ifndef ALLOW_ROTATE_UV_CONTROLS
272          if ( xx_tauvperiod .EQ. 0 ) then       &     snx, sny, 1, 's', 'xy', mythid )
273          startrec=1  #else
274          endrec=12       &     snx, sny, 1, 'c', 'xy', mythid )
275          else  #endif
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_tauvperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_tauvperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_tauv_file, 6, 106, diffrec, startrec, endrec,  
      &       snx, sny, 1, 's', 'xy', mythid )  
   
 #elif (defined (ALLOW_VWIND_CONTROL))  
 c--   Meridional wind speed.  
   
 # ifdef ALLOW_CAL  
         call cal_FullDate( xx_vwindstartdate1, xx_vwindstartdate2,  
      &                     xx_vwindstartdate , mythid )  
         call cal_TimePassed( xx_vwindstartdate, modelstartdate,  
      &                       difftime, mythid )  
         call cal_ToSeconds ( difftime, diffsecs, mythid )  
         if ( xx_vwindperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_vwindperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_vwindperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_vwind_file, 10, 110, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
276    
277  #elif (defined (ALLOW_TAUV0_CONTROL))  #elif (defined (ALLOW_TAUV0_CONTROL))
278  c--   initial forcing only  c--   initial forcing only
279          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
280       &       xx_tauv_file, 6, 106, 1, 1, 1,       &     xx_tauv_file, 6, 106, 1, 1, 1,
281       &       snx, sny, 1, 's', 'xy', mythid )       &     snx, sny, 1, 's', 'xy', mythid )
282    
283  #endif /* ALLOW_VSTRESS_CONTROL */  #endif /* ALLOW_VSTRESS_CONTROL */
284    #ifdef ALLOW_EXF
285          ENDIF
286    #endif
287    
288    #if (defined (ALLOW_VWIND_CONTROL))
289    #ifdef ALLOW_EXF
290          IF ( useAtmWind ) THEN
291    #endif
292    c--   Meridional wind speed.
293          call ctrl_init_rec ( xx_vwind_file,
294         I     xx_vwindstartdate1, xx_vwindstartdate2, xx_vwindperiod, 1,
295         O     xx_vwindstartdate, diffrec, startrec, endrec,
296         I     mythid )
297          call ctrl_init_ctrlvar (
298         &     xx_vwind_file, 10, 110, diffrec, startrec, endrec,
299         &     snx, sny, 1, 'c', 'xy', mythid )
300    #ifdef ALLOW_EXF
301          ENDIF
302    #endif
303    #endif /* ALLOW_VWIND_CONTROL */
304    
305  c--   ===========================  c--   ===========================
306  c--   Open boundary contributions.  c--   Open boundary contributions.
# Line 449  c--------------------------------------- Line 310  c---------------------------------------
310  c--  c--
311  #ifdef ALLOW_OBCSN_CONTROL  #ifdef ALLOW_OBCSN_CONTROL
312  c--   Northern obc.  c--   Northern obc.
313          call ctrl_init_rec ( xx_obcsn_file,
314  # ifdef ALLOW_CAL       I     xx_obcsnstartdate1, xx_obcsnstartdate2, xx_obcsnperiod, 4,
315          call cal_FullDate( xx_obcsnstartdate1,  xx_obcsnstartdate2,       O     xx_obcsnstartdate, diffrec, startrec, endrec,
316       &                     xx_obcsnstartdate,   mythid )       I     mythid )
317          call cal_TimePassed( xx_obcsnstartdate, modelstartdate,        call ctrl_init_ctrlvar (
318       &                       difftime, mythid )       &     xx_obcsn_file, 11, 111, diffrec, startrec, endrec,
319          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, 1, nr, 'm', 'xz', mythid )
         startrec = int((modelstart - diffsecs)/xx_obcsnperiod) + 1  
         startrec = (startrec - 1)*nobcs + 1  
         endrec   = int((modelend   - diffsecs)/xx_obcsnperiod) + 2  
         endrec   = (endrec - startrec + 1)*nobcs  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec  
         call ctrl_init_ctrlvar (  
      &       xx_obcsn_file, 11, 111, diffrec, startrec, endrec,  
      &       snx, 1, nr, 'm', 'xz', mythid )  
   
320  #endif /* ALLOW_OBCSN_CONTROL */  #endif /* ALLOW_OBCSN_CONTROL */
321    
322  c----------------------------------------------------------------------  c----------------------------------------------------------------------
323  c--  c--
324  #ifdef ALLOW_OBCSS_CONTROL  #ifdef ALLOW_OBCSS_CONTROL
325  c--   Southern obc.  c--   Southern obc.
326          call ctrl_init_rec ( xx_obcss_file,
327  # ifdef ALLOW_CAL       I     xx_obcssstartdate1, xx_obcssstartdate2, xx_obcssperiod, 4,
328          call cal_FullDate( xx_obcssstartdate1,  xx_obcssstartdate2,       O     xx_obcssstartdate, diffrec, startrec, endrec,
329       &                     xx_obcssstartdate,   mythid )       I     mythid )
330          call cal_TimePassed( xx_obcssstartdate, modelstartdate,        call ctrl_init_ctrlvar (
331       &                       difftime, mythid )       &     xx_obcss_file, 12, 112, diffrec, startrec, endrec,
332          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, 1, nr, 'm', 'xz', mythid )
         startrec = int((modelstart - diffsecs)/xx_obcssperiod) + 1  
         startrec = (startrec - 1)*nobcs + 1  
         endrec   = int((modelend   - diffsecs)/xx_obcssperiod) + 2  
         endrec   = (endrec - startrec + 1)*nobcs  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec  
         call ctrl_init_ctrlvar (  
      &       xx_obcss_file, 12, 112, diffrec, startrec, endrec,  
      &       snx, 1, nr, 'm', 'xz', mythid )  
   
333  #endif /* ALLOW_OBCSS_CONTROL */  #endif /* ALLOW_OBCSS_CONTROL */
334    
335  c----------------------------------------------------------------------  c----------------------------------------------------------------------
336  c--  c--
337  #ifdef ALLOW_OBCSW_CONTROL  #ifdef ALLOW_OBCSW_CONTROL
338  c--   Western obc.  c--   Western obc.
339          call ctrl_init_rec ( xx_obcsw_file,
340  # ifdef ALLOW_CAL       I     xx_obcswstartdate1, xx_obcswstartdate2, xx_obcswperiod, 4,
341          call cal_FullDate( xx_obcswstartdate1,  xx_obcswstartdate2,       O     xx_obcswstartdate, diffrec, startrec, endrec,
342       &                     xx_obcswstartdate,   mythid )       I     mythid )
343          call cal_TimePassed( xx_obcswstartdate, modelstartdate,        call ctrl_init_ctrlvar (
344       &                       difftime, mythid )       &     xx_obcsw_file, 13, 113, diffrec, startrec, endrec,
345          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     1, sny, nr, 'm', 'yz', mythid )
         startrec = int((modelstart - diffsecs)/xx_obcswperiod) + 1  
         startrec = (startrec - 1)*nobcs + 1  
         endrec   = int((modelend   - diffsecs)/xx_obcswperiod) + 2  
         endrec   = (endrec - startrec + 1)*nobcs  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec  
         call ctrl_init_ctrlvar (  
      &       xx_obcsw_file, 13, 113, diffrec, startrec, endrec,  
      &       1, sny, nr, 'm', 'yz', mythid )  
   
346  #endif  /* ALLOW_OBCSW_CONTROL */  #endif  /* ALLOW_OBCSW_CONTROL */
347    
348  c----------------------------------------------------------------------  c----------------------------------------------------------------------
349  c--  c--
350  #ifdef ALLOW_OBCSE_CONTROL  #ifdef ALLOW_OBCSE_CONTROL
351  c--   Eastern obc.  c--   Eastern obc.
352          call ctrl_init_rec ( xx_obcse_file,
353  # ifdef ALLOW_CAL       I     xx_obcsestartdate1, xx_obcsestartdate2, xx_obcseperiod, 4,
354          call cal_FullDate( xx_obcsestartdate1,  xx_obcsestartdate2,       O     xx_obcsestartdate, diffrec, startrec, endrec,
355       &                     xx_obcsestartdate,   mythid )       I     mythid )
356          call cal_TimePassed( xx_obcsestartdate, modelstartdate,        call ctrl_init_ctrlvar (
357       &                       difftime, mythid )       &     xx_obcse_file, 14, 114, diffrec, startrec, endrec,
358          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     1, sny, nr, 'm', 'yz', mythid )
         startrec = int((modelstart - diffsecs)/xx_obcseperiod) + 1  
         startrec = (startrec - 1)*nobcs + 1  
         endrec   = int((modelend   - diffsecs)/xx_obcseperiod) + 2  
         endrec   = (endrec - startrec + 1)*nobcs  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec  
         call ctrl_init_ctrlvar (  
      &       xx_obcse_file, 14, 114, diffrec, startrec, endrec,  
      &       1, sny, nr, 'm', 'yz', mythid )  
   
359  #endif /* ALLOW_OBCSE_CONTROL */  #endif /* ALLOW_OBCSE_CONTROL */
360    
361  c----------------------------------------------------------------------  c----------------------------------------------------------------------
362  c--  c--
363    #ifdef ALLOW_OBCS_CONTROL_MODES
364    cih  Get matrices for reconstruction from barotropic-barclinic modes
365    CMM  To use modes now hardcoded with ECCO_CPPOPTION.  Would be good to have
366    c     run-time option and also define filename=baro_invmodes.bin
367            CALL MDSFINDUNIT( dUnit, myThid )
368            length_of_rec = MDS_RECLEN( 64, NR*NR, myThid )
369            open(dUnit, file='baro_invmodes.bin', status='old',
370         &         access='direct', recl=length_of_rec )
371            do j = 1,Nr
372               read(dUnit,rec=j) ((modesv(k,i,j), k=1,Nr), i=1,Nr)
373            end do
374            CLOSE( dUnit )
375    CMM  double precision modesv is size [NR,NR,NR]
376    c     dim one is z-space
377    c     dim two is mode space
378    c     dim three is the total depth for which this set of modes applies
379    c     so for example modesv(:,2,nr) will be the second mode
380    c     in z-space for the full model depth
381    c    The modes are to be orthogonal when weighted by dz.
382    c     i.e. if f_i(z) = mode i, sum_j(f_i(z_j)*f_j(z_j)*dz_j = delta_ij
383    c    first mode should also be constant in depth...barotropic
384    c    For a matlab code example how to construct the orthonormal modes,
385    c     which are ideally the solution of planetary vertical mode equation
386    c     using model mean dRho/dz, see
387    c     MITgcm/verification/obcs_ctrl/input/gendata.m
388    c    This code is compatible with partial cells
389    #endif
390    
391    c----------------------------------------------------------------------
392    c--
393  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
394          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
395       &       xx_diffkr_file, 15, 115, 1, 1, 1,       &     xx_diffkr_file, 15, 115, 1, 1, 1,
396       &       snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
397  #endif /* ALLOW_DIFFKR_CONTROL */  #endif /* ALLOW_DIFFKR_CONTROL */
398    
399  c----------------------------------------------------------------------  c----------------------------------------------------------------------
400  c--  c--
401  #ifdef ALLOW_KAPGM_CONTROL  #ifdef ALLOW_KAPGM_CONTROL
402          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
403       &       xx_kapgm_file, 16, 116, 1, 1, 1,       &     xx_kapgm_file, 16, 116, 1, 1, 1,
404       &       snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
405  #endif /* ALLOW_KAPGM_CONTROL */  #endif /* ALLOW_KAPGM_CONTROL */
406    
407  c----------------------------------------------------------------------  c----------------------------------------------------------------------
408  c--  c--
409  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
410          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
411       &       xx_tr1_file, 17, 117, 1, 1, 1,       &     xx_tr1_file, 17, 117, 1, 1, 1,
412       &       snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
413  #endif /* ALLOW_TR10_CONTROL */  #endif /* ALLOW_TR10_CONTROL */
414    
415  c----------------------------------------------------------------------  c----------------------------------------------------------------------
416  c--  c--
417  #if (defined (ALLOW_SST_CONTROL))  #if (defined (ALLOW_SST_CONTROL))
418          call ctrl_init_rec ( xx_sst_file,
419  # ifdef ALLOW_CAL       I     xx_sststartdate1, xx_sststartdate2, xx_sstperiod, 1,
420          call cal_FullDate( xx_sststartdate1, xx_sststartdate2,       O     xx_sststartdate, diffrec, startrec, endrec,
421       &                     xx_sststartdate , mythid )       I     mythid )
422          call cal_TimePassed( xx_sststartdate, modelstartdate,        call ctrl_init_ctrlvar (
423       &                       difftime, mythid )       &     xx_sst_file, 18, 118, diffrec, startrec, endrec,
424          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_sstperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_sstperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_sstperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_sst_file, 18, 118, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
425    
426  #elif (defined (ALLOW_SST0_CONTROL))  #elif (defined (ALLOW_SST0_CONTROL))
427          call ctrl_init_ctrlvar (
428          call ctrl_init_ctrlvar (       &     xx_sst_file, 18, 118, 1, 1, 1,
429       &       xx_sst_file, 18, 118, 1, 1, 1,       &     snx, sny, 1, 'c', 'xy', mythid )
      &       snx, sny, 1, 'c', 'xy', mythid )  
430    
431  #endif /* ALLOW_SST_CONTROL */  #endif /* ALLOW_SST_CONTROL */
432    
433  c----------------------------------------------------------------------  c----------------------------------------------------------------------
434  c--  c--
435  #if (defined (ALLOW_SSS_CONTROL))  #if (defined (ALLOW_SSS_CONTROL))
436          call ctrl_init_rec ( xx_sss_file,
437  # ifdef ALLOW_CAL       I     xx_sssstartdate1, xx_sssstartdate2, xx_sssperiod, 1,
438          call cal_FullDate( xx_sssstartdate1, xx_sssstartdate2,       O     xx_sssstartdate, diffrec, startrec, endrec,
439       &                     xx_sssstartdate , mythid )       I     mythid )
440          call cal_TimePassed( xx_sssstartdate, modelstartdate,        call ctrl_init_ctrlvar (
441       &                       difftime, mythid )       &     xx_sss_file, 19, 119, diffrec, startrec, endrec,
442          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_sssperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_sssperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_sssperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_sss_file, 19, 119, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
443    
444  #elif (defined (ALLOW_SSS0_CONTROL))  #elif (defined (ALLOW_SSS0_CONTROL))
445          call ctrl_init_ctrlvar (
446          call ctrl_init_ctrlvar (       &     xx_sss_file, 19, 119, 1, 1, 1,
447       &       xx_sss_file, 19, 119, 1, 1, 1,       &     snx, sny, 1, 'c', 'xy', mythid )
      &       snx, sny, 1, 'c', 'xy', mythid )  
448    
449  #endif /* ALLOW_SSS0_CONTROL */  #endif /* ALLOW_SSS0_CONTROL */
450    
451  c----------------------------------------------------------------------  c----------------------------------------------------------------------
452  c--  c--
453  #ifdef ALLOW_DEPTH_CONTROL  #ifdef ALLOW_DEPTH_CONTROL
454          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
455       &       xx_depth_file, 20, 120, 1, 1, 1,       &       xx_depth_file, 20, 120, 1, 1, 1,
456       &       snx, sny,  1, 'c', 'xy', mythid )       &       snx, sny,  1, 'c', 'xy', mythid )
457  #endif /* ALLOW_DEPTH_CONTROL */  #endif /* ALLOW_DEPTH_CONTROL */
# Line 656  c-- Line 459  c--
459  c----------------------------------------------------------------------  c----------------------------------------------------------------------
460  c--  c--
461  #ifdef ALLOW_EFLUXY0_CONTROL  #ifdef ALLOW_EFLUXY0_CONTROL
462          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
463       &       xx_efluxy_file, 21, 121, 1, 1, 1,       &       xx_efluxy_file, 21, 121, 1, 1, 1,
464       &       snx, sny, nr, 's', '3d', mythid )       &       snx, sny, nr, 's', '3d', mythid )
465  #endif /* ALLOW_EFLUXY0_CONTROL */  #endif /* ALLOW_EFLUXY0_CONTROL */
# Line 664  c-- Line 467  c--
467  c----------------------------------------------------------------------  c----------------------------------------------------------------------
468  c--  c--
469  #ifdef ALLOW_EFLUXP0_CONTROL  #ifdef ALLOW_EFLUXP0_CONTROL
470          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
471       &       xx_efluxp_file, 22, 122, 1, 1, 1,       &       xx_efluxp_file, 22, 122, 1, 1, 1,
472       &       snx, sny, nr, 'v', '3d', mythid )       &       snx, sny, nr, 'v', '3d', mythid )
473  #endif /* ALLOW_EFLUXP0_CONTROL */  #endif /* ALLOW_EFLUXP0_CONTROL */
474    
475  c----------------------------------------------------------------------  c----------------------------------------------------------------------
476  c--  c--
477  #ifdef ALLOW_BOTTOMDRAG_CONTROL  #ifdef ALLOW_BOTTOMDRAG_CONTROL_NONGENERIC
478          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
479       &       xx_bottomdrag_file, 23, 123, 1, 1, 1,       &       xx_bottomdrag_file, 23, 123, 1, 1, 1,
480       &       snx, sny, 1, 'c', 'xy', mythid )       &       snx, sny, 1, 'c', 'xy', mythid )
481  #endif /* ALLOW_BOTTOMDRAG_CONTROL */  #endif /* ALLOW_BOTTOMDRAG_CONTROL */
# Line 723  c-- Line 526  c--
526    
527  c----------------------------------------------------------------------  c----------------------------------------------------------------------
528  c--  c--
529  #ifdef ALLOW_RELAXSST_CONTROL  #ifdef ALLOW_GEN2D_CONTROL
530          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
531       &       xx_relaxsst_file, 30, 130, 1, 1, 1,       &       xx_gen2d_file, 30, 130, 1, 1, 1,
532       &       snx, sny, 1, 'c', 'xy', mythid )       &       snx, sny, 1, 'c', 'xy', mythid )
533  #endif /* ALLOW_RELAXSST_CONTROL */  #endif /* ALLOW_GEN2D_CONTROL */
534    
535  c----------------------------------------------------------------------  c----------------------------------------------------------------------
536  c--  c--
537  #ifdef ALLOW_RELAXSSS_CONTROL  #ifdef ALLOW_GEN3D_CONTROL
538          call ctrl_init_ctrlvar (          call ctrl_init_ctrlvar (
539       &       xx_relaxsss_file, 31, 131, 1, 1, 1,       &       xx_gen3d_file, 31, 131, 1, 1, 1,
540       &       snx, sny, 1, 'c', 'xy', mythid )       &       snx, sny, nr, 'c', '3d', mythid )
541  #endif /* ALLOW_RELAXSSS_CONTROL */  #endif /* ALLOW_GEN3D_CONTROL */
542    
543  c----------------------------------------------------------------------  c----------------------------------------------------------------------
544  c--  c--
545  #ifdef ALLOW_PRECIP_CONTROL  #ifdef ALLOW_PRECIP_CONTROL
546  c--   Atmos. precipitation  c--   Atmos. precipitation
547          call ctrl_init_rec ( xx_precip_file,
548  # ifdef ALLOW_CAL       I     xx_precipstartdate1, xx_precipstartdate2, xx_precipperiod,1,
549          call cal_FullDate( xx_precipstartdate1, xx_precipstartdate2,       O     xx_precipstartdate, diffrec, startrec, endrec,
550       &                     xx_precipstartdate , mythid )       I     mythid )
551          call cal_TimePassed( xx_precipstartdate, modelstartdate,        call ctrl_init_ctrlvar (
552       &                       difftime, mythid )       &     xx_precip_file, 32, 132, diffrec, startrec, endrec,
553          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_precipperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_precipperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_precipperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_precip_file, 32, 132, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
554    
555  #endif /* ALLOW_PRECIP_CONTROL */  #endif /* ALLOW_PRECIP_CONTROL */
556    
# Line 772  c--------------------------------------- Line 558  c---------------------------------------
558  c--  c--
559  #ifdef ALLOW_SWFLUX_CONTROL  #ifdef ALLOW_SWFLUX_CONTROL
560  c--   Atmos. swflux  c--   Atmos. swflux
561          call ctrl_init_rec ( xx_swflux_file,
562  # ifdef ALLOW_CAL       I     xx_swfluxstartdate1, xx_swfluxstartdate2, xx_swfluxperiod, 1,
563          call cal_FullDate( xx_swfluxstartdate1, xx_swfluxstartdate2,       O     xx_swfluxstartdate, diffrec, startrec, endrec,
564       &                     xx_swfluxstartdate , mythid )       I     mythid )
565          call cal_TimePassed( xx_swfluxstartdate, modelstartdate,        call ctrl_init_ctrlvar (
566       &                       difftime, mythid )       &     xx_swflux_file, 33, 133, diffrec, startrec, endrec,
567          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_swfluxperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_swfluxperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_swfluxperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_swflux_file, 33, 133, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
568    
569  #endif /* ALLOW_SWFLUX_CONTROL */  #endif /* ALLOW_SWFLUX_CONTROL */
570    
# Line 803  c--------------------------------------- Line 572  c---------------------------------------
572  c--  c--
573  #ifdef ALLOW_SWDOWN_CONTROL  #ifdef ALLOW_SWDOWN_CONTROL
574  c--   Atmos. swdown  c--   Atmos. swdown
575          call ctrl_init_rec ( xx_swdown_file,
576  # ifdef ALLOW_CAL       I     xx_swdownstartdate1, xx_swdownstartdate2, xx_swdownperiod, 1,
577          call cal_FullDate( xx_swdownstartdate1, xx_swdownstartdate2,       O     xx_swdownstartdate, diffrec, startrec, endrec,
578       &                     xx_swdownstartdate , mythid )       I     mythid )
579          call cal_TimePassed( xx_swdownstartdate, modelstartdate,        call ctrl_init_ctrlvar (
580       &                       difftime, mythid )       &     xx_swdown_file, 34, 134, diffrec, startrec, endrec,
581          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_swdownperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_swdownperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_swdownperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_swdown_file, 34, 134, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
582    
583  #endif /* ALLOW_SWDOWN_CONTROL */  #endif /* ALLOW_SWDOWN_CONTROL */
584    
# Line 834  c--------------------------------------- Line 586  c---------------------------------------
586  c--  c--
587  #ifdef ALLOW_LWFLUX_CONTROL  #ifdef ALLOW_LWFLUX_CONTROL
588  c--   Atmos. lwflux  c--   Atmos. lwflux
589          call ctrl_init_rec ( xx_lwflux_file,
590  # ifdef ALLOW_CAL       I     xx_lwfluxstartdate1, xx_lwfluxstartdate2, xx_lwfluxperiod, 1,
591          call cal_FullDate( xx_lwfluxstartdate1, xx_lwfluxstartdate2,       O     xx_lwfluxstartdate, diffrec, startrec, endrec,
592       &                     xx_lwfluxstartdate , mythid )       I     mythid )
593          call cal_TimePassed( xx_lwfluxstartdate, modelstartdate,        call ctrl_init_ctrlvar (
594       &                       difftime, mythid )       &     xx_lwflux_file, 35, 135, diffrec, startrec, endrec,
595          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_lwfluxperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_lwfluxperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_lwfluxperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_lwflux_file, 35, 135, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
596    
597  #endif /* ALLOW_LWFLUX_CONTROL */  #endif /* ALLOW_LWFLUX_CONTROL */
598    
# Line 865  c--------------------------------------- Line 600  c---------------------------------------
600  c--  c--
601  #ifdef ALLOW_LWDOWN_CONTROL  #ifdef ALLOW_LWDOWN_CONTROL
602  c--   Atmos. lwdown  c--   Atmos. lwdown
603          call ctrl_init_rec ( xx_lwdown_file,
604  # ifdef ALLOW_CAL       I     xx_lwdownstartdate1, xx_lwdownstartdate2, xx_lwdownperiod, 1,
605          call cal_FullDate( xx_lwdownstartdate1, xx_lwdownstartdate2,       O     xx_lwdownstartdate, diffrec, startrec, endrec,
606       &                     xx_lwdownstartdate , mythid )       I     mythid )
607          call cal_TimePassed( xx_lwdownstartdate, modelstartdate,        call ctrl_init_ctrlvar (
608       &                       difftime, mythid )       &     xx_lwdown_file, 36, 136, diffrec, startrec, endrec,
609          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_lwdownperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_lwdownperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_lwdownperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_lwdown_file, 36, 136, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
610    
611  #endif /* ALLOW_LWDOWN_CONTROL */  #endif /* ALLOW_LWDOWN_CONTROL */
612    
# Line 896  c--------------------------------------- Line 614  c---------------------------------------
614  c--  c--
615  #ifdef ALLOW_EVAP_CONTROL  #ifdef ALLOW_EVAP_CONTROL
616  c--   Atmos. evap  c--   Atmos. evap
617          call ctrl_init_rec ( xx_evap_file,
618  # ifdef ALLOW_CAL       I     xx_evapstartdate1, xx_evapstartdate2, xx_evapperiod, 1,
619          call cal_FullDate( xx_evapstartdate1, xx_evapstartdate2,       O     xx_evapstartdate, diffrec, startrec, endrec,
620       &                     xx_evapstartdate , mythid )       I     mythid )
621          call cal_TimePassed( xx_evapstartdate, modelstartdate,        call ctrl_init_ctrlvar (
622       &                       difftime, mythid )       &     xx_evap_file, 37, 137, diffrec, startrec, endrec,
623          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     snx, sny, 1, 'c', 'xy', mythid )
         if ( xx_evapperiod .EQ. 0 ) then  
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_evapperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_evapperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_evap_file, 37, 137, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
624    
625  #endif /* ALLOW_EVAP_CONTROL */  #endif /* ALLOW_EVAP_CONTROL */
626    
# Line 927  c--------------------------------------- Line 628  c---------------------------------------
628  c--  c--
629  #ifdef ALLOW_SNOWPRECIP_CONTROL  #ifdef ALLOW_SNOWPRECIP_CONTROL
630  c--   Atmos. snowprecip  c--   Atmos. snowprecip
631          call ctrl_init_rec ( xx_snowprecip_file,
632  # ifdef ALLOW_CAL       I     xx_snowprecipstartdate1, xx_snowprecipstartdate2,
633          call cal_FullDate( xx_snowprecipstartdate1,       I     xx_snowprecipperiod, 1,
634       &      xx_snowprecipstartdate2, xx_snowprecipstartdate , mythid )       O     xx_snowprecipstartdate, diffrec, startrec, endrec,
635          call cal_TimePassed( xx_snowprecipstartdate, modelstartdate,       I     mythid )
636       &                       difftime, mythid )        call ctrl_init_ctrlvar (
637          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     xx_snowprecip_file, 38, 138, diffrec, startrec, endrec,
638          if ( xx_snowprecipperiod .EQ. 0 ) then       &     snx, sny, 1, 'c', 'xy', mythid )
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_snowprecipperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_snowprecipperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_snowprecip_file, 38, 138, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
639    
640  #endif /* ALLOW_SNOWPRECIP_CONTROL */  #endif /* ALLOW_SNOWPRECIP_CONTROL */
641    
# Line 958  c--------------------------------------- Line 643  c---------------------------------------
643  c--  c--
644  #ifdef ALLOW_APRESSURE_CONTROL  #ifdef ALLOW_APRESSURE_CONTROL
645  c--   Atmos. apressure  c--   Atmos. apressure
646          call ctrl_init_rec ( xx_apressure_file,
647  # ifdef ALLOW_CAL       I     xx_apressurestartdate1, xx_apressurestartdate2,
648          call cal_FullDate( xx_apressurestartdate1,       I     xx_apressureperiod, 1,
649       &      xx_apressurestartdate2, xx_apressurestartdate , mythid )       O     xx_apressurestartdate, diffrec, startrec, endrec,
650          call cal_TimePassed( xx_apressurestartdate, modelstartdate,       I     mythid )
651       &                       difftime, mythid )        call ctrl_init_ctrlvar (
652          call cal_ToSeconds ( difftime, diffsecs, mythid )       &     xx_apressure_file, 39, 139, diffrec, startrec, endrec,
653          if ( xx_apressureperiod .EQ. 0 ) then       &     snx, sny, 1, 'c', 'xy', mythid )
         startrec=1  
         endrec=12  
         else  
         startrec = int((modelstart + startTime - diffsecs)/  
      &                 xx_apressureperiod) + 1  
         endrec   = int((modelend + startTime - diffsecs + modelstep/2)/  
      &                 xx_apressureperiod) + 2  
         endif  
 # else  
         startrec = 1  
         endrec   = 1  
 # endif  
         diffrec  = endrec - startrec + 1  
         call ctrl_init_ctrlvar (  
      &       xx_apressure_file, 39, 139, diffrec, startrec, endrec,  
      &       snx, sny, 1, 'c', 'xy', mythid )  
654    
655  #endif /* ALLOW_APRESSURE_CONTROL */  #endif /* ALLOW_APRESSURE_CONTROL */
656    
# Line 989  c--------------------------------------- Line 658  c---------------------------------------
658  c--  c--
659  #ifdef ALLOW_RUNOFF_CONTROL  #ifdef ALLOW_RUNOFF_CONTROL
660  c--   Atmos. runoff  c--   Atmos. runoff
661          startrec = 1        call ctrl_init_rec ( xx_runoff_file,
662          endrec   = 1       I     xx_runoffstartdate1, xx_runoffstartdate2, xx_runoffperiod, 1,
663          diffrec  = endrec - startrec + 1       O     xx_runoffstartdate, diffrec, startrec, endrec,
664          call ctrl_init_ctrlvar (       I     mythid )
665       &       xx_runoff_file, 40, 140, diffrec, startrec, endrec,        call ctrl_init_ctrlvar (
666       &       snx, sny, 1, 'c', 'xy', mythid )       &     xx_runoff_file, 40, 140, diffrec, startrec, endrec,
667         &     snx, sny, 1, 'c', 'xy', mythid )
668  #endif /* ALLOW_RUNOFF_CONTROL */  #endif /* ALLOW_RUNOFF_CONTROL */
669    
670  c----------------------------------------------------------------------  c----------------------------------------------------------------------
671  c--  c--
672  #ifdef ALLOW_SIAREA_CONTROL  #ifdef ALLOW_SIAREA_CONTROL
673          startrec = 1  C--   so far there are no xx_siareastartdate1, etc., so we need to fudge it.
674          endrec   = 1  CML      call ctrl_init_rec ( xx_siarea_file,
675          diffrec  = endrec - startrec + 1  CML     I     xx_siareastartdate1, xx_siareastartdate2, xx_siareaperiod, 1,
676          call ctrl_init_ctrlvar (  CML     O     xx_siareastartdate, diffrec, startrec, endrec,
677       &       xx_siarea_file, 41, 141, diffrec, startrec, endrec,  CML     I     mythid )
678       &       snx, sny, 1, 'c', 'xy', mythid )        startrec = 1
679          endrec   = 1
680          diffrec  = endrec - startrec + 1
681          call ctrl_init_ctrlvar (
682         &     xx_siarea_file, 41, 141, diffrec, startrec, endrec,
683         &     snx, sny, 1, 'c', 'xy', mythid )
684  #endif /* ALLOW_siarea_CONTROL */  #endif /* ALLOW_siarea_CONTROL */
685    
686  c----------------------------------------------------------------------  c----------------------------------------------------------------------
687  c--  c--
688  #ifdef ALLOW_SIHEFF_CONTROL  #ifdef ALLOW_SIHEFF_CONTROL
689          startrec = 1  C--   so far there are no xx_siheffstartdate1, etc., so we need to fudge it.
690          endrec   = 1  CML      call ctrl_init_rec ( xx_siheff_file,
691          diffrec  = endrec - startrec + 1  CML     I     xx_siheffstartdate1, xx_siheffstartdate2, xx_siheffperiod, 1,
692          call ctrl_init_ctrlvar (  CML     O     xx_siheffstartdate, diffrec, startrec, endrec,
693       &       xx_siheff_file, 42, 142, diffrec, startrec, endrec,  CML     I     mythid )
694       &       snx, sny, 1, 'c', 'xy', mythid )        startrec = 1
695          endrec   = 1
696          diffrec  = endrec - startrec + 1
697          call ctrl_init_ctrlvar (
698         &     xx_siheff_file, 42, 142, diffrec, startrec, endrec,
699         &     snx, sny, 1, 'c', 'xy', mythid )
700  #endif /* ALLOW_siheff_CONTROL */  #endif /* ALLOW_siheff_CONTROL */
701    
702  c----------------------------------------------------------------------  c----------------------------------------------------------------------
703  c--  c--
704  #ifdef ALLOW_SIHSNOW_CONTROL  #ifdef ALLOW_SIHSNOW_CONTROL
705          startrec = 1  C--   so far there are no xx_sihsnowstartdate1, etc., so we need to fudge it.
706          endrec   = 1  CML      call ctrl_init_rec ( xx_sihsnow_file,
707          diffrec  = endrec - startrec + 1  CML     I     xx_sihsnowstartdate1, xx_sihsnowstartdate2, xx_sihsnowperiod, 1,
708          call ctrl_init_ctrlvar (  CML     O     xx_sihsnowstartdate, diffrec, startrec, endrec,
709       &       xx_sihsnow_file, 43, 143, diffrec, startrec, endrec,  CML     I     mythid )
710       &       snx, sny, 1, 'c', 'xy', mythid )        startrec = 1
711          endrec   = 1
712          diffrec  = endrec - startrec + 1
713          call ctrl_init_ctrlvar (
714         &     xx_sihsnow_file, 43, 143, diffrec, startrec, endrec,
715         &     snx, sny, 1, 'c', 'xy', mythid )
716  #endif /* ALLOW_sihsnow_CONTROL */  #endif /* ALLOW_sihsnow_CONTROL */
717    
718    
719  c----------------------------------------------------------------------  c----------------------------------------------------------------------
720  c--  c--
721  #ifdef ALLOW_KAPREDI_CONTROL  #ifdef ALLOW_KAPREDI_CONTROL
722          call ctrl_init_ctrlvar (        call ctrl_init_ctrlvar (
723       &       xx_kapredi_file, 44, 144, 1, 1, 1,       &     xx_kapredi_file, 44, 144, 1, 1, 1,
724       &       snx, sny, nr, 'c', '3d', mythid )       &     snx, sny, nr, 'c', '3d', mythid )
725  #endif /* ALLOW_KAPREDI_CONTROL */  #endif /* ALLOW_KAPREDI_CONTROL */
726    
727  c----------------------------------------------------------------------  c----------------------------------------------------------------------
728  c----------------------------------------------------------------------  c----------------------------------------------------------------------
729    
730          call ctrl_init_wet( mythid )  #ifdef ALLOW_SHIFWFLX_CONTROL
731    c--   freshwater flux underneath ice-shelves
732          call ctrl_init_rec ( xx_shifwflx_file,
733         I     xx_shifwflxstartdate1, xx_shifwflxstartdate2,
734         I     xx_shifwflxperiod, 1,
735         O     xx_shifwflxstartdate, diffrec, startrec, endrec,
736         I     mythid )
737          call ctrl_init_ctrlvar (
738         &     xx_shifwflx_file, 45, 145, diffrec, startrec, endrec,
739         &     snx, sny, 1, 'i', 'xy', mythid )
740    #endif /* ALLOW_SHIFWFLX_CONTROL */
741    
742    c----------------------------------------------------------------------
743    c--
744    #ifdef ALLOW_ATM_MEAN_CONTROL
745    # ifdef ALLOW_ATEMP_CONTROL
746           call ctrl_init_ctrlvar (
747         &       xx_atemp_mean_file, 47, 147, 1, 1, 1,
748         &       snx, sny, 1, 'c', 'xy', mythid )
749    # endif
750    # ifdef ALLOW_AQH_CONTROL
751           call ctrl_init_ctrlvar (
752         &       xx_aqh_mean_file,   48, 148, 1, 1, 1,
753         &       snx, sny, 1, 'c', 'xy', mythid )
754    # endif
755    # ifdef ALLOW_UWIND_CONTROL
756           call ctrl_init_ctrlvar (
757         &       xx_uwind_mean_file, 49, 149, 1, 1, 1,
758         &       snx, sny, 1, 'c', 'xy', mythid )
759    # endif
760    # ifdef ALLOW_VWIND_CONTROL
761           call ctrl_init_ctrlvar (
762         &       xx_vwind_mean_file, 50, 150, 1, 1, 1,
763         &       snx, sny, 1, 'c', 'xy', mythid )
764    # endif
765    # ifdef ALLOW_PRECIP_CONTROL
766           call ctrl_init_ctrlvar (
767         &       xx_precip_mean_file,51, 151, 1, 1, 1,
768         &       snx, sny, 1, 'c', 'xy', mythid )
769    # endif
770    # ifdef ALLOW_SWDOWN_CONTROL
771           call ctrl_init_ctrlvar (
772         &       xx_swdown_mean_file,52, 152, 1, 1, 1,
773         &       snx, sny, 1, 'c', 'xy', mythid )
774    # endif
775    #endif /* ALLOW_ATM_MEAN_CONTROL */
776    
777    c----------------------------------------------------------------------
778    c--
779    #ifdef ALLOW_GENARR2D_CONTROL
780           do iarr = 1, maxCtrlArr2D
781            call ctrl_init_ctrlvar (
782         &       xx_genarr2d_file(iarr)(1:MAX_LEN_FNAM),
783         &       100+iarr, 200+iarr, 1, 1, 1,
784         &       snx, sny, 1, 'c', 'xy', mythid )
785           enddo
786    #endif /* ALLOW_GENARR2D_CONTROL */
787    
788    c----------------------------------------------------------------------
789    c--
790    #ifdef ALLOW_GENARR3D_CONTROL
791           do iarr = 1, maxCtrlArr3D
792            call ctrl_init_ctrlvar (
793         &       xx_genarr3d_file(iarr)(1:MAX_LEN_FNAM),
794         &       200+iarr, 300+iarr, 1, 1, 1,
795         &       snx, sny, nr, 'c', '3d', mythid )
796           enddo
797    #endif /* ALLOW_GENARR3D_CONTROL */
798    
799    c----------------------------------------------------------------------
800    c--
801    #ifdef ALLOW_GENTIM2D_CONTROL
802           do iarr = 1, maxCtrlTim2D
803    
804            if (xx_gentim2d_weight(iarr).NE.' ')
805         &   call mdsreadfield( xx_gentim2d_weight, ctrlprec, 'RL',
806         &      1, wgentim2d(1-Olx,1-Oly,1,1,iarr), 1, mythid )
807    
808            call ctrl_init_rec ( xx_gentim2d_file(iarr)(1:MAX_LEN_FNAM),
809         I       xx_gentim2d_startdate1(iarr),
810         I       xx_gentim2d_startdate2(iarr),
811         I       xx_gentim2d_period(iarr),
812         I       1,
813         O       xx_gentim2d_startdate(1,iarr),
814         O       diffrec, startrec, endrec,
815         I       mythid )
816    C
817            call ctrl_init_ctrlvar (
818         &       xx_gentim2d_file(iarr)(1:MAX_LEN_FNAM),
819         &       300+iarr, 400+iarr,
820         &       diffrec, startrec, endrec,
821         &       snx, sny, 1, 'c', 'xy', mythid )
822           enddo
823    #endif /* ALLOW_GENTIM2D_CONTROL */
824    
825    c----------------------------------------------------------------------
826    c----------------------------------------------------------------------
827    
828          call ctrl_init_wet( mythid )
829    
830    c----------------------------------------------------------------------
831    c----------------------------------------------------------------------
832    
833    #ifdef ALLOW_DIC_CONTROL
834          do i = 1, dic_n_control
835           xx_dic(i) = 0. _d 0
836          enddo
837    #endif
838    
839  c----------------------------------------------------------------------  c----------------------------------------------------------------------
840  c----------------------------------------------------------------------  c----------------------------------------------------------------------
841    
842        do bj = jtlo,jthi        do bj = jtlo,jthi
843          do bi = itlo,ithi         do bi = itlo,ithi
844            do j = jmin,jmax          do j = jmin,jmax
845              do i = imin,imax           do i = imin,imax
846                wareaunit (i,j,bi,bj) = 1.0            wareaunit (i,j,bi,bj) = 1.0
847  #ifndef ALLOW_ECCO  #ifndef ALLOW_ECCO
848                whflux    (i,j,bi,bj) = maskC(i,j,1,bi,bj)            whflux    (i,j,bi,bj) = maskC(i,j,1,bi,bj)
849                wsflux    (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wsflux    (i,j,bi,bj) = maskC(i,j,1,bi,bj)
850                wtauu     (i,j,bi,bj) = maskW(i,j,1,bi,bj)            wtauu     (i,j,bi,bj) = maskW(i,j,1,bi,bj)
851                wtauv     (i,j,bi,bj) = maskS(i,j,1,bi,bj)            wtauv     (i,j,bi,bj) = maskS(i,j,1,bi,bj)
852                watemp    (i,j,bi,bj) = maskC(i,j,1,bi,bj)            watemp    (i,j,bi,bj) = maskC(i,j,1,bi,bj)
853                waqh      (i,j,bi,bj) = maskC(i,j,1,bi,bj)            waqh      (i,j,bi,bj) = maskC(i,j,1,bi,bj)
854                wprecip   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wprecip   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
855                wswflux   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wswflux   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
856                wswdown   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wswdown   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
857                wuwind    (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wuwind    (i,j,bi,bj) = maskC(i,j,1,bi,bj)
858                wvwind    (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wvwind    (i,j,bi,bj) = maskC(i,j,1,bi,bj)
859                wlwflux   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wlwflux   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
860                wlwdown   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wlwdown   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
861                wevap     (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wevap     (i,j,bi,bj) = maskC(i,j,1,bi,bj)
862                wsnowprecip(i,j,bi,bj) = maskC(i,j,1,bi,bj)            wsnowprecip(i,j,bi,bj) = maskC(i,j,1,bi,bj)
863                wapressure(i,j,bi,bj) = maskC(i,j,1,bi,bj)            wapressure(i,j,bi,bj) = maskC(i,j,1,bi,bj)
864                wrunoff   (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wrunoff   (i,j,bi,bj) = maskC(i,j,1,bi,bj)
865                wsst      (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wsst      (i,j,bi,bj) = maskC(i,j,1,bi,bj)
866                wsss      (i,j,bi,bj) = maskC(i,j,1,bi,bj)            wsss      (i,j,bi,bj) = maskC(i,j,1,bi,bj)
867  #endif  #endif
868              enddo           enddo
           enddo  
869          enddo          enddo
870           enddo
871        enddo        enddo
872    
873        return        return
874        end        end
   

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.54

  ViewVC Help
Powered by ViewVC 1.1.22