Parent Directory
|
Revision Log
|
Revision Graph
new tag: checkpoint66f
1 | $Header: /u/gcmpack/MITgcm/doc/tag-index,v 1.2321 2017/04/05 03:49:11 jmc Exp $ |
2 | $Name: $ |
3 | |
4 | Notes on tags used in MITgcmUV |
5 | ============================== |
6 | |
7 | checkpoint66f (2017/04/06) |
8 | o model/src: |
9 | - add specific run-time param to select level of printed plot-field-maps, |
10 | set by default to debugLevel. Remove internal param "printDomain". |
11 | o pkg/seaice: |
12 | - add flag to add snow mass to seaiceMassC/U/V, the default is |
13 | SEAICEaddSnowMass=.FALSE., not to change previous results |
14 | o pkg/bling |
15 | - Bug fix in bling_production regarding unit conversion for diagnostics |
16 | being put in the wrong place |
17 | o model/src: |
18 | - add back recomputation of rSurfW & S to ensure consistent column thickness |
19 | (needed for rStar) between Sum_k(hFac*drF) and rSurf-rLow, for now only |
20 | when using pkg/shelfice; was initially added on 2012/06/01 (ini_masks_etc.F |
21 | revision 1.51) but was removed accidentally on 2014/02/08 (v1.53). |
22 | o pkg/autodiff: |
23 | - clean-up "checkpoint.flow" |
24 | o pkg/rw (Contribution from Jody Klymak): |
25 | option to set mds file suffix as function of time in simulation: |
26 | *) new input parameter "rwSuffixType" (read from PARM03 namelist) |
27 | to select file suffix format; by default (=0), use iteration number; |
28 | *) add simple routine to return file suffix according to rwSuffixType; |
29 | *) in model/src and in most pkgs (except: atm2d, fizhi, regrid & streamice), |
30 | use new S/R to get file suffix, except for debug output file (diagFreq) |
31 | and pkgs offline & rbcs input files. |
32 | o pkg/rw: |
33 | - uniform processing of "I10" suffix across writing fld routines; used to |
34 | simplify debug writing of cg2/3d_b/x in solve_for_pressure.F & post_cg3d.F |
35 | (similar to cg3d.F, cg3d_ex0.F) |
36 | o pkg/mom_vecinv: |
37 | - highOrderVorticity in selectVortScheme=2 case: fix c4 coeff in splitted |
38 | vorticity flux (keep same sum in case vBarXm=vBaXp, uBarYm=uBarYp). |
39 | o pkg/bling: |
40 | - Many small changes intended to clean the code. |
41 | Unnecessary ADJOINT_SAFEs removed ; |
42 | removed BLING_COST.h BLING_CTRL.h bling_cost.F ; |
43 | diagnostics added. |
44 | |
45 | checkpoint66e (2017/03/14) |
46 | o pkg/exf: |
47 | - interpolation with #undef EXF_INTERP_USE_DYNALLOC: move buffer size |
48 | definition outside EXF_PARAM.h in new header file: EXF_INTERP_SIZE.h; |
49 | use fixed size buffer (passed to S/R EXF_INTERP & EXF_INTERP_UV) to |
50 | avoid any dynamic allocation ; |
51 | - S/R EXF_CHECK: add new check & stop when file-name is defined but not |
52 | read-in ; add warning when file is read-in but not used within pkg/exf ; |
53 | + check for buffer-size (if #undef EXF_INTERP_USE_DYNALLOC). |
54 | - update exf_summary.F (print {FLD}RepCycle). |
55 | o verification/global_with_exf: |
56 | - switch on exf interpolation in AD test (just like the forward test) |
57 | o pkg/mom_vecinv: |
58 | - add storage directives to avoid recomputations within mom_vecinv.F |
59 | which were generating seg. fault with gfortran -devel |
60 | o pkg/ctrl, pkg/smooth: |
61 | - initialize array halos which were generating seg. fault with |
62 | gfortran -devel in adjoint mode |
63 | o pkg/exf: |
64 | - for each input field, enable to specify a field specific repeat-cycle |
65 | ({FLD}RepCycle) which defaults to pkg/exf main "repeatPeriod". |
66 | o verification/lab_sea: |
67 | - update AD results of primary test and noseaicedyn test after switching |
68 | to new version of TAF (5.3.13 vs 5.3.2 before); agreement with gradient |
69 | check stays about the same. |
70 | o pkg/exf: |
71 | - fix bug in exf_zenithangle.F for cases select_ZenAlbedo > 0 with useCAL=T. |
72 | - exf_check: MAX_LAT_INC need only be "loc_nlat-1", not equal to loc_nlat |
73 | o pkg/bling, USE_EXFCO2 code: |
74 | - add parameter "apco2RepCycle" (set to pkg/exf "repeatPeriod" by default); |
75 | - update calls to EXF S/R (use new version: EXF_INIT_FLD & EXF_SET_FLD). |
76 | o pkg/exf: |
77 | - rename S/R EXF_INIT to EXF_INIT_VARIA ; |
78 | - add arguments: fldName (for debug msg) and fldRepeatCycle (set to |
79 | repeatPeriod) to S/R EXF_SET_UV and to S/R EXF_SET_GEN (renamed EXF_SET_FLD) |
80 | and update calls in pkg/exf calling S/R (exf_getffields.F & exf_getclim.F) ; |
81 | - add argument: fldName (for debug msg) to S/R EXF_INIT_GEN (renamed |
82 | EXF_INIT_FLD) and update calls in exf_init_varia.F |
83 | - For now, for backward compatibility, keep a simplified version of S/Rs |
84 | EXF_SET_GEN & EXF_INIT_GEN in file exf_set_gen.F |
85 | - add and pass new arguments: fldName (for debug msg) and fldRepeatCycle |
86 | to S/R EXF_GetFFieldRec ; update calls in pkg/obcs/obcs_exf_load.F |
87 | o tools/genmake2: |
88 | - replace "bc -l" (only used once) by "expr" (already used). |
89 | o verification/global_ocean.cs32x15: |
90 | - turn off pkg/cal (useCAL=F) in secondary FWD exp. "icedyn". |
91 | Note: exf setting (data.exf) can be compared to other exf secondary exp |
92 | "seaice" (kept with useCAL=T) which has same time dependent forcing. |
93 | |
94 | checkpoint66d (2017/02/13) |
95 | o pkg/exf: |
96 | - remove setting of useCAL=T when using pkg/exf (useEXF=T); add warning |
97 | early on (in packages_boot.F) to stress this change in pkg setting. |
98 | - In (most) verification exp. that use pkg/exf, add useCAL=.TRUE. to data.pkg |
99 | o model/src: |
100 | - move call to ecco_phys to end of time step; this may induce minor |
101 | cost function changes by shifting time averages by one time step |
102 | for some variables; this revision resulted in changed adjoint results |
103 | in MITgcm_contrib/verification_other/global_oce_cs32 |
104 | o pkg/exf: |
105 | - Change EXF_READ_EVAP to only activate code within #ifdef ALLOW_ATM_TEMP ; |
106 | this prevents to read evap when ALLOW_ATM_TEMP is undef and other fields, |
107 | e.g. precip, are not available. |
108 | o pkg/flt: |
109 | - flt_init_varia.F: use pickupSuff if specified |
110 | - add code (within #ifdef DEVEL_FLT_EXCH2) and test case as a first, |
111 | intermediate, step towards completing pkg/exch2 support within pkg/flt; |
112 | ifdef DEVEL_FLT_EXCH2 then: |
113 | - flt_init_fixed.F: comment out stop |
114 | - flt_exch2.F: conserve ipart, jpart (grid coordinates) |
115 | - exch2_recv_get_vec.F: transform ipart, jpart (grid coordinates) |
116 | - flt_mapping.F: attempt to fix longitude diagnostic near date-line |
117 | - flt_init_varia.F: hack initialization (for testing purposes w. LLC90) |
118 | o tools/genmake2 & pkg/pkg_depend: |
119 | - define new type of pkg dependency rule ("=pkg_x"), less strict than |
120 | the "+" rule, that add the dependent pkg (pkg_x) unless it's disabled |
121 | (-pkg_x in packages.conf). |
122 | - change pkg/exf dependency rule from "exf +cal" to "exf =cal"; |
123 | - add "+cal" to dependency list of pkg/ecco (needed to compile). |
124 | - simplify FWD experiment "offline_exf_seaice" by removing pkg/cal. |
125 | o utils/matlab: |
126 | - adding ocean_basin routines for defining basin masks. |
127 | o pkg/exf: |
128 | - new S/R EXF_GETFFIELD_START replacing EXF_GETFIELD_START, but with more |
129 | arguments, allowing to check (and stop) if parameter setting of |
130 | {FLD}startdate1 & date2 and of {FLD}StartTime are consistent with |
131 | useCAL= T or F. For now, kept a simplified version of EXF_GETFIELD_START |
132 | for backward compatibility. |
133 | - change accordingly calls in exf_init_fixed.F + default {FLD}StartTime in |
134 | exf_readparms.F ; apply same changes to pkg/icefront (for SGRunOff field). |
135 | o pkg/bling (USE_EXFCO2 code): |
136 | - fix missing setting of apco2StartTime according to apco2startdate1 & date2 |
137 | by adding a call to S/R EXF_GETFFIELD_START. |
138 | o pkg/exf: |
139 | - allows to compile without pkg/cal (but disabled by current dependency |
140 | rules, i.e., default "pkg/pkg_depend"). Minimal changes to enable to |
141 | run with useCAL=F ; this involves setting directly {FLD}StartTime instead |
142 | of {FLD}startdate1 & date2 ; consistency check not yet coded. |
143 | o verification/global_ocean.cs32x15: |
144 | - fix all data.exf for a shift of 1 day in all field startdate1 so that it now |
145 | corresponds to middle of 1rst month; update outputs (2 fwd + 3 adm + 3 tlm). |
146 | o pkg/exf: |
147 | - allow to use EXF_ZENITHANGLE without pkg/cal + simplify (saving some |
148 | calculations); change FWD experiment global_ocean.cs32x15 |
149 | (#define ALLOW_ZENITHANGLE) to test/check that this code compiles. |
150 | o pkg/exf: |
151 | - In preparation for addition to NAMELIST, rename internal (_RL) parameter |
152 | {FIELD}startdate to {FIELD}StartTime |
153 | Note: new name also fit better the content, i.e, a start time in second. |
154 | o eesupp/src: |
155 | - add 1 argument to S/R EEBOOT & EEBOOT_MINIMAL for interface with ESMF |
156 | o pkg/exf: |
157 | - add option ALLOW_READ_TURBFLUXES (and corresponding set of parameters) |
158 | to allow to read-in Sensible & Latent Heat flux ; |
159 | - simplify pkg/exf main options: |
160 | 1) move small piece of code (case ALLOW_ATM_TEMP undef) out of |
161 | exf_bulkformulae.F into exf_wind.F so that exf_bulkformulae.F is |
162 | compiled only when both ALLOW_ATM_TEMP & ALLOW_BULKFORMULAE are defined; |
163 | 2) make call to EXF_RADIATION and to EXF_WIND independent of CPP option |
164 | ALLOW_BULKFORMULAE which now only applies to S/R EXF_BULKFORMULAE ; |
165 | 3) improve options documentation in EXF_OPTIONS.h. |
166 | o pkg/ecco: |
167 | - cost_gencost_customize.F,ecco.h,ecco_phys.F,ecco_readparms.F, and |
168 | ecco_summary.F: add passive tracer cost functions to gencost; |
169 | m_ptracer and m_boxmean_ptracer |
170 | o pkg/ctrl: |
171 | - ctrl_map_forcing.F: pass myIter and myTime to ctrl_map_forcing as input |
172 | parameters; move myIter .EQ. nIter0 inside ctrl_map_forcing; add to list |
173 | of implemented gentim2d contol parameters: xx_qnet, xx_empmr, xx_qsw, |
174 | xx_sst, xx_sss, xx_pload, xx_saltflux, xx_fu, xx_fv, xx_fe, xx_fn |
175 | o model/src: |
176 | - forward_step.F: pass myIter and myTime to ctrl_map_forcing as input |
177 | parameters; move myIter .EQ. nIter0 inside ctrl_map_forcing |
178 | o pkg/exf: |
179 | - exf_getffields.F: add to list of implemented gentim2d contol parameters: |
180 | xx_lwflux, xx_swflux, xx_evap, xx_apressure, xx_areamask |
181 | |
182 | checkpoint66c (2017/01/19) |
183 | o verification: |
184 | - add new option "-src" to testreport to only produce source code (*.f), |
185 | including taf output src code (if using '-adm'/'-tlm' option). |
186 | o pkg/exf: |
187 | - add saltflx :: Net upward salt flux in psu.kg/m^2/s |
188 | o pkg/diagnostics: |
189 | - add run-time variable diagMdsDir to specify a subdirectory for |
190 | diagnostic output when mds is being used and mdsioLocalDir is not. |
191 | o pkg/mnc: |
192 | - mnc_utils.F: edit stop message |
193 | o pkg/autodiff: |
194 | - autodiff_ini_model_io.F: PRINT_MESSAGE, clean-up comments, add _*_MASTER, |
195 | add HAVE_SYSTEM bracket around system call to mkdir |
196 | o pkg/profiles: |
197 | - profiles_findunit.F, profiles_init_fixed.F, profiles_interp.F, |
198 | profiles_readparms.F: call ALL_PROC_DIE before 'stop' |
199 | - profiles_ini_io.F: use PRINT_MESSAGE, clean-up comments, add _*_MASTER, |
200 | add HAVE_SYSTEM bracket around system call to mkdir |
201 | o pkg/smooth: |
202 | - smooth_filtervar2d.F, smooth_filtervar3d.F: call ALL_PROC_DIE before 'stop' |
203 | - smooth_init2d.F, smooth_init3d.F: move print statements to readparms |
204 | - smooth_readparms.F: add cleaner print statements from smooth_init?d.F |
205 | o pkg/exf: |
206 | - check: count errors and stop cleanly at the end (call to ALL_PROC_DIE); |
207 | issue error message when climsst_interpMethod.GT.0 and climsst_lon_inc > 500 |
208 | generalize tests on interpMethod, nlat, and lon_inc to all exf variables. |
209 | - summary: skip detailed field report if not used (empty file-name). |
210 | o tools/xmakedepend: |
211 | - In case line editor "ed" is missing, switch to "sed" command to clean-up |
212 | Makefile from previous dependencies (anything after "# DO NOT DELETE" line). |
213 | o pkg/exf: |
214 | - change definition of "hflux" input file to always include Short-Wave; |
215 | this is now consistent with hflux computation (if using bulk-formulae) |
216 | and hflux diagnostic & documentation (in EXF_FIELDS.h). |
217 | |
218 | checkpoint66b (2016/12/01) |
219 | o model & momentum pkgs: |
220 | - implement fully implicit bottom friction combined with implicit surf. |
221 | pressure, for now, only in hydrostic formulation: |
222 | + to use: compile with #define ALLOW_SOLVE4_PS_AND_DRAG in CPP_OPTIONS.h |
223 | and run with selectImplicitDrag=2 ; |
224 | + currently missing diagnostics of bottom drag and vert. viscosity tendency; |
225 | - partial implicit time-stepping (bot. friction + vert. visc first, then |
226 | surf. press) corresponding to selectImplicitDrag=1 should be applicable |
227 | to NH formulation but not available until we solve for surf. pressure |
228 | increment (instead of full etaN). |
229 | - change exp. global_ocean.cs32x15.thsice to test implicit bottom drag |
230 | with implicit vertical viscosity. |
231 | o pkg/seaice: add linear remapping scheme (Lipscomb 2001) to ITD model |
232 | - this is a first version that includes many regularisations that may |
233 | not all be necessary, to be sorted out, |
234 | - turned on by runtime parameter SEAICEuseLinRemapITD (true by default) |
235 | - change one verification experiment in seaice_itd to use and test new code |
236 | - seaice_growth: catch a case where the argument of log can be zero |
237 | or smaller (important for code stability) |
238 | o model/src: |
239 | - modify SOLVE_DIAGONAL_LOWMEMORY version of solve_tridiagonal.F |
240 | & solve_pentadiagonal.F to enable to re-used inverse matrix for solving |
241 | similar A.X'=Y' system (with same matrix A) in subsequent calls; |
242 | switch based on errCode (In/Out) argument value; in calling routines, |
243 | initialise errCode before first call. |
244 | |
245 | checkpoint66a (2016/10/18) |
246 | o pkg/bling: |
247 | - BLING package now loads in atmospheric pCO2 file using exf package routines |
248 | Enable with #define USE_EXFCO2 in BLING_OPTIONS.h |
249 | o model/src & pkg/ptracers: |
250 | - with INCLUDE_IMPLVERTADV_CODE defined, also call MOM_U,V_IMPLICIT_R & |
251 | GAD_IMPLICIT_R (instead of IMPLDIFF) when just implicitViscosity and |
252 | implicitDiffusion (respectively) are used (even without momImplVertAdv |
253 | or temp,salt,PTRACERS_ImplVertAdv). |
254 | o model/src & generic_advdiff: |
255 | - add parenthesis in main diagonal calculation of implicit vertical |
256 | diffusion matrix (impldiff.F & gad_implicit_r.F). |
257 | This affects results at machine truncation level; update output of many |
258 | verification experiments (31 fwd ; 10 adm ; 8 tlm ; 3 oad). |
259 | o pkg/mom_commom & generic_advdiff: |
260 | - add deep atmosphere and anelastic scaling factor in implicit vertical |
261 | advection routines (mom_u,v_implicit_r.F & gad*_impl*_r.F). |
262 | o model/src: |
263 | - remove few unnecessary temp array copies in solve_tridiagonal.F |
264 | & solve_pentadiagonal.F |
265 | |
266 | checkpoint65z (2016/09/28) |
267 | o pkg/seaice: fix multithreading for seaice_fgmres.F |
268 | - remove unecessary variables from common blocks |
269 | - use extra dimension MAX_NO_THREADS for all variables of the Krylov space |
270 | basis, that are stored in commom blocks (including integer variable i1) |
271 | - clean up code a little by removing commented lines that refer to |
272 | original code |
273 | - turn on multi-threaded test for experiment offline_exf_seaice.dyn_jfnk. |
274 | o MITgcm manual: |
275 | - add uptodate pkg/ecco documentation to the manual (section 8.1; ecco.tex), |
276 | preliminary documentation for generic controls (8.3; ctrl.tex), |
277 | a placeholder for smooth (8.4; smooth.tex), and comment out the deprecated |
278 | ecco_costfunction.tex |
279 | o pkg/ecco: |
280 | - update and cleanup list of CCP options |
281 | - re-assign gencost_mask to specify masks rather than gencost_errfile; 'c' |
282 | is now always passed to cost_generic; gencost_mask is now MAX_LEN_FNAM |
283 | - add checks that retired run-time options are not used, and in relation |
284 | to gencost_mask and gencost_errfile |
285 | - finish deprecating gencost_scalefile, gencost_smooth2Ddiffnbt, and |
286 | gencost_nrecperiod |
287 | - fix m_eta computation for virtual salt flux case |
288 | - add m_horflux_vol case (selected via gencost_barfile) that computes |
289 | transports via cost_gencost_boxmean (gencost_flag=-3) |
290 | - use gencost_flag more systematically (i.e., avoid using gencost_name) |
291 | for code switches (aside from physical variable selection) |
292 | o pkg/seaice: make seaice_fgmres.F fit for multithreading; this first |
293 | attempt appears to be a bit of a hack and my need some repair down the road |
294 | o pkg/exf: |
295 | - interpolation near South Pole: fix criteria on input field latitude. |
296 | o pkg/icefront & pkg/exf: |
297 | - move setting of icefront Sub-Glacial RunOff forcing (currently unused) |
298 | from pkg/exf (read from data.exf) to pkg/icefront (read from data.icefront) |
299 | o pkg/exf: |
300 | - replace CPP option ALLOW_EXF_OUTPUT_INTERP with run-time parameter |
301 | "exf_output_interp" (in namelist: EXF_NML_04); change output file name |
302 | (add suffix "_out" instead of a prefix); keep same record number as in |
303 | input file but always write record 1 first (to avoid a STOP in I/O S/R). |
304 | Change output file content by writing interpolated field before applying |
305 | land-sea mask (helpful for debug). |
306 | - 2 compon. vector interpolation with rotation: apply scaling factor on |
307 | each compon. (Eastward and Northward) just before rotation. |
308 | o pkg/bling: |
309 | - Cleaned package. Removed not needed code and comments. |
310 | - adjoint example now works |
311 | (MITgcm_contrib/verification_other/global_oce_biogeo_bling/code_ad) |
312 | o pkg/ptracers: |
313 | - add Bruno Deremble's code to complete the linear surface correction |
314 | for tracer conservation; |
315 | - enabled for individual ptracers by PTRACERS_linFSConserve(iTr)=.TRUE. |
316 | |
317 | checkpoint65y (2016/07/29) |
318 | o pkg/debug (stats): |
319 | - change GLOBAL_SUM to GLOBAL_SUM_TILE (result independent of tile to |
320 | proc/thread mapping); |
321 | - fix Min & Max for case where 1 thread has only empty tiles; |
322 | - use RL variable to count number of wet grid points (with big domain, |
323 | can be too large to fit into integer*4). |
324 | o pkg/monitor: |
325 | - use RL variable to count number of wet grid points (but used only for del2) |
326 | - add new routine to compute Advective CFL within tracer time-stepping with |
327 | writing delayed until next monitor output. |
328 | o pkg/obcs: |
329 | - fix bug in OBCS_BALANCE_FLOW (OBCS_balanceFacN misspelled OBCS_balanceFacW) |
330 | o pkg/cal: |
331 | - calandar-dump: treat case myTime < timePhase in the same way as in |
332 | eesupp/src/diff_phase_multiple.F (when not using calandar-dump). |
333 | o pkg/dic & seaice: |
334 | - fix compilation of ocean component for coupled atm+ocn model with |
335 | seaice dynamics & dic. |
336 | |
337 | checkpoint65x (2016/06/11) |
338 | o add a license text file in main MITgcm tree. |
339 | o added pkg/bling: |
340 | - intermediate complexity biogeochemical model |
341 | - see bling_description.txt for details |
342 | - verification experiment is global_oce_biogeo_bling (for now, in |
343 | Contrib/verification_other/); tested daily on baudelaire with gfortran. |
344 | - add entry point in pkg/gchem for new pkg "bling". |
345 | o pkg/seaice: fix tensile stength computation |
346 | - replace global field tensileStrength by tensileStrFac |
347 | - tensileStrFac can be computed once in S/R seaice_init_varia |
348 | - fortunately that does not affect any verification results |
349 | |
350 | checkpoint65w (2016/05/12) |
351 | o pkg/ctrl/ctrl.h: fix a comma in common block list, so that code compiles |
352 | with ECCO_CTRL_DEPRECATED defined |
353 | o verification/global_ocean.cs32x15: |
354 | - change secondary test "viscA4" to also test "selectP_inEOS_Zc=3" |
355 | with "selectNHfreeSurf=1". |
356 | o model/src (non-hydrostatic free-surface): |
357 | - More "natural" expression of NH free-surface term (case selectNHfreeSurf=1): |
358 | was: tmpSurf/(1+tmpSurf); changed to: 1/(1+Gamma) with Gamma=1/tmpSurf. |
359 | - Calculate surface vertical velocity after 2-D solver adjustment (accounts |
360 | for EmPmR if RealFreshWaterFlux); used in RHS (cg3d_b) if exactConserv |
361 | and used to compute dPhiNH (in post_cg3d.F) if selectNHfreeSurf=1. |
362 | This fixes EmPmR contribution when selectNHfreeSurf=1 & RealFreshWaterFlux. |
363 | - Update output (changes at machine truncation level) of verification exp: |
364 | exp4 (11 digits for cg2d), global_ocean.cs32x15.viscA4 (11.d), |
365 | short_surf_wave (13.d) and tutorial_deep_convection.smag3d (12.d). |
366 | o pkg/seaice: ITD code |
367 | - fix picking up from a single category model by initialising |
368 | heff/area/hsnowITD = 0. in seaice_itd_pickup.F |
369 | - split a long warning message in seaice_check_pickup.F into two lines, |
370 | because NEC SX-ACE cannot deal with the long line. |
371 | o model/src: |
372 | - fix missing dPhiNH in pressure_for_eos.F (case: selectP_inEOS_Zc=3) |
373 | o pkg/seaice: |
374 | - add missing checks for SEAICE_ALLOW_KRYLOV and SEAICE_ALLOW_BOTTOMDRAG |
375 | o pkg/seaice: |
376 | - add basal stress as parameterisation for grounding ice |
377 | following Lemieux et al. (2015) |
378 | - turn on by setting new parameter SEAICEbasalDragK2 to a value |
379 | larger than 0. Lemieux et al. (2015) recommend 15. |
380 | - The adjoint complains with extra recomputations so there is also a |
381 | new cpp-flag SEAICE_ALLOW_BOTTOMDRAG that is undefined by default in |
382 | order to postpone the problem |
383 | - compile the new code in lab_sea |
384 | o verification/halfpipe_streamice: |
385 | - update both TAF and OpenAD adm output (machine truncation differences) |
386 | |
387 | checkpoint65v (2016/04/08) |
388 | o verification/advect_xz: |
389 | - increase overlap size from 3 to 4 and add new secondary test for PQM |
390 | advection scheme (with mono & wino limiter). |
391 | - change main exp. to test PPM (with weno limiter) adv.scheme on Temp. |
392 | o model/src: |
393 | - new parameters "top_Pres" & "seaLev_Z" (replacing Ro_SeaLevel and recently |
394 | added phi0Ref) to set vertical axis origin and phiRef origin; |
395 | keep Ro_SeaLevel for backward compatibility (with a warning). |
396 | According to coordinate and fluid type: |
397 | OCN in Z: top_Pres(Ref) (=rhoConst*PhiRef(1)), seaLev_Z (=rF(1), @ the top) |
398 | ATM in Z: top_Pres(Ref) (=rhoConst*PhiRef(1)), seaLev_Z (=rF(Nr+1) @ bottom) |
399 | OCN in P: top_Pres (=rF(Nr+1)), seaLev_Z (= PhiRef(Nr+1)/g, @ the top) |
400 | ATM in P: top_Pres (=rF(Nr+1)), seaLev_Z (= PhiRef(1)/g, @ the bottom) |
401 | - remove Ro_SeaLevel from ATM experiment parameter files; |
402 | - in tutorial_global_oce_in_p, remove Ro_SeaLevel and set top_Pres to the |
403 | complement; update output.txt (changes at machine truncation level). |
404 | o pkg/seaice/seaice_evp.F |
405 | - simplify computation of deltaZ and zetaZ to simple averaging following |
406 | Bouillon et al. (2013). This removes a lot of code, but also changes |
407 | verification experiment lab_sea.hb87 -> updated |
408 | |
409 | checkpoint65u (2016/03/14) |
410 | o pkg/generic_advdiff: |
411 | - from Darren: add PPM and PQM advection schemes (number 40-42 and 50-52) |
412 | with 2 types of limiter (see: Engwirda & Kelley, submit. to JCP); |
413 | Note (from Darren): unlimited PPM/PQM scheme (40 & 50) are just for |
414 | testing and not for actual use. |
415 | o model/src: |
416 | - add parameter "phi0Ref" to specify reference [pressure/geo] potential at |
417 | origin r = rF(1); |
418 | - add options (parameter selectP_inEOS_Zc) to select which pressure to use |
419 | in EOS for height coordinate: enable to include NH Pressure or to use |
420 | more accurate pressure vertical profile; options not linked to EOS type |
421 | (as previously, e.g., JMD95P/JMD95Z) but set default according to EOS type; |
422 | - start to implement variable gravity (along vertical): for now, only with |
423 | z-coords (not even z*). |
424 | - add Ideal Gas equation of state for height coordinate. |
425 | - update OpenAD output (affected at machine truncation level) of exp: |
426 | global_ocean.90x40x15, OpenAD (std) and tutorial_global_oce_biogeo. |
427 | o pkg/exf: |
428 | - add ALLOW_EXF_OUTPUT_INTERP cpp switch to output the result |
429 | of exf interpolation (before any rescaling, rotation or interpolation |
430 | to velocity point) for each field that gets loaded from file. This option |
431 | identically mimics the input file organization (e.g. record numbers in year |
432 | by year input files) besides the change in horizontal grid. |
433 | - add rotateStressOnAgrid run-time switch so that wind stress fields |
434 | can be provided on the A-grid in zonal/meridional direction and |
435 | rotated on the fly. This only applies to the case when the exf |
436 | interpolation is off and rotateStressOnAgrid is false by default. |
437 | o model/src: |
438 | - rename internal parameter "useDynP_inEos_Zc" to "storePhiHyd4Phys" (since |
439 | it's also used with pkg/atm_phys) and add few more parameters (but still |
440 | inactive, src code yet to come) |
441 | |
442 | checkpoint65t (2016/02/10) |
443 | o pkg/atm_phys: |
444 | - from Ruth Geen: add optical depth dependence on CO2 concentration. |
445 | o model/src: |
446 | - fix vertical inter/extra-polation of density factor rhoFacF (for anelastic) |
447 | for the case setCenterDr=T (delRc set from "data"); add output of rhoFacC&F. |
448 | Update output of exp. deep_anelastic (changes at truncation level). |
449 | o tools: |
450 | - add a hack in "remove_comments_sed" (used only with TAF) for recent |
451 | version of OpenMPI (shipped with FC.23): comment out the new header |
452 | file "mpif-sizeof.h" which causes problems to TAF. |
453 | o pkg/seaice: |
454 | - change the termination criterion so that maxits (SEAICElinearIterMax) |
455 | has an effect |
456 | - unify iteration parameters for implicit solvers (JFNK and Picard) |
457 | SEAICEnonLinIterMax replaces SEAICEnewtonIterMax/NPSEUDOTIMESTEPS |
458 | SEAICElinearIterMax replaces SEAICEkrylovIterMax/SOLV_MAX_ITER |
459 | SEAICEpreLinIterMax replaces SOLV_MAX_ITER in preconditioner |
460 | SEAICEpreNL_IterMax replaces NPSEUDOTIMESTEPS in preconditioner |
461 | SEAICEnonLinTol replaces JFNKgamma_nonlin |
462 | - remove S/R SEAICE_FGMRES_DRIVER and put content into S/R SEAICE_JFKN |
463 | - add new Picard-Krylov solver, compile with SEAICE_ALLOW_KRYLOV and |
464 | use with SEAICEuseKrylov |
465 | o pkg/seaice/seaice_lsr.F |
466 | fix small bug: replace zetaZ by zetaZloc in S/R seaice_lsr_rhsu/v; only |
467 | relevant if SEAICEuseStrImpCpl=T, and even then it does not seem to have |
468 | an effect. |
469 | o pkg/seaice: add two new parameters |
470 | - SEAICEuseLSR to simplify the logic in seaice_dynsolver (this |
471 | parameter is not in any namelist) |
472 | - SEAICEusrPicardAsPrecon to allow s/r seaice_lsr to be used as |
473 | a preconditioner for the non-linear Newton iteration of the JFNK |
474 | solver |
475 | o pkg/seaice/seaice_lsr.F: replace 1./SEAICE_deltaTdyn with recip_deltaT, |
476 | affects some experiments at truncation level: |
477 | - global_ocean.cs32x15.icedyn (11 digits), |
478 | - global_ocean.cs32x15.seaice (11 digits), |
479 | - seaice_itd (12 digits), seaice_itd.lipscomb07 (12 digits) -> update |
480 | - also update global_ocean.cs32x15 adjoint and tangent-linear results |
481 | o pkg/salt_plume & pkg/thsice: |
482 | - for coupled set-up with pkg/thsice in ATM and pkg/salt_plume in OCN, |
483 | connect salt_plume flux to ATM-OCN coupling pkgs interface: |
484 | a) in ATM: also cumulate salt-plume flux in S/R THSICE_SALT_PLUME (for |
485 | export to coupler interface) even without compiling pkg/salt_plume ; |
486 | b) in OCN: apply coupler salt-plume flux to pkg/salt_plume field |
487 | (saltPlumeFlux) just before exch call, in S/R SALT_PLUME_DO_EXCH. |
488 | o pkg/dic: |
489 | - use the updated seaice fraction (from seaice pkgs) for DIC forcing |
490 | instead of the previous time-step value ; done in new S/R DIC_FIELDS_UPDATE |
491 | called from the top of dic_biotic_forcing.F (instead of in DIC_FIELDS_LOAD); |
492 | - move also update with values from ATM-OCN Coupler in the same new S/R |
493 | (previously done in ocn_apply_import.F). |
494 | o tools/adjoint_options: |
495 | - specify explicitly "-f77" or "-f90" in default ad-optfile since TAF (default) |
496 | has been changed on Jan 14, 2016. |
497 | o pkg/ggl90: |
498 | - add alternative discretisation of vertical shear (off by default), to |
499 | compute the mean (@ grid-cell center) of vertical shear compon instead of |
500 | vertical shear of mean flow (@ grid-cell center). |
501 | - add correct parenthesis in ALLOW_GGL90_SMOOTH code to get the same truncated |
502 | results on adjacent faces of cubed-sphere grids; this fix the restart. |
503 | o pkg/atm_compon_interf: |
504 | - skip time-ave over cpl_atmSendFrq of Sea-Level Pressure (atmSLPr) and just |
505 | pass last value, stored directly before export to CPL ; |
506 | Note: this affects results of Coupled set-up where OCN uses useImportSLP=T |
507 | - remove atmSLPr from pickup files (no longer needed for restart) |
508 | |
509 | checkpoint65s (2016/01/13) |
510 | o eesupp & genmake2: |
511 | - first check for Function ETIME and, if it fails, then check for subroutine |
512 | ETIME and consistent output; use the appropriate version in timers.F |
513 | o model/src: |
514 | - to check restart test, add option to apply EXCH to U,V earlier, just before |
515 | integr_continuity; turned off by default. |
516 | o pkg/dic: |
517 | - remove CPP option USE_ATMOSCO2 (not needed) |
518 | o tools/tst_2+2: |
519 | - try to ignore difference between +0 and -0 in binary file, causing test |
520 | to fail for no good reason. |
521 | o eesupp & genmake2: |
522 | - put back modif from Jinxuan Zhu - change etime fct call to S/R call - |
523 | but also check (in genmake2) that test runs and returns meaningful results. |
524 | o coupler pkgs: |
525 | Finish implementation of optionally-exchanged variable switches (started on |
526 | Nov 12) with addition of few more exchanged fields, including 2-way exchange |
527 | of pkg/thsice vars to allow to use seaice dynamics (from pkg/seaice) & seaice |
528 | advection in OCN component; this requires sequential coupling. |
529 | coupler (pkg/atm_ocn_coupler): |
530 | - add argument msgUnit and iter number to CPL_SEND/RECV_ATM/OCN_FIELDS |
531 | routines (useful for debug). |
532 | - only export/import optionally exchanged fields (RunOff, seaice, Salt-Plume |
533 | flux, DIC fields) if corresponding switch is ON. |
534 | - add option to export RunOff to OCN (to use for DIC river input) |
535 | - add 2-way thSIce vars exchange; check for consistent cpl_sequential setting. |
536 | components (pkg/atm_ & ocn_compon_interf): |
537 | - to save memory space in ATM & OCN comp: add some #ifdef ALLOW_${PKG} around |
538 | optionally exchanged fields; add a check & stop in cpl_readparms.F. |
539 | ATMCPL.h: ALLOW_LAND for RunOff, ALLOW_THSICE for seaice, ALLOW_AIM for CO2; |
540 | OCNCPL.h: ALLOW_SALT_PLUME, ALLOW_DIC for DIC, ALLOW_THSICE for 2-W thsice. |
541 | - rename: fracIce -> sIceFrac_cpl (<- match coupler var name) |
542 | + in ATM: fracIceTime -> sIceFracTime ; seaIceTime -> sIceMassTime. |
543 | - add 2-way thSIce vars exchange ; add Salt-Plume flux ; add RunOff in OCN. |
544 | - hold in common block coupler optionally-exchanged variable switch |
545 | and set default "useImportXXX" accordingly; + check & stop if inconsistent. |
546 | - add diagnostics for all imported fields from coupler (in both OCN & ATM); |
547 | this is intended to replace the OCN cplFldtave.* output files (not updated |
548 | to contain new additional exchanged fields). |
549 | o pkg/dic: |
550 | - fix an other bug (also from 2014/08/30) in dic_atmos.F, in dic_int1=3 code. |
551 | o pkg/thsice: |
552 | - when coupled to ATM (useCoupler) with thSIce_skipThermo=T, skip reading |
553 | and writing of thsice pickup files. |
554 | o pkg/atm_compon_interf: |
555 | - move all field individual export-call out of cpl_export_import_data.F |
556 | into new S/R ATM_EXPORT_FIELDS |
557 | o pkg/atm_compon_interf: |
558 | - store state variables (for now, only thSIce fields) just before beeing |
559 | exported (in cpl_export_import_data.F, like on ocean side) instead of from |
560 | atm_store_my_data.F like all exported fluxes. |
561 | - new version of pickup_cpl: write field names into meta file and read meta |
562 | file to find field postion in pickup. Also only write/read fields meeded for |
563 | restart (same logic as main pickup file ; also using pickupStrictlyMatch) |
564 | o pkg/dic: |
565 | - fix bug (added on 2014/08/30) in dic_atmos.F for the case dic_int1= 2 or 3. |
566 | o pkg/seaice: add new parameter SEAICEpressReplFac to choose between |
567 | pressure replacement method (=1., default) or original Hibler (1979) (=0.) |
568 | value can be from domain [0,1] to average between the two methods |
569 | o pkg/atm_phys: |
570 | - allow to provide 2-d map of albedo and mixed-layer depth from files (but |
571 | hold fixed in time). |
572 | |
573 | checkpoint65r (2015/12/21) |
574 | o pkg/seaice: |
575 | fix bug in tridiagonal solvers for SEAICE_OLx/y>0, this affects the JFNK |
576 | solver (offline.dyn_jfnk) and global_ocean.cs32x15.seaice -> updated |
577 | o pkg/seaice: |
578 | - fix a bug in computing areaS in (J-J -> J-1) that affects runs |
579 | when SEAICEscaleSurfStress=.TRUE., |
580 | - apply areaW and areaS in S/R seaice_calc_lhs |
581 | o pkg/atm_phys: |
582 | - add diagnostics for 3-D, Nr+1 levels diagnostics of radiative fluxes |
583 | (shortwave & longwave, net & downward) and diagnostics of temp. tendency |
584 | for individual contribution (convection, LSC cond, radiation) |
585 | - add Ruth Geen etal, GRL 2016, radiation options (see paper supp. |
586 | information); activated with: solar_exponent=0. and wv_exponent=-1. |
587 | o pkg/ggl90: |
588 | - within IDEMIX add upper limit for horizontal group velocity to |
589 | avoid instability problems in the explicit horizontal diffusion term for |
590 | long time steps or high resolution |
591 | o pkg/diagnostics: |
592 | - simplify setting of local-array size in diagstats_output.F: uses "numLevels" |
593 | (from DIAGNOSTICS_SIZE.h) to allow to write out more than Nr levels. |
594 | o testreport: |
595 | - remove "-v" (verbose option) in default mpirun command. |
596 | o pkg/seaice/seaice_growth: |
597 | - catch potential division by zero in ITD code, does not change |
598 | verification results |
599 | o pkg/ecco: |
600 | - retire old codes to the Attic. The calls to retired functions are |
601 | left in a commented form in case they ever need to be re-activated. |
602 | - ecco_check.F: issue warning if any old CPP option is |
603 | defined that corresponds to retired codes -- then stop. |
604 | o pkg/atm_compon_interf: |
605 | - change seaice fraction (use for OCN dic surf.flux) stored and sent to |
606 | coupler: use last time-step value instead of average over cplSendFrq_iter |
607 | time-step, similar to what is done for seaIceMass. |
608 | This will affect results (pkg/dic) of coupled ATM-OCN+dic set-up. |
609 | o eesupp & genmake2: |
610 | - from Jinxuan Zhu: change etime fct call to S/R call (fix gfortran ETIME); |
611 | <= remove until a fix is found for some ifort version on ia32 machine. |
612 | o pkg/seaice/seaice_evp: |
613 | - refine residual computation |
614 | |
615 | checkpoint65q (2015/11/18) |
616 | o pkg/seaice/seaice_evp: |
617 | - fix residual computations so that they no longer affect the actual |
618 | simulation code |
619 | - fix seaice_readparams to be able to actually set new parameters |
620 | SEAICEaEVPcStar and SEAICEaEVPalphaMin, also fix logic a little |
621 | o model/src: |
622 | - fix wrong truncation (single prec) from "FLOAT" function in expressions |
623 | like: deltaT*FLOAT(myIter) when myIter is large: |
624 | a) replaced by DFLOAT (if not seen by TAF); |
625 | b) remove "FLOAT" and use implicit type conversion (if seen by TAF). |
626 | o pkg/aim_v23: |
627 | - write/read the expected CO2 pickups (from S/R AIM_DO_CO2): fix reading |
628 | when pickupSuff is set ; do write rolling pickups + at the end of the run. |
629 | o pkg/atm_ocn_coupler + ocn_compon_interf: |
630 | - in prep for using pkg/seaice Dyn in coupled set-up, implement sequential |
631 | coupling option-1: ATM -(cpl)-> OCN and then OCN -(cpl)-> ATM ; |
632 | add corresponding call in DO_OCEANIC_PHYS. |
633 | o coupler pkgs: |
634 | Start a new way to set-up optionally-exchanged variables (previously, only |
635 | there for exchange_DIC): switch on/off from 1 place, at run-time, in coupler |
636 | data.cpl (new) instead of at compile time in ATMIDS.h & OCNIDS.h ; |
637 | send switch to ATM & OCN compon before reading their own "data.cpl" (so that |
638 | compononent param default can be set accordingly). |
639 | Note: this new switch (cpl_exchange_[xxx]) is not a per variable switch |
640 | but rather applies to a group a fields (going both ways like for DIC) |
641 | and corresponds to an option of coupling config. |
642 | coupler (pkg/atm_ocn_coupler): |
643 | - change parameter file from "data" to "data.cpl" (in cpl_read_params.F), |
644 | and read namelist directly (without eessup S/R calls) instead of |
645 | in the very un-flexible old way, 1 param per line, in fixed order; |
646 | - add error-counter to track errors (e.g., missing "data.cpl") and to stop |
647 | cleanly in CPL_CHECK_CPLCONFIG |
648 | - add new coupling-exchange selectors (some not yet active) including |
649 | cpl_exchange_DIC (to set to 3 to replace atmCpl_exchange_DIC=T in ATMIDS.h |
650 | and ocnCpl_exchange_DIC=T in OCNIDS.h); |
651 | - add 2 new S/R (CPL_SEND_ATM/OCN_CPLPARMS) to send coupler-params to each |
652 | component ; called directly from coupler.F, after comp. registrations; |
653 | - rename few variable-ID names (in ATMIDS.h & OCNIDS.h): |
654 | atm/ocnSeaIceName --> atm/ocnSIceMassName ; atm/ocnFCO2Name -> |
655 | -> atm/ocnCO2FluxName ; atm/ocnWSpdName --> atm/ocnWindSpdName |
656 | components (pkg/atm_ & ocn_compon_interf): |
657 | - add ATM/OCN_CPL_OPTIONS.h in component pkgs and include the corresponding |
658 | CPP header file in all pkg source files. |
659 | - move checking of comp. configs out of cpl_exch_configs.F into new S/R |
660 | ATM/OCN_CHECK_CPLCONFIG; |
661 | - add error-counter to track errors (e.g., in "data.cpl") and to stop |
662 | cleanly in ATM/OCN_CHECK_CPLCONFIG; |
663 | - add new S/R CPL_IMPORT_CPLPARMS to import coupling-exchange selectors |
664 | from coupler ; called from initialise_fixed.F, after PACKAGES_BOOT and |
665 | before PACKAGES_READPARMS; |
666 | verification/cpl_aim+ocn/: |
667 | - update ATMIDS.h & OCNIDS.h (in shared_code) and use new parameter file |
668 | "data.cpl" for coupler (in input_cpl). |
669 | o eesupp/inc: |
670 | - change the MPI-global-sum default (in CPP_EEOPTIONS.h) to: |
671 | #define GLOBAL_SUM_ORDER_TILES (only affects MPI built of global_sum_tile.F) |
672 | to always cumulate tile local-sum in the same order (still uses |
673 | MPI_Allreduce like standard code). |
674 | - in verification experiment code, remove local CPP_EEOPTIONS.h_mpi files |
675 | that are now identical to standard version (in eesupp/inc). |
676 | o pkg/shelfice: |
677 | - add SHELFICETransCoeffTFile for initializing spatially varying |
678 | heat and salt transfer coefficients |
679 | o pkg/atm_compon_interf & ocn_compon_interf: |
680 | - combine into 1 (new) S/R CPL_EXPORT_IMPORT_DATA the two previous |
681 | S/R CPL_EXPORT_MY_DATA & CPL_IMPORT_EXTERNAL_DATA |
682 | - move bi,bj loops inside S/R OCN_STORE_MY_DATA |
683 | o pkg/atm_ocn_coupler: |
684 | - initialise to zero ATMVARS.h & OCNVARS.h arrays. |
685 | o pkg/rbcs: |
686 | - select RBCS-mask for Temp & Salt the same way as for pTracer ; this allows |
687 | to compile with maskLEN=1 when all tracers use the same RBCS-mask. |
688 | - add a short report (to STDOUT) about RBCS-mask settings. |
689 | |
690 | checkpoint65p (2015/10/23) |
691 | o pkg/seaice/seaice_evp.F: fix store directives and key computations, since |
692 | there is no adjoint test for EVP, we don't know what it does to the adjoint |
693 | solution, but at least there are no more recomputation warnings left |
694 | o pkg/seaice/seaice_evp.F: slight modification of averaging so that EVP stands |
695 | a chance of giving the same results as a fully converged VP (JFNK) solver |
696 | o tools/adjoint_options/adjoint_diva: |
697 | - fix bug (typo) in Tang-Linear FLAGS setting for MPI + DIVA |
698 | o pkg/streamice: |
699 | - spotted bug in streamice_driving_stress using dyG where should have been dxG |
700 | o pkg/exf: |
701 | - remove STOP statement that prevented to use wind or (wind-)stress |
702 | interpolation for constant-in-time forcing fields (wind/stress period = 0). |
703 | o pkg/seaice: |
704 | - replace SEAICE_EVP_USE_ADAPTATION by run time parameters, requires |
705 | 5 additionals 2D fields and 6 new store directives |
706 | - change logic in seaice_readparms.F: EVP code can now be turned on in |
707 | various ways, setting SEAICE_deltaTev is no longer required, |
708 | alternatively set SEAICE_evpAlpha/Beta, SEAICEuseEVPstar, SEAICEuseEVPrev, |
709 | or SEAICEaEVPcoeff |
710 | o pkg/shelfice/shelfice_thermodynamics.F |
711 | - redefining uLoc/vLoc to u/v, instead of 2u/v |
712 | o pkg/seaice/seaice_evp.F: introduce "adaptive EVP" by Madlen Kimmritz |
713 | - this is an intermediate state of a truely converging EVP that has |
714 | the potential of outperforming implicit VP methods, I do not recommend |
715 | using it yet. |
716 | - for now, "adaptive EVP" is turned on by setting SEAICE_EVP_USE_ADAPTATION |
717 | and all parameters are hardwired |
718 | - for convergence it still requires very smooth regularisations, that means, |
719 | if SEAICE_DELTA_SMOOTHREG is defined, deltaCreg=deltaC+deltaMin, which is |
720 | different from the VP case with deltaCreg=sqrt(deltaC**2+deltaMin**2); also |
721 | specific averaging appears to be required, still subject to tuning |
722 | - still needs cleaning and I need to turn parameter into runtime parameters |
723 | - add code to compute and print residuals of iteration, compile with |
724 | defining ALLOW_SEAICE_EVP_RESIDUAL to enable it |
725 | o pkg/seaice/seaice_evp.F: fix a bug (factor of four in front of e12Csq) |
726 | that entered with r1.54 on Sep04, 2015, -> update results |
727 | |
728 | checkpoint65o (2015/09/14) |
729 | o pkg/mom_vecinv & mom_common: |
730 | - add deep-atmosphere geometry factor in mom_calc_visc.F + in routines |
731 | called from there. |
732 | - add anelastic and deep-atmosphere geometry factor in pkg/mom_vecinv ; this |
733 | allows to use Vector-Invariant form in deep atmos and anelastic formulation |
734 | o pkg/seaice: introduce fast ice parameterisation following Itkin et al. (2015) |
735 | and Koenig-Beatty+Holland (2012) |
736 | - two new parameters SEAICE_tensilFac and SEAICE_tensilDepth |
737 | - global 2D field tensileStrength, computed in seaice_calc_ice_strength |
738 | - requires an extra input argument for S/R seaice_calc_viscosities |
739 | - tensileStrength's depth dependence is different from Itkin et al. (2015) |
740 | (to be changed and played with, for now exponential) |
741 | o pkg/seaice: introduce new parameter SEAICEscaleSurfStress (default = .FALSE.) |
742 | - if TRUE scale ice-ocean and ice-atmosphere stress acting on sea ice |
743 | by AREA according to Connelly et al. (2004), JPO. |
744 | - For EVP and the LSR solver, the implicit part of the drag term is |
745 | the only non-zero term in the denominator when there is no ice (which |
746 | prevented running the model with zero ice-ocean drag). If |
747 | SEAICEscaleSurfStress = .TRUE., this results in a division by zero |
748 | (or zero main diagonals BU/BV) which need to be caught. A practical |
749 | consequence is that for open water, the momentum equation reduce |
750 | to trivially 0 = 0 + 0 (for EVP). For LSR, BU/BV are reset to 1, if |
751 | they happen to be zero, often leading to a non-zero solution over |
752 | open water. |
753 | o pkg/seaice: revise EVP code (seaice_evp.F) in preparation for a more |
754 | efficient EVP method. |
755 | - introduce area-weighted averages for e12 (analogously to |
756 | seaice_calc_viscosities.F); this totally changes lab_sea.hb87 (2 digits |
757 | remain, but also changing the order of terms in the previous average |
758 | changed the results as much) -> update experiment |
759 | - add SEAICE_DELTA_SMOOTHREG code |
760 | - disentangle computation of zetaC/deltaC and zetaZ/deltaZ, also for |
761 | TEM-code |
762 | - adjust loop bounds so that only required fields are computed |
763 | - add new averaging code for zetaZ/deltaZ (again similar to |
764 | seaice_calc_viscosities.F), inactive by default for now (will change |
765 | results again), but will replace old code eventually |
766 | o eesupp/src: |
767 | - add an other alternative for multi-proc GLOBAL_SUM (in global_sum_tile.F) |
768 | to always cumulate tile local-sum in the same order |
769 | (option #define GLOBAL_SUM_ORDER_TILES in CPP_EEOPTIONS.h). |
770 | Still uses MPI_Allreduce (like standard code) but on array of tiles |
771 | and should be faster than GLOBAL_SUM_SEND_RECV code. |
772 | - switch almost all verification experiments that use GLOBAL_SUM_SEND_RECV |
773 | (defined in CPP_EEOPTIONS.h_mpi) to GLOBAL_SUM_ORDER_TILES instead. |
774 | - add CPP_EEOPTIONS.h_mpi with GLOBAL_SUM_ORDER_TILES defined in 14 more exp.: |
775 | aim.5l_cs, cheapAML_box, deep_anelastic, dome, fizhi-cs-32x32x40, |
776 | fizhi-cs-aqualev20, fizhi-gridalt-hs, global_ocean_ebm, matrix_example, |
777 | natl_box, solid-body.cs-32x32x1, tutorial_advection_in_gyre, |
778 | tutorial_baroclinic_gyre and tutorial_held_suarez_cs. |
779 | |
780 | checkpoint65n (2015/07/29) |
781 | o pkg/thsice: |
782 | - add a warning when used with pkg/aim but without updating SST |
783 | (stepFwd_oceMxL=F & useCoupler=F & tauRelax_MxL<>-1 ). |
784 | o pkg/offline: |
785 | - change where Offline-Fields are loaded, from load_fields_driver.F to |
786 | directly within FORWARD_STEP, just after updating iter number and time; |
787 | - move setting of GM and KPP diffusivity out of OFFLINE_FIELDS_LOAD into new |
788 | S/R OFFLINE_GET_DIFFUS that is called towards the end of DO_OCEANIC_PHYS; |
789 | These changes allow: |
790 | a) to recover exactly on-line results using deltaToffline=deltaTClock, |
791 | tested (using offlineIter0= nIter0 -1 and offlineTimeOffset= -deltaT/2) |
792 | both with Lin & Non-Lin Free-Surf, both with staggerTimeStep & synchronous |
793 | time-step, both with GM & KPP files and with recomputing these fields; |
794 | b) no needs to switch on staggerTimeStep anymore; |
795 | c) simplify rescaling of offline horiz. velocity with Non-Lin Free-Surf. |
796 | - update output of experiment tutorial_dic_adjoffline (only 3 digits left). |
797 | o pkg/offline: |
798 | - change (rarely used) offset-iteration parameter to an offset time (in s): |
799 | can easily recover previous offset-iter effect by setting offset-time |
800 | (offlineTimeOffset) to offset-iter x deltaToffline; |
801 | - do not turn-off Temp & Salinity surface relaxation when using KPP (used |
802 | in KPP as part of surface buoyancy forcing) in offline run. |
803 | - fix ptracers KPP non-local term in the case where KPP is re-computed. |
804 | o OpenAD |
805 | - Adding preliminary ggl90 test to OpenAD verification. |
806 | Config. with ggl90 currently diverges after 64 time steps |
807 | so will need more work to become more stable |
808 | - Adding preliminary kpp test to OpenAD verification. |
809 | required small tweakes in kpp_routines.F |
810 | - Merge and update from Krishna Narayanan's contrib area: |
811 | * Add one variable for preliminary OpenAD DIVA |
812 | * Add replacement time-stepping for OpenAD DIVA |
813 | * genmake2 flag -diva (but only for OpenAD; preliminary) |
814 | * required modifs for OAD_support |
815 | successful preliminary test for tutorial_global_oce_biogeo/ |
816 | o pkg/seaice: |
817 | - initialise deltaC in seaice_lsr, cosmetic changes in seaice_lsr |
818 | - add cpp-flag SEAICE_DELTA_SMOOTHREG for option of regularising |
819 | delta with a smooth function in s/r seaice_calc_viscosity |
820 | (no effect on EVP) |
821 | - rename local suffix "sqr" into "sq" for more consistent variable names |
822 | o pkg/seaice: |
823 | add new parameter SEAICE_deltaMin that is used ***only*** |
824 | for regularizing Delta (and nothing else, like the parameter |
825 | which is also used for all sorts of things SEAICE_EPS). |
826 | Defaults to SEAICE_EPS for backward compatibility only. |
827 | o pkg/seaice: replace erroneously storing e12Csqr on the wrong tape with |
828 | the wrong key by inialising it before use -> fixes a recomputation |
829 | problem but does not fix the gradient |
830 | o pkg/layers: |
831 | - move resetting of flux arrays to outside the iLa loop |
832 | (this caused layers_diapycnal to not work with more than one layer coord.) |
833 | - fix bug in calculation of layers_recip_delta in layers_init_fixed.F |
834 | o pkg/layers: |
835 | - remove from common block 3D layers fields (used to diagnose transport |
836 | in tracer coords) and declare them as local arrays in layers_calc.F |
837 | o pkg/seaice: |
838 | - Rename SEAICE_VECTORIZE_LSR_ZEBRA to SEAICE_LSR_ZEBRA and define it |
839 | in lab_sea forward experiment (changes results -> updated) |
840 | - update adjoint experiment lab_sea after cleaning up seaice_lsr_tridiagu/v |
841 | o pkg/seaice: modify seaice_lsr.F in order to improve the gradient |
842 | computations; for SEAICE_VECTORIZE_LSR |
843 | - move the loops over which the tridiagonal solvers (seaice_lsr_tridiagu/v) |
844 | sweep to the outside, |
845 | - remove store directives and add "CADJ loop sequential" directives |
846 | in analogy to model/src/solve_tridiagonal.F |
847 | - replace many "#ifdef SEAICE_VECTORIZE_LSR_ZEBRA" by variable loop |
848 | boundaries to yield more readable code. This has also the charming side |
849 | effect that your can use SEAICE_VECTORIZE_LSR_ZEBRA without |
850 | SEAICE_VECTORIZE_LSR (i.e. adjoint without recomputations in |
851 | seaice_lsr_tridiagu/v now requires either of these flags, vectorization |
852 | still requires SEAICE_VECTORIZE_LSR with SEAICE_VECTORIZE_LSR_ZEBRA as |
853 | an additional option) |
854 | The tridiagonal solvers are now completely analoguous to solve_tridiagonal.F |
855 | but the adjoint gradients (which are affected by this change) still explode. |
856 | o coupler (atm & ocn _compon_interf): |
857 | - avoid using Exch2 IO mapping if not suitable. |
858 | |
859 | checkpoint65m (2015/06/15) |
860 | o pkg/layers: |
861 | - clean-up old parameters setting (from Sep 2012): |
862 | + remove old parameters setting from common block (declared locally); |
863 | + stop if any old parameter is mixed with new parameters; |
864 | + check for valid or consistent parameter setting (e.g., layers_name) |
865 | - check that layers_bounds for Pot.Density are in the right range; |
866 | this is supposed to catch un-updated setting after recently shifting |
867 | potential density field "prho" by -1000 (now in "sigma" scale). |
868 | o pkg/layers: |
869 | - Added missing call to layers_fill for keeping track of tottend in |
870 | pkg/diagnostics/diagnostics_fill_state.F |
871 | o pkg/layers: |
872 | - added CPP flux LAYERS_FINEGRID_DIAPYCNAL to disable fine-grid binning |
873 | of diapycnal fluxes |
874 | o pkg/layers: |
875 | - reverted changes to interpolation to previous treatment; there |
876 | was never actually a problem |
877 | o pkg/layers: |
878 | - fix interpolation of layers tracers in the presence of partial cells |
879 | - add lots of new functionality to compute water mass transformation |
880 | (enabled by CPP flag LAYERS_THERMODYNAMICS) |
881 | - add new calls from main code (diags_oceanic_surf_flux.F, |
882 | thermodynamics.F, impldiff.F) and gad to save the necessary fields |
883 | for layers_thermodynamics calculations |
884 | o pkg/ptracers: |
885 | - add capability of stepping a passive tracer forward without advection |
886 | by setting PTRACERS_advScheme to 0. |
887 | o pkg/diagnostics: |
888 | - add few (threads) _BARRIER around any update of "diag_pkgStatus". |
889 | o pkg/layers: |
890 | - shift potential density field "prho" by -1000 for density layer averaging so |
891 | that it corresponds to usual "sigma" definition (i.e., rho(p=const)-1000); |
892 | Note that density bin boundaries (layers_bounds in data.layers) have |
893 | to be set accordingly (i.e., shifted, in sigma scale). |
894 | o pkg/layers: |
895 | - fix snap-shot output of layer thickness @ V.pt and output of pot.density |
896 | - fix calculation of layer non-weighted velocity and layer probability |
897 | - add diagnostics for pot.density used for layer averaging |
898 | o pkg/seaice: |
899 | - seaice_calc_viscosity.F: change computation of deltaC**2 to ensure |
900 | positiveness, modify a few comments and improve variable names, |
901 | - the changed computation of deltaC affects most seaice-related |
902 | experiments at the truncation level. |
903 | seaice_itd.thermo is affected by far the most, with |
904 | only 7 digits of agreement remaining; update experiments. |
905 | |
906 | checkpoint65l (2015/05/04) |
907 | o pkg/shelfice: |
908 | - in shelfice_thermodynamics.F, if SHELFICEBoundaryLayer=.true., then set |
909 | factor drKp1 to zero where it is negative (ie. do not use |
910 | SHELFICEBoundaryLayer if hFacC>1) |
911 | - the same for factor drLoc in shelfice_forcing.F |
912 | o tools/genmake2: move FEXTRAFLAGS from FFLAGS to FOPTIM to avoid a problem |
913 | with modules in ptracers, when using testreport option "-small_f" |
914 | o pkg/seaice/seaice_growth.F (in case of SEAICE_ITD) |
915 | - replace tmpscal1**1.36 by faster exp(1.36*log(tmpscal1)) |
916 | o verification/testreport |
917 | - add new option -small_f |
918 | with this option testreport first makes the target small_f (*.f files) |
919 | before running make (all). This is useful for explicit inlining when |
920 | all sources need to be full available. |
921 | o pkg/exf/exf_interp.F: |
922 | remove previous changes related to reverse (decreasing) input grids latitude |
923 | |
924 | checkpoint65k (2015/04/01) |
925 | o pkg/ecco: |
926 | fix missing cosphi initialization; use eccoiter in place of optimcycle; |
927 | if autodiff is not compiled then use READ_REC_XY_RL/READ_REC_XYZ_RL |
928 | instead of active read/write |
929 | o pkg/ctrl: |
930 | if autodiff is not compiled then use READ_REC_XY_RL/READ_REC_XYZ_RL |
931 | instead of active read/write. |
932 | o pkg/autodiff: make autodiff_readparms.F and autodiff_whtapeio_sync.F |
933 | return if .NOT.useAUTODIFF |
934 | o pkg/seaice: add CPP brackets (cost function related). |
935 | o model/src: |
936 | add useAUTODIFF run time switch. |
937 | o pkg/exf/exf_interp.F: |
938 | add code to allow input grids with latitude starting in the north (i.e. when |
939 | j=1 corresponds to northern edge of field); modify global_with_exf to test |
940 | this feature. |
941 | o verification/testreport: |
942 | - replace "grep -A3" with POSIX conformal sed command, because there are |
943 | implementations of grep that cannot do contextual searches |
944 | - replace "cat -n" by "nl" (two occurrences), because not all implementations |
945 | of "cat" have the option "-n" |
946 | o model/src: |
947 | add new file gsw_teos10.F that contains 3 functions, more or less a copy |
948 | of the gsw_toolbox.f90 of the TEOS-10 fortran interface, that are used to |
949 | convert from conservative to potential temperature. For now they are not |
950 | called anywhere. |
951 | o pkg/ggl90: make "useIDEMIX" useful |
952 | - re-organize code in s/r ggl90_calc a little to move computations that |
953 | are different for idemix into separate loops (changes verification |
954 | experiment idemix at truncation level, 12 digits remain -> updated) |
955 | - requires 2 new 2D fields KappaM, verticalShear |
956 | - make hFacI and recip_hFacI local 3D variables that are passed to |
957 | s/r ggl90_idemix |
958 | - fix and improve some comments |
959 | |
960 | checkpoint65j (2015/02/25) |
961 | o pkg/openad |
962 | - synchronize seawater.F with version in model/src: replace routine |
963 | body of sw_temp by calling sw_ptmp and fix/add a few comments. |
964 | o pkg/mnc: |
965 | - change default value of pickup_read/write_mnc params to FALSE |
966 | (since few features are missing in reading MNC pickup files). |
967 | o model/src: |
968 | - change default (background) vertical diffusivity for salt to be the |
969 | temperature (background) vertical diffusivity. |
970 | - change background vertical diffusivity in vertical mixing pkgs ggl90, |
971 | kl10, my82 and pp81 from temperature diffusivity to salinity diffusivity. |
972 | This makes ptracers default diffusivity (that uses salt diffKr) more |
973 | consistent with vertical mixing schemes. |
974 | o verification/testreport: |
975 | - fix typo in "-pcls" option ; |
976 | - put temp files in /tmp (instead of in local dir) |
977 | - add option "-ncad" to use genmake2 new option "-nocat4ad" |
978 | - allow to use "-j" option (for multi-procs make) for AD, OAD and TLM. |
979 | o pkg/ggl90 (idemix code): |
980 | - apply few fixes ; add some missing "_d 0" ; update output of exp. |
981 | global_ocean.90x40x15.idemix |
982 | o OpenAD |
983 | - enable active file I/O and begin removal of work-around code |
984 | for OpenAD for handling control variables (memory vs. active files) |
985 | - new CPP options file OPENAD_OPTIONS.h |
986 | - revert to genarr2d gradient check for hs94.1x64x5 |
987 | - (genarr3d tested by tutorial_global_oce_biogeo, tutorial_tracer_adjsens) |
988 | - gentim2d works for halfpipe_streamice but not yet hs94.1x64x5 |
989 | o tools/genmake2: |
990 | - add option for an alternative Makefile (from Martin) where multiple |
991 | source files are sent to TAF (instead of all in one file). |
992 | o pkg/ggl90: add IDEMIX (Olbers and Eden, 2013) |
993 | - code provided by Carsten Eden as an extension of ggl90 |
994 | - so far the code is turned on within ggl90 by setting a CPP-flag at |
995 | compile time; a runtime flag implementation is not yet complete |
996 | - tested in new verification experiment global_ocean.90x40x15.idemix |
997 | o verification: |
998 | - reduce length of the AD test run by half for experiments |
999 | global_ocean.cs32x15 (std + thsice) and isomip |
1000 | - enable active file I/O for OpenAD, adjust verifications accordingly |
1001 | - halfpipe_streamice: change gradient check from genarr2d to gentim2d |
1002 | o verification/testreport: |
1003 | - fix two non-POSIX sed statements so that there are no error messages |
1004 | on Mac OS X |
1005 | - replace hostname -s with hostname | sed 's/\..*$//' |
1006 | o model/src/seawater.F: |
1007 | - simplify SW_TEMP to just calling SW_PTMP with P and PR exchanged |
1008 | (following the matlab code), which would have avoided the bug caught |
1009 | by Matt (see below) in the first place |
1010 | o pkg/shelfice: |
1011 | - implement alternative discretisation of quadratic drag (selectBotDragQuadr) |
1012 | and true distance in no-slip BC (bottomVisc_pCell) similar to bottom-drag. |
1013 | - fix sign of friction tendency (no-slip BC) and fix u,v drag for thin |
1014 | ice-shelf case (i.e., within surface level). |
1015 | - add config summary in shelfice_check.F |
1016 | - remove global variable recip_SHELFICElatentHeat and replace by a local |
1017 | variable recip_latentHeat |
1018 | - introduce diagnostics for friction velocity uStar (in case of |
1019 | SHELFICEuseGammaFrict) |
1020 | - change verification experiment isomip.htd: |
1021 | + start from pickup (as input_ad at nIter0=8640) |
1022 | + start from SHELFICEmassFile instead of SHELFICEloadAnomaly file |
1023 | + test SHELFICEuseGammaFrict = .TRUE. |
1024 | + test SHELFICEadvDiffHeatFlux = .TRUE. |
1025 | o model/src: |
1026 | - fix bug (Thanks to Matt) in function SW_TEMP (to convert Pot.Temp to |
1027 | in-situ Temp) and in routine SW_TEMP (in pkg/openad); |
1028 | update output of experiments global_with_exf.yearly and isomip (all 6). |
1029 | o pkg/shelfice: |
1030 | - change setting of kTopC to also be zero where there is no ice-shelf. |
1031 | - zero out surface forcing arrays (for now, for T & S + EmPmR) where |
1032 | ice-shelf is. |
1033 | - first attempt to get RealFreshWaterFlux effects: for now, only without |
1034 | SHELFICEboundaryLayer ; not consistent if using synchronous time-stepping. |
1035 | o pkg/seaice: add the option to prescribe a fixed thickness PDF |
1036 | for thermodynamic calculations |
1037 | - because of divisions of the type 7/7 not exactly equal to 1, this change |
1038 | affects results of some verification experiments by up to 4 digits: |
1039 | global_ocean.cs32x15.seaice, lab_sea, lab_sea.fd, lab_sea.salt_plume, |
1040 | seaice_obcs, seaice_obcs.seaiceSponge, seaice_obcs.tides |
1041 | adjoint: lab_sea, lab_sea.noseaicedyn |
1042 | -> updated |
1043 | |
1044 | checkpoint65i (2015/01/23) |
1045 | o model/src: |
1046 | - change units of frictionHeating field from W to W/m^2 |
1047 | - fix bug in frictional heating from stratospheric drag in |
1048 | S/R ATM_PHYS_TENDENCY_APPLY_V |
1049 | - with synchronous time-stepping: move resetting to zero of frictionHeating |
1050 | field from load_fields_driver.F to thermodynamics.F ; |
1051 | - add diagnostics for frictional heating. |
1052 | o model/src & gmredi K3D: |
1053 | - add frictionHeating field to pickup-files (for synchronous time-stepping) |
1054 | - move ALLOW_EDDYPSI block out of DYNVARS.h and merge it into FFIELDS.h |
1055 | - rename uMean,vMean --> uEulerMean,vEulerMean (+ change diagnostics name |
1056 | and name in pickup file). |
1057 | - fix arguments of few DIAGNOSTICS_FILL calls in gmredi_k3d.F |
1058 | o model/src: |
1059 | - move (from ini_forcing.F) initialisation of all arrays in header file |
1060 | FFIELDS.h into new S/R ini_ffields.F ; this fix broken restart |
1061 | (since Nov 2012) with option selectAddFluid=1. |
1062 | o pkg/shelfice: |
1063 | - change units (+ document) of newly added field "shelfIceMassDynTendency" |
1064 | - upgrade from _RS to _RL shelficeMass & shelficeLoadAnomaly arrays. |
1065 | o pkg/obcs: re-organize obcs_calc_stevens.F to prepare for passive tracers |
1066 | o pkg/seaice: two new runtime parameters: |
1067 | - SEAICE_cStar replaces the hard wired "20" in the strength formulation, |
1068 | long overdue |
1069 | - SEAICE_tensilFac: preparation for Koenig-Beatty+Holland (2012) |
1070 | parameterization of tensil stress for fast ice (does not do anything yet) |
1071 | o pkg/seaice/seaice_check.F: left over from restricted addtive Schwarz method |
1072 | for LSR: move checking overlaps out of JFNK-if-block |
1073 | o pkg/atm_phys: |
1074 | - move copy of grid and dynamical fields out of atm_phys_driver.F into |
1075 | new S/R ATM_PHYS_DYN2PHYS. |
1076 | - fix level height for Linear Free-Surf case (to be consistent with |
1077 | fixed-in-time pressure levels). |
1078 | o pkg/mom_common (bottomdrag): |
1079 | - average bottomDragFld (ALLOW_BOTTOMDRAG_CONTROL) from grid-cell center |
1080 | to correct location (U & V point) in S/R MOM_U/V_BOTTOMDRAG; |
1081 | update output (adm & tlm) of experiment global_ocean.90x40x15.bottomdrag. |
1082 | o pkg/shelfice (u/v_drag): |
1083 | - add one argument (the other velocity component) to S/R SHELFICE_U/V_DRAG; |
1084 | - use SHELFICEDragLinear & SHELFICEDragQuadratic in shelfice_v_drag.F |
1085 | (now similar to shelfice_u_drag.F) |
1086 | - remove condition on bottomDragTerms when calling SHELFICE_U/V_DRAG |
1087 | from mom_vecinv.F (similar to mom_fluxform calls). |
1088 | o pkg/mom_common (bottomdrag): |
1089 | - add one argument (the other velocity component) to S/R MOM_U/V_BOTTOMDRAG; |
1090 | - add options for alternative discretisation of velocity norm in quadratic |
1091 | bottom drag: averaging of grid-cell-center KE to U.point and V.point |
1092 | (selectBotDragQuadr=0, original code) can produce noisy patterns; this |
1093 | improves when averaging only the other component (e.g. vVel for U bottom |
1094 | drag) using wet-point method (selectBotDragQuadr=2) or not (=1). |
1095 | - add options (bottomVisc_pCell) to account for partial-cell in bottom |
1096 | friction (no-slip BC) thus getting the true distance from the bottom; |
1097 | off by default since this also reduces model stability (explicit bottom |
1098 | friction). Changes produce different machine truncation with linear-drag |
1099 | + no-slip BC: update output of experiments exp4.stevens (10 digits) and |
1100 | front_relax (bvp & mxl, 10 & 11 digits). |
1101 | o model/src & mom pkgs: |
1102 | - add one more level to vertical viscosity local arrays (Nr+1, previously Nr) |
1103 | since no-slip bottom BC uses viscosity @ k+1 to update velocity @ level k |
1104 | - for now and until vertical mixing scheme are updated to fill up level Nr+1, |
1105 | just copy level Nr value to level Nr+1. |
1106 | o doc: |
1107 | - add notes form Abhisek Chakraborty on how to close Heat & Salt budgets. |
1108 | o pkg/shelfice: |
1109 | - shelfice_init_varia.F, shelfice_init_fixed.F, shelfice_readparms.F, |
1110 | SHELFICE.h: move array shelficemass to init_varia, initialise |
1111 | from array shelficemassinit, which is set in init_fixed and |
1112 | has option to be set from file; introduce array |
1113 | shelficeMassDynTend array, set thru file in init_fixed |
1114 | - NEW FILE: shelfice_step_icemass.F: update shelficemass from either |
1115 | shelfIceFreshWaterFlux and shelficeMassDynTend or H_streamice in |
1116 | pkg/streamice |
1117 | - shelfice_thermodynamics.F: call shelfice_step_icemass if |
1118 | SHELFICEMassStepping = .true. |
1119 | - shelfice_ad_diff.list: add new subroutine shelfice_step_icemass.f |
1120 | |
1121 | checkpoint65h (2014/12/17) |
1122 | o verification/global_ocean.90x40x15, global_ocean_ebm: |
1123 | - update to generic controls. |
1124 | o pkg/ctrl: |
1125 | - ctrl_map_ini_genarr.F: test for igen>0 |
1126 | - ctrl_init_variables.F: add call to CTRL_MAP_INI_GENTIM2D. |
1127 | - move gentim2d part of ctrl_map_ini_genarr.F to |
1128 | new separate routine : ctrl_map_ini_gentim2d.F |
1129 | - ctrl_cost_driver.F,ctrl_init.F ctrl_map_ini_genarr.F: |
1130 | add time variable weights and cyclic controls (time mean, |
1131 | seasonal cycle, etc) capabilities to gentim2d |
1132 | o pkg/ecco: |
1133 | - move reading of error, conversion to weights from |
1134 | ecco_cost_init_fixed.F to ecco_toolbox.F (ecco_readwei) |
1135 | o global_oce_llc90, cs32: |
1136 | - activte sbo. |
1137 | - CTRL_SIZE.h : add maxCtrlProc. |
1138 | - activate the new genctrl capabilities. |
1139 | - update following reorganization of global_oce_input_fields.tar.gz |
1140 | o pkg/ctrl/ctrl_ad_diff.list: |
1141 | - add missing ctrl_init_rec.f |
1142 | o tools/OAD_support/keepOriginal: |
1143 | - add ctrl_init_rec.F |
1144 | o model/src/the_main_loop.F, pkg/ctrl/ctrl_map_ini_genarr.F: |
1145 | - avoid recomputations of xx_gentim2d_dummy. |
1146 | o momentum diagnostics: |
1147 | - move filling of diagnostics Um_Diss & Vm_Diss from mom_fluxform.F and |
1148 | mom_vecinv.F to timestep.F (to include Smag-3D contribution). |
1149 | o pkg/seaice/seaice_lsr.F: |
1150 | - fix computation of BU/BV, make sure they are non-zero, only necessary |
1151 | for cubed sphere exchanges and SEAICE_OLx/y>0. |
1152 | This makes calling s/r fill_cs_corner_rl obsolete (removed). |
1153 | o verification/global_ocean.cs32x15/input.seaice |
1154 | - add test for strong implicit coupling and restricted addtive Schwarz |
1155 | methods for LSR |
1156 | - update results/output.seaice.txt |
1157 | o verification/tutorial_global_oce_biogeo: |
1158 | - AD & OAD set-up: switch off ALLOW_OLD_VIRTUALFLUX (like in fwd set-up) |
1159 | and set PTRACERS_EvPrRn(1,2) to zero (for DIC & ALK); |
1160 | update output_adm,_oadm,_tlm.txt |
1161 | o pkg/dic: |
1162 | - change default to "#undef ALLOW_OLD_VIRTUALFLUX" in DIC_OPTIONS.h |
1163 | - add a stop when ALLOW_OLD_VIRTUALFLUX is defined and PTRACERS_EvPrRn |
1164 | for tracer 1 & 2 is set (to avoid double counting of dilution effect). |
1165 | o verification/tutorial_global_oce_biogeo: |
1166 | - AD & OAD set-up: do not set PTRACERS_EvPrRn for tracer 1 & 2 since |
1167 | dilution is already added by pkg/dic ALLOW_OLD_VIRTUALFLUX ; |
1168 | update output_adm,_oadm,_tlm.txt |
1169 | o eesupp/src: |
1170 | - add fill_cs_corner_rl.F (_RL-copy of fill_cs_corner_rs.F) |
1171 | and call it in seaice_lsr when using nonzero SEAICE_OLx/y |
1172 | o pkg/seaice: introduce strongly implicit coupling, intended for stabilizing |
1173 | LSR (following Hutchings et al. 2004) |
1174 | - introduce zetaZ as a global variable (requires adjustments in |
1175 | seaice_evp.F and seaice_jfnk.F) and compute analoguously to etaZ |
1176 | in seaice_calc_viscosities.F |
1177 | - new flag SEAICEuseStrImpCpl (default off) |
1178 | - add new terms zetaZ*du/dy and zetaZ*dv/dx on both sides of the |
1179 | momentum equations |
1180 | - JFNK-solver (preconditioner) adjusted to allow using this method |
1181 | (where it does not have any positive effect) |
1182 | o pkg/seaice |
1183 | - add overlap for restrictive additive Schwartz method also to LSR, but |
1184 | turn it off by default (because it only seems to work for non-cubed |
1185 | sphere/llc topologies) |
1186 | o pkg/autodiff |
1187 | - add extra exchanges in addummy_in_steppging also for mnc output |
1188 | o pkg/seaice: |
1189 | - add extra exchanges before dumping adjoint fields in seaice_ad_dump.F |
1190 | to avoid stripes in the adjoint output (similar to addummy_in_stepping.F) |
1191 | o pkg/obcs: |
1192 | - add option to specify domain-connected piece Id along OB though files |
1193 | (for now, only used to diagnose PhiVel; default =1 -> global correction) |
1194 | - modify obcs_diag_balance.F to process each connected-part separately; |
1195 | exclude OB where Id = 0 but keep the full divergence there (-> constant |
1196 | Psi along this portion of OB and all inflow derived from grad(Phi)) |
1197 | - add example of OB-conect files in verification/so_box_biogeo/input. |
1198 | o pkg/diagnostics: |
1199 | - improve treatment of Open-Boundaries in Velocity-Potential calculation: |
1200 | a) use non zero matrix element across OB and solve for Phi 1 grid point |
1201 | outside OB (i.e, where tracer OBCS are applied). |
1202 | b) global imbalance of inFlow/outFlow across OB: instead of modifying |
1203 | velocity across OB, spread it uniformly along the OB in the RHS. |
1204 | |
1205 | checkpoint65g (2014/11/19) |
1206 | o pkg/diagnostcis: |
1207 | - add preconditioner off-diagonal factor (diagCG_pcOffDFac) as run-time param |
1208 | o pkg/my82,pp81,kl10: |
1209 | - fix ALLOW_3D_DIFFKR implementation (previously had no effect): use 3-D |
1210 | field diffKr as background diffusivity to set minimum diffusivity value. |
1211 | o pkg/seaice: |
1212 | - add new parameter SEAICEuseEVPrev (for revisited EVP by |
1213 | Bouillon et al 2013) |
1214 | - add SEAICE_evpAlpha/Beta to namelist |
1215 | - modify seaice_evp code to able to use SEAICEuseEVPrev. These changes |
1216 | involve trivial re-ordering of divisions/multiplications that should not |
1217 | have any effects, but ... they do change the results of lab_sea.hb87 so |
1218 | that only 2 digits of agreement remain, in line with the general |
1219 | instability/fragility of the evp-code. For now, I do not care and just |
1220 | update the verification experiment |
1221 | o pkg/ctrl : add generic pre-processing (xx_genarr2d_preproc etc) |
1222 | - remove xx_genarr2d_numsmooth etc |
1223 | - use xx_genarr2d_preproc etc instead |
1224 | - carry out smooth_correl2D at initialization stage rather than during |
1225 | time stepping. |
1226 | - get smoothOpNb from xx_gentim2d_preproc |
1227 | o global_oce_cs32 : |
1228 | - add test of generic ecco capabilities. |
1229 | o pkg/exf/exf_getsurfacefluxes.F : |
1230 | - add to tmpUE/tmpVN rather than re-initializing them (conventional behavior). |
1231 | o pkg/ctrl,ecco : |
1232 | - omit un-necessary arguments to ctrl_cost_gen.F unless ECCO_CTRL_DEPRECATED |
1233 | is defined. |
1234 | o pkg/seaice: add diagnostics for Delta (deformation parameter) |
1235 | o model/src: |
1236 | - when ALLOW_3D_DIFFKR is defined, add a Warning if any of the vertical |
1237 | diffusivity (background) is specified but ignored. |
1238 | o verification: |
1239 | - in testreport, convert hostname to lower case for default output dir name |
1240 | o model, pkg : add useCTRL, useECCO parameters (on/off run time switch). |
1241 | o pkg/dic: add modifications from Hajoon: |
1242 | - add iron sedimentation flux function of the flux of PO4 out of bottom layer |
1243 | - light attenuation: add self-shading effect by climatological Chlorophyll |
1244 | (read from file). |
1245 | o pkg/seaice/seaice_preconditioner.F : fix cpp flags, so that code also |
1246 | compiles when SEAICE_ALLOW_DYNAMICS is undefined |
1247 | o global_oce_llc90,cs32 : ecco_v4 verification exps now use separate |
1248 | AUTODIFF_OPTIONS.h, CTRL_OPTIONS.h, ECCO_OPTIONS.h rather than |
1249 | ECCO_CPPOPTIONS.h (i.e. replacing the deprecated, circumvoluted, |
1250 | approach where CPP_OPTIONS.h includes an omnipotent |
1251 | ECCO_CPPOPTIONS.h that superseeds pkgs '_OPTIONS.h'). |
1252 | o pkg/ctrl/ctrl_map_ini_genarr.F : include GMREDI_OPTIONS.h where |
1253 | ALLOW_3D_KAPGM, ALLOW_3D_KAPREDI (to be added later) belong. |
1254 | o pkg/seaice/SEAICE_SIZE.h : replace ALLOW_AUTODIFF_TAMC with ALLOW_AUTODIFF |
1255 | to avoid needing AUTODIFF_OPTIONS.h anytime SEAICE_SIZE.h is included |
1256 | (it seems that THSICE_SIZE.h, PTRACERS_SIZE.h have the same issue...) |
1257 | o model/src, pkg/smooth, profiles, salt_plume, seaice, exf, ecco, ctrl : |
1258 | add ECCO_OPTIONS.h, AUTODIFF_OPTIONS.h, CTRL_OPTIONS.h when needed |
1259 | - ECCO_OPTIONS.h is needed when including ecco_cost.h, ecco.h |
1260 | - AUTODIFF_OPTIONS.h is needed when including tamc.h, tamc_keys.h |
1261 | - CTRL_OPTIONS.h is needed when including ctrl.h, optim.h, etc |
1262 | o pkg/ctrl,ecco,exf : |
1263 | - remove variables associated with NON-generic costs, |
1264 | unless ECCO_CTRL_DEPRECATED is defined. |
1265 | - remove NON-generic NON-obcs controls, |
1266 | unless ECCO_CTRL_DEPRECATED is defined. |
1267 | o pkg/ctrl : added ctrl_local_params.h |
1268 | o pkg/ecco : added ecco_local_params.h |
1269 | o verification : added ECCO_CTRL_DEPRECATED to most as and oad |
1270 | experiments, which will progressively be removed once the |
1271 | experiments are revised to use only generic controls/costs. |
1272 | |
1273 | checkpoint65f (2014/10/13) |
1274 | o pkg/ctrl, ecco, seaice : minor changes in headers |
1275 | o global_oce_llc90,cs32 : ecco_v4 verification exps now test generic |
1276 | cost function and control capabilities added since checkpoint65c. |
1277 | o pkg/ctrl: regroup all obcs ctrl variables in CTRL_OBCS.h. |
1278 | o pkg/ecco: increase modularity and improve logic |
1279 | - ecco_toolbox.F (new) : basic operations that are often used, |
1280 | including ecco_zero, ecco_cp, ecco_cprsrl, ecco_diffmsk, |
1281 | ecco_addcost, ecco_add, ecco_div, ecco_readbar. |
1282 | - cost_gencal.F (new) : determine filnames and records. |
1283 | - cost_genread.F, cost_generic.F : condense code using ecco_toolbox. |
1284 | - cost_generic.F : use spzeroloc rather than hard-coded -9999, |
1285 | and exploit the above functions leading to more compact code. |
1286 | - cost_genread.F : rm un-necessary arguments, re-arrange args order. |
1287 | - ecco_check.F, ecco_readparms.F : bring logic up to date (using_tpj, |
1288 | using_ers, using_gfo, using_mdt is now only defined within gencost) |
1289 | o pkg/ecco: extend generic cost capabilities |
1290 | - pkg/ecco : added 3D gencost (ALLOW_GENCOST3D), added gencost |
1291 | capabilities via gencost_preproc (+ _c,_i,_r related params), |
1292 | gencost_posproc (+ _c,_i,_r related params), gencost_nrecperiod, |
1293 | gencost_outputlevel arguments to cost_generic |
1294 | - pkg/ecco/cost_genread.F (new) : interface between cost_generic |
1295 | and active_read, making room for gencost_preproc to take effect. |
1296 | Added preproc code ('climmon') to replace GENERIC_BAR_MONTH. |
1297 | - pkg/ecco/cost_generic.F : |
1298 | compute and store misfit maks*(model-data) in localdif that is |
1299 | then used in cost and for output, output misfit if outlev.GT.0 |
1300 | - pkg/ecco/cost_averagesfields.F : depend on gencost_barskip |
1301 | rather gencost_barfile for deciding whether to write barfile |
1302 | - pkg/ecco/ecco_cost_driver.F : extract call to cost_profiles from cost_hyd |
1303 | - pkg/ecco/ecco_cost_init_fixed.F : extract gencost weights from |
1304 | ecco_cost_weights, re-activate ecco_summary, determine gencost_barskip |
1305 | - pkg/ecco/ecco_summary.F : report gencost variables |
1306 | - pkg/ecco/cost_gencost_customize.F : treat case of scatterometer costs |
1307 | o pkg/sea/SEAICE_OPTIONS.h : add ALLOW_COST_ICE, ALLOW_SEAICE_COST_SMR_AREA |
1308 | o pkg/ecco: internal re-organization |
1309 | - resolve un-necessary dependancies within pkg/ecco and to pkg/ctrl |
1310 | (rm includes of optim.h and ctrl.h, replace optimcycle with eccoiter, |
1311 | mv relevant variables definition from ecco_cost.h to ecco.h, |
1312 | make sure gencost routines only include ecco.h) |
1313 | - throughout : add missing CCP switches, rm unused variables, |
1314 | and rm un-necessary CPP switches |
1315 | - throughout gencost routines : replace modelstartdate with |
1316 | gencost_startdate when needed |
1317 | - cost_bp_read.F : use arguments, instead of common blocs |
1318 | so that it can be used also by (new) cost_gencost_bpv4.F |
1319 | - ecco_init_varia.F : initialize RHOsumGlob_0, VOLsumGlob_0 |
1320 | - ecco_phys.F : compute etanFull |
1321 | - ecco_readparms.F : rename using_topex as using_tpj, add |
1322 | bpv4-grace to gencost list, initialize added parameters |
1323 | - ecco_summary.F : include SIZE.h needed for augmented ecco.h |
1324 | |
1325 | checkpoint65e (2014/09/28) |
1326 | o pkg/obcs: |
1327 | - replaced the just-added CPP options with run-time variables |
1328 | (see pkg/obcs/OBCS_PARAMS.h for details) |
1329 | o pkg/obcs: |
1330 | - add additional CPP options for sponge boundary layers |
1331 | (see pkg/obcs/OBCS_OPTIONS.h for details) |
1332 | o pkg/atm_phys: |
1333 | - implement simple (obliquity only, assuming circular planet orbit) |
1334 | seasonal cycle for incoming insolation ; used when run-time parameter |
1335 | "select_incSW" is set to 1 ; by default (=0), uses old unchanged formula. |
1336 | o pkg/exf, pkg/ecco, pkg/ctrl: |
1337 | - add ctrlUseGen and .NOT.ctrlUseGen exclusive brackets |
1338 | - activate gentim2d for xx_atemp,xx_aqh,xx_swdown,xx_lwdown,xx_precip |
1339 | - implement gentim2d for xx_tauu, xx_tauv |
1340 | o pkg/ctrl, pkg/ecco : |
1341 | - fix and complement the generic controls implementation |
1342 | o pkg/exf/exf_getclim.F, exf_getffields.F, exf_getsurfacefluxes.F, |
1343 | pkg/shelfice/shelfice_thermodynamics.F, |
1344 | verification/hs94.1x64x5/code_ad/ctrl_map_gentim2d.F, |
1345 | verification/hs94.1x64x5/code_oad/ctrl_map_gentim2d.F : |
1346 | - add weight in CTRL_GET_GEN calls |
1347 | o pkg/ctrl : |
1348 | - ctrl_get_gen.F : add weight as input parameter, and apply |
1349 | it directly rather than using smooth_correl2Dw (to be retired). |
1350 | - ctrl_map_gentim2d.F : add wgentim2d in CTRL_GET_GEN call |
1351 | o pkg/ctrl : |
1352 | - introduce run time switch ctrlUseGen (in ctrl.h, ctrl_check.F, |
1353 | ctrl_init_variables.F, ctrl_readparms.F, ctrl_summary.F) |
1354 | - re-activate ctrl_summary (call in ctrl_init.F) |
1355 | o pkg/ctrl/ctrl_cost_gen.F : |
1356 | - fix CCP brackets, remove un-necessary myiter, mytime |
1357 | o pkg/ecco, pkg/ctrl : |
1358 | - remove cost_genctrl.F (now pkg/ctrl/ctrl_cost_driver.F) |
1359 | - remove cost_forcing_gen.F (now pkg/ctrl/ctrl_cost_gen2d.F) |
1360 | - add ctrl_cost_driver.F (replaces pkg/ecco/cost_genctrl.F) |
1361 | - add ctrl_cost_gen2d.F (replaces pkg/ecco/cost_forcing_gen.F) |
1362 | |
1363 | checkpoint65d (2014/09/15) |
1364 | o pkg/ctrl/CTRL_GENARR.h, ctrl_readparms.F : |
1365 | - add xx_genarr2d_bounds,xx_genarr3d_bounds, |
1366 | xx_genarr2d_numsmooth, xx_genarr3d_numsmooth |
1367 | o pkg/ctrl/ctrl_map_ini_genarr.F : |
1368 | - remove compilation failure |
1369 | - replace hard coded example |
1370 | - use ctrl_map_ini_gen2D, 3D |
1371 | o pkg/ctrl/ctrl_pack.F, ctrl_unpack.F : |
1372 | - on/off switch based upon xx_genarr2d_weight,3d |
1373 | o src/packages_init_variables.F : |
1374 | - regroup pkg/estimation calls |
1375 | - remove CTRL_MAP_INI, CTRL_MAP_INI_ECCO |
1376 | (moved to ctrl_init_variables) |
1377 | o cost/cost_init_varia.F : |
1378 | - remove ecco_cost_init_varia |
1379 | (moved to ecco_init_varia) |
1380 | o ctrl/ctrl_init_variables.F : |
1381 | - add CTRL_MAP_INI, CTRL_MAP_INI_ECCO |
1382 | - add CTRL_MAP_INI_GENARR, SEAICE_CTRL_MAP_INI |
1383 | o ctrl/ctrl_map_ini.F : |
1384 | - remove ctrl_map_ini_genarr, seaice_ctrl_map_ini |
1385 | (moved to ctrl_init_variables) |
1386 | o ctrl/ctrl_map_ini_ecco.F : |
1387 | - remove ECCO_PHYS (mv to ecco_init_varia) |
1388 | - remove seaice_ctrl_map_ini (mv to ctrl_init_variables) |
1389 | o ecco/ecco_ad_diff.list : |
1390 | - add ecco_init_varia.f |
1391 | o ecco/ecco_init_varia.F |
1392 | - new routine |
1393 | o pkg/streamice: |
1394 | - move call to STREAMICE_INITIALIZE_PETSC from the_model_main.F |
1395 | to streamice_init_fixed.F ; fix setting of STREAMICEisOn. |
1396 | - from model/src, only call pkg/streamice routines if useStreamIce is TRUE. |
1397 | o pkg/generic_advdiff: |
1398 | - fix bug causing negatives in GAD_SMOLARKIEWICZ_HACK, introduced 8/8/2014. |
1399 | o pkg/exf: |
1400 | - exf_getffields.F : add xxg_atemp, xxg_aqh, xxg_swdown, xxg_lwdown, |
1401 | xxg_precip capability |
1402 | - exf_wind.F : no need for ALLOW_WSPEED_CONTROL cpp switch |
1403 | o pkg/ctrl: |
1404 | - ctrl_pack.F, ctrl_unpack.F : omit (un)packing of undefined xx_gentim2d |
1405 | o model/src/load_fields_driver.F : |
1406 | - move call to CTRL_MAP_GENTIM2D ahead of BULKF_FIELDS_LOAD, EXF_GETFORCING |
1407 | so xx_gentim2d can be applied to e.g. exf fields in a timely manner. |
1408 | o OpenAD verification experiments: |
1409 | - Include explicitly AUTODIFF_OPTIONS.h, COST_OPTIONS.h, and CTRL_OPTIONS.h |
1410 | in src files (to enable to skip the ECCO_CPPOPTIONS.h); |
1411 | for now, only in pkgs used in OpenAD verification experiments. |
1412 | - Change all except one (halfpipe_streamice) OpenAD experiments to use pkg |
1413 | specific option file (AUTODIFF_OPTIONS.h, COST_OPTIONS.h & CTRL_OPTIONS.h) |
1414 | instead of using ECCO_CPPOPTIONS.h (with all relevant options in it). |
1415 | This applies to both TAF (*/code_ad/) and OpenAD (*/code_oad/) tests. |
1416 | o OpenAD verification tests: |
1417 | - finish removing ALLOW_AUTODIFF_OPENAD (replaced by ALLOW_OPENAD); |
1418 | - finish replacing ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for |
1419 | tape/storage which are specific to TAF/TAMC) in pkgs used in OpenAD exp. |
1420 | - leave ALLOW_AUTODIFF_TAMC undef in OpenAD verification tests (*/code_oad/) |
1421 | and remove local copy of "tamc.h" (needed only if ALLOW_AUTODIFF_TAMC). |
1422 | o model/src & generic_advdiff: |
1423 | - change hard-coded loop-range in S/R APPLY_FORCING_T/S to set T & S |
1424 | forcing over 0:sNx+1, 0:sNy=1 (instead of just 1:sNx,1:sNy): Model |
1425 | dynamics requires valid tracer forcing only over tile interior but, for |
1426 | some diagnostics, may need to extend it over 1 point in tile halo region. |
1427 | - in gad_calc_rhs.F, update calls to gmredi_x/ytransport to get valid |
1428 | tendency over i,j_Min,Max range. This allows to simplfy i,j_Min,Max |
1429 | setting in temp/salt/ptracer_integrate.F |
1430 | o pkg/dic: |
1431 | - multiply tracer tendencies by maskInC (if ussing OBCS) before updating |
1432 | gchem tracers: this allows to skip the 2nd call to OBCS_APPLY_PTRACER |
1433 | in gchem_forcing_sep.F |
1434 | o pkg/autodiff & obcs: |
1435 | - add storage of current OB values for U & V (was already done for T & S). |
1436 | |
1437 | checkpoint65c (2014/08/30) |
1438 | o pkg/dic: |
1439 | - take out of dic_atmos.F the initialisation part (corresponding to istate=0) |
1440 | and move it to new S/R DIC_INI_ATMOS ; also simplify the dependencies for |
1441 | AD compilers (but still a Pb with multi-threading and Ajoint dependencies). |
1442 | o verification: |
1443 | - new experiment testing OBCS and DIC pkgs, using params & output from |
1444 | tutorial_global_oce_biogeo but limited to a sub-domain around Drake |
1445 | passage: take OBCS from the last year of a 2 yrs simulation and initial |
1446 | conditions from t=1.yr while keeping the same forcing. |
1447 | o model/src: |
1448 | - when allowFreezing=T, only reset below freezing initial Temp to Tfreezing |
1449 | (at any k) if checkIniTemp is not set to FALSE (default checkIniTemp=T). |
1450 | o pkg/diagnostics (Stats-Diags): |
1451 | - re-write S/R DIAGSTATS_CALC (more similar to TARGET_NEC_SX part) to: |
1452 | a) refine region where stats are computed, excluding where arrhFac=0 ; |
1453 | b) fix missing interior mask (use with OBCS) in 3-D fields statistics; |
1454 | c) extend regional stats over the region edges (for U or V pt location). |
1455 | o pkg/gchem: |
1456 | - add a (2nd) call to OBCS_APPLY_PTRACER in gchem_forcing_sep.F (needed since |
1457 | pkg/dic is currently changing/updating ptracers values beyond the OB). |
1458 | o verification (hs94): |
1459 | - convert Held & Suarez external_forcing.F (from hs94.cs, with Sigma-coords |
1460 | bits) to apply_forcing.F and undef USE_OLD_EXTERNAL_FORCING in experiments |
1461 | hs94.cs-32x32x5 and tutorial_held_suarez_cs ; also use the same version of |
1462 | apply_forcing.F in 2D hs94 (fwd, ad & oad) but keep LatLon hs94 unchanged. |
1463 | o pkg/ptracers: |
1464 | - implement Adams-Bashforth on pTracers (instead of on tracer tendency), |
1465 | switched on by setting PTRACERS_doAB_onGpTr=F (default set to doAB_onGtGs) |
1466 | - change exp4 secondary test (input.nlfs) to test AB on T & S & pTracer |
1467 | with AB-2 code (so that it get tested). |
1468 | o model/src: |
1469 | - allow to apply Adams-Bashforth on Temp & Salt (instead of on gT,gS) |
1470 | with AB-2 code (previously only available with AB-3 code). |
1471 | Also move the code (call to ADAMS_BASHFORTH S/R) form thermodynamics.F |
1472 | to temp/salt_integrate.F (since the 2nd part of gt/sNm1 update is done |
1473 | there, by calling CYCLE_AB_TRACER). |
1474 | o pkg/generic_advdiff: |
1475 | - change Tracer argument (drop bi,bj indices) in S/R GAD_CALC_RHS, |
1476 | GAD_C2_ADV_R, GAD_U3_ADV_R, GAD_C4_ADV_R, GAD_DIFF_R, GAD_BIHARM_R |
1477 | + also in GMREDI_X/Y/RTRANSPORT ; and update corresponding calls in |
1478 | S/R temp/salt/ptracers_integrate.F |
1479 | o model/src & pkg/ptracers: |
1480 | - remove common block variables gT,gS (in DYNVARS.h), except when |
1481 | USE_OLD_EXTERNAL_FORCING is defined; update TAF storage accordingly. |
1482 | - remove common block variable gPtr. |
1483 | o model/src & pkgs: |
1484 | - change gTracer (and/or tracer) argument (drop bi,bj indices) in S/R |
1485 | ADAMS_BASHFORTH(2&3), CYCLE_(AB_)TRACER, FREESURF_RESCALE_G, |
1486 | IMPLDIFF, SOLVE_TRIDIAGONAL & _PENTADIAGONAL, GAD_SOM_ADVECT, |
1487 | GAD_ADVECTION, GAD_CALC_RHS, GAD_IMPLICIT_R, TIMEAVE_CUMUL_DIF_1T |
1488 | + change accordingly all calling S/R. |
1489 | - use local temperature/salinity/ptracer tendency array (without bi,bj) |
1490 | in S/R temp/salt/ptracers_integrate.F |
1491 | o pkg/seaice: |
1492 | - move computation of stress contributions to rhsU/V in s/r seaice_lsr |
1493 | to separate s/r seaice_lsr_rhsu/v in order to be able to re-use code |
1494 | - make u/vIceC local variables if SEAICE_CGRID is defined only to be used |
1495 | in seaice_lsr |
1496 | - seaice_lsr.F: make local 4D arrays UXX, VYY, etc 2D |
1497 | in s/r seaice_lsr_calc_coeffs |
1498 | o pkg/mdsio: |
1499 | - in MDS_READ/WRITE_FIELD, stop if file-name (+prefix) is too long |
1500 | (e.g., > MAX_LEN_MBUF -90 ) or, in INI_MODEL_IO, if mdsioLocalDir is |
1501 | too long (e.g., > MAX_LEN_FNAM/2 ) |
1502 | |
1503 | checkpoint65b (2014/08/12) |
1504 | o pkg/matrix: |
1505 | - pass, as argument, updated tracer field to S/R MATRIX_STORE_TENDENCY_EXP |
1506 | o model/src: |
1507 | - fix initialisation of geothermalFile; compile geothermal-flux code in |
1508 | natl_box verification experiment. |
1509 | o model/src & pkg/down_slope: |
1510 | - push the k loop inside S/R TIMESTEP_TRACER (now called outside the k loop). |
1511 | - in dwnslp_apply.F, update tracer tendency instead of the future tracer |
1512 | field and call S/R DWNSLP_APPLY before TIMESTEP_TRACER; this affects |
1513 | results at machine truncation level: update output of experiments |
1514 | global_ocean.90x40x15.dwnslp (FWD) and lab_sea.noseaicedyn (AD). |
1515 | o pkg/diagnostics (Stats-Diags): |
1516 | - do not cumulate the full volume when DIAGNOSTICS_FILL is |
1517 | called with bibjFlg < 0 (no increment of the counter for 2D/3D diag); |
1518 | This fix the mean statistics when DIAGNOSTICS_FILL is called multiple |
1519 | times (but Min,Max and StD are still wrong). |
1520 | o model/src: |
1521 | - add geothermal flux forcing: read in ini_forcing.F as time-constant |
1522 | field "geothermalFlux" applied in S/R APPLY_FORCING_T (apply_forcing.F) |
1523 | o model/src: |
1524 | - move CYCLE_TRACER calls from tracers_correction_step.F to temp/salt/ptracer |
1525 | _integrate.F so that, when leaving S/R THERMODYANMICS, theta,salt and pTrac |
1526 | arrays are already updated while adjustments (filters, conv.adjustment) are |
1527 | still applied later, in S/R TRACERS_CORRECTION_STEP. |
1528 | o model/src: |
1529 | - store in common bloc array "rhoInSitu" the virtual potential temperature |
1530 | anomaly that is used to compute geopotential: this make the atmos code |
1531 | more similar to ocean code which already uses rhoInSitu in calc_phi_hyd.F |
1532 | o pkg/seaice/seaice_lsr.F |
1533 | - rename integer variable ilcall to ipass (that's what it is called |
1534 | in the residual diagnostics |
1535 | - change time stepping for NPSEUDOTIMESTEP > 2 (does not change the |
1536 | default) for improved non-linear convergence of the first few steps |
1537 | - adjust a few comments and add new ones to explain some of the store |
1538 | directives |
1539 | o pkg/generic_advdiff (& ptracers): |
1540 | - re-work the code to check for valid advection scheme and for minimum |
1541 | size of overlap (now stored in local common bloc in gad_advscheme.F) |
1542 | o pkg/seaice: another attempt to make the adjoint work for sea ice dynamics |
1543 | - re-initialize more variables in seaice_lsr: u/vIceC, u/vIceNm1 |
1544 | - add an auxilliary variable "bet" and fix store directives and keys in |
1545 | seaice_lsr_tridiagu/v, this seems to do the trick (i.e. more or |
1546 | less exact gradients in my tests); but there are still |
1547 | recomputation warning (although gradients are sort of OK), when |
1548 | SEAICE_LSR_VECTORIZE is not defined, so this flag and |
1549 | SEAICE_LSR_VECTORIZE_ZEBRA are recommended for efficiency. |
1550 | - update verification experiments lab_sea. |
1551 | - change some comments in S/R seaice_calc_viscosities |
1552 | o model/src: |
1553 | - if staggerTimeStep=T, always apply exchange to velocity field in |
1554 | do_stagger_fields_exchanges.F instead of in do_fields_blocking_exchanges.F |
1555 | (independent of using multi-dim advection or not); no effect on FWD run |
1556 | but affects AD results (at machine truncation level): update output of |
1557 | experiment 1D_ocean_ice_column (ad: 12 digits), hs94.1x64x5 (ad,oad: 13.d) |
1558 | and isomip (oad: 12.d). |
1559 | o pkg/generic_advdiff: |
1560 | - stop if doAB_onGtGs is set to FALSE but ignored |
1561 | - refine warning related to stability of tracer time-stepping |
1562 | regarding internal wave dynamics. |
1563 | - setting of AdamsBashforth_T,S when doAB_onGtGs=F: remove condition |
1564 | on staggerTimeStep & implicitIntGravWave (will now get a warning |
1565 | if potentially unstable). |
1566 | o pkg/kl10: |
1567 | - add new pkg "kl10" for mixing due to internal wave breaking, from |
1568 | http://www.sciencedirect.com/science/article/pii/S1463500310000144 |
1569 | (contribution from Jody Klymak), tested in verification experiment |
1570 | verification/internal_wave/input.kl10/ |
1571 | o isomip experiment: |
1572 | - test pkg/shelfice with Non-Lin Free-Surf in one of the FWD set-up |
1573 | (input.htd) and update the output. |
1574 | o cd_code experiments: |
1575 | - use default cd_code options (#undef CD_CODE_NO_AB_MOMENTUM & |
1576 | #undef CD_CODE_NO_AB_CORIOLIS) in experiments: cfc_example (fwd) |
1577 | global_ocean.90x40x15 (ad & oad) and OpenAD (ad & oad) and |
1578 | update the corresponding output. |
1579 | o pkg/seaice: |
1580 | - reduce the number of include files and store directives in |
1581 | S/R seaice_lsr_tridiagu/v |
1582 | - change the order of loops in one case in S/R seaice_lsr_tridiagv |
1583 | (only for SEAICE_VECTORIZE_LSR_ZEBRA defined), which allows me to |
1584 | get rid off one store directive (a TAF bug?) |
1585 | - add one more instance of ifdef SEAICE_VECTORIZE_LSR_ZEBRA in |
1586 | S/R seaice_lsr_tridiagv to change the loop range for consistency |
1587 | - remove ilcall, m from parameter list of S/R seaice_lsr_tridiagu/v |
1588 | - fix a bug that affects the JFNK solver: replace sNx/y by i/jMax in |
1589 | S/R seaice_lsr_tridiagu/v (requires update of |
1590 | offline_exf_seaice/input.dyn_jfnk) |
1591 | |
1592 | checkpoint65a (2014/07/27) |
1593 | o model/src: |
1594 | - Non-Lin Free-Surf in p/z coords: allows hFacW,S to be larger than |
1595 | surrounding hFacC=1 @ edge of a step with different kSurfC on either side |
1596 | (topo in p-coords, ice-shelf in z-coords); update output of experiments |
1597 | tutorial_global_oce_in_p and isomip (both AD and OpenAD output). |
1598 | o model/src: |
1599 | - collect momentum forcing tendency into local 2-D array (passed as argument |
1600 | to apply_forcing S/R); this simplifies mom. Forcing diagnostics and CD_CODE |
1601 | parts in timestep.F (without CD_CODE_NO_AB_MOMENTUM defined = the default); |
1602 | affects results at machine truncation level (e.g., if using OBCS_SPONGE). |
1603 | - collect T & S forcing tendency into local 2-D array (passed as argument to |
1604 | apply_forcing S/R); add 3-D diagnostics for temp & salt forcing tendency. |
1605 | affects results at machine truncation level (e.g., ocean: if using |
1606 | SHORTWAVE_HEATING ; atmos: if using FrictionHeating or (atm_Rq<>0) moist |
1607 | correction due to vertical advection). |
1608 | - update output of experiments: fizhi-cs-32x32x40 (13 digits), |
1609 | global_ocean.cs32x15 (fwd: icedyn, seaice, thsice, all 3 @ 11d; adm & tml: |
1610 | seaice_dynmix & thsice, fwd grd @ 3 & 8), hs94.1x64x5 (ad grd @ 13), |
1611 | obcs_ctrl (ad & fwd grd @ 12 & 7). |
1612 | o pkg/ptracers & diagnostics: |
1613 | - use ptracers (short) name (instead of long one) to make ptracers diagnostics |
1614 | title (to avoid some unexpected truncation); sort out ptracers diags units. |
1615 | - collect ptracer forcing tendency into local 2-D array (passed as argument |
1616 | to apply_forcing S/R); add 3-D diagnostics for ptracers forcing tendency. |
1617 | |
1618 | checkpoint65 (2014/07/18) |
1619 | o pkg/fizhi: |
1620 | - add parenthesis around fizhi tendencies in fizhi_tendency_apply.F: this |
1621 | affects results at machine truncation level. Update output of experiments |
1622 | fizhi-cs-32x32x40 (12 digits for cg2d) & fizhi-cs-aqualev20 (13 digits). |
1623 | o pkg/seaice: more clean up |
1624 | - rename TAF common block tapes to be more consistent and remove |
1625 | unnecessary duplicates |
1626 | - add store directives to remove more recomputations, but use smaller |
1627 | tapes (and adjust keys) when SEAICE_LSR_ADJOINT_ITER is undefined. |
1628 | The idea behind this flag is to reduce the memory footprint when the |
1629 | adjoint of the LSR is not required. As of now, defining the flag |
1630 | SEAICE_LSR_ADJOINT_ITER increases 4 common block tapes for 2D field by |
1631 | a factor of SOLV_MAX_FIXED (=500 by default in SEAICE_SIZE.h). |
1632 | For experiment offline_exf_seaice, this means on a linux box with gfortran |
1633 | nearly a factor of 10 (but keep in mind there is mostly seaice code in |
1634 | this experiment): |
1635 | > size mitgcmuv_ad |
1636 | text data bss dec hex |
1637 | 5100659 1216 220458952 225560827 d71c8fb |
1638 | 5339425 1200 1868783272 1874123897 6fb4dc79 (SEAICE_LSR_ADJOINT_ITER) |
1639 | but only a moderate increase of 36% for global_ocean.cs32x15: |
1640 | text data bss dec hex |
1641 | 6695027 1648 1014578664 1021275339 3cdf6ccb |
1642 | 6695203 1648 1382505320 1389202171 52cd8afb (SEAICE_LSR_ADJOINT_ITER) |
1643 | - note: there are still recomputations in global_ocean.cs32x15 and |
1644 | offline_exf_seaice and the gradient agreement changes (gets a |
1645 | little worse) for global_ocean.cs32x15 (-> update output_adm.seaice.txt) |
1646 | - in general, the AD gradients still are wrong |
1647 | o OpenAD |
1648 | - clean up code_oad/ directories somewhat by moving files |
1649 | dontCompile, dontTransform, keepOriginal to OAD_support/ |
1650 | o model/src: |
1651 | - using MOM fluxform and Non-Lin Free-Surf with momDissip_In_AB=F |
1652 | (not currently tested): add dissipation terms before NLFS rescaling of |
1653 | tendencies (previously done after). |
1654 | o pkg/diagnostics: |
1655 | - write stats-diags in ascii file with more digits (same as in monitor). |
1656 | o pkg/down_slope: |
1657 | - drop the bi,bj dimension of argument recip_hFac in S/R DWNSLP_APPLY; with |
1658 | NLFS (not tested), use new recip_hFac value in order to conserve tracer. |
1659 | o model/src: |
1660 | - new file "apply_forcing.F" containing all the code previously in |
1661 | external_forcing.F, but with new argument list: pass, as new argument, |
1662 | the current level tendency array to update (instead of a direct update |
1663 | of the common bloc array). Change the corresponding calls. |
1664 | - add CPP option USE_OLD_EXTERNAL_FORCING (default is undef) to use |
1665 | EXTERNAL_FORCING_U,V,T,S subroutines (for backward compatibility). |
1666 | o pkg/seaice/seaice_lsr, a little bit of clean up |
1667 | - rearrange some code blocks, so that now all calculations for |
1668 | setting up the right-hand-sides done within one single block |
1669 | (I find that easier to read and understand) |
1670 | - rearrange freedrift-code to reduce the number of ifdefs |
1671 | - adjust some indentations and comments |
1672 | |
1673 | checkpoint64z (2014/07/10) |
1674 | o model/src and several pkgs: |
1675 | - change argument list of all S/R called from external_forcing.F and |
1676 | called from ptracers_forcing.F (renamed to ptracers_apply_forcing.F) |
1677 | to pass, as argument, the current level tendency array to update |
1678 | (instead of a direct update of the common bloc array). |
1679 | - change also (in the same way) argument list of PTRACERS_APPLY_FORCING; |
1680 | - rename taueddy_external_forcing.f to taueddy_tendency_apply.F |
1681 | o pkg/seaice/seaice_lsr.F |
1682 | - always initialize local arrays in seaice_lsr_tridiagu/v |
1683 | - add more local tapes to seaice_lsr_tridiagu/v |
1684 | - move storing u/vice(:,:,bi,bj) out of seaice_lsr_tridiagu/v, but |
1685 | keep it in bi/bj loop; this seems to be essential |
1686 | - gradients are still wrong but only by 4-7 orders of magnitude |
1687 | instead of 15 orders of magnitude, lab_sea improves a little |
1688 | o pkg/seaice |
1689 | - (pkg/autodiff) remove storing/restoring of seaiceMaskU/V that |
1690 | generates unnecessary code in seaice_lsr_ad |
1691 | - add more store directives in seaice_lsr to avoid unnecessary code |
1692 | in seaice_lsr_ad |
1693 | - exclude some residual computations in seaice_lsr when |
1694 | ALLOW_AUTODIFF_TAMC is defined in order to avoid unnecessary code |
1695 | in seaice_lsr_ad |
1696 | - add more storing, a new tape (model/src/the_main_loop.F) and |
1697 | another key for SEAICE_LSR_VECTORIZE_ZEBRA (the local keys ilockey |
1698 | and klockey should be checked by a specialist) |
1699 | - modify ( define SEAICE_VECTORIZE_LSR and SEAICE_LSR_ADJOINT_ITER ) |
1700 | and update lab_sea after previous changes in pkg/seaice below |
1701 | o pkg/autodiff: |
1702 | - introduce useSmoothCorrel2DinAdMode, SEAICEapproxLevInAd, and |
1703 | viscFacInAd : run time parameters allowing for adjoint switches |
1704 | note : logic for useSmoothCorrel2DinAdMode is in ctrl_readparms.F |
1705 | o pkg/ecco: |
1706 | - introduce cost_gencost_boxmean.F that computes a box mean |
1707 | temperature (for use in adjoint sensitivity studies). |
1708 | o model/src/set_defaults.F : initialize viscFacAdj to 1. |
1709 | o pkg/mom_common/mom_calc_visc.F: |
1710 | - ifdef ALLOW_AUTODIFF then include viscFacAdj factor. |
1711 | o pkg/seaice/seaice_summary.F: |
1712 | - statement for SEAICEadjMODE now in autodiff_readparms.F |
1713 | o pkg/seaice: |
1714 | - remove some store directives and add new ones in an effort to get |
1715 | finally rid off the recomputation warnings. This is successful |
1716 | when SEAICE_VECTORIZE_LSR ***and*** SEAICE_LSR_ADJOINT_ITER are |
1717 | defined (i.e. no extensive recomputation warnings left), but there |
1718 | are still too many recomputations on the solver iteration level |
1719 | - define SEAICE_VECTORISZE_LSR in offline_exf_seaice/code_ad/SEAICE_OPTIONS.h |
1720 | - move definition of MPSEUDOTIMESTEPS into TAMC-block in |
1721 | SEAICE_SIZE.h |
1722 | - add a store directive in S/R seaice_calc_viscosities |
1723 | o pkg/seaice (ITD code): |
1724 | - fix definition of Hlimit for multi-threaded case |
1725 | - use double precision arithmetic to compute Hlimit: this affects results; |
1726 | update output of experiment seaice_itd. |
1727 | o replace content of verification/seaice_itd |
1728 | - instead of a 1D column use the configuration of offline_exf_seaice |
1729 | to test the ice thickness distribution code with ridging |
1730 | - this is a first shot at this experiment |
1731 | - change of some defaults of ridging parameters SEAICEhStar (from |
1732 | 100 to 25) and SEAICEmuRidging (from 5 to 3) in seaice_readparms.F |
1733 | and lot of new comments. |
1734 | |
1735 | checkpoint64y (2014/06/20) |
1736 | o pkg/seaice/seaice_reg_ridge.F: |
1737 | - modify the regularization of very small volumes of ice; only check |
1738 | total volume HEFF, and do not apply correction to individual ice |
1739 | classes because that leads to funny patterns in the heat and fw-fluxes |
1740 | into the ocean. Adjust seaice_itd/results/output.txt |
1741 | - replace nITD by SEAICE_multDim in loop-ranges |
1742 | o pkg/exf: |
1743 | - add code to process the case field period = -12. with UV interpolation. |
1744 | - move debug print (formerly active when exf_verbose=T) from EXF_getFFieldRec |
1745 | into S/R that calls it (i.e., exf_set_gen.F, exf_set_uv.F & obcs_exf_load.F) |
1746 | o verification/global_with_exf: |
1747 | - switch all fields period to -12. (was previously untested) in input/data.exf |
1748 | (but keep secondary test ".yearly" unchanged); update the reference output. |
1749 | o pkg/cal: |
1750 | - new calendar type "noLeapYear" for 365 days calendar without any leap year. |
1751 | o pkg/exf: |
1752 | - new integer parameter "exf_debugLev" (default set to main model debugLevel) |
1753 | to replace logical switch "exf_verbose" |
1754 | - report in STDOUT when loading a new record (if exf_debugLev >= 3) |
1755 | o pkg/sbo: |
1756 | - update from Katherine Quinn: evaluate mass directly from density and SSH |
1757 | (budget using Finite Volume method) instead of from bottom pressure. |
1758 | - allow testreport to collect few selected SBO output ; tested in exp. |
1759 | global_ocean.90x40x15 (after updating the results, to include SBO output). |
1760 | - fix some multi-threading issues (in output part). |
1761 | o model/src & most packages: |
1762 | - always call {PKG}_READPARMS even if corresponding use{PKG}=F; |
1763 | - in {PKG}_READPARMS, in case use{PKG}=F: add a call to new S/R |
1764 | PACKAGES_UNUSED_MSG to print a weak warning when parameter file |
1765 | "data.{pkg}" exist ; and leave the S/R (return) just after. |
1766 | - more standard LAND pkg interface (land_init_fixed.F, land_check.F). |
1767 | + call LAND_READPARMS from packages_readparms.F |
1768 | o pkg/seaice: |
1769 | - remove code that resets useThSice in S/R seaice_readparms and |
1770 | replace it by a warning in S/R seaice_check |
1771 | - remove parameter MULTDIM, replace with nITD and runtime |
1772 | parameter SEAICE_multDim (still hard-wired to nITD if |
1773 | SEAICE_ITD is defined) |
1774 | |
1775 | checkpoint64x (2014/05/24) |
1776 | o verification/lab_sea: |
1777 | - update adjoint and TLM output following changes to pkg/salt_plume |
1778 | - un-do the update after putting back local recip_Cp in few places. |
1779 | o pkg/salt_plume: modifications by An Nguyen: |
1780 | - add capability to do brine rejection (salt-plume) as function of |
1781 | volume+tracers (instead of only salinity tracer). |
1782 | - conserve volume by exchanging volume from each kLev to above to |
1783 | accommodate in-coming brine volume |
1784 | - store surface and klev exchanged fraction + volume in 4 new 3-d arrays |
1785 | - switch KPP surf buoyancy due to brine forcing to 3-d |
1786 | (3 more 3-d arrays, 2 for SPforcing[T,S], 1 for boplume) |
1787 | - add salt_plume_volfrac, salt_plume_apply, salt_plume_tendency_apply_t |
1788 | - unrelatedly, also add ad-hoc capability to vary salt_plume scheme |
1789 | in East/West Arctic. |
1790 | o pkg/sbo: |
1791 | - incorporate modifications from Katherine Quinn to enable the use of sbo |
1792 | pkg in ECCO-v4 set-up ; remove SBO-TimeAve output ; add monitor-like |
1793 | output for future testreport verification (unfinished). |
1794 | o pkg/atm_phys: |
1795 | - change diagnostics (AtPh_Trf & AtPh_Qrf) of DARGAN_BETTSMILLER S/R: |
1796 | skip the reseting of t_ref & q_ref to initial t & q ; this preserve the |
1797 | output of S/R CAPECALCNEW (Parcel temp & q) for diagnostics. |
1798 | o pkg/seaice |
1799 | seaice_calc_ice_strength.F: modify expression to avoid divisions |
1800 | (affects truncation) |
1801 | seaice_do_ridging.F: clean up the insectarium |
1802 | - fix a bug that was compensated by areaScaling (-> remove areaScaling code) |
1803 | - added SEAICEsnowFracRidge to redistributed snow (2nd bug) |
1804 | - set closing/openingRate to zero where no extra iteration is need (3rd bug) |
1805 | - add some debugging information and error messages (warnings) |
1806 | o model/src: modifications relatd to atmosphere p*: |
1807 | - Switch to more accurate p* coordinate slope term (calc_grad_phi_hyd.F) |
1808 | - With p* or Sigma-P, use constant reference Pot.Temp (thetaConst) instead |
1809 | of vertical profile tRef in geopotential background and anomaly. |
1810 | - Acount for true p* correction in theta <-> T conversion in pkg/aim_v23 |
1811 | and pkg/atm_phys. |
1812 | - Update FWD output of experiments: aim.5l_cs (x2), fizhi-cs-32x32x40, |
1813 | fizhi-cs-aqualev20, fizhi-gridalt-hs, tutorial_held_suarez_cs, cpl_aim+ocn. |
1814 | o pkg/seaice: fix a bug in seaice_prepare_ridging.F, forgot a sqrt |
1815 | o pkg/ptracers: compute ptracer source/sink due to linear free surface. |
1816 | not used right now, but can be used in BGC packages to fix conservation. |
1817 | o pkg/dic, pkg/gchem: move tracer_meanarea to gchem, so it can be used by |
1818 | other packages too. |
1819 | o pkg/seaice/seaice_calc_ice_strength.F: replace SEAICE_rhoSnow by |
1820 | SEAICE_rhoIce in the Rothrock (1975)-type strength calculations (bug fix) |
1821 | o model/src: |
1822 | - since we have several heat capacity (even in model/src), define "recip_Cp" |
1823 | as local variable (no longer in common block) to avoid any confusion. |
1824 | - add thetaConst in PARAMS.h (to be used with pStar or sigma-P coords). |
1825 | o pkg/exf: |
1826 | - from Jeff Scott: add option (#define EXF_CALC_ATMRHO) to calculate local |
1827 | air density as function of air Temp, Humidity and atm pressure. |
1828 | |
1829 | checkpoint64w (2014/05/02) |
1830 | o verification: |
1831 | - update output_adm.txt files for experiment global_ocean.cs32x15 (seaice & |
1832 | seaice_dynmix) and lab_sea (primary test & noseaicedyn): moving/changing |
1833 | code from seaice_growth.F & seaice_advdiff.F to new ridging routines |
1834 | seaice_reg_ridge.F seaice_do_ridging.F affects AD gradient |
1835 | (down to 8-7 matching digits for global_ocean and 5-6 for lab_sea). |
1836 | o model/src: for atmosphere in p* coords: |
1837 | - store factor rStarFacC**atm_kappa (= pStarFacK) in common block |
1838 | - implement more accurate p* coordinate slope term (in calc_grad_phi_hyd.F), |
1839 | but not yet activated. |
1840 | o pkg/seaice: fix restart problem for ITD with new ice strength parameterisation: |
1841 | - move computation of opnWtrFrac = 1-AREA to before computing ice strength |
1842 | - this changes the results (but not for any verification experiment, because |
1843 | none tests this), but avoids having an extra field in the restart files |
1844 | o pkg/seaice: remove global variable TICE (not needed) |
1845 | - replace by TICES or local variable where necessary (cost_seaice_test, |
1846 | seaice_diagnostics_state) |
1847 | - move copying TICE to TICES from seaice_check_pickup to seaice_read_pickup |
1848 | - use specific read/write routines for reading and writing individual leves |
1849 | of a multilevel field |
1850 | o pkg/ctrl & model/inc: |
1851 | - move additional anomaly fields of control vars (related to options: |
1852 | ALLOW_KAPGM_CONTROL, ALLOW_KAPREDI_CONTROL and ALLOW_BOTTOMDRAG_CONTROL) |
1853 | from DYNVARS.h into new header file: CTRL_FIELDS.h |
1854 | o pkg/seaice: some small modifications to the ridging code |
1855 | - make fw2ObyRidge a global variable and add the freshwater flux to |
1856 | seaice_growth |
1857 | - pass actual thickness from seaice_prepare_ridging, so that it is |
1858 | computed only in one place and compute it in the same way as in |
1859 | seaice_growth |
1860 | - initialise more fields in seaice_do_ridging that where cause floating |
1861 | point exceptions over land |
1862 | o pkg/seaice: preparations for ridging code and first real ridging code |
1863 | - move most of "PART 1" of S/R seaice_growth into a new and separate |
1864 | S/R seaice_reg_ridge that will both regularize the state variable after |
1865 | advection call the actual ridging routine; |
1866 | - requires to make 5 fields global fields: d_HEFFbyNEG,d_HSNWbyNEG, |
1867 | d_AREAbyRLX,d_HEFFbyRLX,saltFluxAdjust; |
1868 | - remove ridging code from seaice_advdiff |
1869 | - clean up remaining part 1 of seaice_growth in an attempt to make it |
1870 | more readable (this is probably subjective) |
1871 | - call seaice_itd_redist once in the initialisation phase to have the initial |
1872 | conditions in the correct category |
1873 | - finally: add new ridging routine for ITD code |
1874 | |
1875 | checkpoint64v (2014/04/11) |
1876 | o pkg/ecco: |
1877 | - add runtime parameters mdt[start,end]date[1,2] |
1878 | - rename variable "tpmean" as "mdt" and "topexmeanfile" as "mdtdatfile" |
1879 | o pkg/seaice: |
1880 | - make deltaC a global variable, so that it can be used in ridging code |
1881 | - first step towards ridging: introduce new routines that compute |
1882 | ice strength based on ridging parameters |
1883 | - add diagnostic for HSNOWITD |
1884 | - add opnWtrFrac as a global variable (required for ridging scheme) |
1885 | o pkg/salt_plume + pkg/seaice/seaice_growth.F |
1886 | - add SALT_PLUME_IN_LEADS flag to activate pkg/salt_plume only when ice |
1887 | AREA exceeds a threshold (code contributed by I.Fenty in 2011) |
1888 | o verification/hs94.1x64x5: |
1889 | - leave ALLOW_AUTODIFF_TAMC undefined in code_oad/AUTODIFF_OPTIONS.h |
1890 | - do not use ECCO_CPPOPTIONS.h anymore for TAF & OpenAD Adjoint tests. |
1891 | o autodiff: |
1892 | - Start to include explicitly AUTODIFF_OPTIONS.h, COST_OPTIONS.h, |
1893 | and CTRL_OPTIONS.h in src files (to enable to skip the ECCO_CPPOPTIONS.h) |
1894 | For now, only in pkgs used in verification/hs94.1x64x5. |
1895 | - Replace ALLOW_AUTODIFF_TAMC by ALLOW_AUTODIFF (except for tape/storage |
1896 | which are specific to TAF/TAMC). |
1897 | - Replace ALLOW_AUTODIFF_OPENAD by ALLOW_OPENAD: |
1898 | since ALLOW_OPENAD is defined in PACKAGES_CONFIG.h (any time pkg/openad |
1899 | is compiled), this simplifies/reduces which *_OPTIONS.h file to include. |
1900 | - OpenAD: change Makefile to generate the appropriate AD_CONFIG.h when |
1901 | building mitgcmuv_ad (make adAll). |
1902 | o pkg/ecco: |
1903 | - cost_gencost_seaicev4.F: |
1904 | reformulate proxy cost as function of sst and local param SEAICE_freeze |
1905 | change cost names from siv4-[sst,vol] to siv4-[deconc,exconc] |
1906 | - add stop statement if old names siv4-[sst,vol] are used |
1907 | - add snapshots + cost reports for atmospheric longwave |
1908 | - remove factor 0.1 in front of wtau[u,v] |
1909 | - replace never used flag ALLOW_TMI_COST_CONTRIBUTION with |
1910 | ALLOW_TMI_SST_COST_CONTRIBUTION |
1911 | o pkg/atm_phys: |
1912 | - add some diagnostics for Short-wave and for convection S/R. |
1913 | o pkg/seaice/seaice_growth: |
1914 | - fix a bug in the lateral melt parameterization for SEAICE_ITD |
1915 | in seaice_growth; tempFrz needs to be computed inside the i/j-loop |
1916 | - rearrange loop order for better vector code in the same code block |
1917 | - rewrite the floeDiameter formula to have fewer divisions |
1918 | - (miraculously) none of this changes the results of seaice_itd |
1919 | o pkg/smooth: |
1920 | - move param smooth2Ddiffnbt to pkg/ecco |
1921 | o pkg/salt_plume: |
1922 | - salt_plume_frac.F: |
1923 | clean up local param names |
1924 | reformulate (1-frac) to frac; original 1-frac was based on swfrac code |
1925 | o pkg/rw: |
1926 | - add RS version of S/R READ_MFLDS_LEV. |
1927 | o pkg/streamice: |
1928 | - fix the restart test by writing/reading pickup_streamice files. |
1929 | o pkg/seaice: |
1930 | - refine checks for jfnk-related parameters |
1931 | - comment out if statement with SEAICEuseIMEX parameter as long as there |
1932 | is no IMEX code to avoid confusion and surprises |
1933 | |
1934 | checkpoint64u (2014/03/07) |
1935 | o verification/MLAdjust: |
1936 | - rename secondary test suffix: |
1937 | 1.leith -> A4FlxF + switch to flux-form & add side-drag |
1938 | 0.leithD -> AhFlxF + switch to flux-form |
1939 | 0.smag -> AhVrDv (use Vorticity-Div. visc form) + add side-drag |
1940 | 0.leith -> AhStTn (use Strain-Tension visc form) + add side-drag |
1941 | o pkg/mom_vecinv: |
1942 | - remove unused arguments from S/R MOM_VI_HDISSIP & MOM_HDISSIP (as it used |
1943 | to be before mom_calc_visc.F) |
1944 | - skip the call to MOM_CALC_TENSION & MOM_CALC_STRAIN if not needed. |
1945 | - add 2nd copy of vort3 & strain that knows about lateral BC (free/no slip): |
1946 | this is simpler for the adjoint and for diagnostics. |
1947 | o model/src + pkg/momentum: |
1948 | - add input files for 2-D additional Western and Southern cell-edge wall |
1949 | (e.g., to add "thin-wall" where it is =1). |
1950 | - fix sideDrag option for thin-walls with Non-Lin Free-Surf |
1951 | using 2nd hFacZ that is computed from initial (fix domain) hFac |
1952 | - known limitations of thin wall implementation: not yet coded for sigma |
1953 | coords; not working with CD-scheme neither. |
1954 | o pkg/seaice: |
1955 | - rename recently introduced parameters from (wrong name) AB to |
1956 | BDF (backward difference time discretisation) |
1957 | - retire runtime parameters SEAICEuseAB2, SEAICE_abEps |
1958 | o tools/adjoint_options: |
1959 | - remove setting of "OPENAD=true" (now set by command line "genmake2 -oad") |
1960 | |
1961 | checkpoint64t (2014/02/01) |
1962 | o pkg/ecco |
1963 | - add compile flag ALLOW_GENCOST_TIMEVARY_WEIGHT in ECCO_OPTIONS.h and |
1964 | runtime logical flag gencost_timevaryweight to read daily sea-ice sigma |
1965 | - replace hard-coded record number and period which only work for monthly |
1966 | with read-in runtime param that works for other periods (month,day,year) |
1967 | o pkg/thsice |
1968 | - corrected store directive fixes thsice adjoint gradient checks |
1969 | o genmake2 & testreport: |
1970 | - add genmake2 option "-oad" to generate a Makefile for OpenAD built and |
1971 | in this case, use tools/adjoint_options/adjoint_oad as default AD optfile. |
1972 | Update testreport accordingly. No need to set "export OPENAD=true" |
1973 | in adjoint_options/adjoint_oad anymore (will be removed later). |
1974 | o pkg/shelfice: |
1975 | - put T & S shelfice forcing into model surfaceForcing_T,_S (for now, |
1976 | only if SHELFICEboundaryLayer=F); Change model/src/external_forcing.F |
1977 | so that surface forcing applies to k=kSurf if using pkg/shelfice. |
1978 | o pkg/ctrl, pkg/grdchk, pkg/ecco: |
1979 | - Changes to make GENARR more modular (i.e. invisible if not used) |
1980 | o model/src/temp_integrate.F and salt_integrate.F |
1981 | - re-include store directives that were removed on Dec 27th. |
1982 | o model/src/external_forcing_surf.F |
1983 | - add storage directives for EmPmR and PmEpR to avoid recomputation of |
1984 | seaice_model in the adjoint that is problematic when seaice_model is |
1985 | turned off in the adjoint. The resolved issue dated back to July when |
1986 | EXTERNAL_FORCING_SURF call was moved. |
1987 | Update global_ocean.cs32x15/*/output_adm.seaice_dynmix.txt accordingly. |
1988 | o pkg/exf/exf_check.F |
1989 | - fix a small bug again (originally found by Wentao Liu, now found again) |
1990 | - streamline error output |
1991 | o pkg/streamice and aim_v23: |
1992 | - replace a few "_EXCH_XY_RL (" with "_EXCH_XY_RL(", so that |
1993 | Apple's /usr/bin/cpp knows what to do: |
1994 | Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) |
1995 | Target: x86_64-apple-darwin13.0.0 |
1996 | |
1997 | checkpoint64s (2014/01/05) |
1998 | o tools/adjoint_options: |
1999 | - switch to fastopt.net TAF server (instead of default fastopt.de) for |
2000 | AD optfiles adjoint_diva & adjoint_f95 (similar to adjoint_default). |
2001 | o model/src: |
2002 | - remove some unnecessary TAF storage directives in forward_step.F and |
2003 | in dynamics.F (note: not always removed by TAF, e.g., double storage |
2004 | of kappaRU,kappaRV in former version of dynamics.F). |
2005 | o model/src & pkg/ptracers: |
2006 | - call directly GAD_IMPLICIT_R & IMPLDIFF + DWNSLP_APPLY from temp_integrate.F |
2007 | salt_integrate.F and ptracers_integrate.F (instead of from thermodynamics.F) |
2008 | and remove ptracers_dwnslp_apply.F & ptracers_implicit.F |
2009 | - call MATRIX_STORE_TENDENCY_EXP for each tracer (in ptracers_integrate.F) |
2010 | - add fZon & fMer as output argument of S/R GAD_CALC_RHS. |
2011 | - update TAF AD-output of experiments global_ocean.90x40x15 (13 for AD-grad). |
2012 | o useSingleCpuInput separates single-CPU input from single-CPU output; |
2013 | for now only implemented for in exf_interp_read.F |
2014 | o verification/advect_xy: |
2015 | - fix missing EXCH call in local version of ini_salt.F and update output. |
2016 | o momentum diagnostics: |
2017 | - fix which deltaT is used in Total-Tendency diagnostics. |
2018 | - fix typo in diagnostics for momentum tendency from AB. |
2019 | o pkg/seaice/seaice_lsr.F: fix an initialisation bug for the |
2020 | SEAICE_VECTORIZE_LSR_ZEBRA option that lead to NaNs on a NEC-SX8 |
2021 | |
2022 | checkpoint64r (2013/12/08) |
2023 | o verification/*/results: |
2024 | - Update reference output of experiments that were passing with just 13 digits |
2025 | (make it easier to detect future changes in results) |
2026 | o model/src & pkg/ptracers: |
2027 | - move calls to GAD_ADVECTION (Multi-Dim advection) from thermodynamics.F to |
2028 | inside temp_integrate.F and salt_integrate.F and from ptracers_advection.F |
2029 | to inside ptracers_integrate.F ; remove ptracers_advection.F |
2030 | o coupling interface pkgs: |
2031 | [atm_compon_interf, ocn_compon_interf & atm_ocn_coupler] |
2032 | - change the config check to test the agreement of Ocean Depth |
2033 | with ATM land/sea mask (instead of ATM orography); |
2034 | - send to coupler the number of coupler time-steps to do for this run: |
2035 | this allows to check for consistency and don't need anymore to be |
2036 | specified in parameter file "data"; |
2037 | in coupler: |
2038 | - check consistency of RunOff map versus Ocean Depth and ATM land/sea mask. |
2039 | - improve report to log-file of config setting (pass log-file unit to few S/R) |
2040 | o pkg/compon_communic: |
2041 | - add coupling send/receive for non-tiled integer vector; |
2042 | - add S/R to check and stop if any proc has an error (similar to |
2043 | eesupp/src/stop_if_error.F but single thread and across Comm_World). |
2044 | o pkg/exch2: |
2045 | - in exch2*_get_rx[1,2]: use new list "W2_tileIndex" to replace search |
2046 | through list of all tiles my proc owns. |
2047 | o model/src: |
2048 | - AUTODIFF only: in calc_adv_flow.F, recompute rTransKp (instead of copying |
2049 | from rTrans) to simplify dependencies (no need to store rTrans anymore in |
2050 | calling S/R); this affects AD results at machine truncation level: |
2051 | update AD-output (TAF) of experiments: 1D_ocean_ice_column, |
2052 | bottom_ctrl_5x5 & obcs_ctrl (12 digits for AD grad, same FWD grad). |
2053 | o tools/build_options: |
2054 | - simplify Warnings options (-ieee & -devel cases) in linux_amd64_gfortran |
2055 | o coupling interface pkgs: |
2056 | [compon_communic, atm_compon_interf & ocn_compon_interf] |
2057 | - move declaration of local array "ibuf" out of header file "CPLR_SIG.h" |
2058 | to each S/R that needs it; remove un-used variables. |
2059 | - change component tile registration (cpl_register.F in both compon_interf |
2060 | and mitcomponent_tile_register.F) to pass the full list of tiles |
2061 | information (including bi,bj) in 1 vector (instead of in a bi,bj matrix). |
2062 | - with pkg/exch2: adopt the same convention used for I/O to define mapping |
2063 | towards coupler global array (unless W2_useE2ioLayOut=F): |
2064 | a) can now use different tiling between atm & ocn comp. |
2065 | b) no needs to modify the run-Off map when changing tiling (was needed |
2066 | even if using the same tiling between atm & ocn). |
2067 | c) will allow to run with blank-tiles in 1 component (e.g., for ocean |
2068 | full land tiles); not yet tested. |
2069 | - check for valid mapping from comp. tile to coupler global array |
2070 | - improve report of tile registration results to log file. |
2071 | o pkg/exch2: |
2072 | - in eesupp/src/eeboot.F: move call to W2_EEBOOT before Coupler |
2073 | tile-registration (CPL_REGISTER); |
2074 | - activate (un-comment) definition and setting of "W2_tileIndex" list to |
2075 | store the local bi,bj indices of each tile; |
2076 | - also print bi,bj in local report to log file; |
2077 | - fix pkg/debug/debug_cs_corner_uv.F for the case nSy > 1 (left from |
2078 | Jun 2009 modif of pkg/exch2). |
2079 | o testing on baudelaire: |
2080 | - run 2 tests at a time: no significant slow down (since enough cpu) and |
2081 | get the full set of test done earlier |
2082 | - switch the ifort test to "-devel" ; run the OpenAD test everyday. |
2083 | o model/src/thermodynamics.F and routines called from it: |
2084 | - pkg/gmredi: gmredi_residual_flow.F (replacing gmredi_calc_uvflow.F & |
2085 | gmredi_calc_wflow.F) to update eulerian velocity (input) into residual |
2086 | velocity (outp) by adding bolus velocity. |
2087 | - model/src: calc_adv_flow.F (replacing calc_common_factors.F) to compute |
2088 | mass transport from velocity + lateral grid cell area |
2089 | - rename calc_gt.F to temp_integrate.F (includes call to TIMESTEP_TRACER) |
2090 | - rename calc_gs.F to salt_integrate.F (includes call to TIMESTEP_TRACER) |
2091 | in thermodynamics.F |
2092 | - remove k from thermodynamics.F and move it to temp_integrate.F |
2093 | salt_integrate.F and ptracers_integrate.F (now done inside the tracer |
2094 | loop). |
2095 | - compute locally (in thermodynamics.F) 3-D velocity field that is used to |
2096 | advect tracers; pass it as argument to GAD_ADVECTION, GAD_SOM_ADVECT, |
2097 | PTRACERS_ADVECTION, TEMP_INTEGRATE, SALT_INTEGRATE, PTRACERS_INTEGRATE, |
2098 | GAD_IMPLICIT_R and PTRACERS_IMPLICIT |
2099 | - update AD-output (TAF & OAD) of experiments: 1D_ocean_ice_column, |
2100 | global_ocean.90x40x15, tutorial_global_oce_biogeo and |
2101 | tutorial_tracer_adjsens (+ TLM output). |
2102 | o tools/OAD_support and (verification/*/) code_oad: |
2103 | - OAD_support/cb2mGetModules.csh: add PACKAGES_CONFIG.h in header file to |
2104 | module conversion ; remove unneeded CPP_EEOPTIONS.h. |
2105 | - code_oad/CPP_OPTIONS.h: remove PACKAGES_CONFIG.h and use a more standard |
2106 | version (closer to model/inc/CPP_OPTIONS.h). |
2107 | o model/src: |
2108 | - remove parameter "useOldFreezing" from PARAMS.h and push it to the |
2109 | retired list of parameters (routine FREEZE has been replace by surface |
2110 | freezing (10.yrs ago) and by pkg/frazil (interior freezing). |
2111 | o pkg/gmredi: |
2112 | - add option (GM_CALC_TRANSP_FROM_VEL) to compute transport directly from |
2113 | velocity (same scheme but affects machine truncation) for GM_AdvForm. |
2114 | - update output of FWD experiments: front_relax.bvp, |
2115 | global_ocean.90x40x15.dwnslp, global_ocean.cs32x15 and ideal_2D_oce. |
2116 | |
2117 | checkpoint64q (2013/11/17) |
2118 | o verification: |
2119 | - generate new output on baudelaire (gfortran, -ieee) for OpenAD experiments |
2120 | tutorial_global_oce_biogeo and global_ocean.90x40x15. |
2121 | - generate new output (growth & melt) for seaice_itd experiment after |
2122 | updating the input pickup_seaice files (previously wrong). |
2123 | o pkg/cost: |
2124 | - define a "final cost function" for each tile, and use GLOBAL_SUM_TILE_RL |
2125 | (instead of _GLOBAL_SUM_RL) to get the final cost from all procs & threads: |
2126 | o this fixes global-sum value if multi-threads (since GLOBAL_SUM_RL |
2127 | cannot be applied to var in common block). |
2128 | o allows to get results independent of tile-per-proc setting (if using |
2129 | slower GLOBAL_SUM_SEND_RECV option). |
2130 | - update accordingly: seaice_cost_final.F, shelfice_cost_final.F, |
2131 | thsice_cost_final.F and ecco_cost_final.F (this one affects lab_sea |
2132 | forward gradients: update output). |
2133 | - update */code_oad/externalDummies.F by adding dummy GLOBAL_SUM_TILE_RL |
2134 | S/R and, for most exp., also comment out GLOBAL_SUM_R8. |
2135 | o pkg/mom_common: |
2136 | - move to pkg/mom_common and model/src (previously in tutorial_deep_convection |
2137 | code) 2nd version of isotropic 3-D Smagorinsky code interface: strain and |
2138 | viscosity are locally declared in dynmics.F and pass as argument to CALC_GW; |
2139 | ensure that all field value that are used are set. |
2140 | o tutorial_deep_convection (smag3d): |
2141 | - add missing scaling in mom_calc_smag_3d.F; |
2142 | - set smag3D_coeff in input.smag3d such that results do not change. |
2143 | o pkg/dic: |
2144 | - change dic_cost.F to compute cost on each tile first and then apply |
2145 | GLOBAL_SUM_TILE_RL: this affects forward gradient of AD experiments |
2146 | tutorial_dic_adjoffline & tutorial_global_oce_biogeo; update output. |
2147 | - remove kLev argument and use GLOBAL_SUM_TILE_RL in tracer_meanarea. |
2148 | o eesupp/src & pkg/mdsio: |
2149 | - remove gather/scatter_vector.F (from eesupp) and mdsio_read/writevector.F |
2150 | (from pkg/mdsio) since they are no longer used for tape IO. |
2151 | - move simple C subroutine "setdir.c" from pkg/compon_communic to eesupp/src |
2152 | (+ keep a copy in pkg/atm_ocn_coupler). |
2153 | o verification/isomip: |
2154 | - split domain in 8 squared tiles (instead of just 2) for FWD, AD & OAD tests. |
2155 | o tools/build_options: |
2156 | - optfile linux_amd64_ifort11, fast (no ieee) case: |
2157 | to get a working restart for all experiments, add "-fp-model source" |
2158 | to FOPTIM (also remove "-opt-streaming-stores auto" <- this is the default). |
2159 | |
2160 | checkpoint64p (2013/10/20) |
2161 | o pkg/autodiff: |
2162 | - adread_adwrite.F: when type and length do not match ALLOW_AUTODIFF_WHTAPEIO |
2163 | criteria, return to simple (default) tape IO format. |
2164 | o pkg/mdsio (+ eesupp/src): |
2165 | - rewrite/simplify tape-IO S/R (new S/R MDS_READ/WRITE_TAPE replace |
2166 | previous MDSREAD/WRITEVECTOR) with 2 array argument from each type (R4/R8); |
2167 | - fix globalFile and singleCpuIO options using simpler global mapping. |
2168 | - new pairs of scatter/gather vector S/R (one for each type, generated from |
2169 | template) corresponding to simpler global mapping. |
2170 | - adread_write.F: switch to new S/R (but leave old calls commented) and write |
2171 | to globalFile when parameter globalFiles is set to True. |
2172 | - switch on useSingleCpuIO in AD experiments: global_ocean.90x40x15 & isomip. |
2173 | o pkg/autodiff: |
2174 | - adread_adwrite.F: add a hack for RS arrays (when RS=real*4); |
2175 | with ALLOW_AUTODIFF_WHTAPEIO defined, since corresponding (real*4) is |
2176 | missing, just add a STOP if array type do not match. |
2177 | o pkg/exf: |
2178 | - to allow to use seaice-fraction from pkg/exf in other pkgs than pkg/seaice: |
2179 | rename CPP option EXF_ALLOW_SEAICE_RELAX to EXF_SEAICE_FRACTION |
2180 | and rename array obsSIce to exf_iceFraction. |
2181 | o tutorial_deep_convection: |
2182 | - add 1rst version of isotropic 3-D Smagorinsky code (from Louis-Philippe), |
2183 | for now all in this exp. code dir. |
2184 | - add secondary test using Smag-3D viscosity (keep very low backgroud visc for |
2185 | testing) and flux-limter advection scheme for Temp. (no explicit diffusion). |
2186 | o eesupp/src: |
2187 | - added SINGLE_DISK_IO option because reading of parameter files on |
2188 | very large number of processors did not work with existing set-up |
2189 | |
2190 | checkpoint64o (2013/09/25) |
2191 | o pkg/atm_phys & atm_compon_interf: |
2192 | - allows for coupling of gray-atmosphere (atm_phys) with ocean. |
2193 | o tools/build_options: |
2194 | - switch from "-fPIC" to "-mcmodel=medium" in optfiles: linux_amd64_gfortran |
2195 | & linux_amd64_ifort11 and in linux_amd64_g77 & linux_amd64_open64 also |
2196 | remove CPP setting (was identical to genmake2 default). |
2197 | o pkg/gmredi & model/src: Some updating and work done on the residual model. |
2198 | - created new file model/src/calc_eddy_stress.F to calculate the eddy stress. |
2199 | - fixed up the calculation of the eddy stress and how it is added to the |
2200 | external forcing via taueddy_external_forcing.F |
2201 | - at the moment, it is very experimental and only works with the variable eddy |
2202 | diffusivity calculated in gmredi_k3d.F |
2203 | o pkg/seaice/seaice_check.F: add a check to catch the case of specifying |
2204 | lw/swfluxfile instead of lw/swdownfile in data.exf together with pkg/seaice |
2205 | o testreport (& tools/do_tst_2+2): |
2206 | - for MPI test, set default COMMAND to 'mpirun -v -np TR_NPROC ./{executable}' |
2207 | o tools/build_options: linux_amd64_gfortran & linux_amd64_ifort11: |
2208 | - remove CPP='cpp -traditional -P' (this is genmake2 default) |
2209 | - add switch (for big setups) to use 'medium' memory-model (but leave it |
2210 | commented out for now). Note: needed with FC 19 to compile big setups. |
2211 | o pkg/atm_compon_interf: |
2212 | - regroup per field origin (model & pkgs) the coupling storage routines |
2213 | (which accumalate in time each coupling field) |
2214 | - move bi,bj loops inside atm_store_my_data.F and store also wind-stress; |
2215 | update accordingly + simplify aim_do_physics.F |
2216 | |
2217 | checkpoint64n (2013/08/26) |
2218 | o pkg/bbl: |
2219 | - update formulation to reduce dispersion of tracer properties in bbl |
2220 | - replaced horizontal and vertical transport parameters with velocities |
2221 | - changes results for verification/global_with_exf.yearly |
2222 | o verification/halfpipe_streamice: |
2223 | - change to matrix construction; update both Fwd & AD output. |
2224 | o verification/tutorial_tracer_adjsens: |
2225 | - OpenAD test: switch to vector-invariant momentum since fluxform with |
2226 | rStar causes problems with OpenAD; update output. |
2227 | o tools: |
2228 | - genmake2: define a common prefix for all temp-file names ; move them |
2229 | to local /tmp disk (but would be easy to move them back); |
2230 | - xmakedepend: apply the same switch for temp-files. |
2231 | o pkg/offline: |
2232 | - changes for use with rStar (NLFS): assume that we continue to provide |
2233 | UVELMASS/hFacW_ini & VVELMASS/hFacS_ini (hFacWi,S_ini as written in grid |
2234 | output files) and apply r* scaling at each time-step (function of the time |
2235 | varying Eta field); use normal pickup files (needed for restart with NLFS). |
2236 | o adjoint with OpenAD: |
2237 | - move OpenAD-specific files from verification/OpenAD/code_oad_all to a new |
2238 | package openad. This package has to be compiled for all runs with OpenAD |
2239 | instead of specifying code_oad_all as a modification directory. |
2240 | - link the fortran templates from tools/OAD_support to the build directory |
2241 | for preprocessing to avoid conflicts between different setups compiled |
2242 | simultaneously and simplify cleanup. |
2243 | o pkg/exf: |
2244 | - in exf_getforcing.F: comment out most of the EXCH calls (fields used by |
2245 | main model or other pkgs are exchanged in EXF_MAPFIELDS). |
2246 | o model/src: |
2247 | - do_stagger_fields_exchanges.F: skip EXCH calls when using pkg/offline |
2248 | (similar to do_fields_blocking_exchanges.F). |
2249 | o tools/genmake2: |
2250 | - remove TAF output src code just before calling staf (when not doing a fresh |
2251 | built, will stop if things go wrong with staf). |
2252 | - fix target "adobj" (left from TAF version-2 transition) |
2253 | o pkg/diagnostics: |
2254 | - add a parameter to track the status of pkg/diagnostics activation; |
2255 | this replace/extend the use of logical param "settingDiags" (to check |
2256 | when adding diag to the list) to also check any DIAGNOSTICS_[]FILL* call. |
2257 | New S/R to print error message and stop when pkgStatus is not right. |
2258 | - to try: add a warning when "data.diagnostics" exist but useDiagnostics=F. |
2259 | |
2260 | checkpoint64m (2013/08/13) |
2261 | o model/inc: |
2262 | - move FCORI_MACROS.h from PARAMS(_MACROS).h to GRID_MACROS.h (left from |
2263 | 8 yrs ago modif when Coriolis arrays were moved from PARAMS.h to GRID.h) |
2264 | o pkg/kpp & aim_v23: |
2265 | - only call DIAGNOSTICS_FILL when useDiagnostics=TRUE. |
2266 | o pkg/seaice: |
2267 | - restore (last time on 2011/12/24) ability to compile pkg/seaice with |
2268 | undefined pkg/exf ALLOW_ATM_TEMP or ALLOW_RUNOFF CPP-options. |
2269 | - only call DIAGNOSTICS_FILL when useDiagnostics=TRUE. |
2270 | o eesupp/src: |
2271 | - fix check for overlap-size argument (myOLn.GT.MAX_OLY_EXCH) |
2272 | in exch1_rx[_ad].template (thanks to Francois Lefeuvre report). |
2273 | o switch to TAF version-2: |
2274 | - add flow directives to "freeze" naming convention for ad-routines that |
2275 | are used in I/O routines of adjoint state and associated common blocks |
2276 | that are used in adcommon.h (backward compatible with version-1) |
2277 | - update all ad-optfiles (in tools/adjoint_options + few local to some |
2278 | verification exp) to switch to latest TAF version (currently 2.5.5); |
2279 | merge "*_mpi" adoptfiles into the corresponding non-mpi (but commented |
2280 | out except for diva). |
2281 | - the major change with TAF version-2 is that both the differentiated |
2282 | routines and the forward routines (new) are returned as part of the TAF |
2283 | output source code. Update genmake2 accordingly. |
2284 | - new output for AD experiment tutorial_global_oce_biogeo (better AD gradient |
2285 | with version-2 when compared to TLM or FWD gradient); other experiments |
2286 | output show minor changes (machine truncation level); update the few AD & |
2287 | TLM output with 12 matching digits only (some prior to version-2 switch). |
2288 | |
2289 | checkpoint64l (2013/08/05) |
2290 | o model/src: |
2291 | - in dynamics.F, skip the call to CALC_VISCOSITY if momViscosity=F |
2292 | - main_do_loop.F: no longer includes additional (AUTODIFF) header files |
2293 | when using TAF but only if using OpenAD. |
2294 | o pkg/mom_common+fluxform+vecinv: |
2295 | - always set horiz. viscosity arrays to background value before calling |
2296 | MOM_CALC_VISC (in MOM_FLUXFORM & MOM_VECINV) and call S/R MOM_CALC_VISC |
2297 | only when using variable horiz. viscosity (useVariableVisc=T); |
2298 | - simplify mom_vecinv.F (only 1 block for momViscosity). |
2299 | o pkg/mom_common: variable horiz. viscosity in NH code |
2300 | - move horiz-viscosity 3-D arrays viscAh_W & viscA4_W (used in calc_gw.F) |
2301 | from model/inc/NH_VARS.h to pkg/mom_common/MOM_VISC.h |
2302 | - store in common block (in MOM_VISC.h) logical parameters: useHarmonicVisc, |
2303 | useBiharmonicVisc & useVariableVisc. |
2304 | - fix old bug (already in 1rst implementation of variable horizontal viscosity |
2305 | in calc_gw.F, version 1.27, 2006/06/20): |
2306 | horizontal bi-harmonic viscosity in gW was missing when wiscA4W=0 |
2307 | even if variable bi-harmonic viscosity (e.g., viscA4Grid) was non-zero. |
2308 | - change background horiz viscosity in vertical momentum (gW) to always be |
2309 | viscAhW,viscA4W (instead of switching to viscAhD, viscA4D when using |
2310 | any type of variable viscosity, e.g., viscAh/4Grid) |
2311 | - change default value of viscAhW,viscA4W to viscAhD,viscA4D (instead of |
2312 | viscAh,viscA4) which default to viscAh,viscA4 : this avoid missing |
2313 | horiz. viscosity in W eq when just setting viscAhD/Z,viscA4D/Z (since |
2314 | default viscAh,viscA4 is zero). |
2315 | o model/src: |
2316 | - extend length of drC & recip_drC from Nr to Nr+1. |
2317 | o Divided Adjoint (DIVA) with MPI: |
2318 | - genmake2: do not create local ./mpi_headers dir when no file to copy into. |
2319 | - remove option ALLOW_DIVIDED_ADJOINT_MPI (replaced by ALLOW_DIVIDED_ADJOINT |
2320 | and ALLOW_USE_MPI) from model/src code and from ECCO_CPPOPTIONS.h. |
2321 | |
2322 | checkpoint64k (2013/07/23) |
2323 | o tools/OAD_support: |
2324 | - avoid the need for file "oadtempflile" in insertTemplateDir.bash |
2325 | and remove it from genmake2. |
2326 | o tools/build_options: |
2327 | - remove MPI_HEADER_FILES_INC setting (no longer used) and comment out |
2328 | MPI_HEADER_FILES list (let genmake2 find the missing headers) |
2329 | o verification/halfpipe_streamice: |
2330 | - change to driving stress formulation; update both Fwd & AD output. |
2331 | o tools/genmake2 and Divided Adjoint with MPI: |
2332 | - remove default setting of MPIINCLUDEDIR from $MPIHOME (always been broken); |
2333 | - only create local ./mpi_headers dir if using MPI and MPIINCLUDEDIR is set; |
2334 | - add new variable (LOCAL_MPI_HEADERS, replace MPI_HEADER_FILES_INC) in |
2335 | Makefile, which is set by genmake2, and check which mpi-headers are needed. |
2336 | Note: need to update adjoint_options/adjoint_diva_mpi accordingly. |
2337 | - update target "CLEAN" (to also remove ./mpi_headers/ dir). |
2338 | o testreport: |
2339 | - changes for Divided Adjoint Run: when file "run_ADM_DIVA" is present, |
2340 | perform additional runs (number of additional runs is "add_DIVA_runs" taken |
2341 | from file run_ADM_DIVA ; should match "nchklev_3" in file "code_ad/tamc.h"). |
2342 | o verification/lab_sea (AD test): |
2343 | - change to test Divided Adjoint Run in this set-up (both standard AD test |
2344 | and 2 secondary AD test: noseaice + noseaicedyn); drop the evp AD test. |
2345 | o pkg atm_ & ocn_compon_interf: |
2346 | - remove cpl_earlyExpImpCall=F option (was mainly a hack added for the old |
2347 | staggerTimeStep implementation) and disable (retired) corresponding |
2348 | parameter. |
2349 | o pkg/offline: |
2350 | - comment out unused field-array: ICEM, ConvectCount, hflx[01], icem[01]; |
2351 | - add S/R OFFLINE_CHECK to print offline parameter summary |
2352 | and stop if loading a file that is not used; |
2353 | - enable to calculate GMRedi tensor, KPP mixing and convective index |
2354 | when the corresponding file(s) is/are not specified (but pkg is used). |
2355 | - comment out resetting of monitorFreq (to endTime) since it still useful |
2356 | for monitoring CFL numbers and checking offline fields. |
2357 | o OpenAD: |
2358 | - do not define OAD_DEBUG (in tools/adjoint_options/adjoint_oad) to get |
2359 | smaller standard output) and generate new (smaller) output (on baudelaire |
2360 | using gfortran with -ieee) for exp. tutorial_tracer_adjsens |
2361 | o model/src: |
2362 | - call EXTERNAL_FORCING_SURF outside bi,bj loops (in do_oceanic_phys.F), |
2363 | (where external_forcing_adjust was called) and change list of arguments; |
2364 | - merge external_forcing_adjust.F into external_forcing_surf.F |
2365 | - put surface relaxation of SST & SSS in new S/R (forcing_surf_relax.F) |
2366 | which also contains balancing surface relaxation (ALLOW_BALANCE_RELAX, |
2367 | previously in file "balance_relax.F", now removed); remove corresponding |
2368 | arrays in FFIELDS.h. |
2369 | - EXTERNAL_FORCING_SURF is now called when using pkg/offline; implement |
2370 | a hack for getting back surfaceForcingS (loaded from file) when using |
2371 | ALLOW_OLD_VIRTUALFLUX (pkg/dic, in DIC_OPTIONS.h) in offline set-up. |
2372 | - update output of AD test experiment global_ocean.cs32x15.seaice_dynmix |
2373 | (was getting only 11 digits for AD-grad, due to different truncation |
2374 | error in AD code). |
2375 | |
2376 | checkpoint64j (2013/07/04) |
2377 | o pkg/offline: |
2378 | - to enable the use of other features with pkg offline (e.g., obcs), |
2379 | also call S/R DO_OCEANIC_PHYS in offline run - more modifs to come. |
2380 | - comment out "allowFreezing" (now active) in 2 offline testing exp. |
2381 | o pkg/exf ALLOW_RUNOFTEMP |
2382 | - fix sign and make compatible with temp_EvPrRn .NE. UNSET_RL |
2383 | - ahdded RUNOFTEMP test to verification/global_ocean.cs32x15/input.seaice |
2384 | - changes verification/global_ocean.cs32x15/results/output.seaice.txt |
2385 | o pkg/atm_phys: |
2386 | - allows to add some damping on uVel,vVel (strength only function of k). |
2387 | o verification, ad-tests: |
2388 | - reduce length of the simulation for AD test: global_ocean.cs32x15.seaice, |
2389 | global_ocean_ebm and offline_exf_seaice.thsice. |
2390 | o verification/halfpipe_streamice: |
2391 | - found a bug in s/r pkg/streamice/streamice_advect_thickness which caused |
2392 | flux input boundary conditions to be ignored; a fix for this bug changed |
2393 | verification results for forward test. |
2394 | - add adjoint test. |
2395 | o pkg/ptracers: |
2396 | - allow to restart without SOM pickup (resetting SOM to zero). |
2397 | o pkg/gmredi: |
2398 | - New parameterisation for the calculation of K and (GM_PsiX,GM_PsiY) added. |
2399 | - It uses mixing length theory and suppression by steering level effects to |
2400 | calculate a diffusivity used in the Redi tensor (see Bates et al., submitted |
2401 | to JPO, for more details). |
2402 | - It also uses the diffusivity to calculate an eddy induced streamfunction |
2403 | based on a PV closure (rather than a buoyancy closure as in GM). |
2404 | - New files added to pkg/gmredi: |
2405 | gmredi_k3d.F calculates the diffusivity for the Redi tensor and the eddy |
2406 | induced overturning streamfunction (called from gmredi_calc_tensor) |
2407 | gmredi_calc_eigs.F calculates the eigenvalues and eigenvectors required |
2408 | for use in gmredi_k3d |
2409 | gmredi_calc_urms.F calculates the the rms eddy velocity used to calculate |
2410 | the eddy diffusivity |
2411 | |
2412 | checkpoint64i (2013/06/18) |
2413 | o pkg/cheapaml: |
2414 | - take src files from MITgcm_contrib/verification_other/offline_cheapaml/code |
2415 | that enable the use of seaice (pkg/thsice thermo & pkg/seaice dynamics) |
2416 | with pkg/cheapaml. |
2417 | o utils/python: add subpackage for cubed sphere function, first example is |
2418 | simple cs.pcol to plot 2D fields on a map |
2419 | o pkg/streamice: |
2420 | - This is a new package in MITgcm, which solves dynamic equations for ice |
2421 | sheets and ice streams |
2422 | - At the moment it is independent of atmosphere/ocean dynamics, or any |
2423 | other physical packages in MITgcm, even ShelfIce (although it is anticipat- |
2424 | ed that this will change) |
2425 | - There is a new verification exercise that tests it, halfpipe_streamice, |
2426 | evolves a 40x80 km ice stream/ice shelf (at coarse resolution) in a |
2427 | rectangular embayment |
2428 | - halfpipe_streamice is forward-only for now, will have TAF test soon |
2429 | - for questions, email dgoldber@mit.edu |
2430 | o pkg/thsice: |
2431 | - fix filling of snow-precip diagnostic (SIsnwPrc) (left from the removing |
2432 | of snowPrc from common bloc, on May 2nd, thsice_step_fwd.F revision 1.40); |
2433 | - remove diagnostics 'SI_FrcFx' ( now identical to 'SI_Fract' with new |
2434 | call sequence: ice-Thermo(thsice),ice-Dyn,ice-Advect ); |
2435 | - allow precip from pkg/cheapaml to make snow over seaice. |
2436 | o pkg/cfc: |
2437 | - move in separated header file (CFC_ATMOS.h) time-serie arrays of Atmos CFC |
2438 | - remove atmos CFC 2-D arrays from common bloc (now local variables) |
2439 | - change some hard-coded constant to run time parameter for reading and |
2440 | and interpolating atmospheric CFC ; keep same default as previously. |
2441 | - more flexible reading of Atmos CFC (number of records no longer hard-coded) |
2442 | - put arguments in standard order: myTime, myIter, myThid |
2443 | - use standard S/R GET_PERIODIC_INTERVAL for time interpolation of |
2444 | atmospheric CFC ; fix for the case myIter < PTRACERS_iter0. |
2445 | - fix calculation of surf tendencys for partial-cell and/or Non-Lin Free-Surf |
2446 | - new routine to print summary of CFC params and check for consistency. |
2447 | o pkg/seaice: add uice/vice to the parameter list of s/r seaice_advdiff, |
2448 | similar to thsice_advdiff. |
2449 | Note that for the B-grid case the routine parameters uc/vc are overwritten. |
2450 | o pkg/cfc: |
2451 | - change time interpolation for atmospheric CFC-11 (now same as for CFC-12); |
2452 | update output (CFC-11) of experiment cfc_example and tutorial_cfc_offline. |
2453 | - fix interpolation of atmphspheric CFC between Sorthern and Northern |
2454 | hemisphere value. |
2455 | o pkg/seaice: |
2456 | - allow to use seaice dynamics without pkg/exf (e.g., using pkg/cheapaml) |
2457 | o pkg/seaice: add Adams-Bashforth2 time discretization for ice dynamics; |
2458 | so far only for JFNK-solver, turn on with SEAICEuseAB2 = .TRUE. |
2459 | - requires an additional time level that is stored in the pickup |
2460 | - you can start with AB2 from a pickup without this time level with |
2461 | pickupStrictlyMatch = .false. |
2462 | |
2463 | checkpoint64h (2013/05/26) |
2464 | o pkg/cheapaml: |
2465 | - replace one ()**.5 with SQRT + use temp var "cdu = tau/Du" (coare3_flux); |
2466 | affect machine truncation (but exp cheapAML_box still pass with 13 digits). |
2467 | - consistent treatment of uWind,vWind location: assume everywhere in |
2468 | pkg/cheapaml that they are on C-grid (@ uVel,vVel location) |
2469 | (Note: was already the case for Tair,Qair advection); |
2470 | add option (INCONSISTENT_WIND_LOCATION) to recover old results. |
2471 | - compute diabatic forcing only in the interior (excluding overlap regions) |
2472 | - fill in array "Qsw" (for short-wave heating); |
2473 | - add diagnostic for precip ; fill-in diagnostics for cheapAML state vars |
2474 | before any update (consistent with MITgcm state var diagnostics); |
2475 | - cheapaml_fields_load.F & cheapaml_init_varia.F : only fill outer edges if |
2476 | non periodic ; + adjusted for uWind,vWind (C-grid). |
2477 | o pkg/seaice: |
2478 | - remove dependence of pkg/seaice versus pkg/exf (file: pkg/pkg_depend) and |
2479 | add explicitly pkg/exf in experiments that currently use pkg/seaice. |
2480 | - allows to compile pkg/seaice without pkg/exf. |
2481 | o tools/OAD_support: |
2482 | - use a local copy (ourRWCPinBd) to ensure index ourRWCP stays within bounds |
2483 | of array "ourStepOf" in function rvNextAction (revolve.F90). |
2484 | o pkg/aim_compon_interf renamed to pkg/atm_compon_interf |
2485 | - change pkg name (to be used with other atmospheric physics pkg) |
2486 | but by-pass CVS when making the new pkg so that we keep the CVS history. |
2487 | o pkg/offline: |
2488 | - call OFFLINE_FIELDS_LOAD from pkg/offline/offline_init_varia.F |
2489 | (previously called from pkg/dic_surfforcing_init.F) |
2490 | o model/src: |
2491 | - re-order sequence of calls within packages_init_variables.F, using |
2492 | standard order, except for: |
2493 | DIAGNOSTICS_INIT_VARIA and OFFLINE_INIT_VARIA (called @ the top), |
2494 | CTRL_MAP_INI and OBCS_INIT_VARIABLES (called @ the bottom) |
2495 | o new pkg: atm_phys |
2496 | - add entry point and source code (previously in contrib |
2497 | verification_other/atm_gray/code_gray/) for new pkg "atm_phys" |
2498 | (atmospheric physics pkg from P. O'Gorman and T. Schneider, JCl, 2008). |
2499 | - re-order sequence of calls within packages_readparms.F, |
2500 | packages_init_fixed.F and packages_write_pickup.F |
2501 | (but skip packages_init_variables.F because of TAF issues). |
2502 | - update contrib/*/atm_gray/ experiment. |
2503 | o pkg/seaice (ITD code): |
2504 | - simplify and fix the writing of pickup-files for ITD case |
2505 | o pkg/seaice (ITD code): |
2506 | - introduce floe size dependent lateral melt for ITD case; |
2507 | - cleaning (avoid division by zero, change to f77 syntax, remove tabs) |
2508 | - update seaice_itd experiment main output. |
2509 | o pkg/thsice: |
2510 | - remove snowPrc from common block THSICE_FLUX, in THSICE_VARS.h and |
2511 | declared it locally (without bi,bj) in thsice_main.F & aim_do_physics.F; |
2512 | changed accordingly pkg/atm2d. |
2513 | |
2514 | checkpoint64g (2013/05/01) |
2515 | o pkg/exf ALLOW_RUNOFTEMP |
2516 | - if defined, river and glacier runoff temperature can be read-in from |
2517 | runoftempfile; runoftempfile needs to have same format as runofffile |
2518 | o pkg/thsice (& pkg/bulk_force): |
2519 | - In case Energy-Reference-Level (ERL) is used (temp_EvPrRn=0), account |
2520 | for energy content of Precip + RunOff & Evap (like with pkg/exf). |
2521 | - change computation domain to always be the interior (without overlap). |
2522 | - fix bug (wrong overlap) when using EXF and stressReduction > 0. |
2523 | o verification/tutorial_global_oce_biogeo: |
2524 | - add preliminary OpenAD setup (still has problems) |
2525 | o pkg/seaice: |
2526 | - turn some parameters for choosing the convergence criterion of |
2527 | the inexact Newton method (JFNK) into runtime parameters for convenience |
2528 | - clean up seaice_calc_viscosities.F: remove/retire two options for |
2529 | SEAICetaZmethod (1,2), introduce area weighting for method 3; this changes |
2530 | the results of lab_sea/input because a division has been replaced by |
2531 | a multiplication with the reciprocal (sumNorm) |
2532 | - modify offline_exf_seaice/input.dyn_jfnk/data.seaice to improve |
2533 | convergence of solver (changes results, of course), and to test some |
2534 | new features |
2535 | o model/src: |
2536 | - remove unused (since Aug 2006) S/R SET_WRITE_GLOBAL_PICKUP and its call. |
2537 | - remove unused forcing field "dQdT" and associated parameter "dQdTFile". |
2538 | - move forcing adjustment (balancing surface forcing) in specific S/R |
2539 | where might also be applied exchanges (if needed) to forcing arrays. |
2540 | o pkg/shelfice: |
2541 | - allow to specify the Ice-Shelf mass per unit area (instead of |
2542 | shelficeLoadAnomaly) and do the conversion from one to the other |
2543 | - move loading from file of shelficeLoadAnomaly from SHELFICE_INIT_VARIA |
2544 | to SHELFICE_INIT_FIXED: (a) avoid some TAF recompution issues and |
2545 | (b) will be loaded in time (before calling INI_PRESSURE) in case it is |
2546 | needed in phi0surf for initial pressure calculation when useDynP_inEos_Zc |
2547 | - update isomip experiment forward output (get machine truncation error |
2548 | from conversion shelficeLoadAnomaly -> shelficeMass -> shelficeLoadAnomaly) |
2549 | o verification/offline_exf_seaice: |
2550 | revise data.seaice in input.thermo and input_ad and update results accordingly |
2551 | HO = 0.2, SEAICE_areaLossFormula = 2, |
2552 | SEAICE_growMeltByConv = .TRUE., |
2553 | SEAICE_doOpenWaterMelt = .TRUE., |
2554 | Improve consistency with input.thsice and fix the spurious 500m ice corners |
2555 | o verification/global_ocean.cs32x15: |
2556 | - set Energy Reference Level to liq. water @ 0 degC: temp_EvPrRn=0., |
2557 | in icedyn (thsice+seaice-dyn) test and update output. |
2558 | o verification/offline_exf_seaice: |
2559 | - adjust list of tested variables (with testreport) and update |
2560 | standard test output with better slection of monitored fields. |
2561 | o pkg/cd_code: |
2562 | - swtich off Adams-Bashforth on the 1rst iteration. Update output of |
2563 | experiment lab_sea.hb87 |
2564 | o tools/genmake2: |
2565 | - change default makedepend from the system default to tools/xmakedepend: |
2566 | When no makedepend is specified, select tools/xmakedepend it the test pass, |
2567 | otherwise select the system default (if exist and pass the test) or |
2568 | try to build cyrus-makedepend ; stop if none of the 3 works. |
2569 | o pkg/exf & pkg/thsice: |
2570 | - In case Energy-Reference-Level (ERL) is used (temp_EvPrRn=0), account |
2571 | for energy content of Precip + RunOff & Evap. Assumes: |
2572 | 1) Rain has same temp as Air. |
2573 | 2) Snow has no heat capacity (consistent with seaice & thsice pkgs) |
2574 | 3) Run-Off comes at the temp of surface water (with same Cp) |
2575 | 4) Evap over ocean is released to the Atmos @ surf-temp (=SST); should be |
2576 | put directly into Latent Heat flux & should use water-vapor heat capacity. |
2577 | 5) Evap over snow/seaice (pkg/thsice) assumes constant Lf+Lv (consistent |
2578 | with snow having no Cp) => water vapor is released to Atmos @ 0^oC (=ERL). |
2579 | o pkg/seaice: simplify the use of CPP flags in JFNK-related files |
2580 | (compile when SEAICE_ALLOW_JFNK is defined) |
2581 | o pkg/thsice: |
2582 | - fix oceanic flux diagnostics & timeave (left from new sequence of calls |
2583 | implementation): move THSICE_AVE call after the advection (called directly |
2584 | from thsice_do_advect.F). |
2585 | o verification/global_ocean.90x40x15 and OpenAD: |
2586 | New experiment for OpenAD is identical to the one in input_ad except that |
2587 | multiDimAdvection=.FALSE., |
2588 | There is still an issue with this. |
2589 | o pkg/thsice: |
2590 | - account for ice velocity (ocean relative velocity) in turbulent heat flux |
2591 | at the base of the ice; update output of global_ocean.cs32x15 (icedyn) |
2592 | and offline_exf_seaice (main test). |
2593 | |
2594 | checkpoint64f (2013/03/31) |
2595 | o verification/OpenAD: |
2596 | - new (smaller, without OAD_DEBUG) output_oadm.txt generated using gfortran. |
2597 | o verification/isomip, pkg/shelfice and OpenAD: |
2598 | - add OpenAD setup to this exp and make shelfice package work with OpenAD |
2599 | o verification/tutorial_global_oce_biogeo: |
2600 | - update AD and TLM output after turning off ALLOW_FE (in DIC_OPTIONS.h) |
2601 | o verification/offline_exf_seaice: |
2602 | - replace adjoint experiment (now similar to fwd input.thermo/ setup). |
2603 | o verification/tutorial_tracer_adjsens, pkg/ptracers and OpenAD: |
2604 | - add OpenAD setup to this exp and make ptracers package work with OpenAD |
2605 | o pkg/seaice/seaice_evp.F: |
2606 | mask the asymmetric contribution of the ice-ocean stress (when |
2607 | the turningAngle is non-zero) over open water to avoid stripes |
2608 | in the EVP-solutions after many EVP-substeps. This does not change |
2609 | the verification experiment (because turningAngle=0 in that experiment), |
2610 | but will affect other EVP solutions with turningAngle.ne.0 |
2611 | o verification, AD & TLM output: |
2612 | - new TAF version 2.3.10 (previously 2.3.8) add more parenthesis in multiple |
2613 | additions and multiplications which affect results at machine truncation |
2614 | level. Update few AD output (1D_ocean_ice_column, bottom_ctrl_5x5, |
2615 | lab_sea.noseaicedyn & offline_exf_seaice) and TLM output |
2616 | (1D_ocean_ice_column & tutorial_tracer_adjsens.som81) which had only 12 |
2617 | digits of matching. |
2618 | o pkg/seaice: |
2619 | modify lsr-algorithm so that it vectorizes AND converges by using a |
2620 | "zebra" method: split vector loop into two with step size 2; this |
2621 | solves a general convergence problem for the JFNK solver on a vector |
2622 | computer. It has the potential to even improve convergence for |
2623 | non-vector machines, but it does change the results so it is turned |
2624 | off by default. To turn on define CPP-flags SEAICE_VECTORIZE_LSR and |
2625 | SEAICE_VECTORIZE_LSR_ZEBRA in SEAICE_OPTIONS.h |
2626 | |
2627 | checkpoint64e (2013/03/05) |
2628 | o pkg/ecco and several verification experiments: |
2629 | Remove special versions of the_model_main.F, the_main_loop.F, forward_step.F |
2630 | from ecco package, and revert to unified routine in model/src/ |
2631 | Adjust verification experiments accordingly, especially gloal_oce_llc90 |
2632 | Should conclude long-standing work by Gael to reconsile the_main_loop with |
2633 | ECCO and will enable OpenAD's revolve loop in ECCO setup. |
2634 | o pkg/generic_advdiff: |
2635 | - implement compressible flow method for multi-dim advection (similar to |
2636 | gad_som_advect.F); add new option "GAD_MULTIDIM_COMPRESSIBLE" (since |
2637 | TAF generates many recomputations) to use it; no yet coded with implicit |
2638 | vertical advection. |
2639 | - change experiment advect_cs (new output) and advect_xy (same output) |
2640 | to test compressible flow multi-dim advection. |
2641 | o pkg/generic_advdiff: |
2642 | - fix SOM advection for unusual cases (linear Free-Surf in r*, other |
2643 | cases where linear Free-Surf is not @ k=1, e.g., useShelfIce) |
2644 | o pkg/seaice: |
2645 | - fix bug in the no-slip implementation in seaice_calc_strainrates.F, this |
2646 | bug affects two verification experiments (lab_sea and lab_sea.hb87), |
2647 | recover old (wrong) results by setting noSlipFac = 2. in |
2648 | seaice_calc_strainrates.F; |
2649 | - add another averaging method for etaZ (etaZmethod=3), a mix of 2 and 0 |
2650 | - add runtime parameter SEAICE_JFNKepsilon for that finite difference |
2651 | gradient in the Jacobian times vector operation (s/r seaice_jacvec) |
2652 | - fix line search in seaice_jfnk.F (s/r seaice_jfnk_update) |
2653 | o pkg/seaice: reorganize seaice_lsr.F to be able to reuse more code: |
2654 | - new subroutines seaice_lsr_tridiagu/v |
2655 | - introduce loop bounds i/jmin/max to be able to use a restricted |
2656 | additive Schwarz method, but not used for now. |
2657 | - rename SEAICE_CALC_LSR_COEFFS into SEAICE_LSR_CALC_COEFFS |
2658 | - use new subroutines seaice_lsr_tridiagu/v in s/r seaice_preconditioner |
2659 | o OpenAD support |
2660 | Reorganize S/R call for overall time-stepping loop to facilitate |
2661 | OpenAD revolve loop replacement |
2662 | (new S/R main_do_loop.F) |
2663 | o model/src: |
2664 | - add 3-D array 3rd dimension to argument list of S/R ADAMS_BASHFORTH2/3; |
2665 | - pkg/cheapaml: remove local S/R ADAMS2d and use instead standard S/R |
2666 | ADAMS_BASHFORTH2. |
2667 | o pkg/cheapaml: |
2668 | - add new parameter (default=F, same as before) to disable full domain |
2669 | (including land) periodicity in X & Y dir. |
2670 | - new S/R CHEAPAML_COPY_EDGES to copy relaxation field into edges of |
2671 | prognostics field ; merge the 2 S/R cycle_2d_tracer and timestep_2d_tracer |
2672 | into single S/R CHEAPAML_TIMESTEP. |
2673 | |
2674 | checkpoint64d (2013/02/17) |
2675 | o pkg/monitor (angular momentum): |
2676 | - do not add Eta contribution to the total AM if using rigid-lid; |
2677 | - correct for Adams-Bashforth in zonal-wind part (instead of in AM_eta). |
2678 | - horizontal discretisation: compute Zonal wind contribution separately for |
2679 | each component (instead of from cell centered averaged) and use the 4 |
2680 | grid-cell corner averaged value of Omega*(R*cos_Phi)^2 in AM_eta part. |
2681 | - Check that AM is conserved with linear dynamics (momAdvection=F and linear |
2682 | FreeSurf) if using vectorInvariant momentum. |
2683 | o model/src (horizontal grid): |
2684 | - move initialisation of all horizontal grid arrays to null value |
2685 | from specific horizontal grid S/R to main S/R INI_GRID; |
2686 | - add 2 new arrays to project model C-grid velocity on to zonal direction |
2687 | (similar to AngleCosC & -AngleSinC but at U and V point location) and |
2688 | compute them in S/R CALC_GRID_ANGLES. |
2689 | o pkg/seaice: replace a hard coded parameter by a runtime parameter |
2690 | SEAICE_JFNK_tolIter |
2691 | o pkg/seaice: introduce a restricted additive Schwarz (RAS) method in |
2692 | preconditioner for JFNK (run LSR into the overlaps as far as possible, |
2693 | i.e OLx/y-2, but overwrite the solution in the overlaps) |
2694 | - extend loop range in seaice_calc_viscosity |
2695 | - add new parameters SEAICE_OLx/y (default = OLx/y-2) |
2696 | - add flexible loop ranges to seaice_preconditioner, seaice_calc_lsr_coeffs |
2697 | - slightly modify loops in tridiagonal solver lsr-preconditioner |
2698 | - by default remove the extra exchange in seaice_preconditioner with a |
2699 | replacement of an undocumented CPP flag by SEAICE_PRECOND_EXTRA_EXCHANGE |
2700 | - modify offline_exf_seaice so that old results without RAS are reproduced |
2701 | for output.dyn_jfnk.txt |
2702 | in seaice_fgmres.F (unrelated to RAS) |
2703 | - add a cpp-flag option for a re-ordered mapping (potentially more |
2704 | efficient), but because this changes the results, turn it off by |
2705 | default |
2706 | - replace the save statement by local common blocks |
2707 | o utils/matlab: |
2708 | - fix tile-offset in rdmnc.m when output was produced using EXCH2. |
2709 | - update cs_grid/bk_line scripts to use load_grid.m (in utils/matlab) |
2710 | instead of local script "load_cs.m". |
2711 | o pkg/seaice: |
2712 | - fix a serious bug in seaice_fgmres.F, s/r seaice_scalprod, connected |
2713 | to the scalarProductMetric and the unrolling. By chance this does not |
2714 | change the verification experiment, because of the particular domain |
2715 | decomposition |
2716 | o pkg/diagnostics: |
2717 | - change default missing_value from UNSET_RL to -999. |
2718 | o pkg/layers: improve vectorization of layers_fluxcalc.F |
2719 | - step 1: split loops, make TatU/V 2D arrays. This alone reduces the cpu |
2720 | time spent in this routine by more than a factor of 3 on an NEC-SX8 |
2721 | - step 2: replace search algorithm by a bisection algorithm found in |
2722 | Press et al. Numerical Recipes in Fortran. This algorithm can be |
2723 | vectorized and finds the correct bin in approx. log2(Nlayers) steps. |
2724 | For now, use this algorithm only for TARGET_NEC_SX defined. |
2725 | - moved the search algorithm into a separate subroutine, that is kept |
2726 | within the same file for automatic inlining. |
2727 | - modified catching potential errors |
2728 | o pkg/ecco: |
2729 | - add compile switches ALLOW_SHALLOW_ALTIMETRY and ALLOW_HIGHLAT_ALTIMETRY. |
2730 | o model/src, pkg/autodiff, pkg/ctrl, pkg/grdchk : |
2731 | - modifications for ALLOW_GENTIM2D_CONTROL |
2732 | -- forward_step.F, the_main_loop.F : pass options and arrays for adjoint tapes. |
2733 | -- load_fields_driver.F : add call to CTRL_MAP_GENTIM2D( myTime, myIter, myThid ) |
2734 | -- add xx_gentim2d0/1 in ctrl_ad_check_lev1_dir.h checkpoint_lev1_directives.h etc |
2735 | -- use ctrl_swapffields.F (new) instead of exf_SwapFFields.F in ctrl_get_gen.F |
2736 | o model/src: |
2737 | - account for moist thermodynamics in (dry) potential temperature equation; |
2738 | update results of experiments: aim.5l_cs (x2), fizhi-cs (std + aqualev) |
2739 | and cpl_aim+ocn. |
2740 | - also switch to standard compiler (gfortran, was using ifort previously) |
2741 | for fizhi-cs experiments reference output. |
2742 | o pkg/ctrl: |
2743 | - 1st step toward generic time-varying control variable (2D) via CPP option |
2744 | ALLOW_GENTIM2D_CONTROL |
2745 | - note new namelist ctrl_nml_genarr in data.ctrl |
2746 | o verification/global_ocean.cs32x15: |
2747 | - switch off OLD_THSICE_CALL_SEQUENCE (both forward and AD code) to use new |
2748 | thsice calling sequence and update "output.icedyn.txt" output file. |
2749 | o pkg/ptracers: |
2750 | - from Ryan A.: code to allow to restart a tracer at regular time interval |
2751 | specifying a reset frequency and a reset-phase (for each tracers). |
2752 | o pkg/thsice: |
2753 | - implement new sequence of calls for thsice+seaice: |
2754 | previously: ice-Dyn,ice-Advect,ice-Thermo(thsice) |
2755 | new sequence: ice-Thermo(thsice),ice-Dyn,ice-Advect |
2756 | - allows (with temporary CPP option "#define OLD_THSICE_CALL_SEQUENCE" |
2757 | in CPP_OPTIONS.h) to recover old sequence; |
2758 | - update diagnostics for Intermediate State thsice diagnostics: now filled |
2759 | just before advection (instead of just after advection in old sequence); |
2760 | - update output of experiment offline_exf_seaice (standard test); |
2761 | - in global_ocean.cs32x15 exp., postpone output.icedyn.txt update |
2762 | by setting #define OLD_THSICE_CALL_SEQUENCE in CPP_OPTIONS.h |
2763 | o pkg/aim_v23: |
2764 | - use tiled array for aim_CO2 and surface wind speed for export to coupler; |
2765 | - use standard pkg/mdsio routines to read & write CO2 pickup file; |
2766 | - in-line S/R AIM_AIM2DYN_EXCHANGES in aim_do_physics.F; |
2767 | - Implement new sequence of calls for seaice advection (with thsice and |
2768 | seaice diffusion): do ice advection after ice-Thermodynamic (previously |
2769 | was done before); change aim_do_physics.F (split the bi,bj loops block); |
2770 | - use same CPP option (OLD_THSICE_CALL_SEQUENCE) to recover old sequence; |
2771 | o pkg/thsice: |
2772 | - add a missing EXCH of sIceLoad in thsice_main.F (ocean set-up) for the case |
2773 | where just seaice diffusion is used without seaice-dynamics. |
2774 | |
2775 | checkpoint64c (2013/01/18) |
2776 | o pkg/seaice: |
2777 | - add a parameter JFNKres_tFac that can replace JFNKres_t |
2778 | (= JFNKres_tFac*JFNKresidual before JFNK solver) |
2779 | - add a line search option to the JFNK solver |
2780 | - move update of u/vIce and computation of initial residual into a separate |
2781 | routine (same file); makes the code a little easier to read (?) |
2782 | - the line search requires computation of the residual and for some reason |
2783 | I cannot do the update of u/vIce at the beginning of the Newton loop |
2784 | without changing the results, so we move computation of the new residual |
2785 | also to the end of the Newton loop, even without the line search |
2786 | o pkg/mdsio: |
2787 | - write missing value (corresponding to undefined array value) to meta files; |
2788 | skip this if missing value is one (UNSET_RL would be a better value for the |
2789 | case of undefined missing value but it's current the default missing-value); |
2790 | Also update mdsio_read_meta.F (reading timeInterval & missing-value). |
2791 | o pkg/exf & thsice: |
2792 | - for diagnostics purpose, fill-up and update Qsw array (+ fill the |
2793 | diagnostics) even when SHORTWAVE_HEATING is #undef; |
2794 | o verification/cfc_example: |
2795 | - turn on pkg/layers with pkg/diagnostics (to test pkg/layers and to |
2796 | illustrate how to use it). |
2797 | o verification/offline_exf_seaice: |
2798 | in input: add SEAICErestoreUnderIce=.TRUE., and reduce size of forcing |
2799 | files to only one time-record. |
2800 | in input.thermo: narrow the 2 bands of low initial ice-concentration near |
2801 | N & S edges; switch on SEAICErestoreUnderIce=T; use pkg/diagnostics for |
2802 | snapshot output; same mcPheePiston value as in thsice with |
2803 | surf-current=0.2m/s. |
2804 | in input.thsice: similar set-up as in input.thermo (channel with same seaice |
2805 | initial conditions). |
2806 | o verification/cfc_example: |
2807 | - update file "data" with more standard choice (default rotationPeriod, |
2808 | exactConserv=T, reduce ivdc_kappa to 10, remove multiDimAdvection=F, |
2809 | set deltaTFreeSurf to deltaTtracer) and update the output. |
2810 | o pkg/layers: |
2811 | - fix bolus part so that it compiles with #undef GM_BOLUS_ADVEC; |
2812 | - ensure that "layers_bolus" is switched to False when useGMRedi=False. |
2813 | o verification/offline_exf_seaice: |
2814 | - set all {field}period to zero for constant-in-time forcing (not tested |
2815 | anywhere else). |
2816 | o verification/offline_exf_seaice: |
2817 | - dyn_lsr : use pkg/seaice S/R (instead of pkg/thsice) to advect sea-ice; |
2818 | - dyn_jfnk : use pkg/thsice S/R (instead of pkg/seaice) to advect sea-ice. |
2819 | o model/src: |
2820 | - implement Finite-Volume method for (hydrostatic) presure gradient |
2821 | from S.-J. Lin (QJRMS 1997), for atmosphere using sigma-coordinate. |
2822 | o pkg/seaice: implement EVP* by Lemieux et al. (2012). |
2823 | - In order to be compatible with the default EVP code, this requires changing |
2824 | the EVP code around a little; and because any small change immediately |
2825 | breaks the lab_sea.hb87 verification experiment, the reference output is |
2826 | updated two times (each time the remaining aggrement was only 2 digits): |
2827 | - after replacing 1/dt by 1*recip_dt with a precomputed recip_dt |
2828 | - after replacing 1/(1+0.5*dt/tau) by a/(a+1), with a=2*tau/dt |
2829 | The adjoint test lab_sea.evp also needed to be updated. |
2830 | - Turn on EVP* by setting SEAICE_deltaTevp as before, and setting |
2831 | SEAICEuseEVPstar=.true.; for EVP* SEAICE_deltaTevp does not need to be |
2832 | a factor of SEAICE_deltaTdyn, and you can set the number of EVP steps |
2833 | explicitly with SEAICEnEVPstarSteps (thereby overriding the default of |
2834 | INT(SEAICE_deltaTdyn/SEAICE_deltaTevp)). Controlling EVP* is deliberately |
2835 | kept obscure, because I need to test it a little more. |
2836 | o pkg/cheapaml: |
2837 | - fix few incorrect type (_RL/_RS) in subroutine calls. |
2838 | o pkg/seaice: |
2839 | - new S/R SEAICE_MAP_RS2VEC (similar to SEAICE_MAP2VEC) to map _RS arrays |
2840 | to _RL vector; this fixes JFNK code when compiling with "-use_r4" option. |
2841 | o model/src: |
2842 | - add a warning if using select_rStar=2 with nonlinFreeSurf <> 4; |
2843 | change (in input_ad*/data) select_rStar from 2 to 1 for AD verification |
2844 | experiments global_ocean.cs32x15 & tutorial_tracer_adjsens (+ update output) |
2845 | o pkg/cheapaml: |
2846 | - replace "273.1 _d 0" by celsius2K in pkg/cheapaml/cheapaml.F and |
2847 | update output of experiment cheapAML_box. |
2848 | - store in CHEAPAML.h coeffs ssq[0:2] for saturation specific humidity, |
2849 | and set them only in one place (cheapaml_readparms.F). |
2850 | - replace "273.16 _d 0" by celsius2K & replace "3.14159 _d 0" by constant "PI" |
2851 | - remove re-setting of main-model parameter "celsius2K" (in cheapaml_readparms) |
2852 | and re-setting of cheapAML params "lath" & "p0" (in cheapaml_init_varia). |
2853 | o model/src/the_main_loop.F: |
2854 | - fix revision 129 : need both ALLOW_ECCO and ALLOW_ECCO_EVOLUTION. |
2855 | o pkg/seaice: |
2856 | - remove legacy branch code. |
2857 | - retire SEAICE_GROWTH_LEGACY and SEAICE_CAP_HEFF accordingly. |
2858 | o verification/*/code*/SEAICE_OPTIONS.h: |
2859 | - remove documentation for retired CPP flags (SEAICE_GROWTH_LEGACY, |
2860 | SEAICE_CAP_HEFF). |
2861 | o pkg/cheapaml: |
2862 | - use standard routine (S/R GET_PERIODIC_INTERVAL) to decide when it is time |
2863 | to load new forcing fields. |
2864 | - add missing "_d 0" where it's needed; + some editing (improve indentation). |
2865 | - remove switch to "-r8" compiler option (no longer needed) in verification |
2866 | cheapAML_box, keep same output (small trucation error differences). |
2867 | o verification/offline_exf_seaice: |
2868 | - add thermodynamics only test. |
2869 | o verification/cheapAML_box: |
2870 | - split the domain in 8 (2x4) tiles; add MPI and multi-threaded test; |
2871 | keep same output (same 14 digits for cg2d). |
2872 | - switch on "-r8" compiler option (some numerical values are missing |
2873 | the "_d 0") and update output (only 6 digits for cg2d were preserved). |
2874 | |
2875 | checkpoint64b (2012/12/24) |
2876 | o pkg/cheapaml: |
2877 | - remove un-used variables (Qnet,EmPmR) from pickup files. |
2878 | - store tendency of advected variables into cheapaml pickup file |
2879 | and fix the AB-2 restart. |
2880 | o verification/offline_exf_seaice and lab_sea adjoint: |
2881 | - switch to new code (#undef SEAICE_GROWTH_LEGACY). |
2882 | - switch to 4 time steps in offline, consistent with lab_sea. |
2883 | - match parameters from SEAICE_GROWTH_LEGACY branch in data.seaice. |
2884 | - update results after change of experiment seaice. |
2885 | o pkg/seaice: |
2886 | - remove option SEAICE_MULTICATEGORY; has been replaced with run-time |
2887 | parameter SEAICE_multDim. Issue a warning if SEAICE_MULTICATEGORY is |
2888 | still defined since SEAICE_multDim needs to be set to MULTDIM value (from |
2889 | SEAICE_SIZE.h) to recover previous #define SEAICE_MULTICATEGORY default. |
2890 | o model/src: |
2891 | - add run-time parameter to select CG2D solver minimum-residual solution |
2892 | (in case of a poor convergence). |
2893 | o pkg/seaice/seaice_lsr.F |
2894 | - move calculation of matrix coefficients into new |
2895 | S/R SEAICE_CALC_LSR_COEFFS; for now this routine remains in the same |
2896 | file; the main purpose of this change is to be able to reuse the code |
2897 | in S/R SEAICE_PRECONDITIONER |
2898 | - modify the computation of the residual so that the mass of sea-ice |
2899 | is not used twice; this simplifies the calculations, but since |
2900 | the residual is never used except when LSR_mixIniGuess.ge.4---and this is |
2901 | not tested in testreport---this does not affect the testreport results. |
2902 | o verification/seaice_obcs: |
2903 | - disable SEAICE_GROWTH_LEGACY; reset input files to match those of |
2904 | verification/lab_sea/input.salt_plume; changes results/output.txt* |
2905 | o model/src: |
2906 | - adapt quasi-hydrostatic formulation to work with p or p* coordinate. |
2907 | o pkg/seaice: |
2908 | - improve description of parameters in seaice_fgmres.F and start |
2909 | cleaning up the code |
2910 | - change name of SCALPROD to SEAICE_SCALPROD and modify meaning of |
2911 | second argument |
2912 | - add a metric based on grid cell area to SEAICE_SCALPROD; update |
2913 | results of offline_exf_seaice.dyn_jfnk |
2914 | - compute initial residual norm in seaice_jfnk based on SEAICE_SCALPROD |
2915 | o pkg/aim_v23: |
2916 | - fix an other bug in dissipation heating (grid-cell area was missing). |
2917 | o model/src + pkg/seaice: |
2918 | - add global (multi-tile) linear solver for pair of tri-diagonal system |
2919 | along X and Y lines, respectively for U and V component. |
2920 | Note: 1) MPI and cube-exchange not yet coded. |
2921 | 2) probably not accurate for poorly conditioned / large size problem. |
2922 | - add option for SEAICE_LSR to use global (multi-tile) tri-diagonal solver; |
2923 | default: not compiled and not used. |
2924 | o pkg/seaice: |
2925 | - first attempt at a multi-threaded fgmres solver for the JFNK solver: |
2926 | introduce bi/bj loops and use global_sum_tile_rl instead of |
2927 | mpi_allreduce in seaice_fgmres.F |
2928 | - improve diagnostics output for fgmres solver (seaice_fgmres.F) |
2929 | - replace a few unnecessary goto statements by if-blocks (seaice_fgmres.F) |
2930 | - add a verification experiment for JFNK in offline_exf_seaice |
2931 | o verification: |
2932 | - change (for now, only fwd test) offline_exf_seaice experiment: |
2933 | use a re-entrant channel with idealized coastline (trapezoidal shape) |
2934 | at southern boundary to explore seaice dynamics and thermodynamics |
2935 | with simple forcing. Main set-up has dynamics+thermo and SST relaxation; |
2936 | secondary test (input.thsice) use thermodynamics only with SST relaxation. |
2937 | - add seaice-dynamics only secondary test using LSR and pkg/thsice advection. |
2938 | o pkg/exf: |
2939 | - disable "sstExtrapol" when Nr=1 |
2940 | o verification: |
2941 | - add new experiment "cheapAML_box" (simple 1 layer set-up from Bruno Deremble) |
2942 | to test pkg/cheapaml. |
2943 | o pkg/aim_v23 & pkg/shap_filt: |
2944 | - fix dissipation heating (erroneous gravity multiplication factor). |
2945 | o pkg/seaice: |
2946 | - remove unused field pressPre from jfnk solver |
2947 | - rename two subroutines in seaice_preconditioner.F |
2948 | o eesupp/src: |
2949 | - S/R MDSFINDUNIT avoids reserved unit numbers (scrUnit1, eeDataUnit ...) |
2950 | o pkg/seaice/seaice_preconditioner.F: fix preconditioner once again |
2951 | - remove wrong parts of the rhs and the lhs (were in there |
2952 | because I did not understand the concept of this preconditioner) |
2953 | - add an exchange between u- and v-sweep. This increases communication |
2954 | by a factor of two but improves the convergence of jfnk. Ideally, |
2955 | one would like the u- and v-sweep to be independent. So far within |
2956 | undocumented ifdefs |
2957 | - reorganize the extra computations for printing the residuals |
2958 | o tools/genmake2: |
2959 | - comment out the "mpif.h" include in NetCDF test programm (for MPI built) |
2960 | since it's not necessary (and was preventing to use MNC in some cases). |
2961 | |
2962 | checkpoint64a (2012/11/16) |
2963 | o pkg/autodiff: |
2964 | - improve pkg-internal logical parameter switch (inAd/inFwd mode) so that |
2965 | autodiff_readparms.F no longer depends on calling order (within |
2966 | packages_readparms.F) and no longer requires to include ${PKG}_PARMS.h): |
2967 | rename param turnFreeDriftInAdMode to SEAICEuseFREEDRIFTswitchInAd |
2968 | and change param SEAICEuseDYNAMICSinAdMode to SEAICEuseDYNAMICSswitchInAd. |
2969 | o pkg/obcs: |
2970 | - adding tidal velocity forcing capability to obcs |
2971 | for usage example, see verification/seaice_obcs/input.tides |
2972 | o pkg/seaice: |
2973 | - turn the LSR-relaxation parameters WFAU/V into runtime parameters |
2974 | SEAICE_LSRrelaxU/V |
2975 | - introduce runtime parameter SEAICEetaZmethod (=0 by default) |
2976 | o pkg/aim_v23: |
2977 | - implement heating from friction (bottom friction and stratospheric drag). |
2978 | o pkg/shap_filt: |
2979 | - fix diagnostic "SHAP_dKE" (was 2 time smaller); implement heating from |
2980 | dissipation but only for Shap_funct=2, active when addFrictionHeating=T. |
2981 | o model/src: |
2982 | - move AddMass common block from DYNVARS.h to FFIELDS.h; allow to read-in |
2983 | time-constant addMass field from file (addMassFile); |
2984 | - support for heating due to friction (and Kinetic Energy dissipation): |
2985 | add option, run-time switch and 3-D field array + support code ; each pkg |
2986 | or S/R can add heating contribution (if there is a sink of KE); the sum is |
2987 | accounted for as a Temperature tendency term (EXTERNAL_FORCING_T). |
2988 | o pkg/seaice: |
2989 | - complete merge of ITD code into seaice_growth.F |
2990 | from MITgcm_contrib/torge/itd/code/ |
2991 | no verification so far, but Torge Martin tested |
2992 | "1-D test case and Beaufort set up; |
2993 | deliver okay results after 1 model year." |
2994 | - complete merge of SEAICE_SIZE.h into all relevant routines |
2995 | - move computation of eta at Z-points into calc_viscosities |
2996 | + introduce global field etaZ |
2997 | + add different methods for computing etaZ, for now the old |
2998 | method (simple averages of eta to Z-points) is hardwired |
2999 | + replace etaMeanZ by etaZ in seaice_lsr, seaice_calc_residual, |
3000 | seaice_preconditioner |
3001 | - simplify computations for SEAICE_ZETA_SMOOTHREG |
3002 | - seaice_preconditioner: |
3003 | + replace one remaining press by pressLoc (mistake) |
3004 | + adjust printing of residuals |
3005 | - improve I/O of diagnostics of JFNK in seaice_jfnk.F: |
3006 | + add (SEAICE.h) and rename some counters (initiliased in |
3007 | seaice_init_fixed.F) |
3008 | + add _BEGIN/END_MASTER (myThid) around print statements |
3009 | + print total number of iterations and failures over SEAICE_monFreq |
3010 | interval to STDOUT |
3011 | - move control over output-messages by fgmres to seaice_jfnk to save |
3012 | some operations |
3013 | - move resetting initial guess for fgmres outside of seaice_fgmres_driver |
3014 | in order to make restarts with sol .ne. zero (fgmres with restarts) |
3015 | (seaice_jfnk.F, seaice_fgmres.F) |
3016 | - seaice_calc_l/rhs.F: replace maskW/S by maskInW/S; this fixes |
3017 | a serious convergence problem when open boundaries are involved |
3018 | o pkg/ggl90: fix computation of control volumes for the case of |
3019 | ALLOW_GGL90_HORIZDIFF (probably not used very often): move control volumes |
3020 | up half a grid cell from C-centered to W-centered (pointed out by C. Eden) |
3021 | o pkg/seaice: simplify seaice_evp by avoiding use of extra fields u/vIceC |
3022 | o pkg/autodiff |
3023 | - Add inAdMode switch for SEAICEuseDYNAMICS: |
3024 | SEAICEuseDYNAMICSinAdMode |
3025 | (extend logic in ADAUTODIFF_INADMODE_SET) |
3026 | o pkg/seaice |
3027 | - Step 1 of merging ice-thickness distribution (ITD) code from |
3028 | MITgcm_contrib/torge/itd/ (author: Torge Martin) |
3029 | The code implements concept laid out in Thorndike et al. (1975); |
3030 | code is enabled via CPP flag SEAICE_ITD |
3031 | nITD (in SEAICE_SIZE.h) defines number of ice thickness categories; |
3032 | code is not complete yet!! |
3033 | - SEAICE_SIZE.h now included in almost all seaice routines |
3034 | o verification (using seaice): |
3035 | - switch back seaice-dynamics (+ lower SOLV_MAX_ITERS) in ADM exp. |
3036 | global_ocean.cs32x15.seaice ; update results. |
3037 | - compile B-grid dynamics in FW test exp 1D_ocean_ice_column ; |
3038 | - compile C-grid dynamics with #define SEAICE_ALLOW_JFNK in FW test exp |
3039 | offline_exf_seaice (previously compiling B-grid). |
3040 | o pkg/exf: |
3041 | - fix some STOP conditions in exf_check.F (from Aug 28, modifs did not allow |
3042 | to specify neither just 1 comp of wind or wind-stress, nor no surface momentum |
3043 | forcing): just replace CPP option ALLOW_ATM_WIND with run-time param useAtmWind. |
3044 | o pkg/layers (adjust changes from Sept 19): |
3045 | - do snap-shot output and fill diagnostics from inside iLa loop (layers_calc.F) |
3046 | this allows to remove "layers_maxNum" dimension from all layers arrays. |
3047 | o pkg/layers (adjust changes from Sept 19): |
3048 | - remove ALLOW_LAYERS_OUTPUT ; fix snap-shot and time-ave output ; |
3049 | - snap-shot extended to all type of layers (not just the 1rst type); |
3050 | - remove layers variables when corresponding CPP option is undef. |
3051 | o pkg/layers: |
3052 | - rename pkg/layers variable and add new output (layer exist & un-weighted |
3053 | velocity in layer) |
3054 | o pkg/seaice: |
3055 | - simplify (?) ocean-drag coefficent computations by using |
3056 | the same routine in all three solvers (saves some code lines) |
3057 | - remove global fields DRAGA and DRAGS from C-grid code and |
3058 | declare them locally in lsr.F (the only place where they are |
3059 | still used) |
3060 | - update AD output of lab_sea.evp (very sensitive anyway). |
3061 | o pkg/seaice: add Jacobian-free Newton Krylov solver for ice dynamics |
3062 | (Lemieux et al. 2010, 2012). Turn on with the usual SEAICE_ALLOW_JFNK |
3063 | and SEAICEuseJFNK=.true. A few things to note: |
3064 | - involves a FGMRES, that is parallel but very inefficient, |
3065 | because of many scalar products (global sums) in the Gram-Schmidt |
3066 | orthogonalization method. Needs to be replaced. Original code |
3067 | from J.-F. Lemieux |
3068 | - preconditioner for FGMRES is a stripped down version of LSOR |
3069 | - SOLV_MAX_ITERS is now used for LSOR as a solver and as a |
3070 | preconditioner. For the preconditioner, the default is set to 10. |
3071 | - Jacobian times vector is computed with finite differences |
3072 | - marginally related to JFNK-solver: add a smooth regularization for |
3073 | zeta with tanh that will improve convergence (Lemieux and Tremblay, |
3074 | 2009) for any implicit solver (not implemented for EVP because EVP |
3075 | does not need this regularization in the first place). Define |
3076 | SEAICE_ZETA_SMOOTHREG in SEAICE_OPTIONS.h to use. |
3077 | o eesupp/src: |
3078 | - check in genmake2 that intrinsic S/R flush is available. |
3079 | - add S/R to flush IO unit (if intrinsic S/R flush is available) |
3080 | - flush standard & error msg unit before MPI termination |
3081 | - if debugMode, flush IO unit after printing msg |
3082 | o pkg/ctrl: |
3083 | - ctrl_unpack.F, ALLOW_GENARR3D_CONTROL code: fix missing argument in call |
3084 | to ctrl_set_unpack_xyz. |
3085 | |
3086 | checkpoint64 (2012/10/09) |
3087 | o pkg/shelfice |
3088 | - in mom_fluxform.F, mom_vecinv.F: |
3089 | CALL SHELFICE_V_DRAG(bi,bj,k,vFld,KE,KappaRU,vF,myThid) |
3090 | Bug fix KappaRU -> KappaRV |
3091 | does not change verification/isomip but may change other setups |
3092 | (presumably constant KappaRU=KappaRV) |
3093 | - fix diagnostics SHIU/Vdrag (thanks to Tom Millgate) |
3094 | o pkg/obcs: |
3095 | - fixed some indexing bugs in obcs_seaice_sponge.F |
3096 | - added obcs relaxation subroutines for HSALT and HSNOW |
3097 | - changes verification/seaice_obcs/results/obcs_seaice_sponge.F |
3098 | o pkg/seaice: |
3099 | - add "multicategory" parameterization for snow in analogy to ice, |
3100 | default is off for now. |
3101 | o pkg/obcs: |
3102 | - added obcs_seaice_sponge.F for obcs relaxation of seaice variables; |
3103 | see verification/seaice_obcs/input.seaiceSponge for example application. |
3104 | - remove local commom bloc "OBCS_GLOBAL" in obcs_readparms.F and do all the OB |
3105 | index setting by master-thread. This fix multi-threads Pb in previous modifs. |
3106 | o pkg/layers : |
3107 | - add diagnostics to pkg/layers |
3108 | - move the meat of pkg/layers from layers_calc.F to layers_fluxcalc.F |
3109 | (from R.Tulloch). Layers_calc.F now calls layers_fluxcalc.F accordingly. |
3110 | o pkg/generic_advdiff/gad_implicit_r.F : |
3111 | - fix ADVr diagnostics in case of both implicit vertical advection and diffusion. |
3112 | o pkg/seaice/seaice_growth.F: |
3113 | - fix SItflux diagnostics in virtual salt flux + balanceEmpmr case. |
3114 | o pkg/obcs: |
3115 | - change default setting of OBCS_UVICE_OLD from defined to undef; |
3116 | - use new parameter OB_indexNone for null index value (instead of hard-coded 0) |
3117 | in all pkg/obcs code and in other pkgs; remove k loop in obcs_check_depths.F; |
3118 | - pass OB_indexNone as (new) argument to S/R CTRL_MASK_SET_[X,Y]Z; |
3119 | - change OB null index value (OB_indexNone) to -99 ; this fix the problem |
3120 | with Southern & Western OB at a tile edge (at least in a simple set-up). |
3121 | o pkg/obcs: |
3122 | - change settings of OB index in case OB coincides with tile edge (shared by |
3123 | 2 tiles), so that common OB location is registered by both tiles (instead of |
3124 | only 1). However, for Southern and Western OB, index value = 0 is not |
3125 | recognized as valid OB index (=default null value) and needs to be fixed. |
3126 | - modify accordingly OBCS_BALANCE_FLOW and OBCS_MONITOR (avoid double counting) |
3127 | - new parameter "OB_indexNone" for null index value (for now, still zero) |
3128 | to replace hard-coded null index value of zero. |
3129 | o pkg/exch2: |
3130 | - improve W2_USE_E2_SAFEMODE (faster) and W2_E2_DEBUG_ON: |
3131 | always check buffer-size (but outside the loop); move checking for valid |
3132 | index from W2_USE_E2_SAFEMODE to W2_E2_DEBUG_ON; in W2_E2_DEBUG_ON, |
3133 | print each tile and point connection only if |W2_printMsg|>= 2 and 3. |
3134 | o pkg/ctrl (pack & unpack): |
3135 | - in ctrl_pack.F & ctrl_unpack.F, use the same local file-name variable |
3136 | (locally defined) for different variables (+ remove the variable-specific |
3137 | file name in CTRL_GENARR.h). For now, only implemented for GENARR2/3D_CONTROL |
3138 | (to be extended to other local file names in ctrl.h). |
3139 | o pkg/flt: |
3140 | - add a FLT_Iter0 option (similar to PTRACERS_Iter0). |
3141 | o pkg/mdsio: |
3142 | - fix missing STOP in mdsio_readvec_loc.F (case ioUnit=0) when file is missing |
3143 | o tools/genmake2: |
3144 | - add similar dependences for target EXE_AD & EXE_FTL as we have for EXECUTABLE |
3145 | (added by Alistair in version 1.51 for building without make depend); |
3146 | - remove Header files list (H_SRC_FILES) from the dependence of targets |
3147 | ad_input_code.f & ftl_input_code.f (not clear why it was added in the first |
3148 | place in version 1.23): this save going through staf when unrelated header |
3149 | file has been modified. |
3150 | Note: for an intermediate target (e.g., ad_input_code.f or adtaf) without |
3151 | "make depend" step, still need to do "make links" before "make adtaf". |
3152 | o eesupp/src (+ few pkg src files) & genmake2: |
3153 | - finish to remove ALWAYS_USE_MPI in source code that TAF does not see; |
3154 | - no longer set ALWAYS_USE_MPI in Makefile (was done by genmake2). |
3155 | - improve genmake2 checking for ALLOW_${PKG} in CPP_OPTIONS.h files (distinguish |
3156 | upper/lower case ; account for space between "#" and undef/define) |
3157 | o pkg/flt (with exch2): |
3158 | - cleaning: fix so that it compiles; move remaining MPI calls out of flt_exch2.F; |
3159 | - simplify threads synchronisation; fix (many issues) multi-threaded with MPI. |
3160 | |
3161 | checkpoint63s (2012/09/05) |
3162 | o pkg/ecco: |
3163 | - remove #ifdef ALLOW_SMOOTH_CORREL3D brackets. |
3164 | - add more relevant #ifdef ALLOW_SMOOTH ones. |
3165 | - sort out useAtmWind, useSMOOTH, ctrlSmoothCorrel2D. |
3166 | o pkg/ctrl: |
3167 | - CTRL_OPTIONS.h : document CPPs related to smoothing; ALLOW_SMOOTH_CORREL2D/3D, |
3168 | ALLOW_CTRL_SMOOTH, ALLOW_SMOOTH_CTRL2D, ALLOW_SMOOTH_CTRL3D. |
3169 | - ctrl.h : document run time params doInitXX, doMainPack, doMainUnpack, doPackDiag, |
3170 | doSinglePrecTapelev (audodiff param!), ctrlSmoothCorrel2D (new) and |
3171 | ctrlSmoothCorrel3D (new). |
3172 | The added ctrlSmoothCorrel2D/3D replace the old ALLOW_SMOOTH_CORREL2D/3D CPP. |
3173 | - ctrl_readparms.F : initialise ctrlSmoothCorrel2D/3D and read from namelist. |
3174 | - ctrl_init.F ctrl_pack.F ctrl_unpack.F : switch off ustress/vstress |
3175 | controls when useAtmWind, and vice versa. |
3176 | - ctrl_map_ini_ecco.F : UVEL0, VVEL0, edtaux, edtauy cannot be smoothed as tracers. |
3177 | - ctrl_get_gen.F : replace #ifdef ALLOW_SMOOTH_CORREL2D with |
3178 | #ifdef ALLOW_SMOOTH, IF ctrlSmoothCorrel2D, IF useSMOOTH. |
3179 | - ctrl_map_ini_gen.F : replace #ifdef ALLOW_SMOOTH_CORREL3D with |
3180 | #ifdef ALLOW_SMOOTH, IF ctrlSmoothCorrel3D, IF useSMOOTH. |
3181 | - ctrl_set_pack_xy[z].F, ctrl_set_unpack_xy[z].F: |
3182 | replace ALLOW_SMOOTH_CORREL2D/3D brackets with ctrlSmoothCorrel2D/3D. |
3183 | o pkg/smooth: |
3184 | - remove un-necessary includes. |
3185 | - remove ALLOW_SMOOTH*D and ALLOW_SMOOTH_CORREL*D brakets. |
3186 | Those CPP options were never defined, and not necessary. |
3187 | o model/src: |
3188 | - fix CPP brackets in ini_mixing.F (GM_background_K belongs to gmredi). |
3189 | - standard treatment of useSMOOTH. |
3190 | o pkg/autodiff: |
3191 | - add LOGICAL useGGL90inAdMode, useGGL90inFwdMode, useSALT_PLUMEinAdMode, |
3192 | useSALT_PLUMEInFwdMode allowing to switch off ggl90 and salt_plume adjoint. |
3193 | o pkg/exch2: |
3194 | - add "if usingMPI" where it was missing (in exch2_rx?_cube*.template) |
3195 | + start to remove ALWAYS_USE_MPI in source code that TAF does not see. |
3196 | - make new S/R W2_MAP_PROCS out of w2_eeboot.F to setup exch2 CommonFlag |
3197 | and tiles to process mapping. |
3198 | - re-arrange 3 header files (W2_EXCH2_PARAMS.h, _BUFFER.h & _TOPOLOGY.h) |
3199 | moving /EXCH2_FILLVAL_RX/ & /W2_EXCH2_COMMFLAG/ to W2_EXCH2_TOPOLOGY.h; |
3200 | rename "exch2_tProc" to "W2_tileProc" and move seting of e2FillValue_RX |
3201 | from w2_eeboot.F to w2_readparms.F. |
3202 | o eesupp/src: |
3203 | - set exchNeedsMemsync & exchUsesBarrier according to "usingMPI" (instead of |
3204 | ALWAYS_USE_MPI) + moved from ini_communication_patterns.F to eeset_parms.F; |
3205 | also move setting of exchCollectStatistics from exch_init.F to eeset_parms.F |
3206 | - in eedie.F and all_proc_die.F, always call MPI_FINALIZE when ALLOW_USE_MPI |
3207 | is defined (remove condition on usingMPI) to match cases where MPI_INIT |
3208 | has been called. |
3209 | - fix bug I put in previous modif of exch_sm_3d_rx.template (not much used); |
3210 | - change default (non-MPI) value of myPid (from 1 to 0) to match MPI settings |
3211 | (so that on 1 proc, get same myPid independently of usingMPI) |
3212 | - add a stop if multi-procs but usingMPI=F ; stop also if usingMPI=T and |
3213 | useCubedSphereExchange with EXCH-1 (safer). |
3214 | - add "if usingMPI" where it was missing (+ start to remove ALWAYS_USE_MPI). |
3215 | o pkg/ggl90: |
3216 | - fix bug in filling corner mask array "mskCor" (FILL_CS_CORNER_TR_RL call) |
3217 | used in ALLOW_GGL90_SMOOTH code. |
3218 | o pkg/flt: |
3219 | - fix typo in FLT_WITHOUT_Y_PERIODICITY (the effect was to ignore stopping |
3220 | floats at the Southern end of the domain). |
3221 | o eesupp/inc: |
3222 | - add a list of CPP-options which can be set by Makefile (DEF_IN_MAKEFILE.h); |
3223 | but not used (and not to be used) anywhere, just for documentation. |
3224 | o pkg/autodiff, exf, ptracers & seaice (AD & TL output): |
3225 | - comment out the very nasty "writeBinaryPrec = writeStatePrec" line, since: |
3226 | a) can damage previously written records in any other multi-record files. |
3227 | b) if needed, can easily do it cleanly, by calling S/R WRITE_REC_3D_RL/S. |
3228 | o tools/genmake2: |
3229 | - define variable MAKE within Makefile and use it in place of 'make'; |
3230 | - update AD_CONFIG.h (if needed) before building any of the executable |
3231 | (forward, adjoint or tangent-lin); this involves a 2nd invocation of make; |
3232 | and add the usual #ifndef/#define AD_CONFIG_H in AD_CONFIG.h; |
3233 | - always print usual warning comment 'this file is automatically generated' |
3234 | from script convert_cpp_cmd2defines (+ remove this warning from genmake2). |
3235 | o pkg/cheapaml: |
3236 | - updated to correspond to the code used in accepted paper (Nico Wienders). |
3237 | o pkg/exf: |
3238 | added run time switch useAtmWind to replace ALLOW_ATM_WIND cpp switch. |
3239 | ALLOW_ATM_WIND now just sets the useAtmWind default (see exf_readparms.F) |
3240 | and force defines ALLOW_BULKFORMULAE (EXF_OPTIONS.h). |
3241 | o pkg/exf, autodiff, ctrl, ecco and seaice: |
3242 | remove ALLOW_ATM_WIND brackets, or replace them with useAtmWind ones. |
3243 | o pkg/ctrl, ecco: |
3244 | allow to compile both ALLOW_U/VSTRESS_CONTROL and ALLOW_U/VWIND_CONTROL. |
3245 | Depending on useAtmWind, one is inactive, and the other is active (see |
3246 | exf_getffields.F/exf_getsurfacefluxes.F). |
3247 | o tools/genmake2: |
3248 | - improve error msg when failing in 2nd test of check_for_broken_Ff |
3249 | - fix option '-makefile' short-name (-mf according to genmake2 -help) |
3250 | - source local config file "genmake_local" just after processing the genmake2 |
3251 | command arguments (previously done before processing arg). |
3252 | o pkg/grdchk: |
3253 | - add a call to TURNOFF_MODEL_IO for Tangent-Linear run (in this case, call |
3254 | to this routine from cost_final has been dropped in g_cost_final) |
3255 | - improve printed information (more explicit msg, no longer using "print *," |
3256 | fix fcpertminus printed value). |
3257 | o model/src: |
3258 | - move call to COST_INIT_VARIA out of packages_init_variables.F directly |
3259 | into initialise_varia.F (just after calling PACKAGES_INIT_VARIABLES): |
3260 | this prevents getting cost-funct reset in adinitialise_varia recomputations. |
3261 | o pkg/dic: |
3262 | - move initialisation of "freefe" array from from dic_biotic_forcing.F to |
3263 | fe_chem.F: this prevents TAF from dropping this initialisation in TLM code. |
3264 | o pkg/grdchk: |
3265 | - grdchk_main.F : added CALL GLOBAL_SUM_INT( ierr , myThid ) |
3266 | - grdchk_getadxx.F etc. : omit I/O if ierr.EQ.0 |
3267 | o pkg/autodiff/ctrl/grdchk : |
3268 | - attempt to sort out what works and what does not, |
3269 | with regard to I/O, and to warn/stop accordingly. |
3270 | o pkg/grdchk: |
3271 | - attempt to fix grdchk in the case of useSingleCpuIO. |
3272 | - "if ( myProcId .EQ. grdchkwhichproc .AND. ierr .EQ. 0 )" |
3273 | statements were moved from grdchk_main.F and into |
3274 | grdchk_getadxx.F grdchk_getxx.F grdchk_setxx.F. |
3275 | - a global sum is applied to record numbers icvrec/layer |
3276 | out of grdchk_loc so that they be passed to I/O routines. |
3277 | o pkg/smooth: |
3278 | - fix recomputation that appeared with nlfs : use smooth_recip_hFacC, |
3279 | smooth_hFacW, smooth_hFacS (copied at init_fixed) in 3d case. |
3280 | o verification/testreport: |
3281 | - add option '-tlm' for Tangent-Linear test (-adm,-oad,-tlm are all exclusive); |
3282 | - can also use compressed (gzip) reference output file; |
3283 | - change format (in pkg/grdchk) of TLM output (+ add forward gradient) |
3284 | to be easier to collect by testreport. |
3285 | - update existing TLM output (half out-of-date by more than 3 yrs). |
3286 | - report NETCDF & LAPACK settings (from genmake2) in output dir. |
3287 | - report run-time in each individual summary (previously only for AD test); |
3288 | for TLM test, add also TAF version. |
3289 | - add daily TLM test on (old) aces cluster + weekly test on baudelaire. |
3290 | |
3291 | checkpoint63r (2012/08/15) |
3292 | o tools/genmake2: |
3293 | - fix Makefile for target ftlall (+ update files to clean after make ftlall) |
3294 | o pkg/ecco/ecco_cost_final.F : |
3295 | - fix fc print statements (to stdout and costfunction0000) so |
3296 | that the printed value is always after the global sum. |
3297 | o pkg/seaice/seaice_dynsolver.F : |
3298 | - fix ice strength assymptote at SEAICE_area_max<1 |
3299 | (no change for the standard case of SEAICE_area_max=1) |
3300 | o some cleaning: |
3301 | - pkg source files: ensure that all *.F files from each pkg included the |
3302 | corresponding ${PKG}_OPTIONS.h file (except stand-alone src file which |
3303 | only includes CPP_EEOPTIONS.h); fix S/R CTRL_SMOOTH ; update AD experiment |
3304 | code_ad/*.F src files; add new option-file in pkg/admtlm + corresponding |
3305 | includes; |
3306 | - model/src: add PACKAGES_CONFIG.h wherever ALLOW_AUTODIFF[_TAMC] is used. |
3307 | - ALLOW_DIFFKR_CONTROL: add a stop in S/R CTRL_CHECK in case ALLOW_3D_DIFFKR |
3308 | is undef; also define /DYNVARS_DIFFKR/ common block in DYNVARS.h when |
3309 | ALLOW_DIFFKR_CONTROL is defined, to allow to compile and reach this stop. |
3310 | - update option-file CPP_OPTIONS.h of all AD experiments: |
3311 | * no longer include PACKAGES_CONFIG.h ; |
3312 | * includes ECCO_CPPOPTIONS.h if PACKAGES_CONFIG.h has been included ; |
3313 | * def/undef ALLOW_3D_DIFFKR independently of ALLOW_DIFFKR_CONTROL (before |
3314 | including ECCO_CPPOPTIONS.h). |
3315 | o pkg/cost, pkg/ctrl, pkg/ecco option-file: |
3316 | - clean-up and split content of old pkg/ecco/ECCO_CPPOPTIONS.h file into |
3317 | separated pkg option-file (done according to old doc from ECCO_CPPOPTIONS.h, |
3318 | not necessary accurate). |
3319 | - add a template for option-file ECCO_CPPOPTIONS.h, mostly empty, in |
3320 | pkg/autodiff, i.e., the 1rst pkg to compile for adjoint built, with lines to |
3321 | deliberately break compilation (a remainder that it needs to be customized) |
3322 | - in pkg/ecco, includes ECCO_OPTIONS.h instead of COST_OPTIONS.h |
3323 | - rename COST_CPPOPTIONS.h to COST_OPTIONS.h |
3324 | - rename CTRL_CPPOPTIONS.h to CTRL_OPTIONS.h |
3325 | o tools/genamke2: |
3326 | - check for lapack. |
3327 | o pkg/cost and pkg/ecco : attempt to sort out some of the limiting intricacies. |
3328 | - pkg/cost.cost_final.F : allow for use of pkg/ecco and pkg/cost cost functions |
3329 | jointly. The exclusive ifdefs were removed, to add costs terms (when defined) |
3330 | from both packages. |
3331 | - the fc global sum in pkg/ecco/ecco_cost_final.F was removed accordingly. |
3332 | - for objf_atl we use either the pkg/ecco or the pkg/cost term depending on CPPs. |
3333 | - pkg/ecco and model/src : add CPP brackets around pkg/cost and pkg/ctrl includes |
3334 | of "CTRL_SIZE.h" "ctrl.h" "ctrl_dummy.h" "optim.h" / "cost.h" accordingly. |
3335 | o pkg/cost : add comments to explain special and/or untested setups. |
3336 | o pkg/exf: |
3337 | - use EXF_OPTIONS.h to set pkg/exf options except if done in ECCO_CPPOPTIONS.h |
3338 | (previously, ALLOW_AUTODIFF_TAMC was controling this switch). |
3339 | o verification/*/code_ad: |
3340 | mimimal cleaning of AD experiments ECCO_CPPOPTIONS.h option-file: |
3341 | - reccord when this file is included (define ECCO_CPPOPTIONS_H) |
3342 | - remove the most obvious obsolete features (e.g., #define ALLOW_COST not |
3343 | allowed since Oct 2003 in any option-file except in PACKAGES_CONFIG.h) |
3344 | o pkg/seaice : |
3345 | - added possibility to change ice strength/PRESS0 relationship to |
3346 | HEFF, according to the following run time parameters |
3347 | SEAICEpresPow0 :: HEFF exponent for ice strength below SEAICEpresH0 (integer, >0) |
3348 | SEAICEpresPow1 :: HEFF exponent for ice strength above SEAICEpresH0 (integer, >0) |
3349 | SEAICEpresH0 :: HEFF threshold for ice strength (m) |
3350 | o pkg/ggl90 : |
3351 | - added run time flag mxlSurfFlag to include the code that ensure |
3352 | mixing between first and second level (previously included as a comment) |
3353 | o verification/1D_ocean_ice_column/input_ad/data.autodiff : |
3354 | - add test of newly added dumpAdByRec=T option where |
3355 | we write all records to one file per variable. |
3356 | o verification/global_ocean.cs32x15/code_ad/CPP_OPTIONS.h : |
3357 | - switch to #define ALLOW_BALANCE_RELAX and ALLOW_BALANCE_FLUXES |
3358 | to check that this code is ok with taf and compiles in adjoint. |
3359 | o pkg/autodiff : |
3360 | - added run time param dumpAdByRec : ad dump format switch. |
3361 | If true then write all records to one file per variable. |
3362 | Else write one file per record (remains the default). |
3363 | - revise seaice_ad_dump.F and exf_adjoint_snapshots_ad.F accordingly. |
3364 | o pkg/seaice: |
3365 | - Added SEAICEuseTILT run time switch : if set to |
3366 | false then omit the tilt term in seaice dynamics. |
3367 | - Fix free drift calculation. |
3368 | o pkg/shelfice: |
3369 | When initializing SHELFICEDragQuadratic, set default to be |
3370 | consistent with shiCdrag in case SHELFICEuseGammaFrict is used, |
3371 | but retain option to set it independently |
3372 | (inconsistenty spotted by Veronique Dansereau) |
3373 | o eesupp/inc: |
3374 | - in EEPARAMS.h, add real-type constant for some frequently used simple number |
3375 | (0,1,2,1/2), with name explicitly referring to RS/RL type. |
3376 | o model/src: |
3377 | - move balancing of relaxation terms to new S/R balance_relax.F. |
3378 | o pkg/autodiff: |
3379 | re-write active I/O high-level (control) S/R: |
3380 | - rename S/R ACTIVE_READ/WRITE_RL to ACTIVE_READ/WRITE_3D_RL |
3381 | - add 1 more argument (useCurrentDir) to replace the "_LOC" 2nd set of S/R. |
3382 | - use standard pkg/mdsio I/O routines (MDS_READ/WRITE_SEC_XZ/YZ and |
3383 | MDS_READ/WRITE_FIELD); change loops to multi-threads. |
3384 | - update and merge active_file_control_slice.flow into active_file_control.flow |
3385 | - update the calls in lower level S/R (active_file.F, active_file_g.F and |
3386 | active_file_ad.F) keeping the argument list and function unchanged. |
3387 | - also update lower-level "_LOC" version (call same S/R with "useCurrentDir |
3388 | =.TRUE.") and remove high-level (control) _loc version (not called anymore). |
3389 | - new low-level active I/O routines, one for each type (RL/RS), for active var |
3390 | of various (XY,XZ,YZ) shape and level number (arguments: arrShape, myNr); |
3391 | fix ctrl_init_wet.F & ecco_cost_weights.F by calling the new S/R with the |
3392 | right type. |
3393 | o autodiff and RS=real*4: |
3394 | - call the right type (_RS instead of _RL) of S/R in few output S/R (pkg/exf |
3395 | ad-monitor and snapshots); disable arrType='RS' in mdsio_gl*.F ; |
3396 | - change argument type of 3-D mask argument to _RS to match type in the call |
3397 | (in seaice_cost*.F, ctrl_*_gen.F and *ctrl_bound.F); to be continued. |
3398 | o pkg/thsice: |
3399 | - re-anable balanceEmPmR when useSEAICE=T with useThSIce=T. |
3400 | - option to correct ocean fresh-water flux for imbalance of Atmos+Land |
3401 | fresh-water flux: uniform correction or proportional to local precip. |
3402 | o pkg/ctrl: |
3403 | - new header file CTRL_SIZE.h for parameters maxCtrlArr2D, maxCtrlArr3D |
3404 | - redefine CPP option ALLOW_BOTTOMDRAG_CONTROL to |
3405 | ALLOW_BOTTOMDRAG_CONTROL_NONGENERIC |
3406 | - verification/hs94.1x64x5/ tests ALLOW_GENARR{2D,3D}_CONTROL |
3407 | |
3408 | checkpoint63q (2012/07/30) |
3409 | o pkg/autodiff: |
3410 | note about monitor and snap-shot of ad-variables: |
3411 | a) need to apply ADEXCH before monitor or output of ad-vars to include |
3412 | overlap contributions (was done for adjDump but missing for monitor). |
3413 | b) since ADEXCH implies adding overlap values to interior array, machine |
3414 | truncation error is expected when adding an ADEXCH call in the middle of |
3415 | the time-stepping (although mathematically identical). |
3416 | modifs: |
3417 | - fix some incorrect type (RL/RS, UV/scalar) in ADEXCH calls and ad-vars |
3418 | declaration (adEddyPsiX,adEddyPsiY in adcommon.h). |
3419 | - add new run-time params (dumpAdVarExch & mon_AdVarExch) to select how to |
3420 | apply ADEXCH before monitor or snap-shot of ad-variables: |
3421 | =0 : no ADEXCH ; =1 : do ADEXCH ; =2 : apply ADEXCH on a local copy. |
3422 | - implement new method (copy+adexch) for snap-shot and monitor of main model |
3423 | ad-vars (initially not used by default -> output unchanged). |
3424 | - change default (set to 2) to use new method and update few output_adm.txt |
3425 | with accurate ad-monitor (global_ocean.90x40x15, tutorial_global_oce_biogeo |
3426 | and both tutorial_tracer_adjsens tests). |
3427 | - switch 2 global_ocean.cs32x15 AD-tests to AB-2 (seaice_dynmix & thsice) |
3428 | and turn off momDissip_In_AB in the 2 other (needed for stable AB-3). |
3429 | o pkg/ctrl: |
3430 | enable the use of a variable number (maxCtrlArr2D, maxCtrlArr3D) of |
3431 | generic control variables via |
3432 | #define ALLOW_GENARR2D_CONTROL and/or #define ALLOW_GENARR3D_CONTROL |
3433 | Only required customization should be S/R ctrl_map_ini_genarr.F |
3434 | (routine in repository contains example) |
3435 | o pkg/exf: |
3436 | - fix and refine checking of surface-relaxation setting when using EXF |
3437 | o verification (adjoint exp): |
3438 | - reduce length of simulation by half for experiment global_ocean.cs32x15 |
3439 | (std, seaice & seaice_dynmix) and exp tutorial_dic_adjoffline; update output. |
3440 | o pkg/mom_common (mom_u/v_bottomdrag), pkg/shelfice (shelfice_u/v_drag) |
3441 | - replace if statements KE.ne.0 with KE.gt.0 to avoid sqrt of negative numbers |
3442 | of KE that can occur with aggressive optimization |
3443 | + put quadratic bottom drag calculation in separated loops (only done if |
3444 | using bottomDragQuadratic) |
3445 | o model/src: CG2D_NSA |
3446 | - clean-up: stop if cg2dNormaliseRHS=T and AUTODIFF |
3447 | and replace GLOBAL_SUM calls with GLOBAL_SUM_TILE. |
3448 | - in test-exp that uses CG2D_NSA (bottom_ctrl & tutorial_tracer_adjsens), |
3449 | change cg2d residual target to be expressed in Wunits (=> do not normalise |
3450 | RHS ; this fix global_max Pb with TAF); update output. |
3451 | o verification/tutorial_tracer_adjsens: |
3452 | improve parameter consistency (and get rid of warnings): |
3453 | - use deltaTFreeSurf=deltaTtracer (better with NonLin FreeSurf); |
3454 | - switch Temp Adv Scheme from 81 to 80 (no limiter since theta < 0 is physical) |
3455 | - use staggerTimeStep (for stability) in som81; use default rotation period. |
3456 | o pkg/exch2: |
3457 | - with empty facet: fix compact-format (W2_mapIO=1) definition (was previously |
3458 | reset to 0 = 1 long line in X) |
3459 | o pkg/mdsio: |
3460 | - fix reading of dimensions from meta file for large-size domain |
3461 | o model/src: |
3462 | - fix saltIsActiveTr setting for IdealGas eosType (eosType is 6 character long); |
3463 | - to refine CS-grid check, add logical flag "hasWetCSCorners": true if using |
3464 | Cubed-Sphere Exch with CS-corners inside the domain; |
3465 | make new S/R INI_GLOBAL_DOMAIN from code in ini_linear_phisurf.F to calculate |
3466 | globalArea and to set hasWetCSCorners. |
3467 | - add warning if usingCurvilinearGrid and momAdvection in flux-form (missing |
3468 | metric terms); stop if hasWetCSCorners=T and momAdvection in flux-form. |
3469 | - re-activate the stop if useCDscheme and hasWetCSCorners=T (previously if |
3470 | useCDscheme and useCubedSphereExchange). |
3471 | o pkg/seaice/seaice_growth.F : |
3472 | - compute the SEAICE_DISABLE_HEATCONSFIX term accordingly |
3473 | for the (.NOT.useRealFreshWaterFlux).OR.(nonlinFreeSurf.EQ.0) |
3474 | when the previous code was not correct. |
3475 | - in all cases diagnoze the boundary condition mismatch to SIaaflux |
3476 | - in the case of useRealFreshWaterFlux.AND.(nonlinFreeSurf.GT.0) add |
3477 | that term to QNET (essentially to set the melt/freeze water to 0degC). |
3478 | when SEAICEheatConsFix is true, so that the ocean+ice budget heat is closed. |
3479 | o verification/global_ocean.cs32x15/input.seaice : |
3480 | - add SEAICEheatConsFix in data.seaice, ensuring closed ocean+ice heat budget. |
3481 | - add diagnostics (commented out) for budget test using my matlab codes (gcmfaces). |
3482 | - update results (output.seaice.txt) accordingly. |
3483 | o verification/lab_sea/input/data.seaice : |
3484 | - remove SEAICEheatConsFix, which is now be tested |
3485 | in global_ocean.cs32x15. The presently coded fix |
3486 | is only consistent with real fresh water + nlfs. |
3487 | - update results (output.txt) accordingly. |
3488 | o pkg/salt_plume: added diagnotic for salt tendency (oceSPtnd). |
3489 | o AD_CONFIG.h file: |
3490 | - in genmake2: remove "#undef ALLOW_ECCO_OPTIMIZATION" from AD_CONFIG.h; |
3491 | - remove #include "AD_CONFIG.h" from all included OPTIONS files and |
3492 | add it explicitly in each fortran src file where it is needed. |
3493 | motivation: header file AD_CONFIG.h is generated/modified after "make depend" |
3494 | thus introducing potentially wrong dependency; therefore, better to include |
3495 | it only where it's really needed, and after any other included OPTIONS file |
3496 | (less tempting to bring conditional includes according to ALLOW_ADJOINT_RUN |
3497 | or ALLOW_TANGENTLINEAR_RUN). |
3498 | |
3499 | checkpoint63p (2012/07/06) |
3500 | o pkg/autodiff: |
3501 | - rename S/R INI_AUTODIFF to AUTODIFF_INIT_VARIA ; |
3502 | - create new header file "AUTODIFF_PARAMS.h" for pkg/autodiff parameters |
3503 | which are now read from new parameter file "data.autodiff" (inAdExact |
3504 | previously in "data", use{KPP/GMRedi/SEAICE}inAdMode previously in data.pkg) |
3505 | - add file "data.autodiff" in all verification/*/input_ad/ directories. |
3506 | - add run-time parameter to turn On/Off SEAICEuseFREEDRIFT in adjoint/forward |
3507 | mode (used in global_ocean.cs32x15.seaice_dynmix test exp.) |
3508 | o verification/tutorial_tracer_adjsens/ |
3509 | - add extra sub-verification which uses "SOM" advection scheme |
3510 | (2nd Order-Moment Advection Scheme, Prather Limiter) with |
3511 | #define GAD_ALLOW_TS_SOM_ADV in GAD_OPTIONS.h |
3512 | and in data: |
3513 | multiDimAdvection=.TRUE., |
3514 | tempAdvScheme=81, |
3515 | saltAdvScheme=81, |
3516 | o model/src: |
3517 | - introduce ALLOW_BALANCE_RELAX which allow the removal |
3518 | of the global mean of relaxation terms by setting |
3519 | balanceThetaClimRelax and balanceSaltClimRelax |
3520 | - disable balanceEmPmR and balanceQnet in the case when useSeaice. |
3521 | This case is now treated appropriately in seaice_growth.F |
3522 | o pkg/seaice: |
3523 | - do balanceEmPmR and balanceQnet based on the net fluxes |
3524 | (SItflux) that enter the ocean+ice system rather than QNET |
3525 | and EMPMR. Works best in real fresh water. |
3526 | - SIatmFW, SIatmQnet, and SItflux computations had to be moved |
3527 | out of the diagnotics bloc, and stored in global arrays. |
3528 | |
3529 | checkpoint63o (2012/06/29) |
3530 | o vertical mixing schemes: |
3531 | - remove unused S/R CALC_BUOYANCY (left from branch-atmos merging) |
3532 | - replace computation of density (in Function STATE1, opps_calc.F) by a call |
3533 | to S/R FIND_RHO_SCALAR |
3534 | - pass sigmaR to S/R PP81_CALC, MY82_CALC (but not yet used) and to GGL90_CALC |
3535 | and use it for N^2 calculation in ggl90_calc.F (save 2 density computations); |
3536 | affects output (vermix.ggl90) at truncation level. |
3537 | o testreport: |
3538 | - change adjustment of SIZE.h for mpi+mth testing: preserve enough tiles |
3539 | (nSx,nSy) for the number of threads (from eedata.mth) |
3540 | o model/src: |
3541 | - remove 2nd set of calls at the top of initialise_varia.F (Adjoint part) |
3542 | related to Non_Lin Free-Surf or Bottom-Control (but not longer necessary). |
3543 | o verification/tutorial_tracer_adjsens/ |
3544 | - compile with ALLOW_CG2D_NSA |
3545 | - run with nonlinFreeSurf=3 |
3546 | - update reference output_adm.txt |
3547 | o tools/genmake2: |
3548 | - add "-DHAVE_NETCDF" to the DEFINES list when NetCDF is available ; |
3549 | refine usePROFILES switching off (only when NetCDF is not available). |
3550 | o verification (atmospheric set-up): |
3551 | - change eosType='IDEALGAS' to eosType='IDEALG' to match variable declaration |
3552 | o pkg/profiles : refine profiles and files handling. |
3553 | o model/src and pkg/ecco : introduce run-time switch usePROFILES. |
3554 | o model/src/the_main_loop.F, forward_step.F and pkg/exf/EXF_OPTIONS.h : |
3555 | - changes to use model/src/the_main_loop.F rather than the ecco version |
3556 | in ecco type adjoint runs. |
3557 | o model/src: |
3558 | - move computation of recip of grid distance & area from INI_MASKS_ETC to INI_GRID |
3559 | - move setting of h0Fac[C,W,S] from INI_LINEAR_PHISURF to INI_MASKS_ETC |
3560 | - update_masks_etc.F: rename SMOOTH*_R4,R8 function to the corresponding type (RS,RL) |
3561 | o model/src: |
3562 | - fix S/R UPDATE_CG2D for ALLOW_DEPTH_CONTROL case (was empty before); |
3563 | update output of test experiment bottom_ctrl_5x5. |
3564 | o pkg/generic_advdiff: |
3565 | - implement vertical bi-harmonic diffusion (for now, only for T & S and |
3566 | only explicitly). |
3567 | o verification/bottom_ctrl_5x5/ |
3568 | update reference output (results changed quite some time ago, |
3569 | not sure when; but new reference results look ok in terms of grdchk) |
3570 | o verification/1D_ocean_ice_column/ |
3571 | For verification purposes, the exact adjoint rather than an approx. |
3572 | should be used (e.g., to comare against F.D. or TLM). |
3573 | removed autodiff_inadmode*_ad.F routines in code_ad/ |
3574 | Update results/ accordingly. |
3575 | o pkg/cal: |
3576 | - change cal_getdate.F so that output date is function of input time only |
3577 | (less ambiguous, not mixed up with input iteration number). |
3578 | - fix calendarDumps for non-zero phase-lag (S/R CAL_TIME2DUMP). |
3579 | o pkg/diagnostics: |
3580 | - implement calendarDumps also for stats-diags |
3581 | - implement calendarDumps also for snap-shot output (negative freq) |
3582 | - for now, ignores calendarDumps if non-zero phase-lag. |
3583 | |
3584 | checkpoint63n (2012/06/04) |
3585 | o model/src: |
3586 | - recompute rSurfW & S to ensure consistent column thickness (needed for rStar) |
3587 | between Sum_k(hFac*drF) and rSurf-rLow, for now only when using pkg/shelfice; |
3588 | - use h0FacC, W & S to compute hFac_surfC, W & S in calc_surf_dr.F (more |
3589 | similar to calc_r_star.F); update results of experiment internal_wave and |
3590 | tutorial_global_oce_in_p (affected @ truncation level). |
3591 | o pkg/shelfice: |
3592 | - add parameterisation of advective-diffusive flux into the ice shelf |
3593 | according to Holland and Jenkins (1999), eq.22-33, as suggested by Jan De Ryd |
3594 | - simply eps3/3a computation |
3595 | o eesupp: |
3596 | - add new CPP option (DISCONNECTED_TILES) to disconnect tiles (no exchange |
3597 | between tiles, just fill-in edges assuming locally periodic subdomain) and |
3598 | add corresponding exchange subroutines (EXCH0); |
3599 | - new CG-solver version (_EX0) for disconnected-tiles special case. |
3600 | o model/src (CG-solvers): |
3601 | - modify Single-Reduction version (CG2D_SR) in case cg2dMaxIters is reached |
3602 | (similar final residual output and max-Iter number as with standard version); |
3603 | - allows to store and use lowest-residual solution (standard & _SR versions); |
3604 | - cleaning up (remove old, commented out code, LETS_MAKE_JAM ...). |
3605 | - by default, also compile CG2D_SR version (define ALLOW_SRCG in CPP_OPTIONS.h) |
3606 | o eesup/src: |
3607 | - global_vec_sum.F cleaning: add a BARRIER ; update comments ; remove ndef |
3608 | ALWAYS_USE_MPI (no longer needed after fixing usingMPI settings - March 2012) |
3609 | o pkg/salt_plume added to lab_sea/input_ad.noseaicedyn |
3610 | |
3611 | checkpoint63m (2012/04/27) |
3612 | o pkg/shelfice: |
3613 | - account for partical cells in surface level below ice-shelf for hydrostatic |
3614 | pressure calculion (set uniformFreeSurfLev to F); update isomip experiments. |
3615 | o ad test experiments: |
3616 | - update and rename to "ad_optfile.local" local AD-optfile specific to a |
3617 | particular adjoint verification experiment (in verification/*/code_ad/) |
3618 | o pkg/seaice & pkg/exf: |
3619 | - Part two of ECCO-CLIVAR code merges. |
3620 | Completes merge of seaice area relax. code. |
3621 | Requires unified CPP option EXF_ALLOW_SEAICE_RELAX |
3622 | to be set in EXF_OPTIONS.h since this pkg controls its I/O |
3623 | (and avoids second CPP option in SEAICE_OPTIONS.h) |
3624 | - change default value of costIceStart & costIceEnd to a valid date. |
3625 | - add snowPrecip to HSNOW in seaice_growth |
3626 | o pkg/ptracers: |
3627 | - move ptracers summary and setup check into separated S/R ; add a check for |
3628 | valid PTRACERS_Iter0 value (error+stop or just warning). |
3629 | o pkg/cal (+ pkg/ecco): |
3630 | - avoid calling a S/R with 2 times the same arg (FWD: unless both are only used |
3631 | as input; and for AD, unless both are not differentiable (e.g., k index)). |
3632 | o model/src: |
3633 | - define internal flag "uniformFreeSurfLev" (=T when free-surface level-index |
3634 | is everywhere k=1) to speed-up some calculations (by pass kSurf reference); |
3635 | temporary set to usingZCoords value (to be changed to F when using shelfice). |
3636 | - hydrostatic pressure: implement partial cell near the surface also for |
3637 | Z-coordinates (for the case where uniformFreeSurfLev=F); replace test on |
3638 | usingZCoords with test on uniformFreeSurfLev where needed (in NonHyd code). |
3639 | o pkg/ctrl/ctrl_init.F: |
3640 | - add a formal parameter to s/r ctrl_init_rec to print |
3641 | xx_$(ctrl_valiable)_file for easier debugging |
3642 | - move call of cal_* routines into the if-block where they are really |
3643 | needed so that xx_$(ctrl_variable)_period can be 0 or -12 without having |
3644 | to specify a startdate |
3645 | o pkg/seaice: |
3646 | - update comments in SEAICE_OPTIONS.h (+ similar update of lab_sea/code and |
3647 | global_ocean.cs32x15/code versions). |
3648 | - turn on seaice Multi-category (in data.seaice, SEAICE_multDim=7) for |
3649 | verification experiment global_ocean.cs32x15.seaice and update results. |
3650 | o pkg/exf: |
3651 | - new S/R EXF_GETFIELD_START to return starting-time of a forcing field |
3652 | (according to useExfYearlyFields). |
3653 | o pkg/cal: |
3654 | - move calendar setting & summary (previously in cal_readparams.F) into new |
3655 | S/R CAL_INIT_FIXED to be called later in the initialisation process, once |
3656 | length of the simulation is set (after SET_PARMS call); This is an attempt |
3657 | to fix Pb when, e.g.: pkg/longstep, modifies the length of the run. |
3658 | - For safety: keep a record of pkg/cal parameter settings status |
3659 | to allow to STOP if one pkg/cal S/R is called too early. |
3660 | - add a stop in all basic pkg/cal subroutines if called before setting is done. |
3661 | - modify cal_getdate.F: stop when nothing was returned; |
3662 | if called with myIter=-1, simply retrun modelBaseDate (1,2 = startDate_1,_2); |
3663 | this allows to remove "cal.h" from seaice_read_parms.F & init_mnc_vars.F. |
3664 | |
3665 | checkpoint63l (2012/04/04) |
3666 | o pkg/bbl: |
3667 | - fix call to FIND_RHO_2D in bbl_calc_rho.F (case multi-tiles per proc); |
3668 | update global_with_exf output.yearly.txt file. |
3669 | o pkg/cal: |
3670 | - start to clean-up cal_set.F ; fix for the case where baseTime is non-zero. |
3671 | - remove 2 unsused and very short (1 line only) functions ; |
3672 | - remove unsused subroutines from AD-Diff list. |
3673 | o model/src: |
3674 | - start to implement clean wait to stop in initialization S/R (config_check.F, |
3675 | packages_check.F, ini_parms.F and pkg/obcs/obcs_check.F + pkg/mypackage) |
3676 | o folowing PRINT_MESSAGE changes: |
3677 | - remove reminder multiple print to the same file (STDOUT) when multi-threads. |
3678 | o pkg/bbl: |
3679 | - modification so it can work with z* |
3680 | - replace deltaT with dTtracerLev(k) for asynchronous time stepping |
3681 | - global_with_exf/input.yearly verification; changes output.yearly.txt |
3682 | o eesupp/src: |
3683 | - PRINT_MESSAGE: use OpenMP critical instruction (similar to PRINT_ERROR); |
3684 | writing to unit 0 (if unit=errorMessageUnit) extended to the case myThid=1 |
3685 | - CHECK_THREADS: specific code if using OpenMP threading: improve checking of |
3686 | # of threads across processors (e.g., different env OMP_NUM_THREADS setting) |
3687 | - improve special preliminary call to EESET_PARMS (if eedata is read 2 times). |
3688 | - when using MPI, always set usingMPI=T ; set default accordingly and stop |
3689 | if not consistent. |
3690 | - ALL_PROC_DIE: add a BARRIER after MPI_FINALIZE call ; skip this when thread |
3691 | argument is zero (in case called within single-thread section). |
3692 | o pkg/fizhi: |
3693 | clean-up turbulence cold-start switch: decided in fizhi_init_vars.F, stored |
3694 | in common bloc (fizhi_coms.h) and then passed as argument up to S/R TURBIO. |
3695 | o pkg/exch2: |
3696 | - add argument "updateCorners" to S/R exch2_get_uv_bounds (enable to |
3697 | activate EXCH_IGNORE_CORNERS in vector EXCH S/R). |
3698 | - switch 1rst EXCH call to IGNORE_CORNERS (instead of UPDATE_CORNERS) |
3699 | but keep the 2nd with UPDATE_CORNERS: this prevents overwriting good data |
3700 | with bad ones coming from a not-yet-updated halo. |
3701 | This should fix the problem when sNx <> sNy and GCD(sNx,sNy) < 2*Olx. |
3702 | o pkg/frazil: |
3703 | move FrzForcT diag from frazil_diagnostics_state.F to frazil_calc_rhs.F |
3704 | http://mitgcm.org/pipermail/mitgcm-devel/2012-March/005384.html |
3705 | o model/src/config_check.F: add a check for OLx>sNx/OLy>sNy |
3706 | o verification/lab_sea |
3707 | * #undef SEAICE_EXCLUDE_FOR_EXACT_AD_TESTING |
3708 | * #define ALLOW_SST_CONTROL & ALLOW_SST_CONTROL |
3709 | * nTimeSteps 3 -> 4 |
3710 | * changed reference output accordingly |
3711 | o pkg/ctrl: |
3712 | * fix ctrl_get_gen for xx_sst, xx_sss |
3713 | o pkg/fizhi: |
3714 | - fix 2 calls to S/R GRD2MSC (argument igrd) in update_earth_exports.F |
3715 | update results of exp. fizhi-cs-32x32x40 (fail with only 6 digits for cg2d) |
3716 | - by default, use new version of S/R GETPWHERE (#define TRY_NEW_GETPWHERE); |
3717 | fix few out-of-bounds indices in referencing vars (initialise igrd to 1); |
3718 | clean-up fizhi_turb.F (remove unused & uninitialised qdiaglsm array). |
3719 | o pkg/gmredi: |
3720 | - add diagnostic of Redi (main diagnonal) vertical diffusive flux of Temp |
3721 | o pkg/fizhi: |
3722 | - fix few initialisation and multi-tile Pb: aqualev & gridalt now pass the |
3723 | (old)aces open64 tuv test. |
3724 | o pkg/icefront: fix bug and reorder loop in icefront_init_varia.F |
3725 | o pkg/mom_vecinv: |
3726 | - fix 1 loop range in mom_vecinv.F to be like all the other loops which |
3727 | set/update gu,gv/Diss (fix Pb of uninitialised fVerUkp in admom_vecinv |
3728 | with non-lin free-surf). |
3729 | o model/src: move k-loop outside of i/j-loops when (re-)computing R_low |
3730 | in ini/update_masks_etc.F in order to avoid -O3 optimization problems with |
3731 | some compilers (gfortran 4.6.0 on MacOS) |
3732 | o momentum: |
3733 | - separate fVer?(:,:,kUp) & fVer?(:,:,kDown) in argument list of MOM_FLUXFORM |
3734 | & MOM_VECINV subroutines (to help TAF). This fixes Pb of uninitialised |
3735 | fVer?(kUp) in admom_fluxform with non-lin free-surf or bottom control. |
3736 | |
3737 | checkpoint63k (2012/03/17) |
3738 | o model/src: |
3739 | - selectAddFluid (ALLOW_ADDFLUID): add missing term in horizontal momentum |
3740 | flux-form (mom_fluxform.F) and vertical momentum (calc_gw.F) equations. |
3741 | - SOLVE_DIAGONAL: switch default to use adjoinable & vectorized version |
3742 | (#undef SOLVE_DIAGONAL_LOWMEMORY); update output of exp. front_relax.bvp. |
3743 | o model/src: solve_*diagonal.F |
3744 | - replace division with multiplication by inverse (similar to original version) |
3745 | update output of AD exp. global_ocean.90x40x15. |
3746 | - fix pkg/gmredi/gmredi_calc_psi_bvp.F & pkg/ggl90/ggl90_calc.F |
3747 | to enable the use of the vectorized & differentiable solve_tridiagonal.F |
3748 | - test exp. global_ocean.90x40x15/input_ad: switch to advection scheme 20 for |
3749 | vertical advection (to get solve_tridiagonal tested in AD mode). |
3750 | o pkg/seaice: ECCO-CLIVAR merge: |
3751 | 1. seaice AREA relaxation |
3752 | * CPP option: SEAICE_ALLOW_AREA_RELAXATION |
3753 | * runtime flag: SEAICE_tauAreaObsRelax |
3754 | 2. modified global mean cost imbalance code: CPP option |
3755 | ALLOW_SSH_GLOBMEAN_COST_CONTRIBUTION |
3756 | o another iteration on solve_*diagonal.F |
3757 | Make choices independent of AUTODIFF |
3758 | Default will be the adjoinable vectorized version. |
3759 | Alternative choices are: |
3760 | * non-adjoinable original version with low memory footprint: |
3761 | #define SOLVE_DIAGONAL_LOWMEMORY |
3762 | * still adjoinable but does not vectorize (k as inner-most loop): |
3763 | #define SOLVE_DIAGONAL_KINNER (keeping SOLVE_DIAGONAL_LOWMEMORY undef) |
3764 | o testreport |
3765 | - add option to use a home made wrapper around "make" |
3766 | - remove MITGCM_IEEE env. variable (no longer active) |
3767 | o pkg/shelfice |
3768 | - improve computation of friction velocity for velocity dependent |
3769 | exchange coefficients: include velocities into SHELFICEBoundaryLayer |
3770 | block to average velocities vertically |
3771 | - add TAF store directives for SHI_ALLOW_GAMMAFRICT |
3772 | o Modify diagonal solvers, now three versions (upon request): |
3773 | #ifndef SOLVE_DIAGONAL_AUTODIFF |
3774 | 1. default version (dating back a while ago) |
3775 | #else /* def SOLVE_DIAGONAL_AUTODIFF */ |
3776 | # ifdef SOLVE_DIAGONAL_KINNER |
3777 | 2. adjoinable version with k-innermost loop (G. Forget) |
3778 | # else |
3779 | 3. adjoinable vectorized version of 2. |
3780 | # endif |
3781 | #endif /* SOLVE_DIAGONAL_AUTODIFF */ |
3782 | All flags are currently set within routines, but could/should be moved to CPP-options. |
3783 | Array bounds for 1. are as before, for 2.,3. cover the entire domain |
3784 | (could be changed for 1. too). |
3785 | o verification/lab_sea (fwd): |
3786 | - update the 4 fwd lab_sea test experiment: no longer SEAICE_GROWTH_LEGACY, |
3787 | use 7 categories (except hb87), new solve4temp params (except salt_plume), |
3788 | constant salinity (=4) or variable salinity (salt_plume) done through |
3789 | SItracer. |
3790 | o pkg/seaice: |
3791 | - rename parameters: SIsalFrac to SEAICE_saltFrac & SIsal0 to SEAICE_salt0; |
3792 | - remove old parameters ( SEAICE_freeze, SEAICEturbFluxFormula, SEAICE_gamma_t, |
3793 | SEAICE_gamma_t_frz, SEAICE_availHeatTaper & SEAICE_availHeatFracFrz) |
3794 | from SEAICE_PARMS.h ; still need to fix seaice_cost_sst.F (broken when |
3795 | SEAICE_freeze got retired) but already better than previously with |
3796 | SEAICE_freeze=123456.7 deg.C; |
3797 | - move setting of facOpenGrow/Melt from SEAICE_INIT_FIXED to SEAICE_READPARMS |
3798 | (safer multi-threaded setting); always set SEAICEuseEVP; |
3799 | - setting of ocean-ice turb. flux coeff: moved from SEAICE_CHECK to |
3800 | SEAICE_READPARMS & SEAICE_INIT_FIXED (this fixes wrong summary report); |
3801 | stop if multiple specifications for the same coeff; make sure default |
3802 | SEAICE_mcPheePiston is compatible with drF(1) & deltaT. |
3803 | o pkg/obcs: |
3804 | - allow to switch to upwind 1rst order advection scheme for the advective |
3805 | flux computation at the open-boundary; disabled for adjoint built. |
3806 | o pkg/ptracers: |
3807 | - rename PTRACERS_RESTART.h -> PTRACERS_START.h |
3808 | - rename ptracers_fields_blocking_exchanges.F -> ptracers_fields_blocking_exch.F |
3809 | - add parameter to decide when to start a tracer; use internal flag to |
3810 | know which tracer to step-forward; switch this internal flag at the top |
3811 | of forward_step.F (new S/R PTRACERS_SWITCH_ONOFF); for now, not enabled |
3812 | for adjoint built. |
3813 | o pkg/seaice: |
3814 | - add SEAICE_SIZE.h anywhere in the code where SEAICE.h is included ; |
3815 | - move MULTDIM declaration and setting from SEAICE.h to SEAICE_SIZE.h ; |
3816 | - keep experiment offline_exf_seaice truly single category (set MULTDIM=1). |
3817 | o pkg/ecco: |
3818 | - fix writing of output file DiagnosCost_ClimSalt/Theta |
3819 | and DiagnosCost_DriftSalt/Theta (if multi-tiles per proc). |
3820 | o pkg/seaice: |
3821 | - add missing initialisation of COR_ICE array in dynsolver.F |
3822 | - merging SEAICE_MULTICATEGORY define and undef cases. Now the same code is |
3823 | compiled either way, and is tested in all exps (multidim was only tested |
3824 | in lab_sea ad before). |
3825 | - cosmetic change to prepare for future addition of ITD. no change to results. |
3826 | no defaults change. |
3827 | - added run time param SEAICE_multDim (7 for SEAICE_MULTICATEGORY, 1 otherwise). |
3828 | - by lack of adequate verification experiments, I further used custom versions |
3829 | of global_ocean.cs32x15 to test multicat or not, with pickup or not. All |
3830 | should be correct. |
3831 | - avoid recomputations in ad. |
3832 | o array initialisation in adjoint mode: |
3833 | 1) pkg/mom_common/mom_calc_ke.F: |
3834 | add full array initialisation of KE inside mom_calc_ke.F (ALLOW_AUTODIFF_TAMC): |
3835 | The S/R which calls MOM_CALC_KE initialises KE but in some recomputation |
3836 | part this initialisation is gone, resulting in Floating Point Exception |
3837 | (caught by open64 compiler with debug option). |
3838 | 2) model/src/convective_weights.F |
3839 | set output convectCount over the full array range (instead of doing |
3840 | an update): this fix a similar issue when called within recomputation (adjoint) |
3841 | which could by-pass the initialisation (normally done in the caller S/R). |
3842 | o pkg/seaice: |
3843 | - final version of turbulent flux params, as agreed at MIT ice meet: |
3844 | SEAICE_mcPheePiston (default is ~ 0.000875) |
3845 | SEAICE_mcPheeTaper (default is 0.) |
3846 | SEAICE_frazilFrac (defualt is 1.) |
3847 | SEAICE_mcPheeStepFunc (default is false) |
3848 | - changes results at trunction error level |
3849 | - ifdef SEAICE_EXTERNAL_FLUXES, disallow SEAICE_waterAlbedo |
3850 | o added pkg/frazil: |
3851 | - see frazil_description.tex for details |
3852 | - verification experiment is global_with_exf/input.yearly; changes output.yearly.txt |
3853 | o pkg/shelfice/shelfice_thermodynamics.F |
3854 | - fix exponents for velocity dependent exchange coefficients: change |
3855 | from 2/3(=0) to 0.66666666666666667 |
3856 | - move computation of velocity dependent exchange coefficients into |
3857 | separate loop, so that it applies to both thermodynamics |
3858 | - move some divisions by constants out of loops |
3859 | |
3860 | checkpoint63j (2012/02/16) |
3861 | o pkg/seaice: |
3862 | - overhaul of seaice_summary.F after feb 2012 clean-up of seaice_growth.F etc. |
3863 | - SItracer: added run time params, and allow coupling to ocn salinity. |
3864 | o pkg/seaice: remove (almost) all divisions by constants within loops |
3865 | in seaice_growth.F and seaice_solve4temp.F, this changes (only) the cg2d |
3866 | results of global_ocean.cs32x15.seaice from 16 to 11 digits (but only |
3867 | those, caused by 1/QI -> recip_QI) -> update output.seaice.txt, |
3868 | output_adm.seaice_dynmix.txt and also lab_sea: output_adm.evp.txt |
3869 | o pkg/seaice : |
3870 | - simplify McPhee tapering, and allow to use it with SEAICEturbFluxFormula |
3871 | = 1 or 2, using newly added run time parameter SEAICE_availHeatTaper. |
3872 | - fix d_AREAbyATM, d_AREAbyOCN, d_AREAbyICE diags I broke in r1.148. |
3873 | - add permanent SItflux diag that corresponds to TFLUX but includes |
3874 | ice+snow. Hence SItflux-TFLUX should match the ice+snow heat budget. |
3875 | - allow activation/testing of a fix for suspected missing term in |
3876 | ocn-ice heat budget (to be confirmed). To test this, you want to |
3877 | undef SEAICE_DISABLE_HEATCONSFIX, and then set the run time param |
3878 | SEAICEheatConsFix to .TRUE. that also allows the 'SIaaflux' diagnostic. |
3879 | - no change in results, fwd or ad. |
3880 | o global_ocean.cs32x15/results: 3 changes following from the pkg/seaice commit below: |
3881 | - switch to variable freezing point. |
3882 | Results change : cg2d -> 1 digits; ad -> 3-6-6 digits. |
3883 | - bug fix : the sublimation term that was missing is now activated. |
3884 | Results change : cg2d -> 2 digits; ad -> 8-6-6 digits. |
3885 | - bug fix : flooding sign term for SIsal0.NE.0. |
3886 | Result change : cg2d -> 8 digits; ad -> 11-12-9 digits. |
3887 | o pkg/seaice: |
3888 | - unified freezing point treatment : the old SEAICE_VARIABLE_FREEZING_POINT |
3889 | is now the default, and the old default constant freezing point is recovered |
3890 | with SEAICE_tempFrz0 = -1.96, |
3891 | SEAICE_dTempFrz_dS = 0., |
3892 | - retire SEAICE_freeze (= the old way of specifycing the constant freezing point) |
3893 | - remove ALLOW_SEAICE_FLOODING brackets; run time switch is already there. |
3894 | - bug fix (thanks to M. Losch) : the sublimation term that was missing is now |
3895 | activated. To reproduce old results with this bug define SEAICE_DISABLE_SUBLIM. |
3896 | - bug fix (silly me) : flooding sign term (seaice_growth.F r 1.149line 1211) |
3897 | was wrong for SIsal0.NE.0. Changes cs32x15 results (see above item for detail). |
3898 | - bug fix (thanks to O. Jahn) : area loss for melting got messed up in |
3899 | seaice_growth r149 for legacy branch (no results change). |
3900 | - introduce SEAICE_CAP_SUBLIM : caps sublimation heat flux in solve4temp (code |
3901 | from I. Fenty). |
3902 | - results did not change except for global_ocean.cs32x15, mostly due to the |
3903 | switch to variable freezing point (see above item for detail). |
3904 | o pkg/thsice: |
3905 | - fix and simplify interface to salt_plume pkg ; diagnose directly amount of |
3906 | seawater freezing in thsice_calc_thickn (not used). |
3907 | o pkg/seaice: turbulent flux term specification via run time params. |
3908 | - replace CPP switches with run time switches to facilitate testing |
3909 | - retired CPPs : MCPHEE_OCEAN_ICE_HEAT_FLUX, |
3910 | GRADIENT_MIXED_LAYER_TURBULENCE_FACTOR |
3911 | - added runtime parameter : SEAICEturbFluxFormula |
3912 | - move Mcphee constants to SEAICE_PARAMS.h |
3913 | - seaice_readparms.F : read turbulent flux term params (SEAICEturbFluxFormula; |
3914 | SEAICE_availHeatFrac/Frz, or SEAICE_gamma_t/_frz if apply); |
3915 | remove seaice_summary call (moved to seaice_init_fixed) |
3916 | - seaice_init_fixed.F : set SEAICE_availHeatFrac/Frz depending on |
3917 | SEAICEturbFluxFormula, and seaice_summary call (moved from seaice_readparms) |
3918 | - seaice_summary.F : add missing report of read turbulent flux term set up |
3919 | and SITRACER. |
3920 | - seaice_check.F : check range; inform and stop if retired CPPs are used |
3921 | (incl. SEAICE_AGE). |
3922 | - seaice_growth.F : unified use of SEAICE_availHeatFrac/Frz, without |
3923 | CPP switch, same computation as before for the different options. |
3924 | - change results at the truncation level. |
3925 | o pkg/seaice: |
3926 | - remove un-used parameters LAD & MAX_TICE ; add new run-time parameters: |
3927 | useMaykutSatVapPoly (default=F), postSolvTempIter (default=2) and |
3928 | SEAICE_wetAlbTemp (default=-1e-3). Remove option SEAICE_SOLVE4TEMP_LEGACY. |
3929 | - update verification/*/input*/data.seaice: |
3930 | to reproduce previous results with former #defined SEAICE_SOLVE4TEMP_LEGACY |
3931 | code, set useMaykutSatVapPoly=T & postSolvTempIter=0 ; |
3932 | and to reproduce previous results with former non-SOLVE4TEMP_LEGACY code, |
3933 | set SEAICE_wetAlbTemp=0 & SEAICE_snowThick=0. |
3934 | o pkg/seaice/seaice_solve4temp.F (SOLVE4TEMP_LEGACY): |
3935 | - remove LEGACY code for solving for tsurf (A1,A2,A3) but maintain the same |
3936 | algorithm (same choice: useMaykutPolySatVap=T, postSolvTempIter=0); |
3937 | difference in results only due to machine truncation. |
3938 | - remove MAX_TICE (tsurf is always =< TMELT anyway); keep MIN_TICE if using |
3939 | MaykutPolySatVap; keep MIN_LWDOWN. |
3940 | - adapt SEAICE_MODIFY_GROWTH_ADJ code (untested) to non-legacy formulation. |
3941 | - update output of verification exp. lab_sea (4 fwd: 11 cg2d digits except hb87, |
3942 | + 3 AD: 6 digits except evp) and offline_exf_seaice.seaice (12 digits). |
3943 | o pkg/salt_plume: |
3944 | - isolate saltPlumeFlux array exch into a specific S/R called from |
3945 | do_oceanic_phys.F |
3946 | - add interface to pkg/salt_plume (filling of saltPlumeFlux) in pkg/thsice. |
3947 | o verification: |
3948 | - move untested set-up to MITgcm_contrib/verification_other. |
3949 | o pkg/seaice: |
3950 | - retire old way of SEAICE_AGE. Now replaced with ALLOW_SITRACER. |
3951 | o pkg/seaice: |
3952 | - seaice_solve4temp.F (keeping results unchanged): |
3953 | * add 2 future run-time params to select which saturation vapor pressure |
3954 | formula is used and how post-iteration fluxes are set. |
3955 | Temporary set these 2 params according to option SOLVE4TEMP_LEGACY; |
3956 | * New piece of code (not used) to update surf. atmos. heat flux F_ia using |
3957 | the linearized expression to stay consistent with tsurf finding. |
3958 | - seaice_freedrift.F avoid floating exception in sqrt(y) since y=sqrt(x*x)-x |
3959 | can be < 0. |
3960 | o pkg/seaice/seaice_solve4temp.F (SOLVE4TEMP_LEGACY undef): |
3961 | - remove from F_ia (and from it's derivative dFiDTs1) the contribution of |
3962 | conductive heat flux F_c , and add it explicitly when updating tsurf as |
3963 | solution of: Fc = Fia + d/dT(Fia - Fc) *delta.tsurf |
3964 | so that now F_ia has a consistent meaning through the entire routine. |
3965 | This causes differences at truncation level: update output of fwd exp. |
3966 | global_ocean.cs32x15.seaice. |
3967 | o pkg/seaice: |
3968 | - lots of editing/cleaning in seaice_solve4temp.F + better documentation |
3969 | of arrays, sign/direction of fluxes; no effect on results. |
3970 | - replace hard coded 273.16 (=previous value of celsius2K) by celsius2K |
3971 | in seaice_budget_ocean.F & seaice_solve4temp.F (SOLVE4TEMP_LEGACY part); |
3972 | note: this should have been done before changing celsius2K default. |
3973 | - to keep results unchanged, add back old value of celsius2K in verification |
3974 | exp. input*/data : lab_sea (AD), offline_exf_seaice (fwd+AD) & seaice_obcs |
3975 | - replace hard coded seawater freezing temp in seaice_solve4temp.F (part |
3976 | SOLVE4TEMP_LEGACY) of 271.20 (=previous value of celsius2K + default |
3977 | value of SEAICE_freeze) by celsius2K+SEAICE_freeze so that seawater |
3978 | freezing temp is consistent with value in seaice_growth.F ; this causes |
3979 | differences at machine truncation level: update lab_sea AD output (3/4). |
3980 | o pkg/seaice: |
3981 | - mask (in exf_init_fixed.F) atemp,aqh,evap,precip,runoff,lwflx,areamask |
3982 | and climsst/sss even when using seaice (to prevent calculation that might |
3983 | use SST on land); does not affect any verification exp. |
3984 | - apply mask to taux,tauy (in seaice_get_dynforcing.F); update output |
3985 | of lab_sea.fd & lab_sea.hb87 and global_ocean.cs32x15.seaice_dynmix. |
3986 | o pkg/seaice/seaice_growth.F: add mask to avoid non-zero ice thickness |
3987 | over land (non-legacy code) |
3988 | o vectorize salt_plume package: |
3989 | - add extra code to salt_plume_frac and salt_plume_tendency_apply_s |
3990 | - this code computes plumebk everywhere (also over land), thus requires |
3991 | code to avoid divisions by zero and catch the case of kLev=Nr. |
3992 | - efficiency of salt_plume_frac is still sub-optimal |
3993 | o tools (genmake2): |
3994 | - fix makefile NAME specification (option: -makefile NAME) by adding |
3995 | "-f $MAKEFILE" in few places where it was missing including makedepend |
3996 | command (contribution from Paul). |
3997 | |
3998 | checkpoint63i (2012/01/24) |
3999 | o model/src: |
4000 | - add factorized versions of some EOS code to find_rho.F, |
4001 | define USE_FACTORIZED_EOS to turn it on (default for TARGET_NEC_SX) |
4002 | o model/src: |
4003 | - add celsius2K to namelist PARM01; remove unused recip_rhoNil from PARAMS.h; |
4004 | - change default celsius2K from 273.16 to 273.15 |
4005 | - to keep results unchanged, add back old value of celsius2K in verification |
4006 | exp. input*/data : aim.5l_cs, 1D_ocean_ice_column, lab_sea (fwd), |
4007 | global_ocean.cs32x15(seaice) & cpl_aim+ocn(input_atm). |
4008 | o model/src: add a little initialisation trick to find_rho.F and find_alpha.F |
4009 | to make TAF generate vectorizable code |
4010 | o pkg/seaice/seaice_evp.F: add code (copied from CICE) that avoids underflows. |
4011 | Turn on by defining SEAICE_EVP_ELIMINATE_UNDERFLOWS. Most compilers |
4012 | have flags that do this more efficiently. |
4013 | o pkg/diagnostics/diagstats_calc.F |
4014 | - for TARGET_NEC_SX fix the treatment of the scaling factor tmpFac=scaleFact |
4015 | o pkg/obcs (with exch2): |
4016 | - derive OB indices in overlap region from OB-InsideMask (in obcs_init_fixed.F) |
4017 | and remove code (in obcs_readparms.F) which was based on EXCH of indices |
4018 | (through buffer) and did not account for exch2 (e.g., CS-grid) topology. |
4019 | o pkg/exf and seaice exp: |
4020 | - change offline_exf_seaice.seaicetd test exp. to use default DIFF1 value (=0) |
4021 | so that switching off area & heff advection flags does not affect results. |
4022 | - change default EXF_LWDOWN_WITH_EMISSIVITY to #define in EXF_OPTIONS.h |
4023 | - keep exp. seaice_obcs & 1D_ocean_ice_column(ad) unchanged (using #undef |
4024 | EXF_LWDOWN_WITH_EMISSIVITY) and, using pkg/exf default emissivities, update |
4025 | results of verification experiments: 1D_ocean_ice_column(fwd), |
4026 | global_ocean.cs32x15.seaice(fwd+ad) & seaice_dynmix(ad), lab_sea (all 8) |
4027 | and offline_exf_seaice (all 4). |
4028 | o pkg/seaice: |
4029 | - remove array YNEG, RIVER, TMIX (replaced by local var) from common block; |
4030 | remove also areaNm1 & hEffNm1 when SEAICE_GROWTH_LEGACY is undef. |
4031 | - fix bug: areaNm1 & hEffNm1 are needed in seaice_growth (SEAICE_GROWTH_LEGACY) |
4032 | but were not filled when resp. SEAICEadvArea=F & SEAICEadvHeff=F and |
4033 | not multi-dim advection; |
4034 | - fix seaice_growth.F to compile with both SEAICE_GROWTH_LEGACY and |
4035 | SHORTWAVE_HEATING #undef. |
4036 | o optim: make Makefile more robust (?) |
4037 | o pkg/obcs: |
4038 | * fix treatment of obcs_read_pickup for TAF |
4039 | o pkg/shelfice: |
4040 | * add missing initialisation of num_shifwflx |
4041 | * new adjoint verification exp. for isomip |
4042 | * change Prandtl and Schmidt numbers from generic formulations |
4043 | (in terms of model diffus. and visc.) to separate runtime |
4044 | parameters, with Holland and Jenkins (1999) default values. |
4045 | o pkg/exf (interpolation): |
4046 | - extended input field (2 rows) near the N & S poles: |
4047 | * fill in with the symetric value (when even Nb of data in longitude) |
4048 | * add average value at the poles only for scalar quantities ; for vector |
4049 | component interpolation, skip the averaging and keep duplicated values, |
4050 | unless the 2 components have same location (uvInterp=T) in which case |
4051 | interpolate the 2 components together using S/R EXF_INTERP_UV. |
4052 | - new S/R EXF_INTERP_UV to interpolate the 2 components of a vector field |
4053 | together: this allows to account properly for local orientation when |
4054 | averaging at N & S pole. |
4055 | - add CPP option EXF_USE_OLD_INTERP_POLE to recover old results regarding |
4056 | exf-interpolation near N & S poles. Undef by default. |
4057 | - add debug check/print on 1rst iter if debugLevel >=2. |
4058 | o pkg/exf: |
4059 | - change masking flags definition (no longer "parameter"), put them in |
4060 | common block and set them in S/R EXF_INIT_FIXED. |
4061 | - change recognized masking flag from s,u,v to c,w,s since the mask |
4062 | to use (maskC,W,S) depends on position on model grid and has little to |
4063 | do with scalar/vector difference; fix masking if using P-coordinates. |
4064 | - fix masking of wind-stress (was wrong if interpolated or read on A-grid) |
4065 | and update results of exp. global_with_exf (x2). |
4066 | - fix setting of zenith-angle table when SHORTWAVE_HEATING is undef. |
4067 | o pkg/obcs |
4068 | - S/R obcs_calc_stevens: fix a small bug (gammat -> gammas where appropriate) |
4069 | o pkg/exf (interpolation): |
4070 | - assume periodicity in X only if input field cover full longitude range. |
4071 | - improve search for lat. index (supposed to be faster, in ~log2(ny) steps, |
4072 | and should vectorise). |
4073 | - fix input lat of the 2 added row (in case we provide N.pole data). |
4074 | |
4075 | checkpoint63h (2011/12/30) |
4076 | o pkg/seaice: |
4077 | - change declaration of UVM from _RL to _RS in order to get B-grid |
4078 | uIce,vIce monitor when _RS = real*4 |
4079 | o pkg/offline: |
4080 | - new S/R OFFLINE_RESET_PARMS for resetting main-model params (switch off flags); |
4081 | - compute vertical velocity if not read from file (switch on exactConserv |
4082 | & staggerTimeStep); |
4083 | - fix output of ptracer monitor iter & time for default PTRACERS_monitorFreq. |
4084 | o verification: |
4085 | - update grid-files (in tutorial_held_suarez_cs/input and fizhi-cs-32x32x40/input) |
4086 | with grid-angle generated using "utils/matlab/cs_grid/cubeCalcAngle.m": |
4087 | fix Pb in yG definition @ 2 missing corners (previously yG was averaged); |
4088 | - update output of exp. global_ocean.cs32x15.viscA4 after changing |
4089 | grid-file angles (used here for coriolis-3d); |
4090 | - remove (or gzip) few files not needed to run fizhi-cs experiments. |
4091 | o pkg/exf (vector interpolation): |
4092 | - rotate vector component toward local grid-axis orientation using grid-angles |
4093 | (stored in GRID.h) instead of locally computed rotation angle; keep old code |
4094 | available with exf option EXF_USE_OLD_VEC_ROTATION (undef by default). |
4095 | o pkg/seaice: |
4096 | - allow to compile with exf options ALLOW_ATM_TEMP or ALLOW_DOWNWARD_RADIATION |
4097 | undefined. Fix and remove the stop when ALLOW_RUNOFF is undefined. |
4098 | o pkg/PKG_OPTIONS.h files: |
4099 | - move #include "CPP_OPTIONS.h" just after #include "PACKAGES_CONFIG.h", |
4100 | outside of the #ifdef ALLOW_THISPKG / #endif block. |
4101 | - update verification/*/code/PKG_OPTIONS.h files. |
4102 | o add a verification experiment (offline_exf_seaice/input.seaice) that test |
4103 | the B-grid LSOR solver |
4104 | o pkg/seaice: sort out emissivity and long wave radiation step 2: |
4105 | - add emissivity for snow and ice as new run-time parameters |
4106 | (unfortunately) that default to the corresponding exf values; this |
4107 | changes results in most verification experiments so that for backward |
4108 | compatibility these parameter have to be set explicitly to inconsistent |
4109 | values (ugly); |
4110 | - the exf-flag EXF_LWDOWN_WITH_EMISSIVITY then gets rid off the hard-wired |
4111 | emissivities of 0.97 associated with lwdownloc in S/R seaice_solve4temp |
4112 | until we agree how to handle this bug properly |
4113 | o pkg/exf (interpolation): |
4114 | - add a set of run-time param ({inputfield}_interpMethod), one for |
4115 | each interpolated input field, to select the interpolation method |
4116 | with a value of zero switching off the interpolation; |
4117 | - print interpolation parameters to standard output; |
4118 | - refine exf_check.F accordingly ; stop if USE_NO_INTERP_RUNOFF is defined |
4119 | (to use instead runoff_interpMethod=0 in data.exf). |
4120 | - simplify default setting of interpolation parameters (for all fields, |
4121 | set position to match model grid cell-center position, leading to trivial |
4122 | interpolation in case of regular Lat-Lon grid) and fix for the case of |
4123 | non-uniform delY. |
4124 | o pkg/exf/exf_radiation.F: add the factor ocean_emissivity to lwdown, for |
4125 | within #ifdef EXF_LWDOWN_WITH_EMISSIVITY/#endif. Unless ocean_emissivity=1. |
4126 | this factor is absolutely required, because the lw exitance (= out-going |
4127 | long wave radiation) is emissivity*stefanBoltzmann*T^4 + rho*lwdown, |
4128 | where the reflectivity rho = 1-emissivity for conservation reasons. Once |
4129 | this is established, we can remove the CPP-Flag (if we want to). |
4130 | o pkg/seaice: |
4131 | - qualify a stop statement in S/R seaice_check: EXF_READ_EVAP and |
4132 | ALLOW_BULKFORMULAE are only required if SEAICE_EXTERNAL_FLUXES is defined |
4133 | - sort out emissivity and long wave radiation, step 1: make SEAICE_emissivity |
4134 | what the name implies (and not emissivity*BoltzmannConstant), this means |
4135 | the old default value of 5.5e-8 now means |
4136 | 5.5e-8/5.670e-8 = 0.97001763668430343479 as ocean_emissivity in |
4137 | S/R exf_readparms |
4138 | - FV-discretization of the B-grid LSOR solver, turn on with |
4139 | SEAICE_LSRBNEW. This new solver also involves a slight re-organization |
4140 | of the calling routine dynsolver, so that B and C-grid code look a |
4141 | little more alike. |
4142 | - fix index bugs in ostres.F (B-grid code) |
4143 | o pkg/seaice/seaice_ocean_budget.F: change (unused) code to make it look better |
4144 | o pkg/seaice/seaice_readparms.F: make ocean_emissivity*stefanBoltzmann the |
4145 | default for SEAICE_emissivity, if useEXF; requires setting a wrong |
4146 | parameter value in global_ocean.cs32x15/input.seaice/data.seaice for |
4147 | backward compatiblity |
4148 | o model/src: use sigmaR in calc_ivdc |
4149 | |
4150 | checkpoint63g (2011/12/16) |
4151 | o pkg/seaice/seaice_growth.F: |
4152 | fix heat conservation of the coupled ocean-seaice system. |
4153 | when SEAICE_HEAT_CONSERV_FIX is defined, the mismatch of |
4154 | solid vs liquid water treatment is resolved via QNET. |
4155 | o pkg/seaice/seaice_growth.F: |
4156 | add missing term for sublimation in saltFlux, which was breaking conservation. |
4157 | o pkg/seaice/seaice_model.F: |
4158 | Remove this patholigical case treatment in evolution branch, |
4159 | where it is un-necessary and breaks conservation. |
4160 | Update global_ocean.cs32x15/results accordingly for |
4161 | output.seaice.txt output_adm.seaice.txt and output_adm.seaice_dynmix.txt |
4162 | o model/src: |
4163 | useRealFreshWaterFlux: remove masking of EmPmP (using maskInC) in |
4164 | external_forcing_surf.F and apply mask directly in S/R SOLVE_FOR_PRESSURE. |
4165 | o pkg/obcs: |
4166 | modify Stevens boundary conditions so that S/R obcs_calc_stevens computes |
4167 | tendency for temperature and salinity that is then applied to update |
4168 | theta and salt in S/R obcs_apply_ts; this requires proper masking of all |
4169 | horizontal advection and diffusion contributions on the boundary (in |
4170 | S/Rs gad_advection, gad_calc_rhs, gmredi_rtransport, gmredi_calc_diff), and |
4171 | removing the mask in S/R timestep_tracer. The advantage of this approach is |
4172 | that the updated tracer values include contributions from the surface |
4173 | forcing and vertical diffusion. |
4174 | This modification changes exp4.stevens because of vertical diffusion. |
4175 | o model/src: |
4176 | change non-curvilinear grid setting to also work with exch2 + blank tiles: |
4177 | - move delX,delY to new header file (SET_GRID.h) and adjust length to 1rst |
4178 | face dimensions. |
4179 | - new S/R INI_LOCAL_GRID to define model tile-local grid (using same units |
4180 | as delX,delY) and called from S/R INI_CARTESIAN_GRID, INI_CYLINDER_GRID |
4181 | and INI_SPHERICAL_POLAR_GRID. |
4182 | change test-experiment global_ocean.90x40x15: |
4183 | - split the domain in many more tiles (9x4 tiles of 10x10 each); |
4184 | - switch to exch2 and remove 1 blank-tile (but only for MPI test). |
4185 | - update results of both test (std & dwnslp). |
4186 | o pkg/diagnostics/diagstat_calc.F: fix problem with non-initialised halos in |
4187 | tmp-fields for TARGET_NEC_SX at the cost of extra loops and less vectorisation |
4188 | o model/src: |
4189 | - take sigma-coords related code out of update_etah.F into new S/R UPDATE_ETAWS |
4190 | and fix initialisation when using sigma-coords. |
4191 | o model/src: |
4192 | - improve Gael's changes from Jan 14, 2011 "addition of an 'update' of hfacc etc. |
4193 | to their current value at the beginning of forward_step.F": add a new run-time |
4194 | switch "doResetHFactors" (default=false) and use it to do (or not) the resetting. |
4195 | - set doResetHFactors=T in the following test exp: |
4196 | global_ocean.90x40x15/input (rStar) & input.dwnslp (linFS), |
4197 | global_ocean.cs32x15/input.seaice (rStar), hs94.cs-32x32x5/input.impIGW (linFS) |
4198 | and tutorial_global_oce_in_p (nonLinFS in p) |
4199 | o pkg/ecco |
4200 | - added IES cost term |
4201 | o verification/advect_xz |
4202 | - scale down the depth by 1/100 (from 200 km to just 2.km) |
4203 | - add secondary test using divergent flow, r-star and implicit vertical advection. |
4204 | - add note (check_conserve_TS.txt) and matlab script to check global |
4205 | conservation of T & S with NonLin-FreeSurf and Adams-Bashforth. |
4206 | o pkg/rbcs: |
4207 | - add missing relaxUFile & relaxVFile in namelist (in rbcs_readparms.F). |
4208 | o pkg/obcs (Stevens BCs): |
4209 | - fix various problems in the phase speed computations of the Stevens |
4210 | boundary conditions: |
4211 | - sign error for western and southern boundaries, |
4212 | - time tendencies were underestimated by factor of dTracerLev and some just |
4213 | zero (for multidim advection schemes) -> now estimate time tendencies |
4214 | from difference between previous (n) time level and the one before (n-1); |
4215 | this requires storing a field per tracer per boundary, also in the pickup |
4216 | files. |
4217 | - replace deltaTmom in cflMer/Zon computation with dTracerLev |
4218 | - set default phase velocity to cflMer/Zon |
4219 | - update verification experiment exp4.stevens |
4220 | o pkg/generic_advdiff (implicit_r): |
4221 | - fix implicit vertical advection conservation with AB and/or NonLin-FreeSurf |
4222 | (remove Tr*d/dz(w) in gad_implicit_r.F and add it in gad_calc_rhs.F); |
4223 | - fix implicit vertical diffusion or advection with NonLin FreeSurf |
4224 | (was using current recip_hFacC instead of future recip_hFacC): set future |
4225 | recip_hFac in thermodynamics.F and pass & use it in all vertical implicit |
4226 | solver S/R ; |
4227 | - fill diagnostics of vertical advective fluxes (computed from tendency) |
4228 | when using implicit vert. advection; |
4229 | - update output of exp that uses NonLin-FreeSurf & implicit vertical diffusion: |
4230 | global_ocean.90x40x15 (fwd+AD), global_ocean.cs32x15 (4 fwd +4 AD), |
4231 | tutorial_global_oce_in_p (fwd), tutorial_tracer_adjsens (AD) |
4232 | and cpl_aim+ocn (used in ocean); to be fixed: bottom_ctrl_5x5. |
4233 | o pkg/diagnostics: |
4234 | - add diags for T & S tendency which goes through Adams-Bashforth. |
4235 | |
4236 | checkpoint63f (2011/11/30) |
4237 | o pkg/obcs/obcs_calc_stevens.F: |
4238 | - join some loops to reduce number of if-statements |
4239 | - fix a bug in code for northern and southern boundaries. |
4240 | o pkg/seaice/seaice_init_varia.F |
4241 | - undo resetting UVM=0 that has slipped in unnoticed in r1.49 and |
4242 | caused zero ice-velocities for the B-grid code |
4243 | o pkg/seaice/seaice_init_fixed.F |
4244 | - fix a bug in the initialisation of the second metric terms |
4245 | k2AtC and k2AtZ: k2AtC was set to the value of k2AtZ and k2AtZ was 0. |
4246 | - this affects all seaice configurations with useCurviLinearGrid = .true. |
4247 | and SEAICEuseDynamics = .true. (default) and SEAICEuseMetricTerms |
4248 | = .true. (default) |
4249 | - the only verification experiment affected is global_ocean.cs32x15: |
4250 | icedyn, seaice, and seaice_dynmix (AD) |
4251 | o pkg/thsice/thsice_diagnostics_state.F |
4252 | - only for TARGET_NEC_SX: initialise all of tmpFld, so that overlap does |
4253 | not contain garbage that can lead to surprises in diagstats_calc.F |
4254 | o model/src: |
4255 | - move bi,bj loops inside INTEGR_CONTINUITY ; |
4256 | - call INTEGR_CONTINUITY directly from forward_step.F |
4257 | (previously called from momentum_correction_step.F) |
4258 | - call UPDATE_ETAH from integr_continuity.F and update initialise_varia.F, |
4259 | forward_step.F and pkg/ecco/the_main_loop.F |
4260 | o model/src/do_oceanic_phys.F: |
4261 | - reset addMass to zero only if useICEFRONT ; |
4262 | - separated k-loop for rhoInSitu calculation ; |
4263 | - add 2 diagnostics for wVel*delta^k(Rho) at constant pressure (= WdRHO_P) |
4264 | and at constant T,S (= WdRHOdP); |
4265 | NOTE: change diagnostics WRHOMASS : this is now simply the Vertical transport |
4266 | of In-Situ Density (Anomaly) (=wVel*rho^bar-k) (previously was Vertical |
4267 | transport of locally-referenced potential density); |
4268 | to recover old diag: (WRHOMASS)_old = (WRHOMASS)_new -1/2 * (WdRHOdP) |
4269 | o gluemnc: |
4270 | - replace ncrcat with ncks when adding variables to *.glob.nc |
4271 | - change the way variables without record dimensions are handled so that |
4272 | files that have variables with and without record variables can be glued: |
4273 | add a record dimension with a new unique name to be able to differentiate |
4274 | between variable with and without a-prior record dimensions. Remove |
4275 | this record dimension before adding the variable to the *.glob.nc file. |
4276 | This procedure automatically works also for grid.*.nc files that do not |
4277 | have any record dimension. |
4278 | o verification/cpl_aim+ocn: |
4279 | - generate new reference output on baudelaire (gfortran, mpich2) (previously |
4280 | from old aces-grid cluster, ao + ifort) and update 'run_cpl_test' script. |
4281 | o pkg/obcs/obcs_calc_stevens.F: |
4282 | - add code for northern and southern boundaries. |
4283 | - reorder some loops to save some operations and so that drFBar can be scalar |
4284 | o model/src: |
4285 | - re-arrange extrapolation calculation in Adams-Bashforth S/R (affects machine |
4286 | truncation) and add diagnostics for Adams-Bashforth tendency increment. |
4287 | - update test-exp. AD output: |
4288 | 1D_ocean_ice_column, bottom_ctrl_5x5, lab_sea.noseaicedyn, obcs_ctrl; |
4289 | and FWD output: exp4 (x3), fizhi-cs-32x32x40, fizhi-cs-aqualev20, |
4290 | front_relax (x3), global_ocean.90x40x15 (x2), global_ocean.cs32x15 (x5), |
4291 | global_ocean_ebm, ideal_2D_oce, internal_wave, isomip (x3), lab_sea (x4), |
4292 | matrix_example, MLAdjust (x5), natl_box (x2), tutorial_advection_in_gyre, |
4293 | tutorial_global_oce_in_p, tutorial_global_oce_latlon and |
4294 | tutorial_plume_on_slope. |
4295 | o pkg/diagnostics/diagstats_calc.F: add special code for TARGET_NEC_SX |
4296 | that vectorises. This code uses 3 extra 2D fields, F90 array assignments |
4297 | and F90 intrinsic routines SUM, MINVAL, MAXVAL, but since TARGET_NEC_SX |
4298 | does not even come with an F77 compiler anymore, this should not be |
4299 | a limitation |
4300 | |
4301 | checkpoint63e (2011/11/06) |
4302 | o pkg/seaice adjoint of LSR: |
4303 | - substantially rework STORE dirs. |
4304 | - add new flag SEAICE_LSR_ADJOINT_ITER and parameter SOLV_MAX_FIXED |
4305 | this flag will do SOLV_MAX_ITERS but only store SOLV_MAX_FIXED fields |
4306 | and only perform SOLV_MAX_FIXED adjoint iters. |
4307 | If flag SEAICE_LSR_ADJOINT_ITER is undef-ined, the store in the iteration |
4308 | always goes to same record, meaning that the last forward field will be |
4309 | the one used in the adjoint - an approximation. |
4310 | - now produces non-zero LSR-related gradients, and acceptable gradients for |
4311 | An's zonal (x-z) test case (to be checked in) |
4312 | - lab_sea: produces acceptable gradients for lab_sea with forward/backward LSR |
4313 | (but these are screwed up by the thermodynamics in the first place); |
4314 | reduce from 4 to 3 timesteps to avoid t.d. issue as temporary solution; |
4315 | output_adm.txt also reflects changes to seaice_lsr |
4316 | - global_ocean.cs32x15: |
4317 | * the "default" input_ad.seaice has been re-defined to always exclude dynamics |
4318 | (output_adm.seaice.txt was updated) |
4319 | * new input_ad.seaice_dynmix tests a forward LSR / backward free-drift |
4320 | (output_adm.seaice_dynmix.txt) |
4321 | o test-exp. exp4+stevens: |
4322 | - switch off pTracers and nonHydrostatic (restart problems with NH); update output |
4323 | o pkg/seaice (lsr solver): |
4324 | - put coriolis term into FORCEX,Y (as in seaice_evp.F; previously in rhsU,V only); |
4325 | update output (change truncation) of FWD test exp lab_sea & global_ocean.cs32x15 |
4326 | - fix SEAICEuseFREEDRIFT for new OBCS version (ndef OBCS_UVICE_OLD) |
4327 | - new parameter "LSR_mixIniGuess" allows (if=2,4) to mix free-drift solution |
4328 | into initial guess for linearised solver; use weight ~ (1/err)^2,4. |
4329 | - compute (with new S/R) and print initial (+ free-driff sol. if available) |
4330 | and final residual of linearised system. |
4331 | o pkg/pp81: add diagnostics for vertical eddy viscosity and diffusivity |
4332 | (requires new subroutines pp81_init_fixed.F/pp81_diagnostics_init.F) |
4333 | o pkg/obcs: Stevens BCs (still only for east and west) |
4334 | - fix Stevens BCs by using intermediate velocities of previous |
4335 | time step as "baroclinic" contribution rather velocity of one grid cell |
4336 | inside the boundaries; more consistent but makes the entire treatment |
4337 | more complicated, requires new pickup files and two new S/Rs: |
4338 | obcs_copy_uv_n and obcs_save_uv_n |
4339 | keep old version with flag OBCS_STEVENS_USE_INTERIOR_VELOCITY |
4340 | (undefined by default) |
4341 | - silently move computation of some grid factors into separate loops to |
4342 | save some recomputations |
4343 | - add a hack for non-linear free surface |
4344 | - add a verification experiment to exp4 that tests this code |
4345 | o make gluemnc/xplodemnc work with (moron) non-GNU shell tools |
4346 | |
4347 | checkpoint63d (2011/10/25) |
4348 | o pkg/obcs + seaice-dynamics: |
4349 | - new implementation calls OBCS_APPLY_UVICE (in seaice_dynsolver.F) before |
4350 | solving for uIce,vIce and prevent SEAICE_LSR or SEAICE_EVP to modify OB |
4351 | values (consistent with an implicit method). |
4352 | - add option OBCS_UVICE_OLD (in OBCS_OPTIONS.h, defined by default) to |
4353 | return to older implementation (same results as before); note that none of |
4354 | the "experimental" OBCS_SEAICE options are implemented in the new version. |
4355 | - switch test exp. seaice_obcs to use new version (update output). |
4356 | o pkg/seaice: |
4357 | - add few stop (B-grid & CS-exch, B-grid & obcs, AUTODIFF & SEAICE_maskRHS) |
4358 | - add parenthesis in Water-Ice drag calculations (evp & lsr); |
4359 | - in seaice_lsr.F, simplify and fix AA3 setting in case sNx or sNy=1; |
4360 | and fix case SEAICE_waterDrag=0 (but unstable if no or little seaice) |
4361 | - update output of test exp lab_sea that uses evp or lsr (fwd+ad) |
4362 | and global_ocean.cs32x15 (icedyn & seaice fwd+ad). |
4363 | o pkg/layers: |
4364 | - Include potential density as new coordinate (Thanks to David Munday) |
4365 | o pkg/dic: |
4366 | - Remove subroutine CALC_PCO2_APPROX_CO3 from carbon_chem.F and add |
4367 | carbonate computation/output to CALC_PCO2_APPROX |
4368 | o pkg/generic_advdiff |
4369 | - make TAF generate code that vectorizes: |
4370 | gad_dst3fl_adv_*.F, gad_u3c4_impl_r.F |
4371 | o model/src: |
4372 | - improve vectorization also for adjoint code of |
4373 | solve_tridiagonal and solve_pentadiagonal. As this requires up to |
4374 | 5 new 3D-fields, this code is only turned on for the combination of |
4375 | ALLOW_AUTODIFF_TAMC and TARGET_NEC_SX. Also remove error message |
4376 | for singular matrix check (only for TARGET_NEC_SX). |
4377 | - remove hard-wiring of CPP-flag ALLOW_SOLVERS_KLOOPINSIDE to |
4378 | ALLOW_AUTODIFF. This flag now needs to be set outside of |
4379 | solve_tri/pentadiagonal.F |
4380 | o pkg/exf: |
4381 | - fix previous modif in exf_readparms.F (revision 1.66: treatment of |
4382 | optional namelist EXF_NML_OBCS). |
4383 | - add many debug-print (to trace down where pkg/cal error msg comes from) |
4384 | o pkg/mom_vecinv/mom_vi_hdissip.F |
4385 | - rearrange loops so that vectorization is improved and in particular |
4386 | the adjoint routine vectorizes. The code is a little longer now, but I |
4387 | think easier to read. |
4388 | Note: CPP-flag MOM_VI_ORIGINAL_VISCA4 is not tested. |
4389 | o pkg/seaice: |
4390 | - allow to specify initial seaice velocity from files (uIceFile,vIceFile) |
4391 | o pkg/exch2: |
4392 | - alternative code (without tile x tile matrix) for cumulated (global) sum; |
4393 | used as default; keep using matrix version in adjustment.cs-32x32x1. |
4394 | o tools/build_options: |
4395 | - after merging some MPI and/or multi-threads specific optfiles so that |
4396 | the modified default optfile support both built (using genmake2 -mpi |
4397 | for the MPI built, using genmake2 -omp for OpenMP built), |
4398 | move now obsolete optfiles to tools/build_options/unsupported/ |
4399 | (add copy of email sent to support list in doc/optfiles_changes.txt) |
4400 | |
4401 | checkpoint63c (2011/09/28) |
4402 | o pkg/ebm: |
4403 | - fix ebm_zonalmean.F for several procs in Ydir (nPy > 1); update output of |
4404 | test exp. global_ocean_ebm (affects machine truncation, 12 digits for cg2d) |
4405 | o pkg/seaice (SItracer pickup) |
4406 | * Simple code for pickup of SItracer fields (#define ALLOW_SITRACER) |
4407 | To be done: |
4408 | - thorough testing of missing fields in S/R seaice_read_pickup |
4409 | - thorough matching between generic tracers and specific fields used |
4410 | (e.g. volume-weighted age, area-weighted age, salinity, ...) |
4411 | o pkg/grdchk: |
4412 | - all procs calculate and print finite-difference gradient (for testreport) |
4413 | - change description output used by testreport; |
4414 | - AD testing: also compare and report Finite-difference gradient; |
4415 | => update all output_adm*.txt |
4416 | o test exp. global_ocean_ebm: |
4417 | - switch back useRealFreshWaterFlux (no problem anymore with run-off); |
4418 | and turn on exactConserve; update (fwd) output. |
4419 | o pkg/seaice (LSR): |
4420 | - print to STDOUT number of solver iterations at SEAICE_monFreq interval. |
4421 | - modify solver to deal cleanly with u/v switch at face edges (CS-grid): |
4422 | * identical results with non-CS topology (but save up to half of EXCH calls) |
4423 | * no much changes in cs-32 verification tests since no ice at face edges |
4424 | (differences due to convergence criteria, since nb of iterations changed) |
4425 | * expect some differences on lat-lon-cap grid. |
4426 | update FWD results of global_ocean.cs32x15 test exp. (icedyn & seaice) |
4427 | o pkg/exch2: |
4428 | - add new CPP option to disable Cumul-Sum matrix (to save storage when using |
4429 | many tiles); until alternative coding is added, just add a stop. |
4430 | o pkg/kpp: |
4431 | - move ptracer/salt correction to KPP diffusivity from calc_3d_diffusivity.F |
4432 | to S/R KPP_CALC_DIFF_PTR (+ add tracer-index to argument list). |
4433 | o optfiles: |
4434 | - merged few MPI specific (*+mpi*) and multi-threads specific (*+mth) optfiles |
4435 | into corresponding standard one, which now support different build: |
4436 | (when using "genmake2 -mpi" for MPI built, "genmake2 -omp" for OpenMP built) |
4437 | - add "darwin_amd64_gfortran" optfile (initially from Constantinos, tested by Gael) |
4438 | o pkg/obcs (seaice): |
4439 | - add missing EXCH for uIce,vIce after applying OBCS; |
4440 | - remove S/R EXF_SWAPFFIELDS_X/Y , disable S/R EXF_SET_OBCS_X/Y by adding |
4441 | argument = number of levels to S/R EXF_SWAPFFIELDS_XZ/YZ and S/R |
4442 | EXF_SET_OBCS_XZ/YZ ; update obcs_exf_load.F; |
4443 | - fix EXF_SET_OBCS_XZ/YZ for multi-threaded (assuming loaded arrays are shared) |
4444 | - verification exp. seaice_obcs: split domain in 2 tiles ; add SIZE.h_mpi |
4445 | and eedata.mth for MPI and mutlti-threaded testing. |
4446 | o pkg/flt: |
4447 | - make FLT EXCH working with multi-threads (and MPI + multi-threads); |
4448 | - use buffer for floats IO (trajectories & profiles); size set in FLT_SIZE.h; |
4449 | - fix pickup and trajectories + profiles output with multi-threads; |
4450 | - add parameter to select group of fields to write along trajectory and |
4451 | profile (default unchanged); |
4452 | - only call PORT_RAND* function when flt_noise <> 0; |
4453 | - add multi-threaded test for verification exp. flt_example. |
4454 | o eesupp/src: |
4455 | - fix S/R ALL_PROC_DIE for MPI+multi-threads. |
4456 | - USE_OMP_THREADING: check that number of threads (from eedata) matches |
4457 | actual number (from env.var. setting). |
4458 | o pkg/ebm: |
4459 | - fix multi-threading in ebm_area_t.F ; clean-up EBM.h header file. |
4460 | - add multi-threaded test for verification exp. global_ocean_ebm |
4461 | |
4462 | checkpoint63b (2011/08/29) |
4463 | o pkg/ebm: |
4464 | - fix sign of runoff; |
4465 | - update directly forcing fields (Qnet,EmPmR) to use standard |
4466 | external_forcing_surf.F (remove ebm_forcing_surf.F); |
4467 | - avoid loading forcing fields a 2nd time (1rst time from ini_forcing.F); |
4468 | - set either tauThetaClimRelax (in data) or tauThetaZonRelax (in data.ebm) |
4469 | and apply relaxation towards corresponding SST field (2-D map or ZonAver). |
4470 | - update global_ocean_ebm parameters file data and update output (fwd+ad). |
4471 | o verification/matrix_example: |
4472 | - split domain in 8 tiles (2x4); add SIZE.h_mpi and eedata.mth for |
4473 | MPI and mutlti-threaded testing. |
4474 | o pkg/matrix: |
4475 | - change name of S/R MATRIX_INIT to S/R MATRIX_INIT_VARIA ; |
4476 | - fix for multi-tiles (add bi,bj indices to exp/impMatrixCounter); |
4477 | - fix for multi-threaded (remove DATA statement); |
4478 | - use standard DIFFERENT_MULTIPLE function; |
4479 | - add MATRIX_OPTIONS.h |
4480 | o verification/matrix_example: |
4481 | To allow to split the domain in several tiles, change the domain size |
4482 | from 31x31 to 32x32 by adding 1 row (on Southern side) + 1 column (on |
4483 | Western side) of land points. |
4484 | o (*_)write_pickup: |
4485 | - fix few bugs in mypackage_read/write_pickup.F |
4486 | - in MDS_WR_METAFILES calls, replace "myTime" by a local copy into |
4487 | array of length 1 (was caught by compiler syntax-check). |
4488 | o pkg/diagnostics (velocity potential solver): |
4489 | - fix initialisation of main diagonal matrix (for overlap values) |
4490 | o tools/build_options: |
4491 | - towards single optfile for MPI and non-MPI built: merge few +mpi optfile |
4492 | into previously non MPI one (linux_am64 pgf77,open64,pathf90,ifort11) |
4493 | - linux_amd64_gfortran: merge +mpi_generic version into standard optfile: |
4494 | * move IEEE flags to DEVEL section; take I |