--- MITgcm/doc/tag-index 2013/07/01 16:55:57 1.1889 +++ MITgcm/doc/tag-index 2014/12/09 14:17:23 1.2103 @@ -1,12 +1,1240 @@ -$Header: /home/ubuntu/mnt/e9_copy/MITgcm/doc/tag-index,v 1.1889 2013/07/01 16:55:57 dimitri Exp $ +$Header: /home/ubuntu/mnt/e9_copy/MITgcm/doc/tag-index,v 1.2103 2014/12/09 14:17:23 mlosch Exp $ $Name: $ Notes on tags used in MITgcmUV ============================== +o verification/global_ocean.cs32x15/input.seaice + - add test for strong implicit coupling and restricted addtive Schwarz + methods for LSR + - update results/output.seaice.txt +o verification/tutorial_global_oce_biogeo: + - AD & OAD set-up: switch off ALLOW_OLD_VIRTUALFLUX (like in fwd set-up) + and set PTRACERS_EvPrRn(1,2) to zero (for DIC & ALK); + update output_adm,_oadm,_tlm.txt +o pkg/dic: + - change default to "#undef ALLOW_OLD_VIRTUALFLUX" in DIC_OPTIONS.h + - add a stop when ALLOW_OLD_VIRTUALFLUX is defined and PTRACERS_EvPrRn + for tracer 1 & 2 is set (to avoid double counting of dilution effect). +o verification/tutorial_global_oce_biogeo: + - AD & OAD set-up: do not set PTRACERS_EvPrRn for tracer 1 & 2 since + dilution is already added by pkg/dic ALLOW_OLD_VIRTUALFLUX ; + update output_adm,_oadm,_tlm.txt +o eesupp/src: + - add fill_cs_corner_rl.F (_RL-copy of fill_cs_corner_rs.F) + and call it in seaice_lsr when using nonzero SEAICE_OLx/y +o pkg/seaice: introduce strongly implicit coupling, intended for stabilizing + LSR (following Hutchings et al. 2004) + - introduce zetaZ as a global variable (requires adjustments in + seaice_evp.F and seaice_jfnk.F) and compute analoguously to etaZ + in seaice_calc_viscosities.F + - new flag SEAICEuseStrImpCpl (default off) + - add new terms zetaZ*du/dy and zetaZ*dv/dx on both sides of the + momentum equations + - JFNK-solver (preconditioner) adjusted to allow using this method + (where it does not have any positive effect) +o pkg/seaice + - add overlap for restrictive additive Schwartz method also to LSR, but + turn it off by default (because it only seems to work for non-cubed + sphere/llc topologies) +o pkg/autodiff + - add extra exchanges in addummy_in_steppging also for mnc output +o pkg/seaice: + - add extra exchanges before dumping adjoint fields in seaice_ad_dump.F + to avoid stripes in the adjoint output (similar to addummy_in_stepping.F) +o pkg/obcs: + - add option to specify domain-connected piece Id along OB though files + (for now, only used to diagnose PhiVel; default =1 -> global correction) + - modify obcs_diag_balance.F to process each connected-part separately; + exclude OB where Id = 0 but keep the full divergence there (-> constant + Psi along this portion of OB and all inflow derived from grad(Phi)) + - add example of OB-conect files in verification/so_box_biogeo/input. +o pkg/diagnostics: + - improve treatment of Open-Boundaries in Velocity-Potential calculation: + a) use non zero matrix element across OB and solve for Phi 1 grid point + outside OB (i.e, where tracer OBCS are applied). + b) global imbalance of inFlow/outFlow across OB: instead of modifying + velocity across OB, spread it uniformly along the OB in the RHS. + +checkpoint65g (2014/11/19) +o pkg/diagnostcis: + - add preconditioner off-diagonal factor (diagCG_pcOffDFac) as run-time param +o pkg/my82,pp81,kl10: + - fix ALLOW_3D_DIFFKR implementation (previously had no effect): use 3-D + field diffKr as background diffusivity to set minimum diffusivity value. +o pkg/seaice: + - add new parameter SEAICEuseEVPrev (for revisited EVP by + Bouillon et al 2013) + - add SEAICE_evpAlpha/Beta to namelist + - modify seaice_evp code to able to use SEAICEuseEVPrev. These changes + involve trivial re-ordering of divisions/multiplications that should not + have any effects, but ... they do change the results of lab_sea.hb87 so + that only 2 digits of agreement remain, in line with the general + instability/fragility of the evp-code. For now, I do not care and just + update the verification experiment +o pkg/ctrl : add generic pre-processing (xx_genarr2d_preproc etc) + - remove xx_genarr2d_numsmooth etc + - use xx_genarr2d_preproc etc instead + - carry out smooth_correl2D at initialization stage rather than during + time stepping. + - get smoothOpNb from xx_gentim2d_preproc +o global_oce_cs32 : + - add test of generic ecco capabilities. +o pkg/exf/exf_getsurfacefluxes.F : + - add to tmpUE/tmpVN rather than re-initializing them (conventional behavior). +o pkg/ctrl,ecco : + - omit un-necessary arguments to ctrl_cost_gen.F unless ECCO_CTRL_DEPRECATED + is defined. +o pkg/seaice: add diagnostics for Delta (deformation parameter) +o model/src: + - when ALLOW_3D_DIFFKR is defined, add a Warning if any of the vertical + diffusivity (background) is specified but ignored. +o verification: + - in testreport, convert hostname to lower case for default output dir name +o model, pkg : add useCTRL, useECCO parameters (on/off run time switch). +o pkg/dic: add modifications from Hajoon: + - add iron sedimentation flux function of the flux of PO4 out of bottom layer + - light attenuation: add self-shading effect by climatological Chlorophyll + (read from file). +o pkg/seaice/seaice_preconditioner.F : fix cpp flags, so that code also + compiles when SEAICE_ALLOW_DYNAMICS is undefined +o global_oce_llc90,cs32 : ecco_v4 verification exps now use separate + AUTODIFF_OPTIONS.h, CTRL_OPTIONS.h, ECCO_OPTIONS.h rather than + ECCO_CPPOPTIONS.h (i.e. replacing the deprecated, circumvoluted, + approach where CPP_OPTIONS.h includes an omnipotent + ECCO_CPPOPTIONS.h that superseeds pkgs '_OPTIONS.h'). +o pkg/ctrl/ctrl_map_ini_genarr.F : include GMREDI_OPTIONS.h where + ALLOW_3D_KAPGM, ALLOW_3D_KAPREDI (to be added later) belong. +o pkg/seaice/SEAICE_SIZE.h : replace ALLOW_AUTODIFF_TAMC with ALLOW_AUTODIFF + to avoid needing AUTODIFF_OPTIONS.h anytime SEAICE_SIZE.h is included + (it seems that THSICE_SIZE.h, PTRACERS_SIZE.h have the same issue...) +o model/src, pkg/smooth, profiles, salt_plume, seaice, exf, ecco, ctrl : + add ECCO_OPTIONS.h, AUTODIFF_OPTIONS.h, CTRL_OPTIONS.h when needed + - ECCO_OPTIONS.h is needed when including ecco_cost.h, ecco.h + - AUTODIFF_OPTIONS.h is needed when including tamc.h, tamc_keys.h + - CTRL_OPTIONS.h is needed when including ctrl.h, optim.h, etc +o pkg/ctrl,ecco,exf : + - remove variables associated with NON-generic costs, + unless ECCO_CTRL_DEPRECATED is defined. + - remove NON-generic NON-obcs controls, + unless ECCO_CTRL_DEPRECATED is defined. +o pkg/ctrl : added ctrl_local_params.h +o pkg/ecco : added ecco_local_params.h +o verification : added ECCO_CTRL_DEPRECATED to most as and oad + experiments, which will progressively be removed once the + experiments are revised to use only generic controls/costs. + +checkpoint65f (2014/10/13) +o pkg/ctrl, ecco, seaice : minor changes in headers +o global_oce_llc90,cs32 : ecco_v4 verification exps now test generic + cost function and control capabilities added since checkpoint65c. +o pkg/ctrl: regroup all obcs ctrl variables in CTRL_OBCS.h. +o pkg/ecco: increase modularity and improve logic + - ecco_toolbox.F (new) : basic operations that are often used, + including ecco_zero, ecco_cp, ecco_cprsrl, ecco_diffmsk, + ecco_addcost, ecco_add, ecco_div, ecco_readbar. + - cost_gencal.F (new) : determine filnames and records. + - cost_genread.F, cost_generic.F : condense code using ecco_toolbox. + - cost_generic.F : use spzeroloc rather than hard-coded -9999, + and exploit the above functions leading to more compact code. + - cost_genread.F : rm un-necessary arguments, re-arrange args order. + - ecco_check.F, ecco_readparms.F : bring logic up to date (using_tpj, + using_ers, using_gfo, using_mdt is now only defined within gencost) +o pkg/ecco: extend generic cost capabilities + - pkg/ecco : added 3D gencost (ALLOW_GENCOST3D), added gencost + capabilities via gencost_preproc (+ _c,_i,_r related params), + gencost_posproc (+ _c,_i,_r related params), gencost_nrecperiod, + gencost_outputlevel arguments to cost_generic + - pkg/ecco/cost_genread.F (new) : interface between cost_generic + and active_read, making room for gencost_preproc to take effect. + Added preproc code ('climmon') to replace GENERIC_BAR_MONTH. + - pkg/ecco/cost_generic.F : + compute and store misfit maks*(model-data) in localdif that is + then used in cost and for output, output misfit if outlev.GT.0 + - pkg/ecco/cost_averagesfields.F : depend on gencost_barskip + rather gencost_barfile for deciding whether to write barfile + - pkg/ecco/ecco_cost_driver.F : extract call to cost_profiles from cost_hyd + - pkg/ecco/ecco_cost_init_fixed.F : extract gencost weights from + ecco_cost_weights, re-activate ecco_summary, determine gencost_barskip + - pkg/ecco/ecco_summary.F : report gencost variables + - pkg/ecco/cost_gencost_customize.F : treat case of scatterometer costs +o pkg/sea/SEAICE_OPTIONS.h : add ALLOW_COST_ICE, ALLOW_SEAICE_COST_SMR_AREA +o pkg/ecco: internal re-organization + - resolve un-necessary dependancies within pkg/ecco and to pkg/ctrl + (rm includes of optim.h and ctrl.h, replace optimcycle with eccoiter, + mv relevant variables definition from ecco_cost.h to ecco.h, + make sure gencost routines only include ecco.h) + - throughout : add missing CCP switches, rm unused variables, + and rm un-necessary CPP switches + - throughout gencost routines : replace modelstartdate with + gencost_startdate when needed + - cost_bp_read.F : use arguments, instead of common blocs + so that it can be used also by (new) cost_gencost_bpv4.F + - ecco_init_varia.F : initialize RHOsumGlob_0, VOLsumGlob_0 + - ecco_phys.F : compute etanFull + - ecco_readparms.F : rename using_topex as using_tpj, add + bpv4-grace to gencost list, initialize added parameters + - ecco_summary.F : include SIZE.h needed for augmented ecco.h + +checkpoint65e (2014/09/28) +o pkg/obcs: + - replaced the just-added CPP options with run-time variables + (see pkg/obcs/OBCS_PARAMS.h for details) +o pkg/obcs: + - add additional CPP options for sponge boundary layers + (see pkg/obcs/OBCS_OPTIONS.h for details) +o pkg/atm_phys: + - implement simple (obliquity only, assuming circular planet orbit) + seasonal cycle for incoming insolation ; used when run-time parameter + "select_incSW" is set to 1 ; by default (=0), uses old unchanged formula. +o pkg/exf, pkg/ecco, pkg/ctrl: + - add ctrlUseGen and .NOT.ctrlUseGen exclusive brackets + - activate gentim2d for xx_atemp,xx_aqh,xx_swdown,xx_lwdown,xx_precip + - implement gentim2d for xx_tauu, xx_tauv +o pkg/ctrl, pkg/ecco : + - fix and complement the generic controls implementation +o pkg/exf/exf_getclim.F, exf_getffields.F, exf_getsurfacefluxes.F, + pkg/shelfice/shelfice_thermodynamics.F, + verification/hs94.1x64x5/code_ad/ctrl_map_gentim2d.F, + verification/hs94.1x64x5/code_oad/ctrl_map_gentim2d.F : + - add weight in CTRL_GET_GEN calls +o pkg/ctrl : + - ctrl_get_gen.F : add weight as input parameter, and apply + it directly rather than using smooth_correl2Dw (to be retired). + - ctrl_map_gentim2d.F : add wgentim2d in CTRL_GET_GEN call +o pkg/ctrl : + - introduce run time switch ctrlUseGen (in ctrl.h, ctrl_check.F, + ctrl_init_variables.F, ctrl_readparms.F, ctrl_summary.F) + - re-activate ctrl_summary (call in ctrl_init.F) +o pkg/ctrl/ctrl_cost_gen.F : + - fix CCP brackets, remove un-necessary myiter, mytime +o pkg/ecco, pkg/ctrl : + - remove cost_genctrl.F (now pkg/ctrl/ctrl_cost_driver.F) + - remove cost_forcing_gen.F (now pkg/ctrl/ctrl_cost_gen2d.F) + - add ctrl_cost_driver.F (replaces pkg/ecco/cost_genctrl.F) + - add ctrl_cost_gen2d.F (replaces pkg/ecco/cost_forcing_gen.F) + +checkpoint65d (2014/09/15) +o pkg/ctrl/CTRL_GENARR.h, ctrl_readparms.F : + - add xx_genarr2d_bounds,xx_genarr3d_bounds, + xx_genarr2d_numsmooth, xx_genarr3d_numsmooth +o pkg/ctrl/ctrl_map_ini_genarr.F : + - remove compilation failure + - replace hard coded example + - use ctrl_map_ini_gen2D, 3D +o pkg/ctrl/ctrl_pack.F, ctrl_unpack.F : + - on/off switch based upon xx_genarr2d_weight,3d +o src/packages_init_variables.F : + - regroup pkg/estimation calls + - remove CTRL_MAP_INI, CTRL_MAP_INI_ECCO + (moved to ctrl_init_variables) +o cost/cost_init_varia.F : + - remove ecco_cost_init_varia + (moved to ecco_init_varia) +o ctrl/ctrl_init_variables.F : + - add CTRL_MAP_INI, CTRL_MAP_INI_ECCO + - add CTRL_MAP_INI_GENARR, SEAICE_CTRL_MAP_INI +o ctrl/ctrl_map_ini.F : + - remove ctrl_map_ini_genarr, seaice_ctrl_map_ini + (moved to ctrl_init_variables) +o ctrl/ctrl_map_ini_ecco.F : + - remove ECCO_PHYS (mv to ecco_init_varia) + - remove seaice_ctrl_map_ini (mv to ctrl_init_variables) +o ecco/ecco_ad_diff.list : + - add ecco_init_varia.f +o ecco/ecco_init_varia.F + - new routine +o pkg/streamice: + - move call to STREAMICE_INITIALIZE_PETSC from the_model_main.F + to streamice_init_fixed.F ; fix setting of STREAMICEisOn. + - from model/src, only call pkg/streamice routines if useStreamIce is TRUE. +o pkg/generic_advdiff: + - fix bug causing negatives in GAD_SMOLARKIEWICZ_HACK, introduced 8/8/2014. +o pkg/exf: + - exf_getffields.F : add xxg_atemp, xxg_aqh, xxg_swdown, xxg_lwdown, + xxg_precip capability + - exf_wind.F : no need for ALLOW_WSPEED_CONTROL cpp switch +o pkg/ctrl: + - ctrl_pack.F, ctrl_unpack.F : omit (un)packing of undefined xx_gentim2d +o model/src/load_fields_driver.F : + - move call to CTRL_MAP_GENTIM2D ahead of BULKF_FIELDS_LOAD, EXF_GETFORCING + so xx_gentim2d can be applied to e.g. exf fields in a timely manner. +o OpenAD verification experiments: + - Include explicitly AUTODIFF_OPTIONS.h, COST_OPTIONS.h, and CTRL_OPTIONS.h + in src files (to enable to skip the ECCO_CPPOPTIONS.h); + for now, only in pkgs used in OpenAD verification experiments. + - Change all except one (halfpipe_streamice) OpenAD experiments to use pkg + specific option file (AUTODIFF_OPTIONS.h, COST_OPTIONS.h & CTRL_OPTIONS.h) + instead of using ECCO_CPPOPTIONS.h (with all relevant options in it). + This applies to both TAF (*/code_ad/) and OpenAD (*/code_oad/) tests. +o OpenAD verification tests: + - finish removing ALLOW_AUTODIFF_OPENAD (replaced by ALLOW_OPENAD); + - finish replacing ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for + tape/storage which are specific to TAF/TAMC) in pkgs used in OpenAD exp. + - leave ALLOW_AUTODIFF_TAMC undef in OpenAD verification tests (*/code_oad/) + and remove local copy of "tamc.h" (needed only if ALLOW_AUTODIFF_TAMC). +o model/src & generic_advdiff: + - change hard-coded loop-range in S/R APPLY_FORCING_T/S to set T & S + forcing over 0:sNx+1, 0:sNy=1 (instead of just 1:sNx,1:sNy): Model + dynamics requires valid tracer forcing only over tile interior but, for + some diagnostics, may need to extend it over 1 point in tile halo region. + - in gad_calc_rhs.F, update calls to gmredi_x/ytransport to get valid + tendency over i,j_Min,Max range. This allows to simplfy i,j_Min,Max + setting in temp/salt/ptracer_integrate.F +o pkg/dic: + - multiply tracer tendencies by maskInC (if ussing OBCS) before updating + gchem tracers: this allows to skip the 2nd call to OBCS_APPLY_PTRACER + in gchem_forcing_sep.F +o pkg/autodiff & obcs: + - add storage of current OB values for U & V (was already done for T & S). + +checkpoint65c (2014/08/30) +o pkg/dic: + - take out of dic_atmos.F the initialisation part (corresponding to istate=0) + and move it to new S/R DIC_INI_ATMOS ; also simplify the dependencies for + AD compilers (but still a Pb with multi-threading and Ajoint dependencies). +o verification: + - new experiment testing OBCS and DIC pkgs, using params & output from + tutorial_global_oce_biogeo but limited to a sub-domain around Drake + passage: take OBCS from the last year of a 2 yrs simulation and initial + conditions from t=1.yr while keeping the same forcing. +o model/src: + - when allowFreezing=T, only reset below freezing initial Temp to Tfreezing + (at any k) if checkIniTemp is not set to FALSE (default checkIniTemp=T). +o pkg/diagnostics (Stats-Diags): + - re-write S/R DIAGSTATS_CALC (more similar to TARGET_NEC_SX part) to: + a) refine region where stats are computed, excluding where arrhFac=0 ; + b) fix missing interior mask (use with OBCS) in 3-D fields statistics; + c) extend regional stats over the region edges (for U or V pt location). +o pkg/gchem: + - add a (2nd) call to OBCS_APPLY_PTRACER in gchem_forcing_sep.F (needed since + pkg/dic is currently changing/updating ptracers values beyond the OB). +o verification (hs94): + - convert Held & Suarez external_forcing.F (from hs94.cs, with Sigma-coords + bits) to apply_forcing.F and undef USE_OLD_EXTERNAL_FORCING in experiments + hs94.cs-32x32x5 and tutorial_held_suarez_cs ; also use the same version of + apply_forcing.F in 2D hs94 (fwd, ad & oad) but keep LatLon hs94 unchanged. +o pkg/ptracers: + - implement Adams-Bashforth on pTracers (instead of on tracer tendency), + switched on by setting PTRACERS_doAB_onGpTr=F (default set to doAB_onGtGs) + - change exp4 secondary test (input.nlfs) to test AB on T & S & pTracer + with AB-2 code (so that it get tested). +o model/src: + - allow to apply Adams-Bashforth on Temp & Salt (instead of on gT,gS) + with AB-2 code (previously only available with AB-3 code). + Also move the code (call to ADAMS_BASHFORTH S/R) form thermodynamics.F + to temp/salt_integrate.F (since the 2nd part of gt/sNm1 update is done + there, by calling CYCLE_AB_TRACER). +o pkg/generic_advdiff: + - change Tracer argument (drop bi,bj indices) in S/R GAD_CALC_RHS, + GAD_C2_ADV_R, GAD_U3_ADV_R, GAD_C4_ADV_R, GAD_DIFF_R, GAD_BIHARM_R + + also in GMREDI_X/Y/RTRANSPORT ; and update corresponding calls in + S/R temp/salt/ptracers_integrate.F +o model/src & pkg/ptracers: + - remove common block variables gT,gS (in DYNVARS.h), except when + USE_OLD_EXTERNAL_FORCING is defined; update TAF storage accordingly. + - remove common block variable gPtr. +o model/src & pkgs: + - change gTracer (and/or tracer) argument (drop bi,bj indices) in S/R + ADAMS_BASHFORTH(2&3), CYCLE_(AB_)TRACER, FREESURF_RESCALE_G, + IMPLDIFF, SOLVE_TRIDIAGONAL & _PENTADIAGONAL, GAD_SOM_ADVECT, + GAD_ADVECTION, GAD_CALC_RHS, GAD_IMPLICIT_R, TIMEAVE_CUMUL_DIF_1T + + change accordingly all calling S/R. + - use local temperature/salinity/ptracer tendency array (without bi,bj) + in S/R temp/salt/ptracers_integrate.F +o pkg/seaice: + - move computation of stress contributions to rhsU/V in s/r seaice_lsr + to separate s/r seaice_lsr_rhsu/v in order to be able to re-use code + - make u/vIceC local variables if SEAICE_CGRID is defined only to be used + in seaice_lsr + - seaice_lsr.F: make local 4D arrays UXX, VYY, etc 2D + in s/r seaice_lsr_calc_coeffs +o pkg/mdsio: + - in MDS_READ/WRITE_FIELD, stop if file-name (+prefix) is too long + (e.g., > MAX_LEN_MBUF -90 ) or, in INI_MODEL_IO, if mdsioLocalDir is + too long (e.g., > MAX_LEN_FNAM/2 ) + +checkpoint65b (2014/08/12) +o pkg/matrix: + - pass, as argument, updated tracer field to S/R MATRIX_STORE_TENDENCY_EXP +o model/src: + - fix initialisation of geothermalFile; compile geothermal-flux code in + natl_box verification experiment. +o model/src & pkg/down_slope: + - push the k loop inside S/R TIMESTEP_TRACER (now called outside the k loop). + - in dwnslp_apply.F, update tracer tendency instead of the future tracer + field and call S/R DWNSLP_APPLY before TIMESTEP_TRACER; this affects + results at machine truncation level: update output of experiments + global_ocean.90x40x15.dwnslp (FWD) and lab_sea.noseaicedyn (AD). +o pkg/diagnostics (Stats-Diags): + - do not cumulate the full volume when DIAGNOSTICS_FILL is + called with bibjFlg < 0 (no increment of the counter for 2D/3D diag); + This fix the mean statistics when DIAGNOSTICS_FILL is called multiple + times (but Min,Max and StD are still wrong). +o model/src: + - add geothermal flux forcing: read in ini_forcing.F as time-constant + field "geothermalFlux" applied in S/R APPLY_FORCING_T (apply_forcing.F) +o model/src: + - move CYCLE_TRACER calls from tracers_correction_step.F to temp/salt/ptracer + _integrate.F so that, when leaving S/R THERMODYANMICS, theta,salt and pTrac + arrays are already updated while adjustments (filters, conv.adjustment) are + still applied later, in S/R TRACERS_CORRECTION_STEP. +o model/src: + - store in common bloc array "rhoInSitu" the virtual potential temperature + anomaly that is used to compute geopotential: this make the atmos code + more similar to ocean code which already uses rhoInSitu in calc_phi_hyd.F +o pkg/seaice/seaice_lsr.F + - rename integer variable ilcall to ipass (that's what it is called + in the residual diagnostics + - change time stepping for NPSEUDOTIMESTEP > 2 (does not change the + default) for improved non-linear convergence of the first few steps + - adjust a few comments and add new ones to explain some of the store + directives +o pkg/generic_advdiff (& ptracers): + - re-work the code to check for valid advection scheme and for minimum + size of overlap (now stored in local common bloc in gad_advscheme.F) +o pkg/seaice: another attempt to make the adjoint work for sea ice dynamics + - re-initialize more variables in seaice_lsr: u/vIceC, u/vIceNm1 + - add an auxilliary variable "bet" and fix store directives and keys in + seaice_lsr_tridiagu/v, this seems to do the trick (i.e. more or + less exact gradients in my tests); but there are still + recomputation warning (although gradients are sort of OK), when + SEAICE_LSR_VECTORIZE is not defined, so this flag and + SEAICE_LSR_VECTORIZE_ZEBRA are recommended for efficiency. + - update verification experiments lab_sea. + - change some comments in S/R seaice_calc_viscosities +o model/src: + - if staggerTimeStep=T, always apply exchange to velocity field in + do_stagger_fields_exchanges.F instead of in do_fields_blocking_exchanges.F + (independent of using multi-dim advection or not); no effect on FWD run + but affects AD results (at machine truncation level): update output of + experiment 1D_ocean_ice_column (ad: 12 digits), hs94.1x64x5 (ad,oad: 13.d) + and isomip (oad: 12.d). +o pkg/generic_advdiff: + - stop if doAB_onGtGs is set to FALSE but ignored + - refine warning related to stability of tracer time-stepping + regarding internal wave dynamics. + - setting of AdamsBashforth_T,S when doAB_onGtGs=F: remove condition + on staggerTimeStep & implicitIntGravWave (will now get a warning + if potentially unstable). +o pkg/kl10: + - add new pkg "kl10" for mixing due to internal wave breaking, from + http://www.sciencedirect.com/science/article/pii/S1463500310000144 + (contribution from Jody Klymak), tested in verification experiment + verification/internal_wave/input.kl10/ +o isomip experiment: + - test pkg/shelfice with Non-Lin Free-Surf in one of the FWD set-up + (input.htd) and update the output. +o cd_code experiments: + - use default cd_code options (#undef CD_CODE_NO_AB_MOMENTUM & + #undef CD_CODE_NO_AB_CORIOLIS) in experiments: cfc_example (fwd) + global_ocean.90x40x15 (ad & oad) and OpenAD (ad & oad) and + update the corresponding output. +o pkg/seaice: + - reduce the number of include files and store directives in + S/R seaice_lsr_tridiagu/v + - change the order of loops in one case in S/R seaice_lsr_tridiagv + (only for SEAICE_VECTORIZE_LSR_ZEBRA defined), which allows me to + get rid off one store directive (a TAF bug?) + - add one more instance of ifdef SEAICE_VECTORIZE_LSR_ZEBRA in + S/R seaice_lsr_tridiagv to change the loop range for consistency + - remove ilcall, m from parameter list of S/R seaice_lsr_tridiagu/v + - fix a bug that affects the JFNK solver: replace sNx/y by i/jMax in + S/R seaice_lsr_tridiagu/v (requires update of + offline_exf_seaice/input.dyn_jfnk) + +checkpoint65a (2014/07/27) +o model/src: + - Non-Lin Free-Surf in p/z coords: allows hFacW,S to be larger than + surrounding hFacC=1 @ edge of a step with different kSurfC on either side + (topo in p-coords, ice-shelf in z-coords); update output of experiments + tutorial_global_oce_in_p and isomip (both AD and OpenAD output). +o model/src: + - collect momentum forcing tendency into local 2-D array (passed as argument + to apply_forcing S/R); this simplifies mom. Forcing diagnostics and CD_CODE + parts in timestep.F (without CD_CODE_NO_AB_MOMENTUM defined = the default); + affects results at machine truncation level (e.g., if using OBCS_SPONGE). + - collect T & S forcing tendency into local 2-D array (passed as argument to + apply_forcing S/R); add 3-D diagnostics for temp & salt forcing tendency. + affects results at machine truncation level (e.g., ocean: if using + SHORTWAVE_HEATING ; atmos: if using FrictionHeating or (atm_Rq<>0) moist + correction due to vertical advection). + - update output of experiments: fizhi-cs-32x32x40 (13 digits), + global_ocean.cs32x15 (fwd: icedyn, seaice, thsice, all 3 @ 11d; adm & tml: + seaice_dynmix & thsice, fwd grd @ 3 & 8), hs94.1x64x5 (ad grd @ 13), + obcs_ctrl (ad & fwd grd @ 12 & 7). +o pkg/ptracers & diagnostics: + - use ptracers (short) name (instead of long one) to make ptracers diagnostics + title (to avoid some unexpected truncation); sort out ptracers diags units. + - collect ptracer forcing tendency into local 2-D array (passed as argument + to apply_forcing S/R); add 3-D diagnostics for ptracers forcing tendency. + +checkpoint65 (2014/07/18) +o pkg/fizhi: + - add parenthesis around fizhi tendencies in fizhi_tendency_apply.F: this + affects results at machine truncation level. Update output of experiments + fizhi-cs-32x32x40 (12 digits for cg2d) & fizhi-cs-aqualev20 (13 digits). +o pkg/seaice: more clean up + - rename TAF common block tapes to be more consistent and remove + unnecessary duplicates + - add store directives to remove more recomputations, but use smaller + tapes (and adjust keys) when SEAICE_LSR_ADJOINT_ITER is undefined. + The idea behind this flag is to reduce the memory footprint when the + adjoint of the LSR is not required. As of now, defining the flag + SEAICE_LSR_ADJOINT_ITER increases 4 common block tapes for 2D field by + a factor of SOLV_MAX_FIXED (=500 by default in SEAICE_SIZE.h). + For experiment offline_exf_seaice, this means on a linux box with gfortran + nearly a factor of 10 (but keep in mind there is mostly seaice code in + this experiment): + > size mitgcmuv_ad + text data bss dec hex + 5100659 1216 220458952 225560827 d71c8fb + 5339425 1200 1868783272 1874123897 6fb4dc79 (SEAICE_LSR_ADJOINT_ITER) + but only a moderate increase of 36% for global_ocean.cs32x15: + text data bss dec hex + 6695027 1648 1014578664 1021275339 3cdf6ccb + 6695203 1648 1382505320 1389202171 52cd8afb (SEAICE_LSR_ADJOINT_ITER) + - note: there are still recomputations in global_ocean.cs32x15 and + offline_exf_seaice and the gradient agreement changes (gets a + little worse) for global_ocean.cs32x15 (-> update output_adm.seaice.txt) + - in general, the AD gradients still are wrong +o OpenAD + - clean up code_oad/ directories somewhat by moving files + dontCompile, dontTransform, keepOriginal to OAD_support/ +o model/src: + - using MOM fluxform and Non-Lin Free-Surf with momDissip_In_AB=F + (not currently tested): add dissipation terms before NLFS rescaling of + tendencies (previously done after). +o pkg/diagnostics: + - write stats-diags in ascii file with more digits (same as in monitor). +o pkg/down_slope: + - drop the bi,bj dimension of argument recip_hFac in S/R DWNSLP_APPLY; with + NLFS (not tested), use new recip_hFac value in order to conserve tracer. +o model/src: + - new file "apply_forcing.F" containing all the code previously in + external_forcing.F, but with new argument list: pass, as new argument, + the current level tendency array to update (instead of a direct update + of the common bloc array). Change the corresponding calls. + - add CPP option USE_OLD_EXTERNAL_FORCING (default is undef) to use + EXTERNAL_FORCING_U,V,T,S subroutines (for backward compatibility). +o pkg/seaice/seaice_lsr, a little bit of clean up + - rearrange some code blocks, so that now all calculations for + setting up the right-hand-sides done within one single block + (I find that easier to read and understand) + - rearrange freedrift-code to reduce the number of ifdefs + - adjust some indentations and comments + +checkpoint64z (2014/07/10) +o model/src and several pkgs: + - change argument list of all S/R called from external_forcing.F and + called from ptracers_forcing.F (renamed to ptracers_apply_forcing.F) + to pass, as argument, the current level tendency array to update + (instead of a direct update of the common bloc array). + - change also (in the same way) argument list of PTRACERS_APPLY_FORCING; + - rename taueddy_external_forcing.f to taueddy_tendency_apply.F +o pkg/seaice/seaice_lsr.F + - always initialize local arrays in seaice_lsr_tridiagu/v + - add more local tapes to seaice_lsr_tridiagu/v + - move storing u/vice(:,:,bi,bj) out of seaice_lsr_tridiagu/v, but + keep it in bi/bj loop; this seems to be essential + - gradients are still wrong but only by 4-7 orders of magnitude + instead of 15 orders of magnitude, lab_sea improves a little +o pkg/seaice + - (pkg/autodiff) remove storing/restoring of seaiceMaskU/V that + generates unnecessary code in seaice_lsr_ad + - add more store directives in seaice_lsr to avoid unnecessary code + in seaice_lsr_ad + - exclude some residual computations in seaice_lsr when + ALLOW_AUTODIFF_TAMC is defined in order to avoid unnecessary code + in seaice_lsr_ad + - add more storing, a new tape (model/src/the_main_loop.F) and + another key for SEAICE_LSR_VECTORIZE_ZEBRA (the local keys ilockey + and klockey should be checked by a specialist) + - modify ( define SEAICE_VECTORIZE_LSR and SEAICE_LSR_ADJOINT_ITER ) + and update lab_sea after previous changes in pkg/seaice below +o pkg/autodiff: + - introduce useSmoothCorrel2DinAdMode, SEAICEapproxLevInAd, and + viscFacInAd : run time parameters allowing for adjoint switches + note : logic for useSmoothCorrel2DinAdMode is in ctrl_readparms.F +o pkg/ecco: + - introduce cost_gencost_boxmean.F that computes a box mean + temperature (for use in adjoint sensitivity studies). +o model/src/set_defaults.F : initialize viscFacAdj to 1. +o pkg/mom_common/mom_calc_visc.F: + - ifdef ALLOW_AUTODIFF then include viscFacAdj factor. +o pkg/seaice/seaice_summary.F: + - statement for SEAICEadjMODE now in autodiff_readparms.F +o pkg/seaice: + - remove some store directives and add new ones in an effort to get + finally rid off the recomputation warnings. This is successful + when SEAICE_VECTORIZE_LSR ***and*** SEAICE_LSR_ADJOINT_ITER are + defined (i.e. no extensive recomputation warnings left), but there + are still too many recomputations on the solver iteration level + - define SEAICE_VECTORISZE_LSR in offline_exf_seaice/code_ad/SEAICE_OPTIONS.h + - move definition of MPSEUDOTIMESTEPS into TAMC-block in + SEAICE_SIZE.h + - add a store directive in S/R seaice_calc_viscosities +o pkg/seaice (ITD code): + - fix definition of Hlimit for multi-threaded case + - use double precision arithmetic to compute Hlimit: this affects results; + update output of experiment seaice_itd. +o replace content of verification/seaice_itd + - instead of a 1D column use the configuration of offline_exf_seaice + to test the ice thickness distribution code with ridging + - this is a first shot at this experiment + - change of some defaults of ridging parameters SEAICEhStar (from + 100 to 25) and SEAICEmuRidging (from 5 to 3) in seaice_readparms.F + and lot of new comments. + +checkpoint64y (2014/06/20) +o pkg/seaice/seaice_reg_ridge.F: + - modify the regularization of very small volumes of ice; only check + total volume HEFF, and do not apply correction to individual ice + classes because that leads to funny patterns in the heat and fw-fluxes + into the ocean. Adjust seaice_itd/results/output.txt + - replace nITD by SEAICE_multDim in loop-ranges +o pkg/exf: + - add code to process the case field period = -12. with UV interpolation. + - move debug print (formerly active when exf_verbose=T) from EXF_getFFieldRec + into S/R that calls it (i.e., exf_set_gen.F, exf_set_uv.F & obcs_exf_load.F) +o verification/global_with_exf: + - switch all fields period to -12. (was previously untested) in input/data.exf + (but keep secondary test ".yearly" unchanged); update the reference output. +o pkg/cal: + - new calendar type "noLeapYear" for 365 days calendar without any leap year. +o pkg/exf: + - new integer parameter "exf_debugLev" (default set to main model debugLevel) + to replace logical switch "exf_verbose" + - report in STDOUT when loading a new record (if exf_debugLev >= 3) +o pkg/sbo: + - update from Katherine Quinn: evaluate mass directly from density and SSH + (budget using Finite Volume method) instead of from bottom pressure. + - allow testreport to collect few selected SBO output ; tested in exp. + global_ocean.90x40x15 (after updating the results, to include SBO output). + - fix some multi-threading issues (in output part). +o model/src & most packages: + - always call {PKG}_READPARMS even if corresponding use{PKG}=F; + - in {PKG}_READPARMS, in case use{PKG}=F: add a call to new S/R + PACKAGES_UNUSED_MSG to print a weak warning when parameter file + "data.{pkg}" exist ; and leave the S/R (return) just after. + - more standard LAND pkg interface (land_init_fixed.F, land_check.F). + + call LAND_READPARMS from packages_readparms.F +o pkg/seaice: + - remove code that resets useThSice in S/R seaice_readparms and + replace it by a warning in S/R seaice_check + - remove parameter MULTDIM, replace with nITD and runtime + parameter SEAICE_multDim (still hard-wired to nITD if + SEAICE_ITD is defined) + +checkpoint64x (2014/05/24) +o verification/lab_sea: + - update adjoint and TLM output following changes to pkg/salt_plume + - un-do the update after putting back local recip_Cp in few places. +o pkg/salt_plume: modifications by An Nguyen: + - add capability to do brine rejection (salt-plume) as function of + volume+tracers (instead of only salinity tracer). + - conserve volume by exchanging volume from each kLev to above to + accommodate in-coming brine volume + - store surface and klev exchanged fraction + volume in 4 new 3-d arrays + - switch KPP surf buoyancy due to brine forcing to 3-d + (3 more 3-d arrays, 2 for SPforcing[T,S], 1 for boplume) + - add salt_plume_volfrac, salt_plume_apply, salt_plume_tendency_apply_t + - unrelatedly, also add ad-hoc capability to vary salt_plume scheme + in East/West Arctic. +o pkg/sbo: + - incorporate modifications from Katherine Quinn to enable the use of sbo + pkg in ECCO-v4 set-up ; remove SBO-TimeAve output ; add monitor-like + output for future testreport verification (unfinished). +o pkg/atm_phys: + - change diagnostics (AtPh_Trf & AtPh_Qrf) of DARGAN_BETTSMILLER S/R: + skip the reseting of t_ref & q_ref to initial t & q ; this preserve the + output of S/R CAPECALCNEW (Parcel temp & q) for diagnostics. +o pkg/seaice + seaice_calc_ice_strength.F: modify expression to avoid divisions + (affects truncation) + seaice_do_ridging.F: clean up the insectarium + - fix a bug that was compensated by areaScaling (-> remove areaScaling code) + - added SEAICEsnowFracRidge to redistributed snow (2nd bug) + - set closing/openingRate to zero where no extra iteration is need (3rd bug) + - add some debugging information and error messages (warnings) +o model/src: modifications relatd to atmosphere p*: + - Switch to more accurate p* coordinate slope term (calc_grad_phi_hyd.F) + - With p* or Sigma-P, use constant reference Pot.Temp (thetaConst) instead + of vertical profile tRef in geopotential background and anomaly. + - Acount for true p* correction in theta <-> T conversion in pkg/aim_v23 + and pkg/atm_phys. + - Update FWD output of experiments: aim.5l_cs (x2), fizhi-cs-32x32x40, + fizhi-cs-aqualev20, fizhi-gridalt-hs, tutorial_held_suarez_cs, cpl_aim+ocn. +o pkg/seaice: fix a bug in seaice_prepare_ridging.F, forgot a sqrt +o pkg/ptracers: compute ptracer source/sink due to linear free surface. + not used right now, but can be used in BGC packages to fix conservation. +o pkg/dic, pkg/gchem: move tracer_meanarea to gchem, so it can be used by + other packages too. +o pkg/seaice/seaice_calc_ice_strength.F: replace SEAICE_rhoSnow by + SEAICE_rhoIce in the Rothrock (1975)-type strength calculations (bug fix) +o model/src: + - since we have several heat capacity (even in model/src), define "recip_Cp" + as local variable (no longer in common block) to avoid any confusion. + - add thetaConst in PARAMS.h (to be used with pStar or sigma-P coords). +o pkg/exf: + - from Jeff Scott: add option (#define EXF_CALC_ATMRHO) to calculate local + air density as function of air Temp, Humidity and atm pressure. + +checkpoint64w (2014/05/02) +o verification: + - update output_adm.txt files for experiment global_ocean.cs32x15 (seaice & + seaice_dynmix) and lab_sea (primary test & noseaicedyn): moving/changing + code from seaice_growth.F & seaice_advdiff.F to new ridging routines + seaice_reg_ridge.F seaice_do_ridging.F affects AD gradient + (down to 8-7 matching digits for global_ocean and 5-6 for lab_sea). +o model/src: for atmosphere in p* coords: + - store factor rStarFacC**atm_kappa (= pStarFacK) in common block + - implement more accurate p* coordinate slope term (in calc_grad_phi_hyd.F), + but not yet activated. +o pkg/seaice: fix restart problem for ITD with new ice strength parameterisation: + - move computation of opnWtrFrac = 1-AREA to before computing ice strength + - this changes the results (but not for any verification experiment, because + none tests this), but avoids having an extra field in the restart files +o pkg/seaice: remove global variable TICE (not needed) + - replace by TICES or local variable where necessary (cost_seaice_test, + seaice_diagnostics_state) + - move copying TICE to TICES from seaice_check_pickup to seaice_read_pickup + - use specific read/write routines for reading and writing individual leves + of a multilevel field +o pkg/ctrl & model/inc: + - move additional anomaly fields of control vars (related to options: + ALLOW_KAPGM_CONTROL, ALLOW_KAPREDI_CONTROL and ALLOW_BOTTOMDRAG_CONTROL) + from DYNVARS.h into new header file: CTRL_FIELDS.h +o pkg/seaice: some small modifications to the ridging code + - make fw2ObyRidge a global variable and add the freshwater flux to + seaice_growth + - pass actual thickness from seaice_prepare_ridging, so that it is + computed only in one place and compute it in the same way as in + seaice_growth + - initialise more fields in seaice_do_ridging that where cause floating + point exceptions over land +o pkg/seaice: preparations for ridging code and first real ridging code + - move most of "PART 1" of S/R seaice_growth into a new and separate + S/R seaice_reg_ridge that will both regularize the state variable after + advection call the actual ridging routine; + - requires to make 5 fields global fields: d_HEFFbyNEG,d_HSNWbyNEG, + d_AREAbyRLX,d_HEFFbyRLX,saltFluxAdjust; + - remove ridging code from seaice_advdiff + - clean up remaining part 1 of seaice_growth in an attempt to make it + more readable (this is probably subjective) + - call seaice_itd_redist once in the initialisation phase to have the initial + conditions in the correct category + - finally: add new ridging routine for ITD code + +checkpoint64v (2014/04/11) +o pkg/ecco: + - add runtime parameters mdt[start,end]date[1,2] + - rename variable "tpmean" as "mdt" and "topexmeanfile" as "mdtdatfile" +o pkg/seaice: + - make deltaC a global variable, so that it can be used in ridging code + - first step towards ridging: introduce new routines that compute + ice strength based on ridging parameters + - add diagnostic for HSNOWITD + - add opnWtrFrac as a global variable (required for ridging scheme) +o pkg/salt_plume + pkg/seaice/seaice_growth.F + - add SALT_PLUME_IN_LEADS flag to activate pkg/salt_plume only when ice + AREA exceeds a threshold (code contributed by I.Fenty in 2011) +o verification/hs94.1x64x5: + - leave ALLOW_AUTODIFF_TAMC undefined in code_oad/AUTODIFF_OPTIONS.h + - do not use ECCO_CPPOPTIONS.h anymore for TAF & OpenAD Adjoint tests. +o autodiff: + - Start to include explicitly AUTODIFF_OPTIONS.h, COST_OPTIONS.h, + and CTRL_OPTIONS.h in src files (to enable to skip the ECCO_CPPOPTIONS.h) + For now, only in pkgs used in verification/hs94.1x64x5. + - Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage + which are specific to TAF/TAMC). + - Replace ALLOW_AUTODIFF_OPENAD by ALLOW_OPENAD: + since ALLOW_OPENAD is defined in PACKAGES_CONFIG.h (any time pkg/openad + is compiled), this simplifies/reduces which *_OPTIONS.h file to include. + - OpenAD: change Makefile to generate the appropriate AD_CONFIG.h when + building mitgcmuv_ad (make adAll). +o pkg/ecco: + - cost_gencost_seaicev4.F: + reformulate proxy cost as function of sst and local param SEAICE_freeze + change cost names from siv4-[sst,vol] to siv4-[deconc,exconc] + - add stop statement if old names siv4-[sst,vol] are used + - add snapshots + cost reports for atmospheric longwave + - remove factor 0.1 in front of wtau[u,v] + - replace never used flag ALLOW_TMI_COST_CONTRIBUTION with + ALLOW_TMI_SST_COST_CONTRIBUTION +o pkg/atm_phys: + - add some diagnostics for Short-wave and for convection S/R. +o pkg/seaice/seaice_growth: + - fix a bug in the lateral melt parameterization for SEAICE_ITD + in seaice_growth; tempFrz needs to be computed inside the i/j-loop + - rearrange loop order for better vector code in the same code block + - rewrite the floeDiameter formula to have fewer divisions + - (miraculously) none of this changes the results of seaice_itd +o pkg/smooth: + - move param smooth2Ddiffnbt to pkg/ecco +o pkg/salt_plume: + - salt_plume_frac.F: + clean up local param names + reformulate (1-frac) to frac; original 1-frac was based on swfrac code +o pkg/rw: + - add RS version of S/R READ_MFLDS_LEV. +o pkg/streamice: + - fix the restart test by writing/reading pickup_streamice files. +o pkg/seaice: + - refine checks for jfnk-related parameters + - comment out if statement with SEAICEuseIMEX parameter as long as there + is no IMEX code to avoid confusion and surprises + +checkpoint64u (2014/03/07) +o verification/MLAdjust: + - rename secondary test suffix: + 1.leith -> A4FlxF + switch to flux-form & add side-drag + 0.leithD -> AhFlxF + switch to flux-form + 0.smag -> AhVrDv (use Vorticity-Div. visc form) + add side-drag + 0.leith -> AhStTn (use Strain-Tension visc form) + add side-drag +o pkg/mom_vecinv: + - remove unused arguments from S/R MOM_VI_HDISSIP & MOM_HDISSIP (as it used + to be before mom_calc_visc.F) + - skip the call to MOM_CALC_TENSION & MOM_CALC_STRAIN if not needed. + - add 2nd copy of vort3 & strain that knows about lateral BC (free/no slip): + this is simpler for the adjoint and for diagnostics. +o model/src + pkg/momentum: + - add input files for 2-D additional Western and Southern cell-edge wall + (e.g., to add "thin-wall" where it is =1). + - fix sideDrag option for thin-walls with Non-Lin Free-Surf + using 2nd hFacZ that is computed from initial (fix domain) hFac + - known limitations of thin wall implementation: not yet coded for sigma + coords; not working with CD-scheme neither. +o pkg/seaice: + - rename recently introduced parameters from (wrong name) AB to + BDF (backward difference time discretisation) + - retire runtime parameters SEAICEuseAB2, SEAICE_abEps +o tools/adjoint_options: + - remove setting of "OPENAD=true" (now set by command line "genmake2 -oad") + +checkpoint64t (2014/02/01) +o pkg/ecco + - add compile flag ALLOW_GENCOST_TIMEVARY_WEIGHT in ECCO_OPTIONS.h and + runtime logical flag gencost_timevaryweight to read daily sea-ice sigma + - replace hard-coded record number and period which only work for monthly + with read-in runtime param that works for other periods (month,day,year) +o pkg/thsice + - corrected store directive fixes thsice adjoint gradient checks +o genmake2 & testreport: + - add genmake2 option "-oad" to generate a Makefile for OpenAD built and + in this case, use tools/adjoint_options/adjoint_oad as default AD optfile. + Update testreport accordingly. No need to set "export OPENAD=true" + in adjoint_options/adjoint_oad anymore (will be removed later). +o pkg/shelfice: + - put T & S shelfice forcing into model surfaceForcing_T,_S (for now, + only if SHELFICEboundaryLayer=F); Change model/src/external_forcing.F + so that surface forcing applies to k=kSurf if using pkg/shelfice. +o pkg/ctrl, pkg/grdchk, pkg/ecco: + - Changes to make GENARR more modular (i.e. invisible if not used) +o model/src/temp_integrate.F and salt_integrate.F + - re-include store directives that were removed on Dec 27th. +o model/src/external_forcing_surf.F + - add storage directives for EmPmR and PmEpR to avoid recomputation of + seaice_model in the adjoint that is problematic when seaice_model is + turned off in the adjoint. The resolved issue dated back to July when + EXTERNAL_FORCING_SURF call was moved. + Update global_ocean.cs32x15/*/output_adm.seaice_dynmix.txt accordingly. +o pkg/exf/exf_check.F + - fix a small bug again (originally found by Wentao Liu, now found again) + - streamline error output +o pkg/streamice and aim_v23: + - replace a few "_EXCH_XY_RL (" with "_EXCH_XY_RL(", so that + Apple's /usr/bin/cpp knows what to do: + Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) + Target: x86_64-apple-darwin13.0.0 + +checkpoint64s (2014/01/05) +o tools/adjoint_options: + - switch to fastopt.net TAF server (instead of default fastopt.de) for + AD optfiles adjoint_diva & adjoint_f95 (similar to adjoint_default). +o model/src: + - remove some unnecessary TAF storage directives in forward_step.F and + in dynamics.F (note: not always removed by TAF, e.g., double storage + of kappaRU,kappaRV in former version of dynamics.F). +o model/src & pkg/ptracers: + - call directly GAD_IMPLICIT_R & IMPLDIFF + DWNSLP_APPLY from temp_integrate.F + salt_integrate.F and ptracers_integrate.F (instead of from thermodynamics.F) + and remove ptracers_dwnslp_apply.F & ptracers_implicit.F + - call MATRIX_STORE_TENDENCY_EXP for each tracer (in ptracers_integrate.F) + - add fZon & fMer as output argument of S/R GAD_CALC_RHS. + - update TAF AD-output of experiments global_ocean.90x40x15 (13 for AD-grad). +o useSingleCpuInput separates single-CPU input from single-CPU output; + for now only implemented for in exf_interp_read.F +o verification/advect_xy: + - fix missing EXCH call in local version of ini_salt.F and update output. +o momentum diagnostics: + - fix which deltaT is used in Total-Tendency diagnostics. + - fix typo in diagnostics for momentum tendency from AB. +o pkg/seaice/seaice_lsr.F: fix an initialisation bug for the + SEAICE_VECTORIZE_LSR_ZEBRA option that lead to NaNs on a NEC-SX8 + +checkpoint64r (2013/12/08) +o verification/*/results: + - Update reference output of experiments that were passing with just 13 digits + (make it easier to detect future changes in results) +o model/src & pkg/ptracers: + - move calls to GAD_ADVECTION (Multi-Dim advection) from thermodynamics.F to + inside temp_integrate.F and salt_integrate.F and from ptracers_advection.F + to inside ptracers_integrate.F ; remove ptracers_advection.F +o coupling interface pkgs: + [atm_compon_interf, ocn_compon_interf & atm_ocn_coupler] + - change the config check to test the agreement of Ocean Depth + with ATM land/sea mask (instead of ATM orography); + - send to coupler the number of coupler time-steps to do for this run: + this allows to check for consistency and don't need anymore to be + specified in parameter file "data"; + in coupler: + - check consistency of RunOff map versus Ocean Depth and ATM land/sea mask. + - improve report to log-file of config setting (pass log-file unit to few S/R) +o pkg/compon_communic: + - add coupling send/receive for non-tiled integer vector; + - add S/R to check and stop if any proc has an error (similar to + eesupp/src/stop_if_error.F but single thread and across Comm_World). +o pkg/exch2: + - in exch2*_get_rx[1,2]: use new list "W2_tileIndex" to replace search + through list of all tiles my proc owns. +o model/src: + - AUTODIFF only: in calc_adv_flow.F, recompute rTransKp (instead of copying + from rTrans) to simplify dependencies (no need to store rTrans anymore in + calling S/R); this affects AD results at machine truncation level: + update AD-output (TAF) of experiments: 1D_ocean_ice_column, + bottom_ctrl_5x5 & obcs_ctrl (12 digits for AD grad, same FWD grad). +o tools/build_options: + - simplify Warnings options (-ieee & -devel cases) in linux_amd64_gfortran +o coupling interface pkgs: + [compon_communic, atm_compon_interf & ocn_compon_interf] + - move declaration of local array "ibuf" out of header file "CPLR_SIG.h" + to each S/R that needs it; remove un-used variables. + - change component tile registration (cpl_register.F in both compon_interf + and mitcomponent_tile_register.F) to pass the full list of tiles + information (including bi,bj) in 1 vector (instead of in a bi,bj matrix). + - with pkg/exch2: adopt the same convention used for I/O to define mapping + towards coupler global array (unless W2_useE2ioLayOut=F): + a) can now use different tiling between atm & ocn comp. + b) no needs to modify the run-Off map when changing tiling (was needed + even if using the same tiling between atm & ocn). + c) will allow to run with blank-tiles in 1 component (e.g., for ocean + full land tiles); not yet tested. + - check for valid mapping from comp. tile to coupler global array + - improve report of tile registration results to log file. +o pkg/exch2: + - in eesupp/src/eeboot.F: move call to W2_EEBOOT before Coupler + tile-registration (CPL_REGISTER); + - activate (un-comment) definition and setting of "W2_tileIndex" list to + store the local bi,bj indices of each tile; + - also print bi,bj in local report to log file; + - fix pkg/debug/debug_cs_corner_uv.F for the case nSy > 1 (left from + Jun 2009 modif of pkg/exch2). +o testing on baudelaire: + - run 2 tests at a time: no significant slow down (since enough cpu) and + get the full set of test done earlier + - switch the ifort test to "-devel" ; run the OpenAD test everyday. +o model/src/thermodynamics.F and routines called from it: + - pkg/gmredi: gmredi_residual_flow.F (replacing gmredi_calc_uvflow.F & + gmredi_calc_wflow.F) to update eulerian velocity (input) into residual + velocity (outp) by adding bolus velocity. + - model/src: calc_adv_flow.F (replacing calc_common_factors.F) to compute + mass transport from velocity + lateral grid cell area + - rename calc_gt.F to temp_integrate.F (includes call to TIMESTEP_TRACER) + - rename calc_gs.F to salt_integrate.F (includes call to TIMESTEP_TRACER) + in thermodynamics.F + - remove k from thermodynamics.F and move it to temp_integrate.F + salt_integrate.F and ptracers_integrate.F (now done inside the tracer + loop). + - compute locally (in thermodynamics.F) 3-D velocity field that is used to + advect tracers; pass it as argument to GAD_ADVECTION, GAD_SOM_ADVECT, + PTRACERS_ADVECTION, TEMP_INTEGRATE, SALT_INTEGRATE, PTRACERS_INTEGRATE, + GAD_IMPLICIT_R and PTRACERS_IMPLICIT + - update AD-output (TAF & OAD) of experiments: 1D_ocean_ice_column, + global_ocean.90x40x15, tutorial_global_oce_biogeo and + tutorial_tracer_adjsens (+ TLM output). +o tools/OAD_support and (verification/*/) code_oad: + - OAD_support/cb2mGetModules.csh: add PACKAGES_CONFIG.h in header file to + module conversion ; remove unneeded CPP_EEOPTIONS.h. + - code_oad/CPP_OPTIONS.h: remove PACKAGES_CONFIG.h and use a more standard + version (closer to model/inc/CPP_OPTIONS.h). +o model/src: + - remove parameter "useOldFreezing" from PARAMS.h and push it to the + retired list of parameters (routine FREEZE has been replace by surface + freezing (10.yrs ago) and by pkg/frazil (interior freezing). +o pkg/gmredi: + - add option (GM_CALC_TRANSP_FROM_VEL) to compute transport directly from + velocity (same scheme but affects machine truncation) for GM_AdvForm. + - update output of FWD experiments: front_relax.bvp, + global_ocean.90x40x15.dwnslp, global_ocean.cs32x15 and ideal_2D_oce. + +checkpoint64q (2013/11/17) +o verification: + - generate new output on baudelaire (gfortran, -ieee) for OpenAD experiments + tutorial_global_oce_biogeo and global_ocean.90x40x15. + - generate new output (growth & melt) for seaice_itd experiment after + updating the input pickup_seaice files (previously wrong). +o pkg/cost: + - define a "final cost function" for each tile, and use GLOBAL_SUM_TILE_RL + (instead of _GLOBAL_SUM_RL) to get the final cost from all procs & threads: + o this fixes global-sum value if multi-threads (since GLOBAL_SUM_RL + cannot be applied to var in common block). + o allows to get results independent of tile-per-proc setting (if using + slower GLOBAL_SUM_SEND_RECV option). + - update accordingly: seaice_cost_final.F, shelfice_cost_final.F, + thsice_cost_final.F and ecco_cost_final.F (this one affects lab_sea + forward gradients: update output). + - update */code_oad/externalDummies.F by adding dummy GLOBAL_SUM_TILE_RL + S/R and, for most exp., also comment out GLOBAL_SUM_R8. +o pkg/mom_common: + - move to pkg/mom_common and model/src (previously in tutorial_deep_convection + code) 2nd version of isotropic 3-D Smagorinsky code interface: strain and + viscosity are locally declared in dynmics.F and pass as argument to CALC_GW; + ensure that all field value that are used are set. +o tutorial_deep_convection (smag3d): + - add missing scaling in mom_calc_smag_3d.F; + - set smag3D_coeff in input.smag3d such that results do not change. +o pkg/dic: + - change dic_cost.F to compute cost on each tile first and then apply + GLOBAL_SUM_TILE_RL: this affects forward gradient of AD experiments + tutorial_dic_adjoffline & tutorial_global_oce_biogeo; update output. + - remove kLev argument and use GLOBAL_SUM_TILE_RL in tracer_meanarea. +o eesupp/src & pkg/mdsio: + - remove gather/scatter_vector.F (from eesupp) and mdsio_read/writevector.F + (from pkg/mdsio) since they are no longer used for tape IO. + - move simple C subroutine "setdir.c" from pkg/compon_communic to eesupp/src + (+ keep a copy in pkg/atm_ocn_coupler). +o verification/isomip: + - split domain in 8 squared tiles (instead of just 2) for FWD, AD & OAD tests. +o tools/build_options: + - optfile linux_amd64_ifort11, fast (no ieee) case: + to get a working restart for all experiments, add "-fp-model source" + to FOPTIM (also remove "-opt-streaming-stores auto" <- this is the default). + +checkpoint64p (2013/10/20) +o pkg/autodiff: + - adread_adwrite.F: when type and length do not match ALLOW_AUTODIFF_WHTAPEIO + criteria, return to simple (default) tape IO format. +o pkg/mdsio (+ eesupp/src): + - rewrite/simplify tape-IO S/R (new S/R MDS_READ/WRITE_TAPE replace + previous MDSREAD/WRITEVECTOR) with 2 array argument from each type (R4/R8); + - fix globalFile and singleCpuIO options using simpler global mapping. + - new pairs of scatter/gather vector S/R (one for each type, generated from + template) corresponding to simpler global mapping. + - adread_write.F: switch to new S/R (but leave old calls commented) and write + to globalFile when parameter globalFiles is set to True. + - switch on useSingleCpuIO in AD experiments: global_ocean.90x40x15 & isomip. +o pkg/autodiff: + - adread_adwrite.F: add a hack for RS arrays (when RS=real*4); + with ALLOW_AUTODIFF_WHTAPEIO defined, since corresponding (real*4) is + missing, just add a STOP if array type do not match. +o pkg/exf: + - to allow to use seaice-fraction from pkg/exf in other pkgs than pkg/seaice: + rename CPP option EXF_ALLOW_SEAICE_RELAX to EXF_SEAICE_FRACTION + and rename array obsSIce to exf_iceFraction. +o tutorial_deep_convection: + - add 1rst version of isotropic 3-D Smagorinsky code (from Louis-Philippe), + for now all in this exp. code dir. + - add secondary test using Smag-3D viscosity (keep very low backgroud visc for + testing) and flux-limter advection scheme for Temp. (no explicit diffusion). +o eesupp/src: + - added SINGLE_DISK_IO option because reading of parameter files on + very large number of processors did not work with existing set-up + +checkpoint64o (2013/09/25) +o pkg/atm_phys & atm_compon_interf: + - allows for coupling of gray-atmosphere (atm_phys) with ocean. +o tools/build_options: + - switch from "-fPIC" to "-mcmodel=medium" in optfiles: linux_amd64_gfortran + & linux_amd64_ifort11 and in linux_amd64_g77 & linux_amd64_open64 also + remove CPP setting (was identical to genmake2 default). +o pkg/gmredi & model/src: Some updating and work done on the residual model. + - created new file model/src/calc_eddy_stress.F to calculate the eddy stress. + - fixed up the calculation of the eddy stress and how it is added to the + external forcing via taueddy_external_forcing.F + - at the moment, it is very experimental and only works with the variable eddy + diffusivity calculated in gmredi_k3d.F +o pkg/seaice/seaice_check.F: add a check to catch the case of specifying + lw/swfluxfile instead of lw/swdownfile in data.exf together with pkg/seaice +o testreport (& tools/do_tst_2+2): + - for MPI test, set default COMMAND to 'mpirun -v -np TR_NPROC ./{executable}' +o tools/build_options: linux_amd64_gfortran & linux_amd64_ifort11: + - remove CPP='cpp -traditional -P' (this is genmake2 default) + - add switch (for big setups) to use 'medium' memory-model (but leave it + commented out for now). Note: needed with FC 19 to compile big setups. +o pkg/atm_compon_interf: + - regroup per field origin (model & pkgs) the coupling storage routines + (which accumalate in time each coupling field) + - move bi,bj loops inside atm_store_my_data.F and store also wind-stress; + update accordingly + simplify aim_do_physics.F + +checkpoint64n (2013/08/26) +o pkg/bbl: + - update formulation to reduce dispersion of tracer properties in bbl + - replaced horizontal and vertical transport parameters with velocities + - changes results for verification/global_with_exf.yearly +o verification/halfpipe_streamice: + - change to matrix construction; update both Fwd & AD output. +o verification/tutorial_tracer_adjsens: + - OpenAD test: switch to vector-invariant momentum since fluxform with + rStar causes problems with OpenAD; update output. +o tools: + - genmake2: define a common prefix for all temp-file names ; move them + to local /tmp disk (but would be easy to move them back); + - xmakedepend: apply the same switch for temp-files. +o pkg/offline: + - changes for use with rStar (NLFS): assume that we continue to provide + UVELMASS/hFacW_ini & VVELMASS/hFacS_ini (hFacWi,S_ini as written in grid + output files) and apply r* scaling at each time-step (function of the time + varying Eta field); use normal pickup files (needed for restart with NLFS). +o adjoint with OpenAD: + - move OpenAD-specific files from verification/OpenAD/code_oad_all to a new + package openad. This package has to be compiled for all runs with OpenAD + instead of specifying code_oad_all as a modification directory. + - link the fortran templates from tools/OAD_support to the build directory + for preprocessing to avoid conflicts between different setups compiled + simultaneously and simplify cleanup. +o pkg/exf: + - in exf_getforcing.F: comment out most of the EXCH calls (fields used by + main model or other pkgs are exchanged in EXF_MAPFIELDS). +o model/src: + - do_stagger_fields_exchanges.F: skip EXCH calls when using pkg/offline + (similar to do_fields_blocking_exchanges.F). +o tools/genmake2: + - remove TAF output src code just before calling staf (when not doing a fresh + built, will stop if things go wrong with staf). + - fix target "adobj" (left from TAF version-2 transition) +o pkg/diagnostics: + - add a parameter to track the status of pkg/diagnostics activation; + this replace/extend the use of logical param "settingDiags" (to check + when adding diag to the list) to also check any DIAGNOSTICS_[]FILL* call. + New S/R to print error message and stop when pkgStatus is not right. + - to try: add a warning when "data.diagnostics" exist but useDiagnostics=F. + +checkpoint64m (2013/08/13) +o model/inc: + - move FCORI_MACROS.h from PARAMS(_MACROS).h to GRID_MACROS.h (left from + 8 yrs ago modif when Coriolis arrays were moved from PARAMS.h to GRID.h) +o pkg/kpp & aim_v23: + - only call DIAGNOSTICS_FILL when useDiagnostics=TRUE. +o pkg/seaice: + - restore (last time on 2011/12/24) ability to compile pkg/seaice with + undefined pkg/exf ALLOW_ATM_TEMP or ALLOW_RUNOFF CPP-options. + - only call DIAGNOSTICS_FILL when useDiagnostics=TRUE. +o eesupp/src: + - fix check for overlap-size argument (myOLn.GT.MAX_OLY_EXCH) + in exch1_rx[_ad].template (thanks to Francois Lefeuvre report). +o switch to TAF version-2: + - add flow directives to "freeze" naming convention for ad-routines that + are used in I/O routines of adjoint state and associated common blocks + that are used in adcommon.h (backward compatible with version-1) + - update all ad-optfiles (in tools/adjoint_options + few local to some + verification exp) to switch to latest TAF version (currently 2.5.5); + merge "*_mpi" adoptfiles into the corresponding non-mpi (but commented + out except for diva). + - the major change with TAF version-2 is that both the differentiated + routines and the forward routines (new) are returned as part of the TAF + output source code. Update genmake2 accordingly. + - new output for AD experiment tutorial_global_oce_biogeo (better AD gradient + with version-2 when compared to TLM or FWD gradient); other experiments + output show minor changes (machine truncation level); update the few AD & + TLM output with 12 matching digits only (some prior to version-2 switch). + +checkpoint64l (2013/08/05) +o model/src: + - in dynamics.F, skip the call to CALC_VISCOSITY if momViscosity=F + - main_do_loop.F: no longer includes additional (AUTODIFF) header files + when using TAF but only if using OpenAD. +o pkg/mom_common+fluxform+vecinv: + - always set horiz. viscosity arrays to background value before calling + MOM_CALC_VISC (in MOM_FLUXFORM & MOM_VECINV) and call S/R MOM_CALC_VISC + only when using variable horiz. viscosity (useVariableVisc=T); + - simplify mom_vecinv.F (only 1 block for momViscosity). +o pkg/mom_common: variable horiz. viscosity in NH code + - move horiz-viscosity 3-D arrays viscAh_W & viscA4_W (used in calc_gw.F) + from model/inc/NH_VARS.h to pkg/mom_common/MOM_VISC.h + - store in common block (in MOM_VISC.h) logical parameters: useHarmonicVisc, + useBiharmonicVisc & useVariableVisc. + - fix old bug (already in 1rst implementation of variable horizontal viscosity + in calc_gw.F, version 1.27, 2006/06/20): + horizontal bi-harmonic viscosity in gW was missing when wiscA4W=0 + even if variable bi-harmonic viscosity (e.g., viscA4Grid) was non-zero. + - change background horiz viscosity in vertical momentum (gW) to always be + viscAhW,viscA4W (instead of switching to viscAhD, viscA4D when using + any type of variable viscosity, e.g., viscAh/4Grid) + - change default value of viscAhW,viscA4W to viscAhD,viscA4D (instead of + viscAh,viscA4) which default to viscAh,viscA4 : this avoid missing + horiz. viscosity in W eq when just setting viscAhD/Z,viscA4D/Z (since + default viscAh,viscA4 is zero). +o model/src: + - extend length of drC & recip_drC from Nr to Nr+1. +o Divided Adjoint (DIVA) with MPI: + - genmake2: do not create local ./mpi_headers dir when no file to copy into. + - remove option ALLOW_DIVIDED_ADJOINT_MPI (replaced by ALLOW_DIVIDED_ADJOINT + and ALLOW_USE_MPI) from model/src code and from ECCO_CPPOPTIONS.h. + +checkpoint64k (2013/07/23) +o tools/OAD_support: + - avoid the need for file "oadtempflile" in insertTemplateDir.bash + and remove it from genmake2. +o tools/build_options: + - remove MPI_HEADER_FILES_INC setting (no longer used) and comment out + MPI_HEADER_FILES list (let genmake2 find the missing headers) +o verification/halfpipe_streamice: + - change to driving stress formulation; update both Fwd & AD output. +o tools/genmake2 and Divided Adjoint with MPI: + - remove default setting of MPIINCLUDEDIR from $MPIHOME (always been broken); + - only create local ./mpi_headers dir if using MPI and MPIINCLUDEDIR is set; + - add new variable (LOCAL_MPI_HEADERS, replace MPI_HEADER_FILES_INC) in + Makefile, which is set by genmake2, and check which mpi-headers are needed. + Note: need to update adjoint_options/adjoint_diva_mpi accordingly. + - update target "CLEAN" (to also remove ./mpi_headers/ dir). +o testreport: + - changes for Divided Adjoint Run: when file "run_ADM_DIVA" is present, + perform additional runs (number of additional runs is "add_DIVA_runs" taken + from file run_ADM_DIVA ; should match "nchklev_3" in file "code_ad/tamc.h"). +o verification/lab_sea (AD test): + - change to test Divided Adjoint Run in this set-up (both standard AD test + and 2 secondary AD test: noseaice + noseaicedyn); drop the evp AD test. +o pkg atm_ & ocn_compon_interf: + - remove cpl_earlyExpImpCall=F option (was mainly a hack added for the old + staggerTimeStep implementation) and disable (retired) corresponding + parameter. +o pkg/offline: + - comment out unused field-array: ICEM, ConvectCount, hflx[01], icem[01]; + - add S/R OFFLINE_CHECK to print offline parameter summary + and stop if loading a file that is not used; + - enable to calculate GMRedi tensor, KPP mixing and convective index + when the corresponding file(s) is/are not specified (but pkg is used). + - comment out resetting of monitorFreq (to endTime) since it still useful + for monitoring CFL numbers and checking offline fields. +o OpenAD: + - do not define OAD_DEBUG (in tools/adjoint_options/adjoint_oad) to get + smaller standard output) and generate new (smaller) output (on baudelaire + using gfortran with -ieee) for exp. tutorial_tracer_adjsens +o model/src: + - call EXTERNAL_FORCING_SURF outside bi,bj loops (in do_oceanic_phys.F), + (where external_forcing_adjust was called) and change list of arguments; + - merge external_forcing_adjust.F into external_forcing_surf.F + - put surface relaxation of SST & SSS in new S/R (forcing_surf_relax.F) + which also contains balancing surface relaxation (ALLOW_BALANCE_RELAX, + previously in file "balance_relax.F", now removed); remove corresponding + arrays in FFIELDS.h. + - EXTERNAL_FORCING_SURF is now called when using pkg/offline; implement + a hack for getting back surfaceForcingS (loaded from file) when using + ALLOW_OLD_VIRTUALFLUX (pkg/dic, in DIC_OPTIONS.h) in offline set-up. + - update output of AD test experiment global_ocean.cs32x15.seaice_dynmix + (was getting only 11 digits for AD-grad, due to different truncation + error in AD code). + +checkpoint64j (2013/07/04) +o pkg/offline: + - to enable the use of other features with pkg offline (e.g., obcs), + also call S/R DO_OCEANIC_PHYS in offline run - more modifs to come. + - comment out "allowFreezing" (now active) in 2 offline testing exp. o pkg/exf ALLOW_RUNOFTEMP - fix sign and make compatible with temp_EvPrRn .NE. UNSET_RL - - added RUNOFTEMP test to verification/global_ocean.cs32x15/input.seaice + - ahdded RUNOFTEMP test to verification/global_ocean.cs32x15/input.seaice - changes verification/global_ocean.cs32x15/results/output.seaice.txt o pkg/atm_phys: - allows to add some damping on uVel,vVel (strength only function of k).