C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_summary.F,v 1.17 2015/10/29 17:03:38 gforget Exp $
C $Name: $
#include "CTRL_OPTIONS.h"
subroutine CTRL_SUMMARY( mythid )
c ==================================================================
c SUBROUTINE ctrl_Summary
c ==================================================================
c
c o Summarize the control vector settings.
c
c ==================================================================
c SUBROUTINE ctrl_Summary
c ==================================================================
implicit none
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#ifdef ALLOW_CAL
# include "cal.h"
#endif
#ifdef ALLOW_AUTODIFF
# include "AUTODIFF_PARAMS.h"
#endif
#ifdef ALLOW_CTRL
# include "ctrl.h"
# include "CTRL_SIZE.h"
# if (defined (ALLOW_GENARR2D_CONTROL) defined (ALLOW_GENARR3D_CONTROL) defined (ALLOW_GENTIM2D_CONTROL))
# include "CTRL_GENARR.h"
# endif
#endif
c == routine arguments ==
integer mythid
c == local variables ==
integer bi,bj
integer i,k
integer il
integer timeint(4)
integer nwetcenter
integer nwetsouth
integer nwetwest
character*(max_len_mbuf) msgbuf
#if (defined (ALLOW_GENARR2D_CONTROL) defined (ALLOW_GENARR3D_CONTROL) defined (ALLOW_GENTIM2D_CONTROL))
INTEGER iarr, jarr
#endif
c == external ==
integer ilnblnk
external
c == end of interface ==
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// ======================================================='
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// control vector configuration >>> START <<<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// ======================================================='
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Total number of ocean points per tile:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' --------------------------------------'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i8)') ' snx*sny*nr = ',snx*sny*nr
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Number of ocean points per tile:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' --------------------------------'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
do bj = 1,nsy
do bi = 1,nsx
nwetcenter = 0
nwetsouth = 0
nwetwest = 0
do k = 1,nr
nwetcenter = nwetcenter + nwetctile(bi,bj,k)
nwetsouth = nwetsouth + nwetstile(bi,bj,k)
nwetwest = nwetwest + nwetwtile(bi,bj,k)
enddo
write(msgbuf,'(a,i5.4,i5.4,i7.6,i7.6,i7.6)')
& ' bi,bj,#(c/s/w):',bi,bj,nwetcenter,
& nwetsouth,
& nwetwest
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
enddo
enddo
#ifdef ECCO_CTRL_DEPRECATED
#ifdef ALLOW_THETA0_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Initial state temperature contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control variable index: ',ncvarindex(1)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#ifdef ALLOW_SALT0_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Initial state salinity contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control variable index: ',ncvarindex(2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#ifdef ALLOW_HFLUX_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Heat flux contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control variable index: ',ncvarindex(3)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ilnblnk(xx_hflux_file)
call CAL_TIMEINTERVAL( xx_hfluxperiod, 'secs', timeint, mythid )
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6,1x,a,a)')
&' Heat flux contribution starts at: ',
& (xx_hfluxstartdate(i), i=1,2),
& dayofweek(xx_hfluxstartdate(4)),'.'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6)')
&' Heat flux contribution period is: ',
& (timeint(i), i=1,2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Heat flux contribution is read from file: '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,a,a)')
&' >> ',xx_hflux_file(1:il),' <<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#ifdef ALLOW_SFLUX_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Salt flux contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control varibale index: ',ncvarindex(4)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ilnblnk(xx_sflux_file)
call CAL_TIMEINTERVAL( xx_sfluxperiod, 'secs', timeint, mythid )
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6,1x,a,a)')
&' Salt flux contribution starts at: ',
& (xx_sfluxstartdate(i), i=1,2),
& dayofweek(xx_sfluxstartdate(4)),'.'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6)')
&' Salt flux contribution period is: ',
& (timeint(i), i=1,2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Salt flux contribution is read from file: '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,a,a)')
&' >> ',xx_sflux_file(1:il),' <<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#ifdef ALLOW_USTRESS_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Zonal wind stress contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control variable index: ',ncvarindex(5)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ilnblnk(xx_tauu_file)
call CAL_TIMEINTERVAL( xx_tauuperiod, 'secs', timeint, mythid )
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6,1x,a,a)')
&' Zonal wind stress contribution starts at: ',
& (xx_tauustartdate(i), i=1,2),
& dayofweek(xx_tauustartdate(4)),'.'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6)')
&' Zonal wind stress contribution period is: ',
& (timeint(i), i=1,2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Zonal wind stress contribution is read from file: '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,a,a)')
&' >> ',xx_tauu_file(1:il),' <<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#ifdef ALLOW_VSTRESS_CONTROL
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Meridional wind stress contribution:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i5.4)')
&' Control variable index: ',ncvarindex(6)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ilnblnk(xx_tauv_file)
call CAL_TIMEINTERVAL( xx_tauvperiod, 'secs', timeint, mythid )
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6,1x,a,a)')
&' Merid. wind stress contribution starts at: ',
& (xx_hfluxstartdate(i), i=1,2),
& dayofweek(xx_hfluxstartdate(4)),'.'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,i9.8,i7.6)')
&' Merid. wind stress contribution period is: ',
& (timeint(i), i=1,2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Merid. wind stress contribution is read from file: '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,a,a)')
&' >> ',xx_tauv_file(1:il),' <<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
#endif /* ECCO_CTRL_DEPRECATED */
#ifdef ALLOW_SMOOTH
#ifdef ECCO_CTRL_DEPRECATED
write(msgbuf,'(a)') ' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Settings of diffusion based correlation operators:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' --------------------------------------------------'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,L5,a)')
&' ctrlSmoothCorrel3D = ',ctrlSmoothCorrel3D,
&' /* use 3D controls correlation */'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,L5,a)')
&' ctrlSmoothCorrel2D = ',ctrlSmoothCorrel2D,
&' /* use 2D controls correlation */'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#ifdef ALLOW_AUTODIFF
if (ctrlSmoothCorrel2D.AND..NOT.useSmoothCorrel2DinAdMode) then
c allow for switching off correl2d in adjoint
write(msgbuf,'(a,L5,a)')
&' useSmoothCorrel2DinAdMode = ',useSmoothCorrel2DinAdMode,
&' /* use in adjoint mode */'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
#endif
#endif /* ECCO_CTRL_DEPRECATED */
#endif /* ALLOW_SMOOTH */
#if (defined (ALLOW_GENARR2D_CONTROL) defined (ALLOW_GENARR3D_CONTROL) defined (ALLOW_GENTIM2D_CONTROL))
write(msgbuf,'(a)') ' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' Settings of generic controls:'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' -----------------------------'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)') ' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a,L5,a)')
&' ctrlUseGen = ',ctrlUseGen,
&' /* use generic controls */'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#ifdef ALLOW_GENARR2D_CONTROL
do iarr = 1, maxCtrlArr2D
if (xx_genarr2d_weight(iarr).NE.' ') then
write(msgbuf,'(a,i2,a)')
&' -> 2D control, genarr2d no. ',iarr,
&' is in use'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_genarr2d_file(iarr) )
write(msgbuf,'(a,a)')
&' file = ',xx_genarr2d_file(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_genarr2d_weight(iarr) )
write(msgbuf,'(a,a)')
&' weight = ',xx_genarr2d_weight(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
do jarr=1,maxCtrlProc
if (xx_genarr2d_preproc(jarr,iarr).NE.' ') then
il = ilnblnk(xx_genarr2d_preproc(jarr,iarr))
write(msgbuf,'(a,a)') ' preprocess = ',
& xx_genarr2d_preproc(jarr,iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
enddo
endif
enddo
#endif
#ifdef ALLOW_GENARR3D_CONTROL
do iarr = 1, maxCtrlArr3D
if (xx_genarr3d_weight(iarr).NE.' ') then
write(msgbuf,'(a,i2,a)')
&' -> 3d control, genarr3d no. ',iarr,
&' is in use'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_genarr3d_file(iarr) )
write(msgbuf,'(a,a)')
&' file = ',xx_genarr3d_file(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_genarr3d_weight(iarr) )
write(msgbuf,'(a,a)')
&' weight = ',xx_genarr3d_weight(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
do jarr=1,maxCtrlProc
if (xx_genarr3d_preproc(jarr,iarr).NE.' ') then
il = ilnblnk(xx_genarr3d_preproc(jarr,iarr))
write(msgbuf,'(a,a)') ' preprocess = ',
& xx_genarr3d_preproc(jarr,iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
enddo
endif
enddo
#endif
#ifdef ALLOW_GENTIM2D_CONTROL
do iarr = 1, maxCtrlTim2D
if (xx_gentim2d_weight(iarr).NE.' ') then
write(msgbuf,'(a,i2,a)')
&' -> time variable 2D control, gentim2d no. ',iarr,
&' is in use'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_gentim2d_file(iarr) )
write(msgbuf,'(a,a)')
&' file = ',xx_gentim2d_file(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
il = ILNBLNK( xx_gentim2d_weight(iarr) )
write(msgbuf,'(a,a)')
&' weight = ',xx_gentim2d_weight(iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#ifdef ALLOW_CAL
call CAL_TIMEINTERVAL( xx_gentim2d_period(iarr),
& 'secs', timeint, mythid )
write(msgbuf,'(a,i9.8,i7.6)')
&' period = ',(timeint(i), i=1,2)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
#endif
do jarr=1,maxCtrlProc
if (xx_gentim2d_preproc(jarr,iarr).NE.' ') then
il = ilnblnk(xx_gentim2d_preproc(jarr,iarr))
write(msgbuf,'(a,a)') ' preprocess = ',
& xx_gentim2d_preproc(jarr,iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
C
if (xx_gentim2d_preproc_c(jarr,iarr).NE.' ') then
il = ilnblnk(xx_gentim2d_preproc_c(jarr,iarr))
write(msgbuf,'(a,a)') ' param. (text)= ',
& xx_gentim2d_preproc_c(jarr,iarr)(1:il)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
C
if (xx_gentim2d_preproc_i(jarr,iarr).NE.0) then
write(msgbuf,'(a,i6)') ' param. (int.)= ',
& xx_gentim2d_preproc_i(jarr,iarr)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
C
if (xx_gentim2d_preproc_r(jarr,iarr).NE.0. _d 0) then
write(msgbuf,'(a,e10.3)') ' param. (real)= ',
& xx_gentim2d_preproc_r(jarr,iarr)
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
endif
endif
enddo
endif
enddo
#endif
#endif
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// ======================================================='
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// control vector configuration >>> END <<<'
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&'// ======================================================='
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
&' '
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
return
end