1 / 13

Changes to state, tend, and ptend in cam5_2_09

Changes to state, tend, and ptend in cam5_2_09. Cheryl Craig January 31, 2013. Rationale for changes. A number of groups would like to use sub-columns within the CAM grid columns infrastructure changes to CAM are required to allow flexibility for sub-columns

mala
Download Presentation

Changes to state, tend, and ptend in cam5_2_09

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Changes to state, tend, and ptend in cam5_2_09 Cheryl Craig January 31, 2013

  2. Rationale for changes • A number of groups would like to use sub-columns within the CAM grid columns • infrastructure changes to CAM are required to allow flexibility for sub-columns • cam5_2_09 contains infrastructure changes – will affect all CAM developers • Implementations of sub-columns – still to come

  3. Infrastructure changes • Statically sized state, tend, and ptend did not allow for sub-columns • state, tend, and ptend now contain fields which are allocated (no longer hardwired to be dimensioned by pcols) • routines to allocate state, tend and ptend fields have been introduced • added additional fields to these structures

  4. I don’t care about sub-columns in my physics module – what do I need to do? • All changes have been made in trunk code • For your branches/new development: • pcols/ncols – no need to change how you use them – no need to use the additional parameters in state • local copies of state, tend and ptend will need to be allocated/deallocated by you – more on this later • physics_ptend_init has changed its parameter list – more on this later

  5. I want to use sub-columns now – what should I do? • cam5_2_09 is just changes to infrastructure • Implementing sub-columns is still a work-in-progress – not yet ready • Steve Goldhaber and I will be working on three different implementations utilizing sub-columns – we are working out the details now • Let us know you are interested – we would like to meet with you and make sure our design fits your needs

  6. State/tend/ptend allocates • Fields inside structures no longer statically dimensioned to pcols– must now be allocated • Global state and tend are already allocated for you • For local copies – routines which allocate: • physics_state_alloc, physics_tend_alloc, physics_ptend_alloc– perform the actual allocates • physics_state_copy, physics_ptend_copy - allocate arrays inside structure and then copy all components • physics_ptend_init– allocates arrays specified and then resets all variables (more details next slide) • physics_ptend_sum – allocates fields which might not have been already allocated if needed for summing • Deallocate local copies with physics_state_dealloc and physics_tend_dealloc • ptend is automatically deallocated at end of physics_update)

  7. New variables to support sub-columns

  8. SUB-COLUMN sub-columns ppgrid_parameters state_variables (each column is a grid location) X = sub-columns Loops over 1 to ncol do not change NO SUB-COLUMN Loops over 1 to ncol do not change

  9. CAM column variables ppgridglobals • pcols – max # grid columns • psubcols – max # sub-columns/grid column state • psetcols – max # columns set (pcols*psubcols) or pcols – replacement for static pcols • ngrdcol= # active grid columns • nsubcol(pcols) - # active sub-columns/grid column • ncol - # active columns (sum of nsubcol) – meaning changes subtly • indcol(pcols*psubcols) – indices for mapping from sub-columns to grid columns tend and ptend • psetcols- max # columns set (pcols*psubcols) or pcols

  10. physics_ptend_init • physics_ptend_init(ptend, psetcols, name, ls, lu, lv,lq(:)): • Now has new mandatory arguments: • psetcols - dimension of state variables (usually supply state%psetcols) • name of ptend– name is now required instead of setting later • Optional arguments: • ls,lu, lv and lq(:) – logicals • set the ptend flags • allocates appropriate data fields if true • lq is allocated to full lq(pcnst) even if only one element is true – individual lq(:) fields control use as usual • Note ls,lq,lu and lv need to be set before calling physics_ptend_init (not as the last thing before exiting modules as was done sometimes before)

  11. Variable summary • pcols is still maximum number of grid columns • state%ncol is still the number of columns to loop over, but may be larger than pcols if using sub-columns • psubcols is the maximum number of sub-columns • state%psetcols is the maximum number of total columns • state%ngrdcols is the number of active grid columns (old definition of ncol) – used when mapping between grid and sub-columns

  12. Summary of changes • state%psetcols and state%ncol: the generic way to refer to maximum number of columns whether using grid columns or sub-columns • global variables pcols and state%ncol: will only work with grid columns, but can still be used • if want your own copy of state/tend or ptend, allocation needs to be done before you can use these structures

  13. sub-columns constituents_parameter state_variables pcols = 6 psubcols = 4 psetcols = 24 indcol(24) = (1,1,2,3,3,3,4,5,0,…) ngrdcol = 5 nsubcol(6) = (2,1,3,1,1,0) ncol= 8 (each column is a grid location) X = sub-columns pcols = 6 psubcols = 1 psetcols = 6 indcol(6) = (1,2,3,4,5,0) ngrdcol = 5 nsubcol(6) = (1,1,1,1,1,0) ncol= 5

More Related