#include "COST_CPPOPTIONS.h"
subroutine ECCO_COST_INIT_BARFILES( mythid )
c ==================================================================
c SUBROUTINE ecco_cost_init_barfiles
c ==================================================================
c
c-- Initialise adjoint of monthly mean files calculated
c-- in cost_averagesfields (and their ad...).
c
c started: heimbach@mit.edu 20-Mar-2002
c
c ==================================================================
c SUBROUTINE ecco_cost_cost_init_barfiles
c ==================================================================
implicit none
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#include "optim.h"
#include "ecco_cost.h"
#include "ctrl.h"
#include "ctrl_dummy.h"
c == routine arguments ==
integer mythid
#ifdef ALLOW_COST
c == local variables ==
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer ilps, ils, ilt, irec
character*(128) fnamepsbar
character*(128) fnametbar
character*(128) fnamesbar
character*(128) fnameubar
character*(128) fnamevbar
character*(128) fnamewbar
character*(128) fnametauxbar
character*(128) fnametauybar
character*(128) fnamehfluxbar
character*(128) fnamesfluxbar
character*(128) adfnamepsbar
character*(128) adfnametbar
character*(128) adfnamesbar
character*(128) adfnameubar
character*(128) adfnamevbar
character*(128) adfnamewbar
character*(128) adfnametauxbar
character*(128) adfnametauybar
character*(128) adfnamehfluxbar
character*(128) adfnamesfluxbar
c == external functions ==
integer ilnblnk
external
c == end of interface ==
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
do bj = jtlo,jthi
do bi = itlo,ithi
do j = jmin,jmax
do i = imin,imax
tmpfld2d(i,j,bi,bj) = 0. _d 0
enddo
enddo
enddo
enddo
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1,nr
do j = jmin,jmax
do i = imin,imax
tmpfld3d(i,j,k,bi,bj) = 0. _d 0
enddo
enddo
enddo
enddo
enddo
cgg( Also initialize the tmp fields used in ctrl_getobcs and cost_obcs.
#ifdef OBCS_CONTROL
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1,nr
do j = jmin,jmax
tmpfldyz (j,k,bi,bj) = 0. _d 0
tmpfldyz2(j,k,bi,bj) = 0. _d 0
enddo
enddo
enddo
enddo
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1,nr
do i = imin,imax
tmpfldxz (i,k,bi,bj) = 0. _d 0
tmpfldxz2(i,k,bi,bj) = 0. _d 0
enddo
enddo
enddo
enddo
#endif
cgg)
#ifdef ALLOW_SSH_COST_CONTRIBUTION
c-- Save psbar on file.
ilps=ilnblnk( psbarfile )
write(fnamepsbar,'(2a,i10.10)')
& psbarfile(1:ilps), '.', optimcycle
write(adfnamepsbar,'(3a,i10.10)')
& yadprefix, psbarfile(1:ilps), '.', optimcycle
do irec = 1, ndaysrec
c call active_write_xy( fnamepsbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_psbar_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnamepsbar, tmpfld2d, irec,
& optimcycle,mythid, xx_psbar_mean_dummy )
#endif
enddo
#endif /* ALLOW_SSH_COST_CONTRIBUTION */
#if (defined (ALLOW_THETA_COST_CONTRIBUTION)
defined (ALLOW_CTDT_COST_CONTRIBUTION)
defined (ALLOW_CTDTCLIM_COST_CONTRIBUTION)
defined (ALLOW_XBT_COST_CONTRIBUTION)
defined (ALLOW_DRIFT_COST_CONTRIBUTION)
defined (ALLOW_OBCS_COST_CONTRIBUTION))
c-- Save tbar on file.
ilt=ilnblnk( tbarfile )
write(fnametbar,'(2a,i10.10)')
& tbarfile(1:ilt), '.', optimcycle
write(adfnametbar,'(3a,i10.10)')
& yadprefix, tbarfile(1:ilt), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xyz( fnametbar, tmpfld3d, irec,
c & optimcycle, mythid, xx_tbar_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XYZ( adfnametbar, tmpfld3d, irec,
& optimcycle, mythid, xx_tbar_mean_dummy )
#endif
enddo
#else
#ifdef ALLOW_SST_COST_CONTRIBUTION
c-- Save tbar on file.
ilt=ilnblnk( tbarfile )
write(fnametbar,'(2a,i10.10)')
& tbarfile(1:ilt), '.', optimcycle
write(adfnametbar,'(3a,i10.10)')
& yadprefix, tbarfile(1:ilt), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xy( fnametbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_tbar_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnametbar, tmpfld2d, irec,
& optimcycle, mythid, xx_tbar_mean_dummy )
#endif
enddo
#endif
#endif
#if (defined (ALLOW_SALT_COST_CONTRIBUTION)
defined (ALLOW_CTDS_COST_CONTRIBUTION)
defined (ALLOW_CTDSCLIM_COST_CONTRIBUTION)
defined (ALLOW_DRIFT_COST_CONTRIBUTION)
defined (ALLOW_OBCS_COST_CONTRIBUTION))
c-- Save sbar.
ils=ilnblnk( sbarfile )
write(fnamesbar,'(2a,i10.10)')
& sbarfile(1:ils), '.', optimcycle
write(adfnamesbar,'(3a,i10.10)')
& yadprefix, sbarfile(1:ils), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xyz( fnamesbar, tmpfld3d, irec,
c & optimcycle, mythid, xx_sbar_mean_dummy)
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XYZ( adfnamesbar, tmpfld3d, irec,
& optimcycle, mythid, xx_sbar_mean_dummy)
#endif
enddo
#else
#ifdef ALLOW_SST_COST_CONTRIBUTION
c-- Save sbar.
ils=ilnblnk( sbarfile )
write(fnamesbar,'(2a,i10.10)')
& sbarfile(1:ils), '.', optimcycle
write(adfnamesbar,'(3a,i10.10)')
& yadprefix, sbarfile(1:ils), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xy( fnamesbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_sbar_mean_dummy)
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnamesbar, tmpfld2d, irec,
& optimcycle, mythid, xx_sbar_mean_dummy)
#endif
enddo
#endif
#endif
#if (defined (ALLOW_DRIFTER_COST_CONTRIBUTION)
defined (ALLOW_OBCS_COST_CONTRIBUTION))
cph There's a mismatch between the cost_drifer and the
cph cost_obcs usage of ubar, vbar.
cph cost_obcs refers to monthly means, cost_drifer to total mean.
cph Needs to be updated for cost_drifer.
c-- Save ubar and vbar.
ils=ilnblnk( ubarfile )
write(fnameubar,'(2a,i10.10)')
& ubarfile(1:ils), '.', optimcycle
write(fnamevbar,'(2a,i10.10)')
& vbarfile(1:ils), '.', optimcycle
write(adfnameubar,'(3a,i10.10)')
& yadprefix, ubarfile(1:ils), '.', optimcycle
write(adfnamevbar,'(3a,i10.10)')
& yadprefix, vbarfile(1:ils), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xyz( fnameubar, tmpfld3d, irec,
c & optimcycle, mythid, xx_ubar_mean_dummy)
c call active_write_xyz( fnamevbar, tmpfld3d, irec,
c & optimcycle, mythid, xx_vbar_mean_dummy)
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XYZ( adfnameubar, tmpfld3d, irec,
& optimcycle, mythid, xx_ubar_mean_dummy)
call ACTIVE_WRITE_XYZ( adfnamevbar, tmpfld3d, irec,
& optimcycle, mythid, xx_vbar_mean_dummy)
#endif
enddo
#endif
#ifdef ALLOW_DRIFTW_COST_CONTRIBUTION
c-- Save wbar
ils=ilnblnk( wbarfile )
write(fnamewbar,'(2a,i10.10)')
& wbarfile(1:ils), '.', optimcycle
write(adfnamewbar,'(3a,i10.10)')
& yadprefix, wbarfile(1:ils), '.', optimcycle
do irec = 1,nmonsrec
c call active_write_xyz( fnamewbar, tmpfld3d, irec,
c & optimcycle, mythid, xx_wbar_mean_dummy)
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XYZ( adfnamewbar, tmpfld3d, irec,
& optimcycle, mythid, xx_wbar_mean_dummy)
#endif
enddo
#endif
#ifdef ALLOW_SCAT_COST_CONTRIBUTION
c-- Save tauxbar, tauybar on file.
ilps=ilnblnk( tauxbarfile )
write(fnametauxbar,'(2a,i10.10)')
& tauxbarfile(1:ilps), '.', optimcycle
write(adfnametauxbar,'(3a,i10.10)')
& yadprefix, tauxbarfile(1:ilps), '.', optimcycle
ilps=ilnblnk( tauybarfile )
write(fnametauybar,'(2a,i10.10)')
& tauybarfile(1:ilps), '.', optimcycle
write(adfnametauybar,'(3a,i10.10)')
& yadprefix, tauybarfile(1:ilps), '.', optimcycle
do irec = 1, nmonsrec
c call active_write_xy( fnametauxbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_taux_mean_dummy )
c call active_write_xy( fnametauybar, tmpfld2d, irec,
c & optimcycle, mythid, xx_tauy_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnametauxbar, tmpfld2d, irec,
& optimcycle,mythid, xx_taux_mean_dummy )
call ACTIVE_WRITE_XY( adfnametauybar, tmpfld2d, irec,
& optimcycle,mythid, xx_tauy_mean_dummy )
#endif
enddo
#endif
#ifdef ALLOW_MEAN_HFLUX_COST_CONTRIBUTION
c-- Save hfluxbar on file.
ilps=ilnblnk( hfluxbarfile )
write(fnamehfluxbar,'(2a,i10.10)')
& hfluxbarfile(1:ilps), '.', optimcycle
write(adfnamehfluxbar,'(3a,i10.10)')
& yadprefix, hfluxbarfile(1:ilps), '.', optimcycle
do irec = 1, 1
c call active_write_xy( fnamehfluxbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_hflux_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnamehfluxbar, tmpfld2d, irec,
& optimcycle,mythid, xx_hflux_mean_dummy )
#endif
enddo
#endif
#ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION
c-- Save sfluxbar on file.
ilps=ilnblnk( sfluxbarfile )
write(fnamesfluxbar,'(2a,i10.10)')
& sfluxbarfile(1:ilps), '.', optimcycle
write(adfnamesfluxbar,'(3a,i10.10)')
& yadprefix, sfluxbarfile(1:ilps), '.', optimcycle
do irec = 1, 1
c call active_write_xy( fnamesfluxbar, tmpfld2d, irec,
c & optimcycle, mythid, xx_sflux_mean_dummy )
#ifndef ALLOW_TANGENTLINEAR_RUN
call ACTIVE_WRITE_XY( adfnamesfluxbar, tmpfld2d, irec,
& optimcycle,mythid, xx_sflux_mean_dummy )
#endif
enddo
#endif
#endif /* ALLOW_COST */
return
end