Extension Development Q&A

57 views
Skip to first unread message

Garry Sotnik

unread,
Jan 28, 2017, 11:13:42 AM1/28/17
to LANDIS-II Developers
I reviewed the "LANDIS-II Model v6.0 Conceptual Description" and the "LANDIS-II Base Wind v2.1 Extension User Guide" and have the below questions.

The following questions are based off of the "LANDIS-II Model v6.0 Conceptual Description" document. FYI: lettering in section "5.2 Stages" of the doc is off (they start with d instead of a).
  1. Have prototype utilize LANDIS-II's random number generator.
    1. Where can programmer find LANDIS-II's random number generator?
    2. Where can programmer find an applicable example in which an extension uses LANDIS-II's random number generator?
  2. Have prototype use LANDIS-II's (succession) time step.
    1. Where can programmer find LANDIS-II's time step?
    2. Where can programmer find an applicable example in which an extension uses LANDIS-II's time step, but operates on its own individual time step?
    3. The prototype has more than one actor type, with each potentially operating on a different time step.
      1. Is it possible to have processes in an extension operate at different time steps?
      2. Are there any examples?
  3. Replace prototype's temporary landscape with LANDIS-II, i.e., have prototype read sites in LANDIS-II instead of sites in temporary landscape. A site in LANDIS-II may include one or more cohort, which is a group of trees of the same species and in the same age class. Cohorts on sites may vary in species and age class.
    1. Where can programmer find an applicable example in which an extension is calibratable to focus on a subset of LANDIS-II's sites?
    2. Where can programmer find an applicable example in which an extension focuses on different sites during different iterations?
    3. Where can programmer find an applicable example in which an extension gathers information from a subset of sites?
    4. The prototype consists of numerous actors, with each potentially needing to focus on a different subset of sites. Are there any applicable examples in which an extension has more than one entity focusing on a unique subset of sites?
  4. Have prototype use LANDIS-II's tree species parameters.
    1. Where can programmer find LANDIS-II's tree species parameters?
    2. Where can programmer find an applicable example in which an extension uses LANDIS-II's tree species parameters?
  5. Have prototype use a site's shade level parameter.
    1. Where can programmer find a site's shade level parameters?
    2. Where can programmer find an applicable example in which an extension uses a site's shade level parameters?
  6. Have prototype use LANDIS-II's land type parameters.
    1. Where can programmer find LANDIS-II's land type parameters?
    2. Where can programmer find an applicable example in which an extension uses LANDIS-II's land type parameters?
  7. Succession time step vs. disturbance time step.
    1. Is it possible, during a specific time step, for the prototype to read LANDIS-II data, analyze it, potentially run some other internal processes that don't influence the landscape, and still have the time step be considered a succession time step, as opposed to a disturbance time step? Put differently, does activation of a (disturbance) extension automatically imply that the time step is of the disturbance category?
      1. Are there any examples of this?
  8. Stages:
    1. Determine which forest sites are to be disturbed.
      1. Most of the prototype's actor-specific processes (anticipated learning, counterfactual thinking, inductive reasoning, social learning, and heuristic selection) take place during this stage.
      2. How and in which form is the data relevant for determining this made available to extension?
      3. Can stage one take place, but stage two skipped if it is determined that no sites should be disturbed?
    2. Modify the selected sites. This is aligned to the prototype's taking-action process.
      1. Where can programmer find an applicable example in which an extension modifies sites?
    3. Do cohort ageing and mortality at the disturbed sites.
      1. Where can programmer find an applicable example in which an extension does cohort ageing and mortality?
    4. Compute shade for the disturbed sites.
      1. Where can programmer find an applicable example in which an extension computes shade?
    5. Do cohort reproduction.
      1. Where can programmer find an applicable example in which an extension does cohort reproduction in the appropriate form?
The following questions are based off of the "LANDIS-II Base Wind v2.1 Extension User Guide" document. 
  1. Output files:
    1. What form is the map? Is it a matrix, aligned with the one representing the landscape?
    2. Should we use a similar approach to coding the matrix, with 0 in the cell/site not under forest management, 1 in the cell/site under forest management but not disturbed during current iteration, 2 for one type of forest management, 3 for another type, and so on?

Robert Scheller

unread,
Jan 28, 2017, 1:05:35 PM1/28/17
to LANDIS-II Developers
Garry,

Excellent questions!  My best answers in bold below.

1.    
1. Have prototype utilize L's random number generator.

1.     Where can programmer find L's random number generator?  It is built into the Core.  PlugIn.ModelCore.BetaDistribution for example.

2.     Where can programmer find an applicable example in which an extension uses L's random number generator?  Every disturbance extension uses a random number generator of some sort. Look for NextDouble(), for example: PlugIn.ModelCore.LognormalDistribution.NextDouble(); 

2.     Have prototype use L's (succession) time step.

1.     Where can programmer find L's time step?  A disturbance extension does not have access to the succession extension time step.  They are independent.  The overall model operates on an annual time step.

2.     Where can programmer find an applicable example in which an extension uses L's time step, but operates on its own individual time step?  Every extension operates on its own time step.

3.     The prototype has more than one actor type, with each potentially operating on a different time step.

