Parent Directory | Revision Log | Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Links to checkpoint61g: | (view) (download) (annotate) |
Sticky Tag: |
do not write pickup from THE_MODEL_MAIN but always from FORWARD_STEP
It bloody still doesnt work $%@#
Getting rid of mytime in adthe_main_loop for all.
very temporary fix to get the AD testing back (Patrick will fix it the correct way later)
Argument list for ADTHE_MAIN_LOOP changed (still fragile).
comments: always spell tendency the same way (easier to grep for)
clean-up the read / write pickup S/R
add few calls to BAR_CHECK to check multi-threading barrier synchronization
Adding the viscosity calculation to flow chart.
Updates to support PCL performance counters, fix real*4 bug for PAPIS and enhance PAPI counter support (including IPC per timestep output)
fix a load of small spelling and other inconsistencies so that the call tree in the model comments exactly matches the call tree in the manual
Adding flags doMainPack, doMainUnpack, to control packing of ctrl vector
Added call to initialize PAPI.
remove the include CG3D.h (not needed)
Close diagnostics output files
Call ctrl_unpack always at niter0
Changed CPP flags for ADMTLM
Move ctrl_pack for ctrl of optimcycle=0 to end
More untangling.
untangle one ctrl vs. autodiff include
Remove now obsolete #ifdef for header optim.h
More on dsvd vs. MITgcm interfacing o handling of g_, ad, via admtlm_vector (mds...vector) o use ctrl_pack/unpack for admtlm_vector I/O o use optimcycle for dsvd iteration o make sure norm is w.r.t. derived quantities
o move useMNC and related runtime switches to PARAMS.h
o remove all tr1-related code (ALLOW_PASSIVE_TRACER) (adjoint stuff still has some tr1 names, but all use ptracer arrays)
o overhaul of IO so that we now have flags for MDSIO and/or MNC - all verification tests compile and run with linux_ia32_g77 - defaults are compatible with current input files--nothing should change if you were not previously using MNC - MNC output has been added in numerous places (eg. timeave) but there are still a few writes not yet do-able with MNC (this is in progress) - flags now allow for either/or/both use of MDSIO and MNC and documentation will soon follow - numerous small formatting cleanups for ProTeX
o add checkpoint to call tree
IF-optimcycle moved to top level
o add "useMNC" flag for run-time selection of MNC
o edit all MNC subroutines so that myThid is the _last_ argument
o moved SEAICE_DO_DIAGS to S/R do_the_model_io o bug fix for pkg/seaice pickups
o paramter list of CALL ADTHE_MAIN_LOOP o initial do_the_model_io
Really weird thing! call do_the_model_io from the_main_loop with parameters starttime, niter0 instead of mytime, myiter screws up the adjoint: TAF places a faulty re-call of initialise_varia after cost call which shouldn't be there!
o first working (tested) version of MNC that duplicates most of the model/src/write_state.F functionalty o add MNC hooks in write_state.F and the_model_main.F o fix loop nesting error in mnc_reshape.template o add MNC_VAR_APPEND_* routines for UNLIMITED-dim variables
move "call seaice_write_pickup" to packages_write_pickup with other pkgs
new S/R that calls each $PKG_write_pickup (if needed)
o modifications to make FREEZE flux visible to pkg/kpp - moved surfaceTendencyTice from pkg/seaice to main code - FREEZE moved to FORWARD_STEP - subroutine FREEZE now limits only surface temperature this means new output.txt for global_ocean.90x40x15, global_ocean.cs32x15, and global_with_exf, but note that results for these three experiments remain bit-identical to before if allowFreezing=.FALSE. o added surface flux output variables to TIMEAVE_STATVARS o time-averaged output for pkg/ptracers
o merging from ecco-branch o minor CPP options update
o cleanup: convert '#ifndef DISABLE_DEBUGMODE"' to '#ifdef ALLOW_DEBUG"'
ctrl package totally restructured o pack/unpack now optional and decoupled from xx_/adxx_ I/O o ctrl_pack/unpack cleaned (new routines ctrl_init_ctrlvar.F, pkg/ctrl/ctrl_init_wet.F) o confined inclusion of AD_CONFIG.h to where necessary.
o cleaning ALLOW_GRADIENT_CHECK -> ALLOW_GRDCHK o cleaning some ALLOW_TANGENTLINEAR_RUN -> ALLOW_AUTODIFF o bug fix in find_alpha.F for MDJWF: - modif. to alpha = 1/D*( dN/dT - rho*dD/Dt) to account for change rho -> rho-rhoConst - replace call find_rho to find_rhonum
o undid all of the cp51 checkin pending some ongoing code cleanups and discussion
o modifications to make FREEZE flux visible to pkg/kpp - moved surfaceTendencyTice from pkg/seaice to main code - FREEZE & EXTERNAL_FORCING_SURF moved to FORWARD_STEP - subroutine FREEZE now limits only surface temperature (this means new output.txt for global_ocean.90x40x15, global_ocean.cs32x15, and global_with_exf) o added surface flux output variables to TIMEAVE_STATVARS
o added the [#include "AD_CONFIG.h"] statement to all files that need it for adjoint/tl #defines o re-worked the build logic in genmake2 to support AD_CONFIG.h o removed tools/genmake since it no longer works
o first check-in for the "branch-genmake2" merge o verification suite as run on shelley (gcc 3.2.2): Wed Oct 8 23:42:29 EDT 2003 T S U V G D M c m s m s m s m s E p a R g m m e . m m e . m m e . m m e . N n k u 2 i a a d i a a d i a a d i a a d 2 d e n d n x n . n x n . n x n . n x n . OPTFILE=NONE Y Y Y Y 13 16 16 16 0 16 16 16 16 16 16 16 16 13 12 0 0 pass adjustment.128x64x1 Y Y Y Y 16 16 16 16 0 16 16 16 16 16 16 0 0 16 16 0 0 pass adjustment.cs-32x32x1 Y Y Y Y 16 16 16 16 0 16 16 16 16 16 16 22 0 16 16 22 0 pass adjust_nlfs.cs-32x32x1 Y Y Y Y -- 13 13 16 16 13 13 13 13 16 16 16 16 16 16 16 16 N/O advect_cs Y Y Y Y -- 22 16 16 16 16 16 16 13 16 16 16 16 16 16 16 16 N/O advect_xy Y Y Y Y -- 13 16 13 16 16 16 16 16 16 16 22 16 16 16 16 16 N/O advect_xz Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass aim.5l_cs Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 16 pass aim.5l_Equatorial_Channel Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 13 16 16 13 13 16 pass aim.5l_LatLon Y Y Y Y 13 16 16 16 16 16 16 16 16 16 13 12 13 13 16 13 16 pass exp0 Y Y Y Y 14 16 16 16 16 16 16 16 22 16 16 16 13 16 16 22 16 pass exp1 Y Y Y Y 13 13 16 13 16 16 16 16 16 13 13 16 16 13 13 13 13 pass exp2 Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass exp4 Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass exp5 Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass front_relax Y Y Y Y 14 16 16 13 13 16 16 13 13 16 13 13 16 12 13 13 16 pass global_ocean.90x40x15 Y Y Y Y 10 16 16 13 13 16 13 16 16 13 13 13 13 16 16 13 16 FAIL global_ocean.cs32x15 Y Y Y Y 6 11 12 13 13 12 13 16 13 9 9 9 9 10 9 9 11 FAIL global_ocean_pressure Y Y Y Y 14 16 16 13 16 16 16 13 13 13 13 13 16 12 16 13 16 pass global_with_exf Y Y Y Y 14 16 16 16 16 16 16 16 16 11 13 22 13 16 16 9 16 pass hs94.128x64x5 Y Y Y Y 13 16 16 16 16 16 16 16 16 11 16 16 16 13 16 22 13 pass hs94.1x64x5 Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 13 13 16 16 22 13 pass hs94.cs-32x32x5 Y Y Y Y 10 10 16 13 13 16 16 16 22 16 13 13 13 13 13 22 13 FAIL ideal_2D_oce Y Y Y Y 8 16 16 16 16 16 16 16 16 13 13 8 16 16 16 16 16 FAIL internal_wave Y Y Y Y 14 16 16 16 16 16 16 16 16 13 13 22 13 13 13 22 16 pass inverted_barometer Y Y Y Y 12 16 16 16 16 16 16 16 16 16 13 12 13 13 13 13 13 FAIL lab_sea Y Y Y Y 11 16 16 16 16 16 16 16 13 13 13 12 13 16 13 12 13 FAIL natl_box Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass plume_on_slope Y Y Y Y 13 16 16 16 16 13 16 16 16 16 16 16 16 13 16 16 16 pass solid-body.cs-32x32x1
modification to make gchem more versatile
Bringing code up to date for AD o remove some IF-statements which cause excessive dependencies o provide interface for ADM*TLM
just comments ...
o Mods and bug fixes to pkg/cal, pkg/exf, etc. needed for computation of tracer Green's fucntions for ocean inversion project.
one last merge.
Extended pkg/debug and instrumented main code to help track down fatal errors.
initialise lastdiva
Modif.s for correct DIVA handling: Modif.s in - ecco_the_main_loop.F - ecco_the_model_main.F and added cost_final_restore.F cost_final_store.F o With these changes, it is possible to fully separate the first forward run to compute the cost function (mdthe_main_loop) and adjoint runs over individual DIVA intervals (adthe_main_loop) into separate model executions. This enables better tuning of DIVA to given queue sizes. o Loss of cost function value in consecutive DIVA runs is fixed by storing to 'costfinal' file. o Appropriate call of ctrl_unpack/_pack,grdchk_main at beginning/end of adjoint integration is accounted for. The current changes apply to TAF-1.4.26. TAF has one remaining bug, requiring one manual change (see MITgcm manual).
Modif. for DIVA: ctrl_unpack should not be called in intermediate DIVA interval.
o SEAICE_WRITE_PICKUP needs to be called before WRITE_CHECKPOINT
Merging from release1_p12: o Modifications for using pkg/exf with pkg/seaice - improved description of the various forcing configurations - added basic radiation bulk formulae to pkg/exf - units/sign fix for evap computation in exf_getffields.F - updated verification/global_with_exf/results/output.txt o Added pkg/sbo for computing IERS Special Bureau for the Oceans (SBO) core products, including oceanic mass, center-of-mass, angular, and bottom pressure (see pkg/sbo/README.sbo). o Lower bound for viscosity/diffusivity in pkg/kpp/kpp_routines.F to avoid negative values in shallow regions. - updated verification/natl_box/results/output.txt - updated verification/lab_sea/results/output.txt o MPI gather, scatter: eesupp/src/gather_2d.F and scatter_2d.F o Added useSingleCpuIO option (see PARAMS.h). o Updated useSingleCpuIO option in mdsio_writefield.F to work with multi-field files, e.g., for single-file pickup. o pkg/seaice: - bug fix in growth.F: QNET for no shortwave case - added HeffFile for specifying initial sea-ice thickness - changed SEAICE_EXTERNAL_FLUXES wind stress implementation o Added missing /* */ to CPP comments in pkg/seaice, pkg/exf, kpp_transport_t.F, forward_step.F, and the_main_loop.F o pkg/seaice: - adjoint-friendly modifications - added a SEAICE_WRITE_PICKUP at end of the_model_main.F
checkpoint47f_post Merging from release1_p10: o modifications for using pkg/exf with pkg/seaice - pkg/seaice CPP options SEAICE_EXTERNAL_FORCING and SEAICE_EXTERNAL_FLUXES - pkg/exf CPP options EXF_READ_EVAP and EXF_NO_BULK_COMPUTATIONS - usage examples are Experiments 8 and 9 in verification/lab_sea/README - verification/lab_sea default experiment now uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf
o cleaned up the use of rhoNil and rhoConst. - rhoNil should only appear in the LINEAR equation of state, everywhere else rhoNil is replaced by rhoConst, e.g. find_rho computes rho-rhoConst and the dynamical equations are all divided by rhoConst o introduced new parameter rhoConstFresh, a reference density of fresh water, to remove the fresh water flux's dependence on rhoNil. The default value is 999.8 kg/m^3 o cleanup up external_forcing.F and external_forcing_surf.F - can now be used by both OCEANIC and OCEANICP
o Include a new diagnostic variable phiHydLow for the ocean model - in z-coordinates, it is the bottom pressure anomaly - in p-coordinates, it is the sea surface elevation - in both cases, these variable have global drift, reflecting the mass drift in z-coordinates and the volume drift in p-coordinates - included time averaging for phiHydLow, be aware of the drift! o depth-dependent computation of Bo_surf for pressure coordinates in the ocean (buoyancyRelation='OCEANICP') - requires a new routine (FIND_RHO_SCALAR) to compute density with only Theta, Salinity, and Pressure in the parameter list. This routine is presently contained in find_rho.F. This routine does not give the correct density for 'POLY3', which would be a z-dependent reference density. o cleaned up find_rho - removed obsolete 'eqn' from the parameter list. o added two new verification experiments: gop and goz (4x4 degree global ocean, 15 layers in pressure and height coordinates)
Enable tangent linear (forward mode) gradient checks: o extended active file handling to g_... files o added TANGENT_SIMULATION to theSimulationMode o extended grdchk package accordingly
* Updated adjoint/makefile o removed "_ecco" from names o added/modified forward mode options o added dependent vector option o tried SVD matrix computation (doesn't work; too much memory use by TAF) * Updated flow directives related to FTL * removed global_sum__g.F (not necessary) * initialise forward mode anomalies in ctrl_unpack.F (so far "crude" initialization only). * Added flag ALLOW_TANGENTLINEAR_RUN complememting ALLOW_ADJOINT_RUN * driver routine the_model_main.F needs separate call to FTL routine G_THE_MAIN_LOOP with parameter list identical to THE_MAIN_LOOP (TAF doesn't remove arguments). * added template file tangentlinear_model.F for forward mode.
Changes for structuing protex document.
Bringing comments up to data and formatting for document extraction.
Starting to bring comments up to date and format comments for document extraction of "prototypes".
Added a few re-initialisations for TAF.
o Added grdchk package handling o Added passive tracer handling
See doc/tag-index and doc/notes_c37_adj.txt Preparation for stand-alone autodifferentiability.
Modifications and additions to enable automatic differentiation. Detailed info's in doc/notes_c37_adj.txt
remove "include CG2D.h"
move the IO at the end of a time step
set initial Time & Iteration counter in the_model_main and pass them as argument to the_main_loop
Made sure each .F and .h file had the CVS keywords Header and Name at its start. Most had header but very few currently have Name, so lots of changes!
Restructered the calling tree between THE_MODEL_MAIN() and DYNAMICS(). Two calling levels have been inserted to better split the "fixed" initialization phase from the main time-loop for easier connectivity with the adjoint infrastructure. The calling tree now looks like: the_model_main: initialise_fixed() the_main_loop() the_main_loop: initialise_varia() do i=1,nIters forward_step() enddo forward_step() forward_step: load_external_fields() dynamics() do_the_model_io() solve_for_pressure() do_gterm_blocking_exchanges() write_checkpoint()
Corrected interaction between OBCs and algorithm. The positioning of set_obcs() within the time-stepping sequence is crucial for stable open-boundaries. Forcing the boundaries with time-dependent flow previously led to horrible results...
Converted ALLOW_DIAGS to INCLUDE_DIAGNOSTICS_INTERFACE_CODE. This allows the diagnostics I/O to happen for the very last step of the integration. Spotted by C.E.
Changed some erroneous declarations of myCurrentTime (sometimes myTime) from REAL to _RL. This probably was caught before because most people are using -r8 compile option in conjuction with REAL4_IS_SLOW which converts everything to real*8. Spotted by C.E.
Added CPP macro ALLOW_OBCS to include/exclude open boundary code.
Removed some debugging.
Modifications for non-hydrostatic ability + updates for open-boundaries.
Some simple fixes that save a bit of memory. o AVER.h was included even if not be used. o gW, gWnm1 and cg3d_nm1 existed in DYNVARS.h and are only needed in the non-hydrostatic version (which this isn't).
Added IMPLICIT NONE in a lot of subroutines. Also corrected the recip_Rhonil bug: we didn't set it in ini_parms.F
Implementation of Open Boundaries: o new source code: ini_obcs.F set_obcs.F apply_obcs1.F apply_obcs2.F OBCS.h o modified code at a few points, key changes are in dynamcis.F the_model_main.F and ini_cg2d.F o documentation in OBCS.h and doc/OpenBound.*
Changes to allow for atmospheric integration builds of the code
Changes to support - g77 compilation under Linux - LR(1) form of 64-bit is D or E for constants - Modified adjoint of exch with adjoint variables acuumulated.
Changes for new exchange routines which do general tile <-> tile connectivity, variable width overlap regions and provide hooks for shared memory and DMA protocols like Arctic, Memory Channel etc..
Added loads of "timers" to the_model_main(). Should we provide a mechanism to disable them?
Changed the #include at the top from CPP_EEOPTIONS.h to CPP_OPTIONS.h This ought to be done through-out (?) but was necessary in at least the_model_main.F, dynamics.F, ini_parms.F because of the new macro ALLOW_DIAGNOSTICS.
The time-averaging diagnostics has been modified to include averages of "intermediate" quantities that exist only on a tile. We currently only time-average K13, K23 and wVel but these should be usable as a template for other diagnostics. We have now split off these routines into a separate module called diags/. Use of these routines is enabled by the CPP flag ALLOW_DIAGNOSTICS set in model/inc/CPP_OPTIONS.h
Changes to make checkpointing work again!
Various changes including time-dependant forcing: o logic for controlling external forcing fields now allows for time-dependant forcing: load_external_fields.F o genmake.dec needed a special line for the above file. o theta* and salt* time-stepping algorithm were re-implemented. The 4x4 global configuration has been "double-checked" against CNH's version. However, we do not assume any responsibility for the correctness of this code ... 8-)
Added time-averaging (written by Elodie K.). Controlled by parameter taveFreq. taveFreq=0 turns it off.
Introduced time-dependant forcing, loaded and interpolated in load_external_fields.F in a subroutine load_interpolate_forcing(). Control is by one logical and two real variables in PARAMS.h: periodicExternalForcing, externForcingCycle and externForcingPeriod. The code in load_external_fields.F is "customized" so needs to be edited for non-global type runs. We'll tidy it up later.
Added a "final" call to dynamics() in the_model_main() so that there really are nTimeSteps update of U/V/Theta/Salt.
Fairly coplete 4 degree global intercomparison setup. Includes changes to make convective adjustment and hydrostatic pressure correct as well as IO for climatological datasets
Added code structure comments and rearranged code to adhere to clean structure.
Swapped the time-stepping algorithm around (just a little bit). We now officially use the predictor-corrector terminology. We make the prediction step at the end of the dynamics() section and store the result in the gUNm1, gVNm1, gTNm1 arrays. The "tricky" part is that at the beginning of the dynamics section, where the "correction" is made, theses arrays must be initialised at the beginning of any run. A new routine init_predictor() does this. This is "all" in preparation for implicit diffusion. Let's hope it's enough...
Added extra IO features - runtime on/off flags - more reporting of configuration
Added support for binary IO of model fields for restart and/or postprocessing
*** empty log message ***
*** empty log message ***
Minor formatting change
$Id to $Header changes
Further $Id to $Header conversions
Initial revision
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
ViewVC Help | |
Powered by ViewVC 1.1.22 |