/[MITgcm]/MITgcm/optim/optim_readdata.F
ViewVC logotype

Diff of /MITgcm/optim/optim_readdata.F

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

revision 1.9 by mlosch, Mon Jul 25 08:24:38 2011 UTC revision 1.10 by mlosch, Mon Jul 25 08:58:47 2011 UTC
# Line 282  ce    Add some more checks. ... Line 282  ce    Add some more checks. ...
282    
283        if (.NOT. lheaderonly) then        if (.NOT. lheaderonly) then
284  c--   Read the data.  c--   Read the data.
285           icvoffset = 0         icvoffset = 0
286           do icvar = 1,maxcvars         do icvar = 1,maxcvars
287              if ( ncvarindex(icvar) .ne. -1 ) then          if ( ncvarindex(icvar) .ne. -1 ) then
288                 do icvrec = 1,ncvarrecs(icvar)           do icvrec = 1,ncvarrecs(icvar)
289                    do bj = 1,nsy            do bj = 1,nsy
290                       do bi = 1,nsx             do bi = 1,nsx
291                          read( funit ) ncvarindex(icvar)              read( funit ) ncvarindex(icvar)
292                          read( funit ) filej              read( funit ) filej
293                          read( funit ) filei              read( funit ) filei
294                          do k = 1,ncvarnrmax(icvar)              do k = 1,ncvarnrmax(icvar)
295                             cbuffindex = 0               cbuffindex = 0
296                             if (ncvargrd(icvar) .eq. 'c') then               if (ncvargrd(icvar) .eq. 'c') then
297                                cbuffindex = nWetcGlobal(k)                cbuffindex = nWetcGlobal(k)
298                             else if (ncvargrd(icvar) .eq. 's') then               else if (ncvargrd(icvar) .eq. 's') then
299                                cbuffindex = nWetsGlobal(k)                cbuffindex = nWetsGlobal(k)
300                             else if (ncvargrd(icvar) .eq. 'w') then               else if (ncvargrd(icvar) .eq. 'w') then
301                                cbuffindex = nWetwGlobal(k)                cbuffindex = nWetwGlobal(k)
302                             else if (ncvargrd(icvar) .eq. 'v') then               else if (ncvargrd(icvar) .eq. 'v') then
303                                cbuffindex = nWetvGlobal(k)                cbuffindex = nWetvGlobal(k)
304  #ifdef ALLOW_SHIFWFLX_CONTROL  #ifdef ALLOW_SHIFWFLX_CONTROL
305                             else if (ncvargrd(icvar) .eq. 'i') then               else if (ncvargrd(icvar) .eq. 'i') then
306                                cbuffindex = nWetiGlobal(k)                cbuffindex = nWetiGlobal(k)
307  #endif  #endif
308  cgg(   O.B. points have the grid mask "m".  cgg(   O.B. points have the grid mask "m".
309                             else if (ncvargrd(icvar) .eq. 'm') then               else if (ncvargrd(icvar) .eq. 'm') then
310  cgg    From "icvrec", calculate what iobcs must be.  cgg    From "icvrec", calculate what iobcs must be.
311                               gg   = (icvrec-1)/nobcs                gg   = (icvrec-1)/nobcs
312                               igg  = int(gg)                igg  = int(gg)
313                               iobcs= icvrec - igg*nobcs                iobcs= icvrec - igg*nobcs
314  #ifdef ALLOW_OBCSN_CONTROL  #ifdef ALLOW_OBCSN_CONTROL
315                               if (icvar .eq. 11) then                                    if (icvar .eq. 11) then                    
316                                 cbuffindex = nWetobcsnGlo(k,iobcs)                 cbuffindex = nWetobcsnGlo(k,iobcs)
317                               endif                endif
318  #endif  #endif
319  #ifdef ALLOW_OBCSS_CONTROL  #ifdef ALLOW_OBCSS_CONTROL
320                               if (icvar .eq. 12) then                if (icvar .eq. 12) then
321                                 cbuffindex = nWetobcssGlo(k,iobcs)                 cbuffindex = nWetobcssGlo(k,iobcs)
322                               endif                endif
323  #endif  #endif
324  #ifdef ALLOW_OBCSW_CONTROL  #ifdef ALLOW_OBCSW_CONTROL
325                               if (icvar .eq. 13) then                if (icvar .eq. 13) then
326                                 cbuffindex = nWetobcswGlo(k,iobcs)                 cbuffindex = nWetobcswGlo(k,iobcs)
327                               endif                endif
328  #endif  #endif
329  #ifdef ALLOW_OBCSE_CONTROL  #ifdef ALLOW_OBCSE_CONTROL
330                               if (icvar .eq. 14) then                if (icvar .eq. 14) then
331                                 cbuffindex = nWetobcseGlo(k,iobcs)                 cbuffindex = nWetobcseGlo(k,iobcs)
332                               endif                endif
333  #endif  #endif
334  cgg)  cgg)
335                             endif               endif
336                             if (cbuffindex .gt. 0) then               if ( icvoffset + cbuffindex .gt. nvarlength ) then
337                                read( funit ) cbuffindex                print*
338                                read( funit ) filek                print *, ' ERROR:'
339                                read( funit ) (cbuff(ii), ii=1,cbuffindex)                print *, ' There are at least ', icvoffset+cbuffindex,
340                                do icvcomp = 1,cbuffindex       &             ' records in '//fname(1:28)//'.'
341                                   vv(icvoffset+icvcomp) = cbuff(icvcomp)                print *, ' This is more than expected from nvarlength =',
342  cgg( Right now, the changes to the open boundary velocities are not balanced.       &             nvarlength, '.'
343  cgg( The model will crash due to physical reasons.                print *, ' Something is wrong in the computation of '//
344  cgg( However, we can optimize with respect to just O.B. T and S if the       &             'the wet points or'
345  cgg( next two lines are uncommented.                print *, ' in computing the number of records in '//
346  cgg                         if (iobcs .eq. 3) vv(icvoffset+icvcomp)=0.       &             'some variable(s).'
347  cgg                         if (iobcs .eq. 4) vv(icvoffset+icvcomp)=0.                print *, '  ...  stopped in OPTIM_READDATA.'
348                                enddo                stop     '  ...  stopped in OPTIM_READDATA.'
349                                icvoffset = icvoffset + cbuffindex               endif
350                             endif               if (cbuffindex .gt. 0) then
351                          enddo                read( funit ) cbuffindex
352                       enddo                read( funit ) filek
353                    enddo                read( funit ) (cbuff(ii), ii=1,cbuffindex)
354                 enddo                do icvcomp = 1,cbuffindex
355              endif                 vv(icvoffset+icvcomp) = cbuff(icvcomp)
356    c     If you want to optimize with respect to just O.B. T and S
357    c     uncomment the next two lines.
358    c              if (iobcs .eq. 3) vv(icvoffset+icvcomp)=0.
359    c              if (iobcs .eq. 4) vv(icvoffset+icvcomp)=0.
360                  enddo
361                  icvoffset = icvoffset + cbuffindex
362                 endif
363                enddo
364               enddo
365              enddo
366           enddo           enddo
367            endif
368           enddo
369            
370        else        else
371    
372  c--   Assign the number of control variables.  c--   Assign the number of control variables.
373           nn = nvarlength         nn = nvarlength
374                    
375        endif        endif
376    
# Line 367  c--   Assign the number of control varia Line 379  c--   Assign the number of control varia
379  c--   Assign the cost function value in case we read the cost file.  c--   Assign the cost function value in case we read the cost file.
380    
381        if      ( dfile .eq. ctrlname ) then        if      ( dfile .eq. ctrlname ) then
382          ff = 0. d 0         ff = 0. d 0
383        else if ( dfile .eq. costname ) then        else if ( dfile .eq. costname ) then
384          ff = fileff         ff = fileff
385        endif        endif
386    
387        return        return

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

  ViewVC Help
Powered by ViewVC 1.1.22