4 |
Notes on tags used in MITgcmUV |
Notes on tags used in MITgcmUV |
5 |
============================== |
============================== |
6 |
|
|
7 |
|
o model/src & pkg/ptracers: |
8 |
|
- remove common block variables gT,gS (in DYNVARS.h), except when |
9 |
|
USE_OLD_EXTERNAL_FORCING is defined; update TAF storage accordingly. |
10 |
|
- remove common block variable gPtr. |
11 |
|
o model/src & pkgs: |
12 |
|
- change gTracer (and/or tracer) argument (drop bi,bj indices) in S/R |
13 |
|
ADAMS_BASHFORTH(2&3), CYCLE_(AB_)TRACER, FREESURF_RESCALE_G, |
14 |
|
IMPLDIFF, SOLVE_TRIDIAGONAL & _PENTADIAGONAL, GAD_SOM_ADVECT, |
15 |
|
GAD_ADVECTION, GAD_CALC_RHS, GAD_IMPLICIT_R, TIMEAVE_CUMUL_DIF_1T |
16 |
|
+ change accordingly all calling S/R. |
17 |
|
- use local temperature/salinity/ptracer tendency array (without bi,bj) |
18 |
|
in S/R temp/salt/ptracers_integrate.F |
19 |
|
o pkg/seaice: |
20 |
|
- move computation of stress contributions to rhsU/V in s/r seaice_lsr |
21 |
|
to separate s/r seaice_lsr_rhsu/v in order to be able to re-use code |
22 |
|
- make u/vIceC local variables if SEAICE_CGRID is defined only to be used |
23 |
|
in seaice_lsr |
24 |
|
- seaice_lsr.F: make local 4D arrays UXX, VYY, etc 2D |
25 |
|
in s/r seaice_lsr_calc_coeffs |
26 |
|
o pkg/mdsio: |
27 |
|
- in MDS_READ/WRITE_FIELD, stop if file-name (+prefix) is too long |
28 |
|
(e.g., > MAX_LEN_MBUF -90 ) or, in INI_MODEL_IO, if mdsioLocalDir is |
29 |
|
too long (e.g., > MAX_LEN_FNAM/2 ) |
30 |
|
|
31 |
|
checkpoint65b (2014/08/12) |
32 |
|
o pkg/matrix: |
33 |
|
- pass, as argument, updated tracer field to S/R MATRIX_STORE_TENDENCY_EXP |
34 |
|
o model/src: |
35 |
|
- fix initialisation of geothermalFile; compile geothermal-flux code in |
36 |
|
natl_box verification experiment. |
37 |
|
o model/src & pkg/down_slope: |
38 |
|
- push the k loop inside S/R TIMESTEP_TRACER (now called outside the k loop). |
39 |
|
- in dwnslp_apply.F, update tracer tendency instead of the future tracer |
40 |
|
field and call S/R DWNSLP_APPLY before TIMESTEP_TRACER; this affects |
41 |
|
results at machine truncation level: update output of experiments |
42 |
|
global_ocean.90x40x15.dwnslp (FWD) and lab_sea.noseaicedyn (AD). |
43 |
|
o pkg/diagnostics (Stats-Diags): |
44 |
|
- do not cumulate the full volume when DIAGNOSTICS_FILL is |
45 |
|
called with bibjFlg < 0 (no increment of the counter for 2D/3D diag); |
46 |
|
This fix the mean statistics when DIAGNOSTICS_FILL is called multiple |
47 |
|
times (but Min,Max and StD are still wrong). |
48 |
|
o model/src: |
49 |
|
- add geothermal flux forcing: read in ini_forcing.F as time-constant |
50 |
|
field "geothermalFlux" applied in S/R APPLY_FORCING_T (apply_forcing.F) |
51 |
|
o model/src: |
52 |
|
- move CYCLE_TRACER calls from tracers_correction_step.F to temp/salt/ptracer |
53 |
|
_integrate.F so that, when leaving S/R THERMODYANMICS, theta,salt and pTrac |
54 |
|
arrays are already updated while adjustments (filters, conv.adjustment) are |
55 |
|
still applied later, in S/R TRACERS_CORRECTION_STEP. |
56 |
|
o model/src: |
57 |
|
- store in common bloc array "rhoInSitu" the virtual potential temperature |
58 |
|
anomaly that is used to compute geopotential: this make the atmos code |
59 |
|
more similar to ocean code which already uses rhoInSitu in calc_phi_hyd.F |
60 |
|
o pkg/seaice/seaice_lsr.F |
61 |
|
- rename integer variable ilcall to ipass (that's what it is called |
62 |
|
in the residual diagnostics |
63 |
|
- change time stepping for NPSEUDOTIMESTEP > 2 (does not change the |
64 |
|
default) for improved non-linear convergence of the first few steps |
65 |
|
- adjust a few comments and add new ones to explain some of the store |
66 |
|
directives |
67 |
|
o pkg/generic_advdiff (& ptracers): |
68 |
|
- re-work the code to check for valid advection scheme and for minimum |
69 |
|
size of overlap (now stored in local common bloc in gad_advscheme.F) |
70 |
|
o pkg/seaice: another attempt to make the adjoint work for sea ice dynamics |
71 |
|
- re-initialize more variables in seaice_lsr: u/vIceC, u/vIceNm1 |
72 |
|
- add an auxilliary variable "bet" and fix store directives and keys in |
73 |
|
seaice_lsr_tridiagu/v, this seems to do the trick (i.e. more or |
74 |
|
less exact gradients in my tests); but there are still |
75 |
|
recomputation warning (although gradients are sort of OK), when |
76 |
|
SEAICE_LSR_VECTORIZE is not defined, so this flag and |
77 |
|
SEAICE_LSR_VECTORIZE_ZEBRA are recommended for efficiency. |
78 |
|
- update verification experiments lab_sea. |
79 |
|
- change some comments in S/R seaice_calc_viscosities |
80 |
|
o model/src: |
81 |
|
- if staggerTimeStep=T, always apply exchange to velocity field in |
82 |
|
do_stagger_fields_exchanges.F instead of in do_fields_blocking_exchanges.F |
83 |
|
(independent of using multi-dim advection or not); no effect on FWD run |
84 |
|
but affects AD results (at machine truncation level): update output of |
85 |
|
experiment 1D_ocean_ice_column (ad: 12 digits), hs94.1x64x5 (ad,oad: 13.d) |
86 |
|
and isomip (oad: 12.d). |
87 |
|
o pkg/generic_advdiff: |
88 |
|
- stop if doAB_onGtGs is set to FALSE but ignored |
89 |
|
- refine warning related to stability of tracer time-stepping |
90 |
|
regarding internal wave dynamics. |
91 |
|
- setting of AdamsBashforth_T,S when doAB_onGtGs=F: remove condition |
92 |
|
on staggerTimeStep & implicitIntGravWave (will now get a warning |
93 |
|
if potentially unstable). |
94 |
|
o pkg/kl10: |
95 |
|
- add new pkg "kl10" for mixing due to internal wave breaking, from |
96 |
|
http://www.sciencedirect.com/science/article/pii/S1463500310000144 |
97 |
|
(contribution from Jody Klymak), tested in verification experiment |
98 |
|
verification/internal_wave/input.kl10/ |
99 |
|
o isomip experiment: |
100 |
|
- test pkg/shelfice with Non-Lin Free-Surf in one of the FWD set-up |
101 |
|
(input.htd) and update the output. |
102 |
|
o cd_code experiments: |
103 |
|
- use default cd_code options (#undef CD_CODE_NO_AB_MOMENTUM & |
104 |
|
#undef CD_CODE_NO_AB_CORIOLIS) in experiments: cfc_example (fwd) |
105 |
|
global_ocean.90x40x15 (ad & oad) and OpenAD (ad & oad) and |
106 |
|
update the corresponding output. |
107 |
|
o pkg/seaice: |
108 |
|
- reduce the number of include files and store directives in |
109 |
|
S/R seaice_lsr_tridiagu/v |
110 |
|
- change the order of loops in one case in S/R seaice_lsr_tridiagv |
111 |
|
(only for SEAICE_VECTORIZE_LSR_ZEBRA defined), which allows me to |
112 |
|
get rid off one store directive (a TAF bug?) |
113 |
|
- add one more instance of ifdef SEAICE_VECTORIZE_LSR_ZEBRA in |
114 |
|
S/R seaice_lsr_tridiagv to change the loop range for consistency |
115 |
|
- remove ilcall, m from parameter list of S/R seaice_lsr_tridiagu/v |
116 |
|
- fix a bug that affects the JFNK solver: replace sNx/y by i/jMax in |
117 |
|
S/R seaice_lsr_tridiagu/v (requires update of |
118 |
|
offline_exf_seaice/input.dyn_jfnk) |
119 |
|
|
120 |
|
checkpoint65a (2014/07/27) |
121 |
|
o model/src: |
122 |
|
- Non-Lin Free-Surf in p/z coords: allows hFacW,S to be larger than |
123 |
|
surrounding hFacC=1 @ edge of a step with different kSurfC on either side |
124 |
|
(topo in p-coords, ice-shelf in z-coords); update output of experiments |
125 |
|
tutorial_global_oce_in_p and isomip (both AD and OpenAD output). |
126 |
|
o model/src: |
127 |
|
- collect momentum forcing tendency into local 2-D array (passed as argument |
128 |
|
to apply_forcing S/R); this simplifies mom. Forcing diagnostics and CD_CODE |
129 |
|
parts in timestep.F (without CD_CODE_NO_AB_MOMENTUM defined = the default); |
130 |
|
affects results at machine truncation level (e.g., if using OBCS_SPONGE). |
131 |
|
- collect T & S forcing tendency into local 2-D array (passed as argument to |
132 |
|
apply_forcing S/R); add 3-D diagnostics for temp & salt forcing tendency. |
133 |
|
affects results at machine truncation level (e.g., ocean: if using |
134 |
|
SHORTWAVE_HEATING and atmos:, if using FrictionHeating or (atm_Rq<>0) |
135 |
|
moist correction due to vertical advection). |
136 |
|
- update output of experiments: fizhi-cs-32x32x40 (13 digits), |
137 |
|
global_ocean.cs32x15 (fwd: icedyn, seaice, thsice, all 3 @ 11d; adm & tml: |
138 |
|
seaice_dynmix & thsice, fwd grd @ 3 & 8), hs94.1x64x5 (ad grd @ 13), |
139 |
|
obcs_ctrl (ad & fwd grd @ 12 & 7). |
140 |
|
o pkg/ptracers & diagnostics: |
141 |
|
- use ptracers (short) name (instead of long one) to make ptracers diagnostics |
142 |
|
title (to avoid some unexpected truncation); sort out ptracers diags units. |
143 |
|
- collect ptracer forcing tendency into local 2-D array (passed as argument |
144 |
|
to apply_forcing S/R); add 3-D diagnostics for ptracers forcing tendency. |
145 |
|
|
146 |
|
checkpoint65 (2014/07/18) |
147 |
|
o pkg/fizhi: |
148 |
|
- add parenthesis around fizhi tendencies in fizhi_tendency_apply.F: this |
149 |
|
affects results at machine truncation level. Update output of experiments |
150 |
|
fizhi-cs-32x32x40 (12 digits for cg2d) & fizhi-cs-aqualev20 (13 digits). |
151 |
o pkg/seaice: more clean up |
o pkg/seaice: more clean up |
152 |
- rename TAF common block tapes to be more consistent and remove |
- rename TAF common block tapes to be more consistent and remove |
153 |
unnecessary duplicates |
unnecessary duplicates |
154 |
- add store directives to remove more recomputations, |
- add store directives to remove more recomputations, but use smaller |
155 |
but use smaller tapes (and adjust keys) when |
tapes (and adjust keys) when SEAICE_LSR_ADJOINT_ITER is undefined. |
156 |
SEAICE_LSR_ADJOINT_ITER is undefined. The idea behind this flag is |
The idea behind this flag is to reduce the memory footprint when the |
157 |
to reduce the memory footprint when the adjoint of the LSR is not |
adjoint of the LSR is not required. As of now, defining the flag |
158 |
required. As of now, defining the flag SEAICE_LSR_ADJOINT_ITER |
SEAICE_LSR_ADJOINT_ITER increases 4 common block tapes for 2D field by |
159 |
increase 4 common block tapes for 2D field by a factor of |
a factor of SOLV_MAX_FIXED (=500 by default in SEAICE_SIZE.h). |
160 |
SOLV_MAX_FIXED (=500 by default in SEAICE_SIZE.h). For experiment |
For experiment offline_exf_seaice, this means on a linux box with gfortran |
161 |
offline_exf_seaice, this means on a linux box with gfortran nearly |
nearly a factor of 10 (but keep in mind there is mostly seaice code in |
162 |
a factor of 10 (but keep in mind there is mostly seaice code |
this experiment): |
|
in this experiment) |
|
163 |
> size mitgcmuv_ad |
> size mitgcmuv_ad |
164 |
text data bss dec hex |
text data bss dec hex |
165 |
5100659 1216 220458952 225560827 d71c8fb |
5100659 1216 220458952 225560827 d71c8fb |
166 |
5339425 1200 1868783272 1874123897 6fb4dc79 (SEAICE_LSR_ADJOINT_ITER) |
5339425 1200 1868783272 1874123897 6fb4dc79 (SEAICE_LSR_ADJOINT_ITER) |
167 |
but only a moderate increase of 36% for global_ocean.cs32x15 |
but only a moderate increase of 36% for global_ocean.cs32x15: |
168 |
text data bss dec hex |
text data bss dec hex |
169 |
6695027 1648 1014578664 1021275339 3cdf6ccb |
6695027 1648 1014578664 1021275339 3cdf6ccb |
170 |
6695203 1648 1382505320 1389202171 52cd8afb (SEAICE_LSR_ADJOINT_ITER) |
6695203 1648 1382505320 1389202171 52cd8afb (SEAICE_LSR_ADJOINT_ITER) |
171 |
- note: there are still recomputations in global_ocean.cs32x15 and |
- note: there are still recomputations in global_ocean.cs32x15 and |
172 |
the gradient agreement changes (gets a little worse) |
offline_exf_seaice and the gradient agreement changes (gets a |
173 |
|
little worse) for global_ocean.cs32x15 (-> update output_adm.seaice.txt) |
174 |
- in general, the AD gradients still are wrong |
- in general, the AD gradients still are wrong |
175 |
o OpenAD |
o OpenAD |
176 |
- clean up code_oad/ directories somewhat by moving files |
- clean up code_oad/ directories somewhat by moving files |