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

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

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

revision 1.10 by heimbach, Fri Jun 27 01:54:20 2003 UTC revision 1.15 by heimbach, Mon Feb 28 17:29:38 2005 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    
3  #include "CTRL_CPPOPTIONS.h"  #include "CTRL_CPPOPTIONS.h"
 #ifdef ALLOW_PTRACERS  
 # include "PTRACERS_OPTIONS.h"  
 #endif  
4    
5  CBOP  CBOP
6  C     !ROUTINE: ctrl_map_ini  C     !ROUTINE: ctrl_map_ini
# Line 26  c     == global variables == Line 23  c     == global variables ==
23  #include "SIZE.h"  #include "SIZE.h"
24  #include "EEPARAMS.h"  #include "EEPARAMS.h"
25  #include "PARAMS.h"  #include "PARAMS.h"
 #include "DYNVARS.h"  
26  #include "GRID.h"  #include "GRID.h"
27  #ifdef ALLOW_PASSIVE_TRACER  #include "DYNVARS.h"
28  # include "TR1.h"  #include "FFIELDS.h"
 #endif  
 #ifdef ALLOW_PTRACERS  
 # include "PTRACERS.h"  
 #endif  
   
29  #include "ctrl.h"  #include "ctrl.h"
30  #include "ctrl_dummy.h"  #include "ctrl_dummy.h"
31  #include "optim.h"  #include "optim.h"
32    #ifdef ALLOW_PTRACERS
33    # include "PTRACERS_SIZE.h"
34    # include "PTRACERS.h"
35    #endif
36    #ifdef ALLOW_ECCO
37    # include "ecco_cost.h"
38    #endif
39    
40  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
41  c     == routine arguments ==  c     == routine arguments ==
# Line 66  c     == local variables == Line 64  c     == local variables ==
64        character*( 80)   fnameefluxy        character*( 80)   fnameefluxy
65        character*( 80)   fnameefluxp        character*( 80)   fnameefluxp
66        character*( 80)   fnamebottomdrag        character*( 80)   fnamebottomdrag
67          character*( 80)   fnamesss
68          character*( 80)   fnamesst
69          character*( 80)   fnameedtaux
70          character*( 80)   fnameedtauy
71    
72        _RL     fac        _RL     fac
73          _RL tmptest
74    
75  c     == external ==  c     == external ==
76        integer  ilnblnk        integer  ilnblnk
# Line 101  c--   Temperature field. Line 104  c--   Temperature field.
104        il=ilnblnk( xx_theta_file )        il=ilnblnk( xx_theta_file )
105        write(fnametheta(1:80),'(2a,i10.10)')        write(fnametheta(1:80),'(2a,i10.10)')
106       &     xx_theta_file(1:il),'.',optimcycle       &     xx_theta_file(1:il),'.',optimcycle
107        call active_read_xyz( fnametheta, tmpfld3d, 1,        call active_read_xyz_loc( fnametheta, tmpfld3d, 1,
108       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
109       &                      mythid, xx_theta_dummy )       &                      mythid, xx_theta_dummy )
110    
# Line 110  c--   Temperature field. Line 113  c--   Temperature field.
113            do k = 1,nr            do k = 1,nr
114              do j = jmin,jmax              do j = jmin,jmax
115                do i = imin,imax                do i = imin,imax
116    #ifdef ALLOW_ECCO
117                   IF (abs(tmpfld3d(i,j,k,bi,bj)).gt.
118         $          2.0/sqrt(wtheta(k,bi,bj)))
119         $          tmpfld3d(i,j,k,bi,bj)=
120         $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
121    #endif
122                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
123       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
124                  if(theta(i,j,k,bi,bj).lt.-2.0)                  if(theta(i,j,k,bi,bj).lt.-2.0)
125       &               theta(i,j,k,bi,bj)= -2.0         &               theta(i,j,k,bi,bj)= -2.0
126                enddo                enddo
127              enddo              enddo
128            enddo            enddo
129         enddo         enddo
130        enddo        enddo
131    
132  #endif  #endif
133    
134  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
# Line 126  c--   Temperature field. Line 136  c--   Temperature field.
136        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
137        write(fnamesalt(1:80),'(2a,i10.10)')        write(fnamesalt(1:80),'(2a,i10.10)')
138       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
139        call active_read_xyz( fnamesalt, tmpfld3d, 1,        call active_read_xyz_loc( fnamesalt, tmpfld3d, 1,
140       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
141       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
142    
# Line 135  c--   Temperature field. Line 145  c--   Temperature field.
145            do k = 1,nr            do k = 1,nr
146              do j = jmin,jmax              do j = jmin,jmax
147                do i = imin,imax                do i = imin,imax
148    #ifdef ALLOW_ECCO
149                   IF (abs(tmpfld3d(i,j,k,bi,bj)).gt.
150         $          2.0/sqrt(wsalt(k,bi,bj)))
151         $          tmpfld3d(i,j,k,bi,bj)=
152         $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
153    #endif
154                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
155       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
156    
157                enddo                enddo
158              enddo              enddo
159            enddo            enddo
160         enddo         enddo
161        enddo        enddO
162  #endif  #endif
163    
164  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
165    #ifdef ALLOW_PTRACERS
166  c--   Temperature field.  c--   Temperature field.
167        il=ilnblnk( xx_tr1_file )        il=ilnblnk( xx_tr1_file )
168        write(fnametr1(1:80),'(2a,i10.10)')        write(fnametr1(1:80),'(2a,i10.10)')
169       &     xx_tr1_file(1:il),'.',optimcycle       &     xx_tr1_file(1:il),'.',optimcycle
170        call active_read_xyz( fnametr1, tmpfld3d, 1,        call active_read_xyz_loc( fnametr1, tmpfld3d, 1,
171       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
172       &                      mythid, xx_tr1_dummy )       &                      mythid, xx_tr1_dummy )
173    
# Line 158  c--   Temperature field. Line 176  c--   Temperature field.
176            do k = 1,nr            do k = 1,nr
177              do j = jmin,jmax              do j = jmin,jmax
178                do i = imin,imax                do i = imin,imax
 #if (defined (ALLOW_PASSIVE_TRACER))  
                 tr1(i,j,k,bi,bj) = tr1(i,j,k,bi,bj) +  
      &                               fac*tmpfld3d(i,j,k,bi,bj)  
 #elif (defined (ALLOW_PTRACERS))  
                 IF ( NUMBER_OF_PTRACERS .GT. 1 ) STOP  
      & 'ALLOW_TR10_CONTROL with ALLOW_PTRACERS implemented for 1 tracer'  
179                  ptracer(i,j,k,bi,bj,1) = ptracer(i,j,k,bi,bj,1) +                  ptracer(i,j,k,bi,bj,1) = ptracer(i,j,k,bi,bj,1) +
180       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
 #endif  
181                enddo                enddo
182              enddo              enddo
183            enddo            enddo
184         enddo         enddo
185        enddo        enddo
186  #endif  #endif
187    #endif
188    
189    #ifdef ALLOW_SST0_CONTROL
190    c--   sst0.
191          il=ilnblnk( xx_sst_file )
192          write(fnamesst(1:80),'(2a,i10.10)')
193         &     xx_sst_file(1:il),'.',optimcycle
194          call active_read_xy_loc ( fnamesst, tmpfld2d, 1,
195         &                      doglobalread, ladinit, optimcycle,
196         &                      mythid, xx_sst_dummy )
197          do bj = jtlo,jthi
198            do bi = itlo,ithi
199              do j = jmin,jmax
200                do i = imin,imax
201    cph              sst(i,j,bi,bj) = sst(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
202                  theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)
203         &                             + tmpfld2d(i,j,bi,bj)
204                enddo
205              enddo
206            enddo
207          enddo
208    #endif
209    
210    #ifdef ALLOW_SSS0_CONTROL
211    c--   sss0.
212          il=ilnblnk( xx_sss_file )
213          write(fnamesss(1:80),'(2a,i10.10)')
214         &     xx_sss_file(1:il),'.',optimcycle
215          call active_read_xy_loc ( fnamesss, tmpfld2d, 1,
216         &                      doglobalread, ladinit, optimcycle,
217         &                      mythid, xx_sss_dummy )
218          do bj = jtlo,jthi
219            do bi = itlo,ithi
220              do j = jmin,jmax
221                do i = imin,imax
222    cph              sss(i,j,bi,bj) = sss(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
223                  salt(i,j,1,bi,bj) = salt(i,j,1,bi,bj)
224         &                             + tmpfld2d(i,j,bi,bj)
225                enddo
226              enddo
227            enddo
228          enddo
229    #endif
230    
231  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
232  c--   diffkr.  c--   diffkr.
233        il=ilnblnk( xx_diffkr_file )        il=ilnblnk( xx_diffkr_file )
234        write(fnamediffkr(1:80),'(2a,i10.10)')        write(fnamediffkr(1:80),'(2a,i10.10)')
235       &     xx_diffkr_file(1:il),'.',optimcycle       &     xx_diffkr_file(1:il),'.',optimcycle
236        call active_read_xyz( fnamediffkr, tmpfld3d, 1,        call active_read_xyz_loc( fnamediffkr, tmpfld3d, 1,
237       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
238       &                      mythid, xx_diffkr_dummy )       &                      mythid, xx_diffkr_dummy )
239        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 201  c--   kapgm. Line 255  c--   kapgm.
255        il=ilnblnk( xx_kapgm_file )        il=ilnblnk( xx_kapgm_file )
256        write(fnamekapgm(1:80),'(2a,i10.10)')        write(fnamekapgm(1:80),'(2a,i10.10)')
257       &     xx_kapgm_file(1:il),'.',optimcycle       &     xx_kapgm_file(1:il),'.',optimcycle
258        call active_read_xyz( fnamekapgm, tmpfld3d, 1,        call active_read_xyz_loc( fnamekapgm, tmpfld3d, 1,
259       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
260       &                      mythid, xx_kapgm_dummy )       &                      mythid, xx_kapgm_dummy )
261        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 223  c--   y-component EP-flux field. Line 277  c--   y-component EP-flux field.
277        il=ilnblnk( xx_efluxy_file )        il=ilnblnk( xx_efluxy_file )
278        write(fnameefluxy(1:80),'(2a,i10.10)')        write(fnameefluxy(1:80),'(2a,i10.10)')
279       &     xx_efluxy_file(1:il),'.',optimcycle       &     xx_efluxy_file(1:il),'.',optimcycle
280        call active_read_xyz( fnameefluxy, tmpfld3d, 1,        call active_read_xyz_loc( fnameefluxy, tmpfld3d, 1,
281       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
282       &                      mythid, xx_efluxy_dummy )       &                      mythid, xx_efluxy_dummy )
283    
# Line 250  c--   p-component EP-flux field. Line 304  c--   p-component EP-flux field.
304        il=ilnblnk( xx_efluxp_file )        il=ilnblnk( xx_efluxp_file )
305        write(fnameefluxp(1:80),'(2a,i10.10)')        write(fnameefluxp(1:80),'(2a,i10.10)')
306       &     xx_efluxp_file(1:il),'.',optimcycle       &     xx_efluxp_file(1:il),'.',optimcycle
307        call active_read_xyz( fnameefluxp, tmpfld3d, 1,        call active_read_xyz_loc( fnameefluxp, tmpfld3d, 1,
308       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
309       &                      mythid, xx_efluxp_dummy )       &                      mythid, xx_efluxp_dummy )
310    
# Line 279  c--   bottom drag Line 333  c--   bottom drag
333        il=ilnblnk( xx_bottomdrag_file )        il=ilnblnk( xx_bottomdrag_file )
334        write(fnamebottomdrag(1:80),'(2a,i10.10)')        write(fnamebottomdrag(1:80),'(2a,i10.10)')
335       &     xx_bottomdrag_file(1:il),'.',optimcycle       &     xx_bottomdrag_file(1:il),'.',optimcycle
336        call active_read_xy ( fnamebottomdrag, tmpfld2d, 1,        call active_read_xy_loc ( fnamebottomdrag, tmpfld2d, 1,
337       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
338       &                      mythid, xx_bottomdrag_dummy )       &                      mythid, xx_bottomdrag_dummy )
339        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 294  c--   bottom drag Line 348  c--   bottom drag
348        enddo        enddo
349  #endif  #endif
350    
351    fdef ALLOW_EDTAUX_CONTROL
352    c-- zonal eddy stress : edtaux
353          il=ilnblnk( xx_edtaux_file )
354          write(fnameedtaux(1:80),'(2a,i10.10)')
355         &     xx_edtaux_file(1:il),'.',optimcycle
356          call active_read_xyz( fnameedtaux, tmpfld3d, 1,
357         &                      doglobalread, ladinit, optimcycle,
358         &                      mythid, xx_edtaux_dummy )
359          do bj = jtlo,jthi
360            do bi = itlo,ithi
361              do k = 1,nr
362                do j = jmin,jmax
363                  do i = imin,imax
364                    Eddytaux(i,j,k,bi,bj) = Eddytaux(i,j,k,bi,bj) +
365         &                                tmpfld3d(i,j,k,bi,bj)
366                  enddo
367                enddo
368              enddo
369           enddo
370          enddo
371    #endif
372    
373    #ifdef ALLOW_EDTAUY_CONTROL
374    c-- meridional eddy stress : edtauy
375          il=ilnblnk( xx_edtauy_file )
376          write(fnameedtauy(1:80),'(2a,i10.10)')
377         &     xx_edtauy_file(1:il),'.',optimcycle
378          call active_read_xyz( fnameedtauy, tmpfld3d, 1,
379         &                      doglobalread, ladinit, optimcycle,
380         &                      mythid, xx_edtauy_dummy )
381          do bj = jtlo,jthi
382            do bi = itlo,ithi
383              do k = 1,nr
384                do j = jmin,jmax
385                  do i = imin,imax
386                    Eddytauy(i,j,k,bi,bj) = Eddytauy(i,j,k,bi,bj) +
387         &                                tmpfld3d(i,j,k,bi,bj)
388                  enddo
389                enddo
390              enddo
391           enddo
392          enddo
393    #endif
394    
395  c--   Update the tile edges.  c--   Update the tile edges.
396    
397  #ifdef ALLOW_THETA0_CONTROL  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))
398        _EXCH_XYZ_R8( theta, mythid )        _EXCH_XYZ_R8( theta, mythid )
399  #endif  #endif
400  #ifdef ALLOW_SALT0_CONTROL  #if (defined (ALLOW_SALT0_CONTROL) || defined (ALLOW_SSS0_CONTROL))
401        _EXCH_XYZ_R8(  salt, mythid )        _EXCH_XYZ_R8(  salt, mythid )
402  #endif  #endif
403  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
404  # if (defined (ALLOW_PASSIVE_TRACER))  #ifdef ALLOW_PTRACERS
       _EXCH_XYZ_R8(     tr1, mythid )  
 # elif (defined (ALLOW_PTRACERS))  
405        _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,1),myThid)        _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,1),myThid)
406  # endif  #endif
407  #endif  #endif
408  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
409        _EXCH_XYZ_R8( diffkr, mythid)        _EXCH_XYZ_R8( diffkr, mythid)
# Line 326  c--   Update the tile edges. Line 421  c--   Update the tile edges.
421        _EXCH_XY_R8( bottomdragfld, mythid )        _EXCH_XY_R8( bottomdragfld, mythid )
422  #endif  #endif
423    
424    #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))
425           CALL EXCH_UV_XYZ_RS(Eddytaux,Eddytauy,.TRUE.,myThid)
426    #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))
427           STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'
428    #endif
429    
430        return        return
431        end        end

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

  ViewVC Help
Powered by ViewVC 1.1.22