[mpas-developers] COMMIT CHECK: Scratch Variables

Mark Petersen mpetersen at lanl.gov
Tue Oct 16 15:55:00 MDT 2012


Doug took a few minutes to explain this to me in person, and it sounds 
like a great addition.  It allows us to add allocatable scratch 
variables in the Registry.  This all looks good to me.

Mark

On 10/16/12 15:20, Doug Jacobsen wrote:
> Hi All,
>
> I figured I would check again to see if anyone had any 
> questions/comment on this. Otherwise I'll commit it tomorrow.
>
> Thanks,
> Doug
>
> On Thu, Oct 11, 2012 at 3:05 PM, Doug Jacobsen 
> <jacobsen.douglas at gmail.com <mailto:jacobsen.douglas at gmail.com>> wrote:
>
>     Hi All,
>
>     This is a commit check for two files which allow the addition of
>     scratch variables in mpas registry files. Just to explain how to
>     use them a bit, typical registry variable definitions look like this:
>     var persistent real    dvEdge ( nEdges ) 0 iro dvEdge mesh - -
>
>     where persistent means that the variable is allocated once on
>     initialize, persists throughout the run, and then is deallocated
>     on finalize. The proposed changes allow you to change persistent
>     to scratch, in which case the field is allocated on initialize but
>     the % array pointer is not. Then if you want to
>     allocate/deallocate space for the scratch variable in the middle
>     of the run routines are provided from mpas_grid_types.F. These
>     routines are named
>
>     mpas_allocate_scratch_field
>     and
>     mpas_deallocate_scratch_field
>
>     As a template for these routines, both look like the following.
>     mpas_allocate_scratch_field1d_integer(f, single_block_in)
>
>     where f is a pointer for a field, and single_block_in is an
>     optional logical that allows the allocation of a single block or
>     the entire block list. If single_block_in is omitted or set to be
>     false f is assumed to be the field in the header block as opposed
>     to a field pointer to any other block. The same is true for the
>     deallocate routine. The allocate and deallocate routines only work
>     on scratch variables with at least 1d (no 0d integers or reals).
>
>     Some restrictions apply to scratch variables.
>     1) Scratch variables cannot exists within a super array. IE. No
>     scratch tracers/scalars.
>     2) Currently, registry doesn't allow single variable types. IE. if
>     you create a new type called scratch (domain % blocklist %
>     scratch) it has to have more than one variable.
>
>     This change is needed to explore some of the OpenMP, and hopefully
>     at a later time 2) in the restrictions list will get fixed.
>
>     Please let me know if anyone has questions or comments. If not
>     I'll probably commit it next wednesday.
>
>     Thanks,
>     Doug
>
>
>
>
> _______________________________________________
> mpas-developers mailing list
> mpas-developers at mailman.ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/mpas-developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/mpas-developers/attachments/20121016/9ea151c1/attachment.html 


More information about the mpas-developers mailing list