C $Header: /u/gcmpack/MITgcm/pkg/ecco/ecco.h,v 1.25 2017/04/03 23:16:38 ou.wang Exp $ C $Name: $ c ================================================================== c HEADER ECCO c ================================================================== c c o Header for the ECCO project. c c started: Christian Eckert eckert@mit.edu 23-Feb-1999 c c changed: Christian Eckert eckert@mit.edu c c c ================================================================== c HEADER ECCO c ================================================================== c Version of the release and versions of used packages: c ===================================================== c c eccoVersion - ecco release version. c usesCalendarVersion - version of the calendar that has to c be used. c usesExternalForcingVersion - version of the external forcing that c has to be used. c usesAdjointSupportVersion - version of the adjoint support routines c that have to be used. c usesOptimizationVersion - version of the oof-line optimization c that has to be used. character*(5) eccoVersion character*(5) eccoUsesCalVersion character*(5) eccoUsesExfVersion character*(5) eccoUsesAdsuppVersion character*(5) eccoUsesOptimVersion parameter( eccoVersion = '0.1.0' ) parameter( eccoUsesCalVersion = '0.1.4' ) parameter( eccoUsesExfVersion = '0.1.1' ) parameter( eccoUsesAdsuppVersion = '0.1.0' ) parameter( eccoUsesOptimVersion = '2.1.0' ) c Experiment name: c ================ common /ecco_c/ & expId character*(10) expId c Integration information: c ======================== c c nyears - number of calendar years that are affected by the c current integration. common /ecco_i/ & nyears, nmonths, ndays, numsteps, & eccoiter, ecco_prevcall integer nyears integer nmonths integer ndays integer numsteps integer eccoiter integer ecco_prevcall c Averaging counters: c =================== c c sum1day - counter for the daily averaging c sum1mon - counter for the monthly averaging c dayrec - number of averaged surface pressure records. c monrec - number of averaged theta and salinity records. common /average_i/ & sum1day,sum1mon,sum1year, & dayrec,monrec,yearrec integer sum1day integer sum1mon integer sum1year integer dayrec integer monrec integer yearrec c Flags used in the model-data comparison: c ======================================== c c using_ers - flag that indicates the use of ERS data common /ecco_cost_data_flags/ & using_mdt, & using_tpj, & using_topex, & using_ers, & using_gfo, & using_cost_altim, & using_cost_bp, & using_cost_sst, & using_cost_scat, & using_cost_seaice & ,using_cost_transp logical using_mdt logical using_tpj logical using_topex logical using_ers logical using_gfo logical using_cost_altim logical using_cost_bp logical using_cost_sst logical using_cost_scat logical using_cost_seaice logical using_cost_transp c Record counters relevant for the cost function evaluation. c ========================================================== c c nyearsrec - number of yearly records that will be generated by c the current model integration. c nmonsrec - number of monthly records that will be generated by c the current model integration. c ndaysrec - number of daily records that will be generated by c the current model integration. common /ecco_i/ & nyearsrec, & nmonsrec, & ndaysrec integer nyearsrec integer nmonsrec integer ndaysrec common /ecco_r/ & m_eta,m_UE,m_VN, #ifdef ALLOW_PSBAR_STERIC & sterGloH, #endif & msktrVolW,msktrVolS, & trVol, trHeat, trSalt, & VOLsumGlob_0, VOLsumGlob, & RHOsumGlob_0, RHOsumGlob, & frame, cosphi, eccoVol_0 _RL VOLsumGlob_0, VOLsumGlob, RHOsumGlob_0, RHOsumGlob _RL frame (1-olx:snx+olx,1-oly:sny+oly ) _RL cosphi (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy) _RL m_eta(1-olx:snx+olx,1-oly:sny+oly, nsx,nsy) #ifdef ALLOW_PSBAR_STERIC _RL sterGloH #endif _RL m_UE (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL m_VN (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy) _RL msktrVolW (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) _RL msktrVolS (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy) _RL trVol(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL trHeat(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL trSalt(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) _RL eccoVol_0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) c file precision and field type common /prec_type_cost/ & cost_iprec, & cost_yftype integer cost_iprec character*(2) cost_yftype c Number of User Cost terms: c ============================= INTEGER NUSERCOST PARAMETER ( NUSERCOST=10 ) c Number of Generic Cost terms: c ============================= INTEGER NGENCOST PARAMETER ( NGENCOST=30 ) INTEGER NGENCOST3D #ifdef ALLOW_GENCOST3D PARAMETER ( NGENCOST3D=6 ) #else PARAMETER ( NGENCOST3D=0 ) #endif INTEGER NGENPPROC PARAMETER ( NGENPPROC=10 ) INTEGER N1DDATA PARAMETER ( N1DDATA=300 ) c empty pre/post-processing : c ========================= common /ecco_nogencost_c/ & no_preproc, & no_preproc_c, & no_posproc, & no_posproc_c, & clim_preproc, & anom_preproc character*(MAX_LEN_FNAM) no_preproc(NGENPPROC) character*(MAX_LEN_FNAM) no_preproc_c(NGENPPROC) character*(MAX_LEN_FNAM) no_posproc(NGENPPROC) character*(MAX_LEN_FNAM) no_posproc_c(NGENPPROC) character*(MAX_LEN_FNAM) clim_preproc(NGENPPROC) character*(MAX_LEN_FNAM) anom_preproc(NGENPPROC) common /ecco_nogencost_r/ & no_preproc_r, no_posproc_r _RL no_preproc_r(NGENPPROC) _RL no_posproc_r(NGENPPROC) common /ecco_nogencost_i/ & no_preproc_i, no_posproc_i, clim_preproc_i integer no_preproc_i(NGENPPROC) integer no_posproc_i(NGENPPROC) integer clim_preproc_i(NGENPPROC) c gencost common blocs: c ===================== #ifdef ALLOW_GENCOST_CONTRIBUTION c objf_gencost - gencost user defined contribution common /ecco_gencost_ctrl/ & gencost_dummy _RL gencost_dummy(NGENCOST) common /ecco_gencost_r_1/ & objf_gencost, num_gencost, mult_gencost, gencost_storefld, & gencost_barfld, gencost_modfld, gencost_weight, & gencost_mskCsurf, gencost_mskWsurf, gencost_mskSsurf, & gencost_mskVertical, #ifdef ALLOW_GENCOST3D & gencost_bar3d, gencost_mod3d, gencost_wei3d, & gencost_mskC, gencost_mskW, gencost_mskS, #endif & gencost_spmin, gencost_spmax, gencost_spzero, & gencost_period, gencost_preproc_r, gencost_posproc_r, & gencost_wei1d, gencost_1ddata _RL objf_gencost(nsx,nsy,NGENCOST) _RL num_gencost(nsx,nsy,NGENCOST) _RL mult_gencost(NGENCOST) _RL gencost_spmin(NGENCOST) _RL gencost_spmax(NGENCOST) _RL gencost_spzero(NGENCOST) _RL gencost_period(NGENCOST) _RL gencost_storefld(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_barfld(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_modfld(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_weight(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_mskCsurf(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_mskWsurf(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_mskSsurf(1-olx:snx+olx,1-oly:sny+oly, & nsx,nsy,NGENCOST) _RL gencost_mskVertical(nr,NGENCOST) #ifdef ALLOW_GENCOST3D _RL gencost_bar3d(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) _RL gencost_mod3d(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) _RL gencost_wei3d(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) _RL gencost_mskC(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) _RL gencost_mskW(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) _RL gencost_mskS(1-olx:snx+olx,1-oly:sny+oly, & nr,nsx,nsy,NGENCOST3D) #endif _RL gencost_preproc_r(NGENPPROC,NGENCOST) _RL gencost_posproc_r(NGENPPROC,NGENCOST) _RL gencost_wei1d(NGENCOST) _RL gencost_1ddata(N1DDATA, NGENCOST) common /ecco_gencost_i_1/ & gencost_nrec, gencost_nrecperiod, & gencost_flag, gencost_outputlevel, & gencost_startdate1, gencost_startdate2, & gencost_enddate1, gencost_enddate2, & gencost_startdate, gencost_enddate, & gencost_pointer3d, gencost_smooth2Ddiffnbt, & gencost_preproc_i, gencost_posproc_i, & gencost_msk_pointer3d, gencost_itracer integer gencost_nrec(NGENCOST) integer gencost_nrecperiod(NGENCOST) integer gencost_flag(NGENCOST) integer gencost_outputlevel(NGENCOST) integer gencost_startdate1(NGENCOST) integer gencost_startdate2(NGENCOST) integer gencost_startdate(4,NGENCOST) integer gencost_enddate1(NGENCOST) integer gencost_enddate2(NGENCOST) integer gencost_enddate(4,NGENCOST) integer gencost_pointer3d(NGENCOST) integer gencost_smooth2Ddiffnbt(NGENCOST) integer gencost_preproc_i(NGENPPROC,NGENCOST) integer gencost_posproc_i(NGENPPROC,NGENCOST) integer gencost_msk_pointer3d(NGENCOST) integer gencost_itracer(NGENCOST) common /ecco_gencost_l_1/ & gencost_timevaryweight, gencost_barskip, & using_gencost, gencost_is3d, gencost_msk_is3d, & gencost_is1d LOGICAL using_gencost(NGENCOST) LOGICAL gencost_is3d(NGENCOST) LOGICAL gencost_is1d(NGENCOST) LOGICAL gencost_msk_is3d(NGENCOST) LOGICAL gencost_timevaryweight(NGENCOST) LOGICAL gencost_barskip(NGENCOST) common /ecco_gencost_c/ & gencost_name, & gencost_scalefile, & gencost_errfile, & gencost_datafile, & gencost_barfile, & gencost_avgperiod, & gencost_preproc, & gencost_preproc_c, & gencost_posproc, & gencost_posproc_c, & gencost_mask character*(MAX_LEN_FNAM) gencost_name(NGENCOST) character*(MAX_LEN_FNAM) gencost_scalefile(NGENCOST) character*(MAX_LEN_FNAM) gencost_errfile(NGENCOST) character*(MAX_LEN_FNAM) gencost_datafile(NGENCOST) character*(MAX_LEN_FNAM) gencost_barfile(NGENCOST) character*(5) gencost_avgperiod(NGENCOST) character*(MAX_LEN_FNAM) gencost_preproc(NGENPPROC,NGENCOST) character*(MAX_LEN_FNAM) gencost_posproc_c(NGENPPROC,NGENCOST) character*(MAX_LEN_FNAM) gencost_posproc(NGENPPROC,NGENCOST) character*(MAX_LEN_FNAM) gencost_preproc_c(NGENPPROC,NGENCOST) character*(MAX_LEN_FNAM) gencost_mask(NGENCOST) #endif /* ALLOW_GENCOST_CONTRIBUTION */ c ================================================================== c END OF HEADER ECCO c ==================================================================