[MITgcm-devel] smoothing package for dimensional controls
Gael Forget
gforget at MIT.EDU
Wed May 18 20:17:55 EDT 2011
Hi Matt,
I guess I was not fast enough to object, but I am not excited by what you did.
To smooth dimensional controls I would much prefer you added calls to
smooth_diff2d / 3d.F outside of the ifdef ALLOW_SMOOTH_CORREL3D/2D.
To make my reasons more clear I shall summarize the difference between the
smoothing and correlation components of pkg/smooth. I reckon I should have
documented this stuff in MITgcm-manual already, so I tried to write the
following as a draft for the MITgcm-manual.
---
The very smoothing boils down to a call to smooth_diff3d / 2d.F
which can of course happen outside of ALLOW_SMOOTH_CORREL3D/2D.
The smoothing is done by time integrating diffusion equation with diffusion coeffs
matching a smoothing spatial scale (typically specified through data.smooth).
The covariance construct of Weaver and Courtier 2001 (se their Eq.52&15)
is more elaborate than that. In matrix form, it reads as
dx = S B^(0.5) du
where dx is the dimensional control vector adjustment,
du is the nondimensional one, S is the diagonal uncertainty
matrix (i.e. the scaling factor), and B is the correlation matrix
B^(0.5) = A L^(0.5) W^(-0.5)
where W is the diagonal matrix of grid cell volumes, L is the smoother,
and A is the diagonal normalization matrix. A must be computed
so that B=B^(T.5) B^(0.5) has ones on the diagonal. Hence
B does qualify as a correlation matrix, and B^(T.5) S^(2) B^(0.5) does
qualify as a covariance matrix. This is what is done within ifdef
ALLOW_SMOOTH_CORREL3D / 2D (assuming I did not put bugs or typos).
---
So, coming back to your checkin, Matt, I would rather not have CPP brackets
within ALLOW_SMOOTH_CORREL3D / 2D that would break this defining property of B.
Such as adding S^(-1) on the r.h.s. of B^(0.5) …
Outside of ALLOW_SMOOTH_CORREL3D / 2D such self-consistency does not
matter much, and there is a number of preconditioner options (combinations of
ALLOW_NONDIMENSIONAL_CONTROL_IO, CTRL_PACK_PRECISE,
CTRL_DELZNORM, CTRL_SMOOTH, etc?).
My guess is that adding some smooth_diffXd.F to that mix would fit your usage. Would it?
Cheers,
Gael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20110518/eeb5dbd0/attachment.htm>
More information about the MITgcm-devel
mailing list