Hi,

I originally composed this message in response to Todd's query about CVMix and its one-dimensional nature.  But the topic may evolve into a thread on its own, so I thought to start a separate one.

So, should CMVix be one-dimensional, or should it have horizontal information and do some horizontal operations?  

Ideally, I believe it should be one-dimensional, much as I (perhaps naively) presume occurs in the atmospheric community.  

However, Gokhan raised a concern that I share.  The concern relates to KPP and the calculation of the boundary layer thickness, but it may be more general.  Namely, it is a common feature of KPP, and others such as Mellor-Yamada, that boundary layer parameterization properties (e.g., bl thickness, diffusivities) can be quite noisy when computed as completely independent columns.  There are too many "threshold" pieces to these calculations that can lead individual columns to split apart.  Some means for coupling the properties seems to be needed.   ROMS has this problem on the C-grid with KPP, POP and MOM do as well on the B-grid.  I presume MPAS will too.  

There are many reasons noise can creep into the boundary layer parameterizations, and I know of no robust method to eliminate it from quasi-first principle numerical methods.

So a very common practice is to perform a horizontal smoothing operation on certain boundary layer fields. For KPP, the primary boundary layer field is the boundary layer thickness, h.  This thickness is used for calculating diffusivities and non-local transport.  Noise in h can be large enough to produce noise in prognostic fields.  

The smoothing of h can occur as a 5-point or 9-point Laplacian, and it is sometimes iterated >1 times.  So the horizontal stencil is potentially quite large, with the need for data transfer across processor boundaries.  Performing this horizontal smoothing in CVMix will break the aim of having CVMix be solely column-codes.  It will also be quite impractical, since we each do halo updates using different software.  

I see two potential avenues to address this issue.  There may be more.

1/ For the KPP example, we compute the h field then pass back to MOM, MPAS, POP for smoothing, and then input the smoothed h for further calculations.  

2/ We compute the new value of h within a particular call to the CMVix-KPP module, and we send this unsmoothed h back to the calling model.  But for computing the KPP diffusivities and non-local term computed within CVMix, we use the previous time step value h, with this earlier h having been smoothed by the calling model.  

Steve 

  • No labels

2 Comments

  1. Yes, this could be a problem. Thanks for bringing it up.

    Regardless of whether or not CVMix works on one or multiple columns, I think that we should attempt to find a design that requires no horizontal operations within CVMix.

    Building off of Steve's 1/ and 2/. I think that we would set it up so that if BLT is passed in, then it is used for the calculations of diffusivities and non-local term. (I would envision a vmix configuration option that allows the computation of diffusivities and non-local terms based on a user-supplied BLT.) In this way, a model could choose to time-lag BLT (i.e. saves BLT at time step n, maybe smooths it, then passes it back into vmix at time step n+1). Alternatively, a model could choose to call vmix without passing BLT, then smooth the intent(out) BLT, then passes the smoothed BLT back into vmix. While the second option appears to be a brute force solution, I think that a careful design might allow us to not redo calculations. In that, in addition to the standard use case of vmix, we provide a way to call into vmix and have it only compute BLT and return.

    1. I agree with Todd.

      I think it's going to be difficult to implement any horizontal operation in CVMix and have it remain model indifferent, or lightweight in terms of memory that needs to be passed into it. I would think it makes more sense to suggest to model developers that they smooth the fields prior to sending them in, if they are worried about noise. Since CVMix can't make any assumptions about how data is laid out horizontally.

      Also, the stencil for smoothing would be different for the different models. As you describe a 5 point stencil within POP or MOM, for MPAS it could be a 5, 6, 7, 8, or 9 point stencil just using one layer of cells.