1.     Is it possible to have processes in an extension operate at different time steps?  No.  An extension has to be on a single time step.  One could, I suppose, set the extension time step to 1 (annual) and then allow some processes to only operate select time steps (every other = 1 / 2 years).

2.     Are there any examples?  No one has done this yet to my knowledge.

3.     Replace prototype's temporary landscape with L, i.e., have prototype read sites in L instead of sites in temporary landscape. A site in L may include one or more cohort, which is a group of trees of the same species and in the same age class. Cohorts on sites may vary in species and age class.

1.     Where can programmer find an applicable example in which an extension is calibratable to focus on a subset of L's sites?  I’m not sure I understand the question.  You can easily create a list of target sites.  These are typically stored as List<Site>.

2.     Where can programmer find an applicable example in which an extension focuses on different sites during different iterations?  Every disturbance extension targets select sites when it operates.

3.     Where can programmer find an applicable example in which an extension gathers information from a subset of sites?  Every disturbance extension.

4.     The prototype consists of numerous actors, with each potentially needing to focus on a different subset of sites. Are there any applicable examples in which an extension has more than one entity focusing on a unique subset of sites?  BDA is a good example.  You may have multiple insects, each targeting a different subset of sites.

4.     Have prototype use L's tree species parameters.

1.     Where can programmer find L's tree species parameters?  Base species parameters are part of the Core (Landis.Core.Species).  You can also readily add species parameters.  Look for SpeciesData.cs in any succession extension for an example.

2.     Where can programmer find an applicable example in which an extension uses L's tree species parameters?  Every extension uses them, typically as they are associated with a cohort, e.g., cohort.Species.ShadeTolerance.

5.     Have prototype use a site's shade level parameter.

1.     Where can programmer find a site's shade level parameters?  This is a required function for every succession extension.  You could also calculate it separately (it tends to be a fairly simple calculation).

2.     Where can programmer find an applicable example in which an extension uses a site's shade level parameters?  To date, only succession extensions calculate/use shade tolerance.  Probably easiest to simply duplicate the shade calculation.

6.     Have prototype use L's land type parameters.

1.     Where can programmer find L's land type parameters?  Part of the Core: Landis.Core.Ecoregions.  However, there are very few base ecoregion parameters.  Name, ID, and active/inactive.  You can readily add new ecoregion parameters.  Again, succession extensions contain the best examples in EcoregionData.cs.

2.     Where can programmer find an applicable example in which an extension uses L's land type parameters?  Every extension distinguishes between active and inactive.

7.     Succession time step vs. disturbance time step.

1.     Is it possible, during a specific time step, for the prototype to read L data, analyze it, potentially run some other internal processes that don't influence the landscape, and still have the time step be considered a succession time step, as opposed to a disturbance time step? Put differently, does activation of a (disturbance) extension automatically imply that the time step is of the disturbance category?

1.     Are there any examples of this?  Disturbances extensions each operate on their own time step.  Same with output extensions.  There is no inherent succession time step – each time step is determined by the extension and user.

8.     Stages:

1.     Determine which forest sites are to be disturbed.

1.     Most of the prototype's actor-specific processes (anticipated learning, counterfactual thinking, inductive reasoning, social learning, and heuristic selection) take place during this stage.

2.     How and in which form is the data relevant for determining this made available to extension?  What data do you need?  Cohorts are always visible.  Time-since-last-wind/fire/harvest are always visible.  Others vary depending upon whether the extension developer has ‘publicly’ shared the data.

3.     Can stage one take place, but stage two skipped if it is determined that no sites should be disturbed?  Absolutely.  Many disturbances are infrequent.

2.     Modify the selected sites. This is aligned to the prototype's taking-action process.

1.     Where can programmer find an applicable example in which an extension modifies sites?  Modify the site how?  A disturbance extension can modify the cohorts.  Otherwise, it depends on whether the site property is publicly shared AND editable.

3.     Do cohort ageing and mortality at the disturbed sites.

1.     Where can programmer find an applicable example in which an extension does cohort ageing and mortality?  This happens within the succession extension.  Disturbance extension are not allowed to perform these functions. If a site is disturbed, it is flagged for the succession extension to operate on those sites separately from its time step, i.e., the disturbed sites are handled as special cases where succession occurs until the next succession time step, when all site are synchronized.

4.     Compute shade for the disturbed sites.

1.     Where can programmer find an applicable example in which an extension computes shade?  Any succession extension.  It is required for succession.

5.     Do cohort reproduction.

1.     Where can programmer find an applicable example in which an extension does cohort reproduction in the appropriate form?  Any succession extension.  It is required for succession.

The following questions are based off of the "LANDIS-II Base Wind v2.1 Extension User Guide" document. 

1.     Output files:

1.     What form is the map? Is it a matrix, aligned with the one representing the landscape?  This process is handled by the IO library.  The data structure should not be relevant to your efforts.

2.     Should we use a similar approach to coding the matrix, with 0 in the cell/site not under forest management, 1 in the cell/site under forest management but not disturbed during current iteration, 2 for one type of forest management, 3 for another type, and so on?  We typically code:  0=inactive, 1=undisturbed, 3=one type, 4=the next, etc.

Reply all
Reply to author
Forward
0 new messages