Parent Directory | Revision Log | Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Sticky Tag: |
implement fully implicit bottom friction coupled with implicit surface pressure (hydrostatic only)
- with INCLUDE_IMPLVERTADV_CODE defined, also call MOM_U,V_IMPLICIT_R & GAD_IMPLICIT_R (instead of IMPLDIFF) when just implicitViscosity and implicitDiffusion (respectively) are used (even without momImplVertAdv or temp,salt,PTRACERS_ImplVertAdv).
- add one more level to vertical viscosity local arrays (Nr+1, previously Nr) since no-slip bottom BC uses viscosity @ k+1 to update velocity @ level k - for now and until vertical mixing scheme are updated to fill up Nr+1 level, just copy Nr value to Nr+1
Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage which are specific to TAF/TAMC).
update algorithm description (moved to forward_step.F) and calling tree (in the_model_main.F)
remove gT,gS
change gTracer argument (drop bi,bj indices) in S/R IMPLDIFF
move CYCLE_TRACER calls from tracers_correction_step.F to temp/salt/ptracer_integrate.F so that theta,salt and pTracers arrays are already updated when leaving S/R THERMODYANMICS while adjustments (filters, conv.adjustment) are still applied later, in S/R TRACERS_CORRECTION_STEP.
- 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).
- avoid recomputation.
remove some unnecessary TAF storage directives (note: not always removed, e.g., double storage of kappaRU,kappaRV in former version of dynamics.F)
- 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;
Changes to implement a residual model. Also, calculation of the mean velocity from the residual and bolus.
skip the call to CALC_VISCOSITY if momViscosity=F
revert to local variables for OpenAD
adding tidal velocity forcing capability to obcs Modified Files: model/src/dynamics.F forward_step.F the_main_loop.F pkg/obcs/OBCS_FIELDS.h OBCS_OPTIONS.h OBCS_PARAMS.h OBCS_SEAICE.h obcs_apply_eta.F obcs_apply_r_star.F obcs_apply_surf_dr.F obcs_apply_ts.F obcs_apply_w.F obcs_calc.F obcs_check.F obcs_init_variables.F obcs_readparms.F verification/seaice_obcs/code/OBCS_OPTIONS.h Added Files: pkg/obcs/obcs_add_tides.F verification/seaice_obcs/input.tides/* verification/seaice_obcs/results/output.tides.txt
separate fVer?(:,:,kUp) & fVer?(:,:,kDown) in argument list of MOM_FLUXFORM & MOM_VECINV subroutines (to help TAF).
update comments (calling tree)
change argument recip_hFac (drop bi,bj indices) in IMPLDIFF S/R
add hooks for fixed Stevens BCs code
refine debugLevel criteria when printing messages
split "OBCS.h" into 4 separated header files (OBCS_PARAMS,GRID,FIELDS,SEAICE)
- remove 1 storage of rStarDhCDt in momentum_correction_step.F; - remove commented out pieces (OBCS).
rename obcs_prescribe_exchanges -> obcs_exchanges
Spread ADJ output around to avoid zeros
switch some test on debugLevel value to debugMode test
put back call to OBCS_PRESCRIBE_EXCHANGES (needed for OBCS_SPONGE)
- call S/R OBCS_APPLY_UV outside of k loop. - in dynamics, only call OBCS_APPLY_UV once (instead of twice if implicitViscsity) - remove call to OBCS_PRESCRIBE_EXCHANGES Leave old code commented out (never sure with OBCS).
fix previous modif (from Sep 19, cvs version 1.149, "Separate MOM_FLUXFORM store directives") which was causing extensive recomputations in AD test experiment global_ocean.cs32x15.
Separate MOM_FLUXFORM store directives.
Adjoint compatible with combined AB3 and NLFS.
Adjoint related modifications -- allowing the use of implicit vertical advection in adjoint model.
move initialisation of dPhiHydX,dPhiHydY (= output of S/R CALC_GRAD_PHI_HYD) from dynamics.F to calc_grad_phi_hyd.F
add pressure gradient diagnostics (without surface pressure contribution)
replace maskH by maskInC
initialize phihydlow to avoid TAF recomputation (in the context of bottom pressure (GRACE) cost term) done correctly, this time...
fix (number of arguments) a commented call to S/R REMOVE_MEAN_RL
Add TAF option "kind" (or adjust "byte") to enable real*4 common blocks
- fix index range in calc_viscosity.F (was wrong for CD-Scheme & explicit Visc) - put k loop inside calc_viscosity.F
split PTRACERS.h in 2 header files: PTRACERS_FIELDS.h & PTRACERS_PARAMS.h
Update NLFS adjoint.
Change storing for rstar adjoint.
take bi,bj loops outside of calc_gw & timestep_wvel.F and move the call inside DYNAMICS bi,bj loops
Pass the variable viscosities on to calc_gw.
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 included PACKAGES_CONFIG.h in all files where the ALLOW_${PKG_NAME} defines are used o added comments where IF ( use${PKG_NAME} ) statements will probably be needed -- or need to be edited
o introducing integer flag debugLevel o introducing pathname variable mdsioLocalDir for mdsio
o introducing integer flag debugLevel o introducing pathname variable mdsioLocalDir for mdsio
Merging from c51
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
merging c49 and e27
Changes to restore differentiability of code w.r.t. previous tag (mostly adding new routines to make list and replacing pressure by totPhiHyd).
o Removed spurious iikey and idkey
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.
Branch release1_coupled contains code for coupling to UCLA atmospheric model: cvs tag ucla1 Branched off tag release1_beta1 Modified eesupp/src/eeboot_minimal.F, eedie.F, exch_jam.F, global_max.F, global_sum.F, gsum_jam.F, ini_procs.F, and main.F model/src/dynamics.F, forward_step.F, freeze.F, ini_parms.F, set_defaults.F, the_main_loop.F, the_model_main.F, timestep.F, write_state.F, and mdsio_writefield.F pkg/timeave/TIMEAVE_STATV.h, timeave_statv_write.F, timeave_statvars.F, and model/inc/PARAMS.h, Added model/src/do_coupled_ucla.F and verification/coupled_ucla NOTES: MPI_COMM_WORLD -> MPI_COMM_MODEL in exch_jam.F, global_max.F global_sum.F, and gsum_jam.F Added useSingleCpuIO: ini_procs.F, PARAMS.h, ini_parms.F, set_defaults.F, mdsio_writefield.F, and subroutine GATHER_2D in do_coupled_ucla.F
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).
o added Eliassen-Palm flux hook (dynamics) o removed unused TAF keys iikey, idkey (dynamics,thermodynamics)
Moved some initialisations into bi,bj loop. Needed for flow dependency by TAF.
Merging patches between release1_p1 and release1_p2: o fixed array boundary problem for adjoint (related to partial recomputation within subroutine related to dynamics -> calc_viscosity -> mom_... o fixed recomputation in thermodynamics o prepare (but not complete) recomputation problem in impldiff o fixed problem for adjoint of global_max o switched off sponge layer code in external_forcing Bug fix in ctrl_mask_set_yz (spotted by G. Gebbie)
o Partial setting of kappa arrays to constant background caused trouble in reverse mode (array boundaries are inconsistent between calc_viscosity and mom/ package). -> extended to full domain.
These changes constitute a patch to release1. They were made on a development branch called "release1_final" and are on the main trunk between chkpt44d_post and checkpoint44h_post along with other changes. This code is equivalent to chkpt44d_post with the following patches: - AD-related changes for GMRedi - fixes i KPP (delZ -> drF) - hook to OBCS songe layer code in external_forcing - errorMessageUnit non-zero in eeboot.F - modified test cost function and carbon verif.
Changes encapsulated by checkpoint43a-release1mods and chkpt44d_post on the main trunk. These are: o added missing EXCLUDE_MONITOR flags o changed "e" to "_d" in gmredi_slope_limit, gmredi_slope_psi (incompatible typ in MIN/MAX expressions caused problems on IBM SP3) o in genmake added variable MAKEDEPEND plus resetting for case SunOS o added timer_stats.c routine for IBM SP3 o removed variables in dynamics o real fresh water flux implemented with non-linear free-surface. o few fix (mask in shap_s2, EmPmR in external_field_load, USE_NATURAL_BCS in solve_for_P); o add arguments myIter & myTime to S/R obcs_calc & solve_for_P o merge of relevant stuff from the ecco-branch: - genmake: removed $S64 overwrite for case SunOS - pkg/exf: update and corrections for field swapping and obcs - pkg/ecco: parameter lists for the_model_main, the_main_loop harmonized between ECCO and MITgcm - pkg/autodiff: added flow directives for obcs, mdsio_gl_slice updated checkpointing_lev... lists for obcs - model/src: minor changes in forward_step, plot_field added directive for divided adjoint in the_main_loop - pkg/mdsio: added mdsio_gl_slice o check parameters & config (chkpt44a_pre,post) o OBC and NonLin_FrSurf. o fix bug in mom_vi_del2uv o select when filters are applied ; add options to zonal_filter (data.zonfilt) o gmredi: fix Pb in the adiabatic form ; add options (.e.g. Bolus advection) o update AIM experiments (NCEP input files) o improve and extend diagnostics (Monitor, TimeAve with NonLin-FrSurf) o added some stuff for AD These were merged with cvs co -r release1 -P MITgcm cd MITgcm cvs update -kk cvs update -j checkpoint43a-release1mods -j chkpt44d_post -d -P -kk
Merged changes to enable stable adjoint of GM from release1_final.
Merged AD-related changes into release1_final
o Modified initialisations to break adjoint dependencies o removed some store directives o added options files for KPP, GMREDI
Merging changes on MAIN between checkpoint43 and checkpoint43a-release1mods Command: cvs -q update -jcheckpoint43 -jcheckpoint43a-release1mods -d -P These changes are most of the changes between c43 and c44 except those that occured after "12:45 11 Jan 2002". As far as I can tell it is checkpoint43 with the following mods: o fix bug in mom_vi_del2uv o select when filters are applied ; add options to zonal_filter (data.zonfilt) o gmredi: fix Pb in the adiabatic form ; add options (.e.g. Bolus advection) o update AIM experiments (NCEP input files) o improve and extend diagnostics (Monitor, TimeAve with NonLin-FrSurf) o added some stuff for AD o Jamar wet-points This update does not contain the following mods that are in checkpoint44 o bug fix in pkg/generic_advdiff/ - thread related bug, bi,bj arguments in vertical advection routines o some changes to pkg/autodiff, pkg/cost, pkg/exf, pkg/ecco, verification/carbon and model/src/ related to adjoint o some new Matlab scripts for diagnosing model density - utils/matlab/dens_poly3.m and ini_poly3.m The list of exclusions is accurate based on a "cvs diff". The list of inclusions is based on the record in doc/tag-index which may not be complete.
Removed arrays which are no longer needed.
Updating ecco-branch-mod1 to checkpoint44. Will be tagged ecco-branch-mod2.
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).
recover diagnostic of PhiHyd using the new routine TIMEAVE_CUMUL_1T
Changes to restore/introduce true shared memory (i.e. pure SMP model) support for lat-lon, cartesian and cube. o Threads support restored for global_sum, global_max. Needed COMMON blocks in place of stack variables for work space. o COMMON added for temps that are exchanged shap_filt, solve_for_pressure o exch...template edits to allow multithreaded calling of cube exchanges. Cube exchanges are done single threaded, sequential at the moment and are hard coded for six-tile, one tile per face configuration. o Threading support only tested on Sun SMP (6500) system. o Default is SYSTEM() exists (check_threads.F), and barrier and memsync are used for threaded exchanges (ini_communications_patterns). o Killed K-level plot (ini_masks_etc.F). Overlaps not set in multi-threads (local array), so fails in plot_field(). o Fixed t-ave of phihyd ( DYNAMICS() ). Can only do it for first tile. o Added commented out nTx settings to hs94.cs-32x32x5 eedata. #nTx=2 #nTx=3 #nTx=6 Need to activate for setenv PARALLEL o Multi-threaded pickup is 100% validated. Testing notes o Code passes "testscript" tests. o To get "hs94.cs-32x32x5" to run OK need to patch dynamics.F. Patch is in hs94.cs-32x32x5/code/dynamics.patch. o Multithreading only tested on Sun 6500 SMP for hs94.cs and hs94.128. hs94.128 was OK at c37 but has a problem under multi-threading at pre38 at the moment. o Under Solaris need one of setenv PARALLEL 2 setenv PARALLEL 3 setenv PARALLEL 6 setenv PARALLEL 8 ( hs94.128 only ) - and - setenv STACKSIZE 16384 o Under Solaris f77 need to remove -u from Makefile FOPTS for compiling fftpack.o. Need to declare everything in fftpack or have custom compile options for fftpack.F to fix this.
add tauAB (Adms-Bashforth weight) as argument of TIMESTEP_TRACER routine
use the 3D global center-cell maskC instead of a local one.
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.
add call to AIM physics and initialization of phiHyd
Packaged OBCS (open boundary conditions) o source code now in pkg/obcs o controlled by namelist in data.obcs o includes Orlanski radiation condition (in same directory) o affects exp4 and internal_wave
Corrected store directives; added one ifdef ALLOW_GMREDI.
o Removed array phiHydInterface. Why have more arguments than are necessary. It made the "finite volume" integration easier but wasn't used for the default energy conserving method. The fv is still available in comments but has been coded without the phiHydInterface array. o Put a safety "IF" in front of k+1 references.
enable a stagger time stepping of T,S and then U,V ; add phiHyd as argument of subroutine TIMESTEP
Re-wrote calc_phi_hyd() - use theta and salt as arguments (necessary for staggered time-step) - calls find_rho() from inside - find_rho() also takes theta,salt as arguments - uses different formulation for 'OCEANIC' and 'ATMOSPHERIC' modes - "finite volume" (non-energy conserving) form supplied in comments
Compute sigmaX,Y(k=1) for GMRedi tensor (correct phase2 modif)
Tentative implimentatin of OBCs.
Moved call to external_forcing_surf() to before call to kpp_calc() - it got back to front during re-arrangement of dynamics()
Moved af,df,fZon and fMer temporary arrays into calc_gs() and calc_gt() - this uses slightly more memory - this reduces the number of arguments and set-up space in dynamics()
Moved computation of uTrans,vTrans,etc. into calc_mom_rhs() since calc_mom_rhs() is in it's own K loop.
Started deleting unused arrays form calc_mom_rhs() - affects dynamics() too.
Tentative step towards "phase 2" o added wVel array to DYNVARS.h o re-arranged dynamics() substantially
Added or modified store directives for TAMC. Updates are adopted from ecco_c32_e2.
Moved "correction" phase of algorithm from top of dynamcs() to end of forward_step(). - allows deletion of ini_predictor - need convective adjustment of initial conditions for backward compatibility. - exchange fields instead of tendancies, called in forward_step() - encapsulated convective adjustment for convenience: convective_adjustment()
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-)
Changes to prepare for release o moved gTNm1 initial setting o changed .meta file form and naming convention
Corrections to allow consistent time level in the_model_main without breaking convective adjustment etc...
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
Imported working release
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 |