Nitty-gritty Issues
Rotated Domain
- Check velocities. Do we write true zonal/meridional velocities
or those aligned with grid? This has implications for assimilation and
verification.
Double Sigma
- Consider redesigning the double sigma system to reduce "kinks"
in the model levels.
- Old paradigm was two flat interfaces over shelf & deep water,
smoothly joined. This fails for 2 reasons
- In practice, the upper flat level was being forced much
above sea-level to get smooth levels.
- Once we started "going ashore", the only possible
shelf flat surface was being pushed to the surface.
- New paradigm is a flat interface over deep water, a "sigma"
interface over the shallower regions with a smooth joining. The proposed
family of interface curves is:
f(x,y) = zconst + ½{hfn(x,y) + [
hfn2n(x,y) + (2 foff)2n
]1/(2n)}
where
hfn(x,y) = sigfn[h(x,y)]*h(x,y) -
zconst,
sigfn[h(x,y)] =
{ [h(x,y)-hrfsh]*sigdp +
[hrfdp-h(x,y)]*sigsh }
/ (hrfdp-hrfsh)
- zconst is the depth (m) of the flat
interface over deep topography
- hrfdp is the deep reference depth (m) where
the interface switches from "sigma" to flat
- foff is the vertical offset (m) of the curve from the
sharp join.
- n is the "order" of the interface
- sigsh is the desired "sigma" value of the
interface over shallow water.
- hrfsh is the shallow reference depth (m) at
which sigfn[h(x,y)] = sigsh
- sigdp = zconst/hrfdp
- An alternative approach (inspired by comment from HGA). One of the
proposed updates in GRIDS is to remove all knowledge of the definition
of the vertical grids from PE_initial and PE. This would just
require the passing of 3D thickness fields. In this regime, it would be
easy to introduce new paradigms for the vertical levels. One such:
- Abandon an analytic formulation. Define each column
"independently"
- Set limits for the thicknesses of each level (or selected ones)
- Use even spacing over regions shallow enough that the constraints are
trivially satisfied.
- Freeze the levels that reach their constraints. Impose a rule for
distributing the remaining levels.
- Example:
- 20 vertical levels. First 7 can be no more than 1 meter thick.
Impose even sigma spacing below. Result: 20 evenly spaced levels
over topography 20m or less. 7 flat levels over 13 evenly spaced sigma
levels over deeper topography.
- 20 vertical levels. First level can be no more than 2 meter thick.
Geometric spacing (with bottom folding) below. Result: 20 evenly spaced
levels over topography 40m or less. Over each remaining grid point, the
polynomial problem is solved to obtain the lower 19 levels.
More General Domain
- Look into bringing unstructured grids into HOPS. Consider the
following
example.
netCDF issues
- make sure all netCDF files and units follow some standard convention
- convert to netCDF 3.3, it supposedly has faster access than
netCDF 2.x
- look through the routines in the mexCDF directories
(mods,distribution). Identify those pieces involved in getcdf.
Extract them for the distribution, include them in the toolbox.
GNUmake issues
- The directory paths (especially BINDIR) must be free of
extraneous blanks. Look into stripping.
Bring the "system" up to date
- simplify tracking of compatible components
- Kill the hexadecimal format. Not only is it not generally
supported, but the z descriptor is non-standard FORTRAN.
- Consider moving all codes to V-grid based horizontal grid. (why?)
- bring all components (FM, EVA, QG) we claim in system,
fully in system
- establish tests and make them part of distribution
- make various operational tools part of release
- Wayne's cast plotting
- Larry's 1D bio-model
- cat_nctime (unless netCDF new tools
can replace this)
- peout2in (needs to be able to handle
more tracers)
- fakenest (needs to be able to handle
more tracers)
- sample.m
- needs to be in MATLAB form until another GUI can be
found
- needs to have shifted grids enabled
- allow reading/writing of turning point data files. Use
"none" as signal to not read/write. Choose format that is
easily handed to ship's pilot.
- MATLAB 5: work on color scheme. (messages, modify-markers)
- MATLAB 4: when hitting Done or Abort,
the current method (Modify, Add or Remove)
is applied once more.
- Consider "unifying" input file format style. PE/QG
style makes it easier to "functionally group" parameters.
Improve interaction
- probably want some kind of web page,
- Use as an adjunct to E-mailings of updates
- Point to these pages.
- Point to references.
- finally create documentation
- Might also want a readme for HOPS as a whole.
- emphasize, and keep current, address for questions
- set up some kind of "electronic log-book" for easy
in-house status.
- set some standards for upgrades.
One set of thoughts on this.
FORTRAN
- make sure all code conforms to FORTRAN 77
- look into converting/copying to FORTRAN 95
- Warning: FORTRAN 95 does not retain all the
"obsolete" features of FORTRAN 77.
Solve shitty coding
- Set-up minimum standards for internal documentation
- Document all input/output variables to a routine.
Including those in common blocks. (For common block, only document
those actually used by the routine in question.)
- Document all routines/functions called by a
routine.
- Document all variables in an include file.
- get_date.F is currently unprotected from zero length
strings. (i.e. know no date info)
- lnblnk.F alters the input string. Replace with length.F.
Improve ease of tailoring
- insert a layer of "front end" routines between programs
(e.g. GRIDS) and NCAR graphics. Possible one central
location used by all HOPS codes. This would facilitate change to
different graphics package.
- How does this fit in with Carlos' request for simplifying
plotting via EZMAP?
- Perhaps do same for netCDF?
Code-by-code plans