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

Diff of /MITgcm/optim/optim_writedata.F

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

revision 1.1.2.4 by heimbach, Fri Mar 7 05:21:33 2003 UTC revision 1.12 by gforget, Tue Jun 2 14:49:13 2015 UTC
# Line 1  Line 1 
1    
2    c ECCO_CPPOPTIONS used to affect maxcvars
3    c and def ALLOW_OBCSN_CONTROL etc (OBCS masks etc)
4    c#include ECCO_CPPOPTIONS.h
5    
6    c CTRL_OPTIONS affects maxcvars and may def
7    c ALLOW_OBCSN_CONTROL etc (OBCS masks etc)
8    #include "CTRL_OPTIONS.h"
9    
10        subroutine optim_writedata(        subroutine optim_writedata(
11       I                       nn,       I                       nn,
12       I                       dfile,       I                       dfile,
# Line 30  c     == global variables == Line 38  c     == global variables ==
38    
39  #include "EEPARAMS.h"  #include "EEPARAMS.h"
40  #include "SIZE.h"  #include "SIZE.h"
 cgg   Include ECCO_CPPOPTIONS because the ecco_ctrl,cost files have headers with  
 cgg   options for OBCS masks.  
 #include "ECCO_CPPOPTIONS.h"  
   
 #include "ecco.h"  
41  #include "ctrl.h"  #include "ctrl.h"
42  #include "optim.h"  #include "optim.h"
43  #include "minimization.h"  #include "minimization.h"
# Line 62  c     == local variables == Line 65  c     == local variables ==
65        integer funit        integer funit
66        integer cbuffindex        integer cbuffindex
67    
68        _RL     cbuff( sNx*nSx*nPx*sNy*nSy*nPy )        real*4 cbuff( sNx*nSx*nPx*sNy*nSy*nPy )
69    
70        character*(128) fname        character*(128) fname
71  cgg(  cgg(
# Line 97  c--   Next optimization cycle. Line 100  c--   Next optimization cycle.
100    
101  c--         Generate file name and open the file.  c--         Generate file name and open the file.
102        write(fname(1:128),'(4a,i4.4)')        write(fname(1:128),'(4a,i4.4)')
103       &     dfile,'_',expId(1:10),'.opt', nopt       &     dfile,'_',yctrlid(1:10),'.opt', nopt
104        open( funit, file   = fname,        open( funit, file   = fname,
105       &     status = 'new',       &     status = 'new',
106       &     form   = 'unformatted',       &     form   = 'unformatted',
# Line 106  c--         Generate file name and open Line 109  c--         Generate file name and open
109  cph(  cph(
110           print *, 'pathei: nvartype ', nvartype           print *, 'pathei: nvartype ', nvartype
111           print *, 'pathei: nvarlength ', nvarlength           print *, 'pathei: nvarlength ', nvarlength
112           print *, 'pathei: expId ', expId           print *, 'pathei: yctrlid ', yctrlid
113           print *, 'pathei: nopt ', nopt           print *, 'pathei: nopt ', nopt
114           print *, 'pathei: ff ', ff           print *, 'pathei: ff ', ff
115           print *, 'pathei: iG ', biG           print *, 'pathei: iG ', biG
# Line 139  cph) Line 142  cph)
142  c--   Write the header.  c--   Write the header.
143        write( funit ) nvartype        write( funit ) nvartype
144        write( funit ) nvarlength        write( funit ) nvarlength
145        write( funit ) expId        write( funit ) yctrlid
146        write( funit ) optimcycle        write( funit ) optimcycle
147        write( funit ) ff        write( funit ) ff
148        write( funit ) big        write( funit ) big
# Line 152  c--   Write the header. Line 155  c--   Write the header.
155  #ifdef ALLOW_CTRL_WETV  #ifdef ALLOW_CTRL_WETV
156        write( funit ) (nWetvGlobal(k), k=1,nr)        write( funit ) (nWetvGlobal(k), k=1,nr)
157  #endif  #endif
158    #ifdef ALLOW_SHIFWFLX_CONTROL
159          write(funit) (nWetiGlobal(k),   k=1,nr)
160    c     write(funit) nWetiGlobal(1)
161    #endif
162    
163  cgg(    Add OBCS Mask information into the header section for optimization.  cgg(    Add OBCS Mask information into the header section for optimization.
164  #ifdef ALLOW_OBCSN_CONTROL  #ifdef ALLOW_OBCSN_CONTROL
# Line 181  c--         Write the data. Line 188  c--         Write the data.
188        do icvar = 1,maxcvars        do icvar = 1,maxcvars
189           if ( ncvarindex(icvar) .ne. -1 ) then           if ( ncvarindex(icvar) .ne. -1 ) then
190              do icvrec = 1,ncvarrecs(icvar)              do icvrec = 1,ncvarrecs(icvar)
191  cph(  cph               do bj = 1,nsy
192                 print *,'in owd: icvar, icvrec, ncvarrecs, ncvarindex',  cph                  do bi = 1,nsx
      &              icvar, icvrec, ncvarrecs(icvar), ncvarindex(icvar)  
 cph)  
                do bj = 1,nsy  
                   do bi = 1,nsx  
193                       write( funit ) ncvarindex(icvar)                       write( funit ) ncvarindex(icvar)
194                       write( funit ) bj                       write( funit ) bj
195                       write( funit ) bi                       write( funit ) bi
# Line 200  cph) Line 203  cph)
203                             cbuffindex = nWetwGlobal(k)                             cbuffindex = nWetwGlobal(k)
204                          else if (ncvargrd(icvar) .eq. 'v') then                          else if (ncvargrd(icvar) .eq. 'v') then
205                             cbuffindex = nWetvGlobal(k)                             cbuffindex = nWetvGlobal(k)
206    #ifdef ALLOW_SHIFWFLX_CONTROL
207                            else if (ncvargrd(icvar) .eq. 'i') then
208                               cbuffindex = nWetiGlobal(k)
209    #endif
210  cgg(   O.B. points have the grid mask "m".  cgg(   O.B. points have the grid mask "m".
211                          else if (ncvargrd(icvar) .eq. 'm') then                          else if (ncvargrd(icvar) .eq. 'm') then
212  cgg    From "icvrec", calculate what iobcs must be.  cgg    From "icvrec", calculate what iobcs must be.
# Line 232  cgg) Line 238  cgg)
238                          if (cbuffindex .gt. 0) then                          if (cbuffindex .gt. 0) then
239                             do icvcomp = 1,cbuffindex                             do icvcomp = 1,cbuffindex
240                                cbuff(icvcomp) = vv(icvoffset + icvcomp)                                cbuff(icvcomp) = vv(icvoffset + icvcomp)
241  cgg( Right now, the changes to the open boundary velocities are not balanced.  c     If you want to optimize with respect to just O.B. T and S
242  cgg( The model will crash due to physical reasons.  c     uncomment the next two lines.
243  cgg( However, we can optimize with respect to just O.B. T and S if the  c                              if (iobcs .eq. 3) cbuff(icvcomp)=0.
244  cgg( next two lines are uncommented.  c                              if (iobcs .eq. 4) cbuff(icvcomp)=0.
 cgg                              if (iobcs .eq. 3) cbuff(icvcomp)=0.  
 cgg                              if (iobcs .eq. 4) cbuff(icvcomp)=0.  
245                             enddo                             enddo
246                             write( funit ) cbuffindex                             write( funit ) cbuffindex
247                             write( funit ) k                             write( funit ) k
# Line 245  cgg                              if (iob Line 249  cgg                              if (iob
249                             icvoffset = icvoffset + cbuffindex                             icvoffset = icvoffset + cbuffindex
250                          endif                          endif
251                       enddo                       enddo
252                    enddo  cph                  enddo
253                 enddo  cph               enddo
254              enddo              enddo
255           endif           endif
256        enddo        enddo

Legend:
Removed from v.1.1.2.4  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22