C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco_cost_init_fixed.F,v 1.11 2007/10/09 00:02:51 jmc Exp $
C $Name: $
#include "PACKAGES_CONFIG.h"
#include "AD_CONFIG.h"
#include "COST_CPPOPTIONS.h"
subroutine ecco_cost_init_fixed( mythid ) 1,20
c ==================================================================
c SUBROUTINE ecco_cost_init_fixed
c ==================================================================
c
c o Set contributions to the cost function and the cost function
c itself to zero. The cost function and the individual contribu-
c tions are defined in the header file "ecco_cost.h".
c
c started: Christian Eckert eckert@mit.edu 30-Jun-1999
c
c changed: Christian Eckert eckert@mit.edu 25-Feb-2000
c
c - Restructured the code in order to create a package
c for the MITgcmUV.
c
c changed: Ralf Giering 18-Jan-2001
c
c - move namelist reading to cost_readparms.F
c
c ==================================================================
c SUBROUTINE ecco_cost_init_fixed
c ==================================================================
implicit none
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#include "GRID.h"
#include "PARAMS.h"
#ifdef ALLOW_CAL
#include "cal.h"
#endif
#include "ecco_cost.h"
c == routine arguments ==
integer mythid
c == local variables ==
integer tempDate1(4)
integer tempDate2(4)
integer gwunit
integer ilo,ihi
integer irec
logical exst
_RL dummy
_RL missingObsFlag
PARAMETER ( missingObsFlag = 1. _d 23 )
c == external functions ==
integer cal_IntYears
external cal_IntYears
integer cal_IntMonths
external cal_IntMonths
integer cal_IntDays
external cal_IntDays
integer ifnblnk
external ifnblnk
integer ilnblnk
external ilnblnk
c == end of interface ==
#ifdef ALLOW_CAL
c-- The number of monthly and daily averages generated by the
c-- current model integration.
nyearsrec = cal_IntYears
( mythid )
nmonsrec = cal_IntMonths
( mythid )
ndaysrec = cal_IntDays
( mythid )
_BEGIN_MASTER( myThid )
c-- Get the complete dates of the ...
c-- ... TMI data.
call cal_FullDate
( tmistartdate1, tmistartdate2,
& tmistartdate, mythid )
c-- ... SST data.
call cal_FullDate
( sststartdate1, sststartdate2,
& sststartdate, mythid )
c-- ... SSS data.
call cal_FullDate
( sssstartdate1, sssstartdate2,
& sssstartdate, mythid )
c-- ... BP data.
call cal_FullDate
( bpstartdate1, bpstartdate2,
& bpstartdate, mythid )
c-- ... T/P data.
call cal_FullDate
( topexstartdate1, topexstartdate2,
& topexstartdate, mythid )
c-- ... ERS data.
call cal_FullDate
( ersstartdate1, ersstartdate2,
& ersstartdate, mythid )
c-- ... GFO data.
call cal_FullDate
( gfostartdate1, gfostartdate2,
& gfostartdate, mythid )
c-- ... SCAT data.
call cal_FullDate
( scatstartdate1, scatstartdate2,
& scatxstartdate, mythid )
call cal_FullDate
( scatstartdate1, scatstartdate2,
& scatystartdate, mythid )
c-- ... ARGO data.
call cal_FullDate
( argotstartdate1, argotstartdate2,
& argotstartdate, mythid )
call cal_FullDate
( argosstartdate1, argotstartdate2,
& argosstartdate, mythid )
_END_MASTER( mythid )
#endif /* ALLOW_CAL */
c-- Get the weights that are to be used for the individual cost
c-- function contributions.
call ecco_cost_weights
( mythid )
c-- Initialise adjoint of monthly mean files calculated
c-- in cost_averagesfields (and their ad...).
cph(
cph The following init. shoud not be applied if in the middle
cph of a divided adjoint run
cph)
#ifndef ALLOW_TANGENTLINEAR_RUN
cph!!! and I think it needs to be seen by TAF
cph!!! for repeated TLM runs
cph!!!
inquire( file='costfinal', exist=exst )
if ( .NOT. exst) then
call ecco_cost_init_barfiles
( mythid )
endif
#endif
#ifdef ALLOW_TRANSPORT_COST_CONTRIBUTION
_BEGIN_MASTER(myThid)
ilo = ifnblnk
(costTranspDataFile)
ihi = ilnblnk
(costTranspDataFile)
CALL OPEN_COPY_DATA_FILE
(
I costTranspDataFile(ilo:ihi),
I 'ECCO_COST_INIT_FIXED',
O gwunit,
I myThid )
do irec = 1, ndaysrec
c-- read daily transport time series
c-- 1st: transport in m/s
c-- 2nd: date in YYYYMMDD
c-- 3rd: uncertainty in m/s
read(gwunit,*) transpobs(irec), dummy, wtransp(irec)
c-- convert std.dev. to weight
if ( wtransp(irec) .NE. 0. )
& wtransp(irec) =1./(wtransp(irec)*wtransp(irec))
c-- set weight to zero for missing values
if ( transpobs(irec) .EQ. missingObsFlag )
& wtransp(irec) = 0.
enddo
_END_MASTER(myThid)
_BARRIER
#endif /* ALLOW_TRANSPORT_COST_CONTRIBUTION */
c-- Summarize the cost function's setup.
_BEGIN_MASTER( mythid )
call ecco_cost_summary
( mythid )
_END_MASTER( mythid )
_BARRIER
end