Parent Directory | Revision Log | Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Links to branch-atmos-merge: | (view) (download) (annotate) |
Sticky Tag: |
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 |