[MITgcm-devel] smoothing package for dimensional controls

Matthew Mazloff mmazloff at ucsd.edu
Wed May 18 20:54:05 EDT 2011


Hi Gael

I don't agree that the important smoothing correlation operator of  
Weaver and Courtier 2001 requires non-dim controls.  Just let S be a  
diagonal identity matrix instead of the diagonal uncertainty and all  
is ok...the important part, that the correlation matrix B is  
represented by a diagonal matrix times a smoother (B^(0.5) = A L^(0.5)  
W^(-0.5) ) remains...or am I missing something...

Regardless, I can move the ALLOW_DIMENSIONAL_CONTROL stuff outside of  
ALLOW_SMOOTH_CORREL...but would it be ok to leave the  
smooth_correl2Dw.F the way it is....or do you object to that?  Or am I  
missing a better way to do this...

Sorry for causing trouble -- and perhaps missing something key -- I  
can call you if you want to discuss the best way to implement this

Thanks
Matt


On May 18, 2011, at 5:17 PM, Gael Forget wrote:

>
> 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
>
>
>
>
>
> <ATT00001.txt>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20110518/549b8d6f/attachment-0001.htm>


More information about the MITgcm-devel mailing list