Parent Directory | Revision Log | Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Links to checkpoint58h_post: | (view) (download) (annotate) |
Sticky Tag: |
Modifications for bottom topography control o replace hFacC by _hFacC at various places o replace ALLOW_HFACC_CONTROL by ALLOW_DEPTH_CONTROL o add non-self-adjoint cg2d_nsa o update autodiff support routines o re-initialise hfac after ctrl_depth_ini o works for 5x5 box, doesnt work for global_ocean.90x40x15
Enable variable grid visc. for adjoint, but still exclude calcLeith and calcSmag
o Now rstar adjoint.
Adding relevant headers for obcs+ptracers adjoint.
add ifdef ALLOW_MOM_COMMON which was missing.
Adding stores following implicitIntGravWave
1rst implementation of Implicit IGW using the 3-D solver (use3Dsolver=T) and based on the reference stratification
isolate forward stepping of wVel in new S/R (previously part of calc_gw)
First step for a NLFS adjoint o initially suppress rStar (new flag DISABLE_RSTAR_CODE) o new init. routines for calc_r_star, calc_surf_dr o still need to deal with ini_masks_etc o testreport seemed happy
add exch of gU,gV at the end, only for checking (and within #ifdef/#endif)
call impldiff with tracerId=-1,-2 for gU,gV resp. (to do diagnostics inside)
add debug messages.
call CALC_GW from DYNAMICS (instead of from FORWARD_STEP)
dissipation & Hydrostatic-Phi gradient are always added to gU,gV in timestep.F (was already the case for dissipation with mom_vecinv, and also the case for grad.PhiHyd if staggered-timeStep) This allows to put dissipation out-off the AB time-stepping.
call diagnostics_scale_fill (instead of diagnostics_fill) and avoid temp array
go back to version 1.117: DIAGNOSTICS_IS_ON function call not needed for direct filling
Insert if sequence to check for whether diagnostic is activated
Bug fix with new diag
Add code to fill new diag of phi squared
do not refer to gxNm1 if unnecessary (to work also with AB-3)
use baseTime as time origin ; DIFF_BASE_MULTIPLE replaces DIFFERENT_MULTIPLE
move state variable diagnostics to the beginning of the time step.
remove re-initialisation of totPhiHyd o now obsolete for z-coord. o and wrong for p-coord. with pickup
change argument list of S/R impldiff.F: tracerIdentity replace deltaT - allow to implement deltaT function of level k - make diagnostics easier
isolate dissipation tendency (allow to keep it out off AB) note: only implemented in vector-invariant form.
Adding obcs exchanges for useOBCSprescribe
o bringing adjoint up to date for sheduled c55
re-write staggerTimeStep: step forward momentum 1rst and then T,S
add calls for implicit vertical direction (advection & diffusion) but keep impldiff for implicit diffusion & viscosity only.
o cleanup: convert DISABLE_MOM_FLUXFORM & DISABLE_MOM_VECINV to the newer ALLOW_${pkg} form - the only remaining package-based "special case" within genmake2 is the one for AIM vs. AIM_V23
o cleanup: convert '#ifndef DISABLE_DEBUGMODE"' to '#ifdef ALLOW_DEBUG"'
o updated and tested version of the cd_code package o almost all of the cd_code functionality has been moved into the package but some cleanups (read/write checkpoints) remain
o add a "cd_code" package and update all the verification tests so that they use the new package instead of "INCLUDE_CD_CODE"
adjusted some flow directives
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
Bringing code up to date for AD o remove some IF-statements which cause excessive dependencies o provide interface for ADM*TLM
o introducing integer flag debugLevel o introducing pathname variable mdsioLocalDir for mdsio
Preparing next differentiable checkpoint and sync of MAIN vs. ecco-branch (updating store after changes in checkpoint50b_post, plus still messing around with init. sequence).
o store u*,v* in gU,V instead of in gu,vNm1 o to allow to put the momForcing out of the Adams-Bashforth: move forcing & CD-scheme calls from mom_fluxform & mom_vecinv to timestep.F o new flag "useCDscheme" (default=F); replace guCD,gvCD by local arrays
Changes to restore differentiability of code w.r.t. previous tag (mostly adding new routines to make list and replacing pressure by totPhiHyd).
o compute locally the pressure for use in EOS: UNESCO, JMD95P or MDJWF o store total Potential in totPhyHyd for diagnostic & EOS funct. of P o fix restart and overlap Pb when using Z-coord and EOS funct. of P
dynamics: change definition of computational domain & adapt mom_fluxform accordingly ; when viscA4=0, allows to run the dynamics with Olx=Oly=2.
in preparation for r*: new S/R (calc_grad_phi_hyd.F) to compute Hydrostatic potential gradient. pass the 2 comp. of the grad. as arguments to momentum S/R. for the moment, only used if it does not change the results.
differentiable version of checkpoint46n_post o external_fields_load now part of differentiation list o pressure needs multiple storing; would be nice to have store_pressure at beginning or end of forward_step, e.g. by having phiHyd global (5-dim.) (NB: pressure is needed for certain cases in find_rho, which is also invoked through convective_adjustment). o recomputations in find_rho for cases 'JMD95'/'UNESCO' or 'MDJWF' are OK. o #define ATMOSPHERIC_LOADING should be differentiable o ini_forcing shifted to begining of initialise_varia
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)
o Added new equation of state -> JMD95Z and JMD95P - EOS of Jackett and McDougall, 1995, JPO - moved all EOS parameters into EOS.h - new routines ini_eos.F, store_pressure.F o Added UNESCO EOS, but not recommended because it requires in-situ temperature (see JMD95) o Modified formatting for knudsen2.f in utils/knudsen2 and added unesco.f to be used with POLY3
Merging from release1_p5 (cf. tag-index for checkpoint46).
Moved some initialisations into bi,bj loop. Needed for flow dependency by TAF.
o Modified initialisations to break adjoint dependencies o removed some store directives o added options files for KPP, GMREDI
Removed arrays which are no longer needed.
fix diagnostic of convective adjustment (IVDC) (broken since thermo-/dynamics split)
Fixed AD-related problems: o Store directives up-to-date with re-arranged Adams-Bashforth (mainly thermodynamics.F) o New store directives for multi-dim. advection schemes * new CPP flag ALLOW_MULTI_DIM_ADVECTION * new common block and key passkey (mainly gad_advection.F) o Modified store directives for split of dynamics/thermodynamics for the case ALLOW_KPP o Cleaned argument list for timestep_tracer.F
Bringing comments up to data and formatting for document extraction.
Re-arranged sequence of operations for Adams-Bashforth o this does not change numbers o this makes it very easy to extract forcing/diffusion out of ABII by changing calling sequence in calc_gt, calc_gs,... Key modifications: o new s/r: ADAMS_BASHFORTH2 gT=3/2*gT-1/2*gTnm1 o changed TIMESTEP_TRACER from gTnm1=t+dt*(3/2*gT-1/2*gTnm1) to gT=T+dt*gT o changed CALC_GT,CALC_GS & CALC_GTR1 to calcuate "gT" defined by new timestep_tracer (ie. including forcing, ABII, N-L F-S, etc...) now calls ADAMS_BASHFORTH2 and FREESURF_RESCALE_G o changed CYCLE_TRACER appropriately T=gT only Other associated mods: o new s/r: FREESURF_RESCALE_G applies non-linear free-surface term this used to be in TIMESTEP_TRACER o added myIter as argument to CALC_GS,CALC_GT,CALC_GTR1
Added method for dumping intermediate local arrays: mdsio_writetile - same as mdsio_writefield except works from inside bi,bj loop mdsio_writelocal - same as mdsio_writetile except works for local arrays write_local_r? - higher-level wrapper for mdsio_writelocal Controlled by diagFreq. Defaults to zero (ie. no dumps) Example given at end of mom_vecinv.F that dumps some local arrays.
Added run-time control of vector-invariant/flux-form momentum eqns.
Re-instated all relevant initialisations.
Moved call to calc_viscosity before k=1,Nr loop.
Modifications related to split into thermodynamics.F, dynamics.F o missing initialisations in dynamics.F added o some fields no longer needed in dynamics/thermodynamics deleted o split of calc_diffusivity.F into calc_viscosity.F (plus split of kpp_calc_diff.F into kpp_calc_visc.F) o Modifications of some store directives for TAF
Split dynamics.F into dynamics.F and thermodynamics.F - idea is to make algorithm more transparent??? - probably less efficient - has exchanges at end of thermodynamics.F (which are needed if using staggered time-stepping with the cube OR using AIM.
Extended iMin,jMin range for calc_common_factors, calc_diffusivity.
Missing diag call for uVel.
o Added grdchk package handling o Added passive tracer handling
Add to main branch of o CS atmos with AIM physics o Multi-threaded AIM physics for LatLon and CS tests o Tidied up monitor() output
Missed the IF(debugMode) around DEBUG stuff.
Added a debugMode that uses same statistics stuff as monitor.F Can be disabled with -DEXCLUDE_DEBUGMODE. Turn on at run-time with debugMode=.true. Default is enabled but off.
Merge from branch pre38: o essential mods for cubed sphere o debugged atmosphere, dynamcis + physics (aim) o new packages (mom_vecinv, mom_fluxform, ...)
Modifications/fixes to support TAMC differentiability (mostly missing or wrong directives).
Modifications and additions to enable automatic differentiation. Detailed info's in doc/notes_c37_adj.txt
all potentials (cg2d_x, cg3d_x, phiHyd) have units of P/rho in ocean AND atmos
separate the state variable "eta" from the 2D solver solution cg2d_x change Time-Average routines names (new package)
implement a Crank-Nickelson barotropic time-stepping
recover (after checkpoint35) time average output
remove unused array "rVel"
Corrected comment about call to OBCS_APPLY_W()
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!
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34) - substantial modifications to algorithm sequence (dynamics.F) - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics
Modifying store directive.
Corrected store directives; added one ifdef ALLOW_GMREDI.
Added or modified store directives for TAMC. Updates are adopted from ecco_c32_e2.
Rescaling of forcing fields done immediately after reading fields.
Various corrections and additions of store directives for TAMC. Changes of interfaces to packaged GMRedi and KPP. Tested for exp(0,2,4).
The array ConvectCount(...) needs to always be declared becuase it is used by IVDC and the time-averaging package. We should ultimately move this into a common block specific to those routines that use it.
Fixed key computations for TAMC: eliminated ikact, changed location for computation of iikey. (P.H., A.K.)
Packaged KPP and GM/Redi: o moved temporary arrays such as K13, KapGM,... to private common blocks o calls to KPP_CALC and GMREDI_CALC_TENSOR replace KVMIX and CALC_ISOSLOPES. Added call to gradSigma() to calculate density gradients.
Modifications to include TAMC directives, tape key computations and initialisations to make code TAMC compatible. Routines the_model_main.F and initialise_fixed.F are left unchanged for the moment. (P.H.)
Various updates for OBCs and Non-hydrostatic routines. o OBCs now fits into time-stepping properly o div.G has been moved to solve_for_pressure()
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...
Added myIter as an argument to timestep() to allow proper timestepping at myIter=0
Added IVDC (Implicit Vertical Diffusion Convection). Also facilitated a "convection counter" that is output through "diags".
Added a parameter "implicitViscosity" to separately control implicit viscosity and diffusion.
Added CPP macro ALLOW_OBCS to include/exclude open boundary code.
Modifications/additions for KPP mixing scheme. Instigated by Dimitri.
Added "freezing" subroutine. This can be viewed as a place-holder holder for a fuller ice model. Currently, this routine simply "caps" the temperatures to above -1.9 Celsius.
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
Partial changes to incoporate atmospheric configuration Minor TAMC compliance changes Included one-layer verification experiment exp0
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..
Consistent isomorphism changes
Consistent isomorphism changes
Consistent isomorphism changes
Isomorphism consistency changes
Isomorphism consistency changes
Isomorphism consistency changes
Isomorphism consistency changes
Changes to support consistent pressure-height isomorphism
Changes to support r as vertical coordinate
Added diagnostics for KapGM. Added GMmaxval to limit values of KapGM when using the Ri # formula.
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
Fix for GM/Redi parameterisation: o KapGM is now set to GMkbackground in dynamics() because the TOP_LAYER method wouldn't work in calc_iso_slopes() since it is called from the K >= 2 o This might be a messy fix but it was so simple I couldn't resist it. A better way might have been to call calc_isoslopes() before the K>=2 loop with K=1. Anyway, it works...
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-)
Commented out debugging at end
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 to bring "salt" up-to-date with "theta". One caveat is that implicit diffusion of salt is done with the diffusivity of theta. We'll sort this out later. In explicit mode, diffKzS is used.
Fixed problems with _RS -> REAL*4 and with reading in intial hydrography
Initialised maskC edge values to 0 to prevent NaN errors
Various corrections: o do_gterm_blocking..() is fixed to work with new time-stepping o CPP_OPTIONS.h now contains #define ALLOW_CD
Merge of GM Redi and spherical polar and inplicit diffusion and CD. Everything for a global run is now included, however, still some discrepancies with GM Redi.
Various corrections: o implicitDiffusion was missing from PARAMS.h (obviously forgot to commit) o maskUp in calc_common_fact() is now correct o find_rho() now has the proper "referencing" for "LINEAR" eos-mode [also affected a call from dynamics()]
Implemented implicit vertical diffusion (tracers only). Involved introducing a "total" diffusivity array (local 3D) calculated by calc_diffusivity(). Made some small changes to time-stepping algorithm. Switched on by setting implicitZdiffusion. (note: *Not* fully tested with topography. But when switched off this does produce identical results)
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...
Changes to: o read in coefficients for POLY3 EOS. o find_rho() polynomial evaluation has been factorized. o additional density field needed in calc_iso_slopes() with non-linear EOS. This EOS must use the appropriate version of KNUDSEN to generate the coefficients file (POLY3.COEFFS). C7 and C8 were back to front in all previous versions of the model (compare01).
Added flags for turning off momentum equation and/or temperature equation
Added extra IO features - runtime on/off flags - more reporting of configuration
Added changes to support implicit free-surface. - included gBaro a "barotropic" gravity that can be set differently to the g.rhoprime gravity. - discovered and fixed coding error in dynamics loop. Per tile temporaries that needed correct initial values were not being reset for each tile.
GM/Redi parameterization. calc_isoslopes() calculates components of Redi tensor. calc_gt() then uses these components in a modified vertical tracer flux. AJA
Changed the descretization of hydrostatic pressure (now barZ(dz)*barZ(rho) ) to conserve potential energy. This was the original discretization but when I (AJA) made the outer K loop I changed the discretization. Sorry.
Moved the "K loop" from timestep() upto dynamics(). dynamics() now contains all K loops (two infact).
Moved the K loops from convect(), find_rho() and calc_ph() up to this level (dynamics).
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 |