C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost_init_barfiles.F,v 1.20 2010/08/28 18:35:16 gforget Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "AD_CONFIG.h" #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 "PARAMS.h" #include "optim.h" #include "ecco_cost.h" #include "ctrl.h" #include "ctrl_dummy.h" #ifdef ALLOW_SEAICE # include "SEAICE_COST.h" #endif 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) fnamesstbar character*(128) fnameubar character*(128) fnamevbar character*(128) fnamewbar character*(128) fnametauxbar character*(128) fnametauybar character*(128) fnamehfluxmeanbar character*(128) fnamesfluxmeanbar character*(128) fnamebpbar character*(128) fnamesmrareabar character*(128) fnamesmrsstbar character*(128) fnamesmrsssbar #ifdef ALLOW_GENCOST_CONTRIBUTION character*(128) fname_gencostbar(NGENCOST) #endif /* ALLOW_GENCOST_CONTRIBUTION */ c character*(128) adfnamepsbar character*(128) adfnametbar character*(128) adfnamesbar character*(128) adfnamesstbar character*(128) adfnameubar character*(128) adfnamevbar character*(128) adfnamewbar character*(128) adfnametauxbar character*(128) adfnametauybar character*(128) adfnamehfluxmeanbar character*(128) adfnamesfluxmeanbar character*(128) adfnamebpbar character*(128) adfnamesmrareabar character*(128) adfnamesmrsstbar character*(128) adfnamesmrsssbar #ifdef ALLOW_GENCOST_CONTRIBUTION character*(128) adfname_gencostbar(NGENCOST) #endif /* ALLOW_GENCOST_CONTRIBUTION */ 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 #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamepsbar, tmpfld2d, irec, & optimcycle,mythid, xx_psbar_mean_dummy ) #endif enddo #endif /* ALLOW_SSH_COST_CONTRIBUTION */ #ifdef ALLOW_BP_COST_CONTRIBUTION c-- Save bpbar on file. ilps=ilnblnk( bpbarfile ) write(fnamebpbar,'(2a,i10.10)') & bpbarfile(1:ilps), '.', optimcycle write(adfnamebpbar,'(3a,i10.10)') & yadprefix, bpbarfile(1:ilps), '.', optimcycle do irec = 1, nmonsrec #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamebpbar, tmpfld2d, irec, & optimcycle,mythid, xx_bpbar_mean_dummy ) #endif enddo #endif #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 #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 #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnametbar, tmpfld2d, irec, & optimcycle, mythid, xx_tbar_mean_dummy ) #endif enddo #endif #endif #ifdef ALLOW_DAILYSST_COST_CONTRIBUTION cph#ifdef ALLOW_SEAICE_COST_AREASST c-- Save tbar on file. ilt=ilnblnk( sstbarfile ) write(fnamesstbar,'(2a,i10.10)') & sstbarfile(1:ilt), '.', optimcycle write(adfnamesstbar,'(3a,i10.10)') & yadprefix, sstbarfile(1:ilt), '.', optimcycle do irec = 1,ndaysrec #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamesstbar, tmpfld2d, irec, & optimcycle, mythid, xx_sstbar_mean_dummy ) #endif enddo #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 #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 #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 is 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 #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 #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XYZ( adfnamewbar, tmpfld3d, irec, & optimcycle, mythid, xx_wbar_mean_dummy) #endif enddo #endif #if (defined (ALLOW_SCAT_COST_CONTRIBUTION) defined (ALLOW_DAILYSCAT_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 #ifdef ALLOW_SCAT_COST_CONTRIBUTION do irec = 1, nmonsrec #else do irec = 1, ndaysrec #endif #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 hfluxmeanbar on file. ilps=ilnblnk( hfluxmeanbarfile ) write(fnamehfluxmeanbar,'(2a,i10.10)') & hfluxmeanbarfile(1:ilps), '.', optimcycle write(adfnamehfluxmeanbar,'(3a,i10.10)') & yadprefix, hfluxmeanbarfile(1:ilps), '.', optimcycle do irec = 1, nyearsrec #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamehfluxmeanbar, tmpfld2d, irec, & optimcycle,mythid, xx_hflux_mean_dummy ) #endif enddo #endif #ifdef ALLOW_MEAN_SFLUX_COST_CONTRIBUTION c-- Save sfluxmeanbar on file. ilps=ilnblnk( sfluxmeanbarfile ) write(fnamesfluxmeanbar,'(2a,i10.10)') & sfluxmeanbarfile(1:ilps), '.', optimcycle write(adfnamesfluxmeanbar,'(3a,i10.10)') & yadprefix, sfluxmeanbarfile(1:ilps), '.', optimcycle do irec = 1, nyearsrec #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamesfluxmeanbar, tmpfld2d, irec, & optimcycle,mythid, xx_sflux_mean_dummy ) #endif enddo #endif #ifdef ALLOW_SEAICE if (useSEAICE) then #ifdef ALLOW_SEAICE_COST_SMR_AREA c initialize smr area bar ilps=ilnblnk( smrareabarfile ) write(fnamesmrareabar,'(2a,i10.10)') & smrareabarfile(1:ilps), '.', optimcycle write(adfnamesmrareabar,'(3a,i10.10)') & yadprefix, smrareabarfile(1:ilps), '.', optimcycle c initialize smr sst bar ilps=ilnblnk( smrsstbarfile ) write(fnamesmrsstbar,'(2a,i10.10)') & smrsstbarfile(1:ilps), '.', optimcycle write(adfnamesmrsstbar,'(3a,i10.10)') & yadprefix, smrsstbarfile(1:ilps), '.', optimcycle c initialize smr sss bar ilps=ilnblnk( smrsssbarfile ) write(fnamesmrsssbar,'(2a,i10.10)') & smrsssbarfile(1:ilps), '.', optimcycle write(adfnamesmrsssbar,'(3a,i10.10)') & yadprefix, smrsssbarfile(1:ilps), '.', optimcycle do irec = 1, ndaysrec #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfnamesmrareabar, tmpfld2d, irec, & optimcycle,mythid, xx_smrareabar_mean_dummy ) call ACTIVE_WRITE_XY( adfnamesmrsstbar, tmpfld3d, irec, & optimcycle,mythid, xx_smrsstbar_mean_dummy ) call ACTIVE_WRITE_XY( adfnamesmrsssbar, tmpfld3d, irec, & optimcycle,mythid, xx_smrsssbar_mean_dummy ) #endif enddo #endif /* ALLOW_SEAICE_COST_SMR_AREA */ endif #endif /* ALLOW_SEAICE */ #ifdef ALLOW_GENCOST_CONTRIBUTION c-- Save gencost_barfile on file. do k=1,NGENCOST if ( gencost_barfile(k) .ne. ' ' ) then ilt=ilnblnk( gencost_barfile(k) ) write(fname_gencostbar,'(2a,i10.10)') & gencost_barfile(k)(1:ilt), '.', optimcycle write(adfname_gencostbar,'(3a,i10.10)') & yadprefix, gencost_barfile(k)(1:ilt), '.', optimcycle do irec = 1,gencost_nrec(k) #ifndef ALLOW_TANGENTLINEAR_RUN call ACTIVE_WRITE_XY( adfname_gencostbar, tmpfld2d, irec, & optimcycle, mythid, xx_genbar_dummy(k) ) #endif enddo endif enddo #endif /* ALLOW_GENCOST_CONTRIBUTION */ #endif /* ALLOW_COST */ return end