/[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.13 by heimbach, Fri Sep 17 23:02:01 2004 UTC revision 1.18 by heimbach, Tue Jan 3 17:10:35 2006 UTC
# Line 23  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    #include "DYNVARS.h"
28    #include "FFIELDS.h"
29  #include "ctrl.h"  #include "ctrl.h"
30  #include "ctrl_dummy.h"  #include "ctrl_dummy.h"
31  #include "optim.h"  #include "optim.h"
# Line 55  c     == local variables == Line 56  c     == local variables ==
56        logical doglobalread        logical doglobalread
57        logical ladinit        logical ladinit
58    
59        character*( 80)   fnametheta        character*( 80)   fnamegeneric
       character*( 80)   fnamesalt  
       character*( 80)   fnametr1  
       character*( 80)   fnamediffkr  
       character*( 80)   fnamekapgm  
       character*( 80)   fnameefluxy  
       character*( 80)   fnameefluxp  
       character*( 80)   fnamebottomdrag  
60    
61        _RL     fac        _RL     fac
62        _RL tmptest        _RL tmptest
# Line 97  CEOP Line 91  CEOP
91  #ifdef ALLOW_THETA0_CONTROL  #ifdef ALLOW_THETA0_CONTROL
92  c--   Temperature field.  c--   Temperature field.
93        il=ilnblnk( xx_theta_file )        il=ilnblnk( xx_theta_file )
94        write(fnametheta(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
95       &     xx_theta_file(1:il),'.',optimcycle       &     xx_theta_file(1:il),'.',optimcycle
96        call active_read_xyz_loc( fnametheta, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
97       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
98       &                      mythid, xx_theta_dummy )       &                      mythid, xx_theta_dummy )
99    
# Line 114  c--   Temperature field. Line 108  c--   Temperature field.
108       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
109       $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))       $          sign(2.0/sqrt(wtheta(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
110  #endif  #endif
111    #ifdef ALLOW_OPENAD
112                    theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
113         &                               fac*xx_theta(i,j,k,bi,bj)
114    #else
115                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +                  theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj) +
116       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
117    #endif
118                  if(theta(i,j,k,bi,bj).lt.-2.0)                  if(theta(i,j,k,bi,bj).lt.-2.0)
119       &               theta(i,j,k,bi,bj)= -2.0       &               theta(i,j,k,bi,bj)= -2.0
120                enddo                enddo
# Line 129  c--   Temperature field. Line 128  c--   Temperature field.
128  #ifdef ALLOW_SALT0_CONTROL  #ifdef ALLOW_SALT0_CONTROL
129  c--   Temperature field.  c--   Temperature field.
130        il=ilnblnk( xx_salt_file )        il=ilnblnk( xx_salt_file )
131        write(fnamesalt(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
132       &     xx_salt_file(1:il),'.',optimcycle       &     xx_salt_file(1:il),'.',optimcycle
133        call active_read_xyz_loc( fnamesalt, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
134       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
135       &                      mythid, xx_salt_dummy )       &                      mythid, xx_salt_dummy )
136    
# Line 146  c--   Temperature field. Line 145  c--   Temperature field.
145       $          tmpfld3d(i,j,k,bi,bj)=       $          tmpfld3d(i,j,k,bi,bj)=
146       $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))       $          sign(2.0/sqrt(wsalt(k,bi,bj)),tmpfld3d(i,j,k,bi,bj))
147  #endif  #endif
148    #ifdef ALLOW_OPENAD
149                    salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
150         &                               fac*xx_salt(i,j,k,bi,bj)
151    #else
152                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +                  salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj) +
153       &                               fac*tmpfld3d(i,j,k,bi,bj)       &                               fac*tmpfld3d(i,j,k,bi,bj)
154    #endif
155    
156                enddo                enddo
157              enddo              enddo
# Line 160  c--   Temperature field. Line 164  c--   Temperature field.
164  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
165  c--   Temperature field.  c--   Temperature field.
166        il=ilnblnk( xx_tr1_file )        il=ilnblnk( xx_tr1_file )
167        write(fnametr1(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
168       &     xx_tr1_file(1:il),'.',optimcycle       &     xx_tr1_file(1:il),'.',optimcycle
169        call active_read_xyz_loc( fnametr1, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
170       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
171       &                      mythid, xx_tr1_dummy )       &                      mythid, xx_tr1_dummy )
172    
# Line 181  c--   Temperature field. Line 185  c--   Temperature field.
185  #endif  #endif
186  #endif  #endif
187    
188    #ifdef ALLOW_SST0_CONTROL
189    c--   sst0.
190          il=ilnblnk( xx_sst_file )
191          write(fnamegeneric(1:80),'(2a,i10.10)')
192         &     xx_sst_file(1:il),'.',optimcycle
193          call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
194         &                      doglobalread, ladinit, optimcycle,
195         &                      mythid, xx_sst_dummy )
196          do bj = jtlo,jthi
197            do bi = itlo,ithi
198              do j = jmin,jmax
199                do i = imin,imax
200    cph              sst(i,j,bi,bj) = sst(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
201                  theta(i,j,1,bi,bj) = theta(i,j,1,bi,bj)
202         &                             + tmpfld2d(i,j,bi,bj)
203                enddo
204              enddo
205            enddo
206          enddo
207    #endif
208    
209    #ifdef ALLOW_SSS0_CONTROL
210    c--   sss0.
211          il=ilnblnk( xx_sss_file )
212          write(fnamegeneric(1:80),'(2a,i10.10)')
213         &     xx_sss_file(1:il),'.',optimcycle
214          call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
215         &                      doglobalread, ladinit, optimcycle,
216         &                      mythid, xx_sss_dummy )
217          do bj = jtlo,jthi
218            do bi = itlo,ithi
219              do j = jmin,jmax
220                do i = imin,imax
221    cph              sss(i,j,bi,bj) = sss(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
222                  salt(i,j,1,bi,bj) = salt(i,j,1,bi,bj)
223         &                             + tmpfld2d(i,j,bi,bj)
224                enddo
225              enddo
226            enddo
227          enddo
228    #endif
229    
230  #ifdef ALLOW_DIFFKR_CONTROL  #ifdef ALLOW_DIFFKR_CONTROL
231  c--   diffkr.  c--   diffkr.
232        il=ilnblnk( xx_diffkr_file )        il=ilnblnk( xx_diffkr_file )
233        write(fnamediffkr(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
234       &     xx_diffkr_file(1:il),'.',optimcycle       &     xx_diffkr_file(1:il),'.',optimcycle
235        call active_read_xyz_loc( fnamediffkr, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
236       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
237       &                      mythid, xx_diffkr_dummy )       &                      mythid, xx_diffkr_dummy )
238        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 206  c--   diffkr. Line 252  c--   diffkr.
252  #ifdef ALLOW_KAPGM_CONTROL  #ifdef ALLOW_KAPGM_CONTROL
253  c--   kapgm.  c--   kapgm.
254        il=ilnblnk( xx_kapgm_file )        il=ilnblnk( xx_kapgm_file )
255        write(fnamekapgm(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
256       &     xx_kapgm_file(1:il),'.',optimcycle       &     xx_kapgm_file(1:il),'.',optimcycle
257        call active_read_xyz_loc( fnamekapgm, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
258       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
259       &                      mythid, xx_kapgm_dummy )       &                      mythid, xx_kapgm_dummy )
260        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 228  c--   kapgm. Line 274  c--   kapgm.
274  #ifdef ALLOW_EFLUXY0_CONTROL  #ifdef ALLOW_EFLUXY0_CONTROL
275  c--   y-component EP-flux field.  c--   y-component EP-flux field.
276        il=ilnblnk( xx_efluxy_file )        il=ilnblnk( xx_efluxy_file )
277        write(fnameefluxy(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
278       &     xx_efluxy_file(1:il),'.',optimcycle       &     xx_efluxy_file(1:il),'.',optimcycle
279        call active_read_xyz_loc( fnameefluxy, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
280       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
281       &                      mythid, xx_efluxy_dummy )       &                      mythid, xx_efluxy_dummy )
282    
# Line 255  cph     & Line 301  cph     &
301  #ifdef ALLOW_EFLUXP0_CONTROL  #ifdef ALLOW_EFLUXP0_CONTROL
302  c--   p-component EP-flux field.  c--   p-component EP-flux field.
303        il=ilnblnk( xx_efluxp_file )        il=ilnblnk( xx_efluxp_file )
304        write(fnameefluxp(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
305       &     xx_efluxp_file(1:il),'.',optimcycle       &     xx_efluxp_file(1:il),'.',optimcycle
306        call active_read_xyz_loc( fnameefluxp, tmpfld3d, 1,        call active_read_xyz_loc( fnamegeneric, tmpfld3d, 1,
307       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
308       &                      mythid, xx_efluxp_dummy )       &                      mythid, xx_efluxp_dummy )
309    
# Line 284  cph     & Line 330  cph     &
330  #ifdef ALLOW_BOTTOMDRAG_CONTROL  #ifdef ALLOW_BOTTOMDRAG_CONTROL
331  c--   bottom drag  c--   bottom drag
332        il=ilnblnk( xx_bottomdrag_file )        il=ilnblnk( xx_bottomdrag_file )
333        write(fnamebottomdrag(1:80),'(2a,i10.10)')        write(fnamegeneric(1:80),'(2a,i10.10)')
334       &     xx_bottomdrag_file(1:il),'.',optimcycle       &     xx_bottomdrag_file(1:il),'.',optimcycle
335        call active_read_xy_loc ( fnamebottomdrag, tmpfld2d, 1,        call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
336       &                      doglobalread, ladinit, optimcycle,       &                      doglobalread, ladinit, optimcycle,
337       &                      mythid, xx_bottomdrag_dummy )       &                      mythid, xx_bottomdrag_dummy )
338        do bj = jtlo,jthi        do bj = jtlo,jthi
# Line 301  c--   bottom drag Line 347  c--   bottom drag
347        enddo        enddo
348  #endif  #endif
349    
350    #ifdef ALLOW_EDTAUX_CONTROL
351    c-- zonal eddy stress : edtaux
352          il=ilnblnk( xx_edtaux_file )
353          write(fnamegeneric(1:80),'(2a,i10.10)')
354         &     xx_edtaux_file(1:il),'.',optimcycle
355          call active_read_xyz( fnamegeneric, tmpfld3d, 1,
356         &                      doglobalread, ladinit, optimcycle,
357         &                      mythid, xx_edtaux_dummy )
358          do bj = jtlo,jthi
359            do bi = itlo,ithi
360              do k = 1,nr
361                do j = jmin,jmax
362                  do i = imin,imax
363                    Eddytaux(i,j,k,bi,bj) = Eddytaux(i,j,k,bi,bj) +
364         &                                tmpfld3d(i,j,k,bi,bj)
365                  enddo
366                enddo
367              enddo
368           enddo
369          enddo
370    #endif
371    
372    #ifdef ALLOW_EDTAUY_CONTROL
373    c-- meridional eddy stress : edtauy
374          il=ilnblnk( xx_edtauy_file )
375          write(fnamegeneric(1:80),'(2a,i10.10)')
376         &     xx_edtauy_file(1:il),'.',optimcycle
377          call active_read_xyz( fnamegeneric, tmpfld3d, 1,
378         &                      doglobalread, ladinit, optimcycle,
379         &                      mythid, xx_edtauy_dummy )
380          do bj = jtlo,jthi
381            do bi = itlo,ithi
382              do k = 1,nr
383                do j = jmin,jmax
384                  do i = imin,imax
385                    Eddytauy(i,j,k,bi,bj) = Eddytauy(i,j,k,bi,bj) +
386         &                                tmpfld3d(i,j,k,bi,bj)
387                  enddo
388                enddo
389              enddo
390           enddo
391          enddo
392    #endif
393    
394    #ifdef ALLOW_UVEL0_CONTROL
395    c-- initial zonal velocity
396          il=ilnblnk( xx_uvel_file )
397          write(fnamegeneric(1:80),'(2a,i10.10)')
398         &     xx_uvel_file(1:il),'.',optimcycle
399          call active_read_xyz( fnamegeneric, tmpfld3d, 1,
400         &                      doglobalread, ladinit, optimcycle,
401         &                      mythid, xx_uvel_dummy )
402          do bj = jtlo,jthi
403            do bi = itlo,ithi
404              do k = 1,nr
405                do j = jmin,jmax
406                  do i = imin,imax
407                    uVel(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) +
408         &                              tmpfld3d(i,j,k,bi,bj)
409                  enddo
410                enddo
411              enddo
412           enddo
413          enddo
414    #endif
415    
416    #ifdef ALLOW_VVEL0_CONTROL
417    c-- initial merid. velocity
418          il=ilnblnk( xx_vvel_file )
419          write(fnamegeneric(1:80),'(2a,i10.10)')
420         &     xx_vvel_file(1:il),'.',optimcycle
421          call active_read_xyz( fnamegeneric, tmpfld3d, 1,
422         &                      doglobalread, ladinit, optimcycle,
423         &                      mythid, xx_vvel_dummy )
424          do bj = jtlo,jthi
425            do bi = itlo,ithi
426              do k = 1,nr
427                do j = jmin,jmax
428                  do i = imin,imax
429                    vVel(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) +
430         &                              tmpfld3d(i,j,k,bi,bj)
431                  enddo
432                enddo
433              enddo
434           enddo
435          enddo
436    #endif
437    
438    #ifdef ALLOW_ETAN0_CONTROL
439    c--   initial Eta.
440          il=ilnblnk( xx_etan_file )
441          write(fnamegeneric(1:80),'(2a,i10.10)')
442         &     xx_etan_file(1:il),'.',optimcycle
443          call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
444         &                      doglobalread, ladinit, optimcycle,
445         &                      mythid, xx_etan_dummy )
446          do bj = jtlo,jthi
447            do bi = itlo,ithi
448              do j = jmin,jmax
449                do i = imin,imax
450                  etaN(i,j,bi,bj) = etaN(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
451                enddo
452              enddo
453            enddo
454          enddo
455    #endif
456    
457    #ifdef ALLOW_RELAXSST_CONTROL
458    c--   SST relaxation coefficient.
459          il=ilnblnk( xx_relaxsst_file )
460          write(fnamegeneric(1:80),'(2a,i10.10)')
461         &     xx_relaxsst_file(1:il),'.',optimcycle
462          call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
463         &                      doglobalread, ladinit, optimcycle,
464         &                      mythid, xx_relaxsst_dummy )
465          do bj = jtlo,jthi
466            do bi = itlo,ithi
467              do j = jmin,jmax
468                do i = imin,imax
469                  lambdaThetaClimRelax(i,j,bi,bj) =
470         &              lambdaThetaClimRelax(i,j,bi,bj)
471         &              + tmpfld2d(i,j,bi,bj)
472                enddo
473              enddo
474            enddo
475          enddo
476    #endif
477    
478    #ifdef ALLOW_RELAXSSS_CONTROL
479    c--   SSS relaxation coefficient.
480          il=ilnblnk( xx_relaxsss_file )
481          write(fnamegeneric(1:80),'(2a,i10.10)')
482         &     xx_relaxsss_file(1:il),'.',optimcycle
483          call active_read_xy_loc ( fnamegeneric, tmpfld2d, 1,
484         &                      doglobalread, ladinit, optimcycle,
485         &                      mythid, xx_relaxsss_dummy )
486          do bj = jtlo,jthi
487            do bi = itlo,ithi
488              do j = jmin,jmax
489                do i = imin,imax
490                  lambdaSaltClimRelax(i,j,bi,bj) =
491         &              lambdaSaltClimRelax(i,j,bi,bj)
492         &              + tmpfld2d(i,j,bi,bj)
493                enddo
494              enddo
495            enddo
496          enddo
497    #endif
498    
499  c--   Update the tile edges.  c--   Update the tile edges.
500    
501  #ifdef ALLOW_THETA0_CONTROL  #if (defined (ALLOW_THETA0_CONTROL) || defined (ALLOW_SST0_CONTROL))
502        _EXCH_XYZ_R8( theta, mythid )        _EXCH_XYZ_R8( theta, mythid )
503  #endif  #endif
504  #ifdef ALLOW_SALT0_CONTROL  #if (defined (ALLOW_SALT0_CONTROL) || defined (ALLOW_SSS0_CONTROL))
505        _EXCH_XYZ_R8(  salt, mythid )        _EXCH_XYZ_R8(  salt, mythid )
506  #endif  #endif
507  #ifdef ALLOW_TR10_CONTROL  #ifdef ALLOW_TR10_CONTROL
# Line 331  c--   Update the tile edges. Line 525  c--   Update the tile edges.
525        _EXCH_XY_R8( bottomdragfld, mythid )        _EXCH_XY_R8( bottomdragfld, mythid )
526  #endif  #endif
527    
528    #if (defined (ALLOW_EDTAUX_CONTROL) && defined (ALLOW_EDTAUY_CONTROL))
529           CALL EXCH_UV_XYZ_RS(Eddytaux,Eddytauy,.TRUE.,myThid)
530    #elif (defined (ALLOW_EDTAUX_CONTROL) || defined (ALLOW_EDTAUY_CONTROL))
531           STOP 'ctrl_map_forcing: need BOTH ALLOW_EDTAU[X,Y]_CONTROL'
532    #endif
533    
534    #ifdef ALLOW_UVEL0_CONTROL
535          _EXCH_XYZ_R8( uVel, mythid)
536    #endif
537    
538    #ifdef ALLOW_VVEL0_CONTROL
539          _EXCH_XYZ_R8( vVel, mythid)
540    #endif
541    
542    #ifdef ALLOW_ETAN0_CONTROL
543          _EXCH_XY_R8( etaN, mythid )
544    #endif
545    
546    #ifdef ALLOW_RELAXSST_CONTROL
547          _EXCH_XY_R4( lambdaThetaClimRelax, mythid )
548    #endif
549    
550    #ifdef ALLOW_RELAXSSS_CONTROL
551          _EXCH_XY_R4( lambdaThetaClimRelax, mythid )
552    #endif
553    
554        return        return
555        end        end

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.18

  ViewVC Help
Powered by ViewVC 1.1.22