5.1.6 Further Development Of The Array Version
Because of their identical structures, it is possible to build an integrated model which replicates the behaviour of the SAPLINGS, SMALL TREES and MEDIUM TREES modules. This is achieved by creating a large array (1×152). Each of the 152 elements represents one quarter of a year. There are 48 for saplings, 52 for small trees and 52 for medium trees. The module for harvestable trees is retained without change. The model integrating functionality of the three modules (SAPLINGS, SMALL TREES and MEDIUM TREES) is shown in Figure 5-20.
Key variables for the model Figure 5-20 are shown in Table 5-15.
This integrated model performs the same as the separate modules for SAPLINGS, SMALL TREES, MEDIUM TREES and HARVESTABLE TREES. This is readily confirmed by checking the following numbers and comparing with the corresponding results in the earlier modules:
- trees planted,
- saplings,
- small trees,
- medium trees,
- trees culled, and
- trees becoming harvestable.

Table 5-15. Key Variables in SMALL TREES-ARRAY Module—1-Qtr Timestep at Figure 5-20
Variable | Definition | Comment |
|---|---|---|
Initial Small Trees- Array | 0 | Array Dimensions: 1..152 All 152 values, corresponding to each quarter of each of the 38 years of growing trees, are set to zero. |
TREES-ARRAY | FOR (i = 1..152 |'Initial Trees—Array'[i]) | Array Dimensions: 1..152 |
Plantings Array | 50000/4*RANDOM(0.85, 1.00, 0.36)*1<<trees/qtr>> | Array Dimensions: 1..1 |
Losing Trees-Array | FOR (i = 1..152 | 'TREES-ARRAY'[i]/1<<qtr>>*'Culling Trees'[i]) | Array Dimensions: 1..152 |
Culling Saplings-Array | {0.25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} | Array Dimensions: 1..48 |
Culling Small-Array | {0.33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} | Array Dimensions: 1..52 |
Culling Medium- Array | {0.33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} | Array Dimensions: 1..52 |
Culling Trees | CONCAT('Culling Saplings—Array', 'Culling Small-Array','Culling Medium-Array') | Array Dimensions: 1..152 This auxiliary variable combines each of the culling arrays into a single large array. |
Shift Ageing | FOR(i=1..151 | IF(ARRSUM('TREES-ARRAY')>=0<<trees>>,1,0) *('TREES-ARRAY'[i]-'Losing Trees-Array'[i] *1<<qtr>>)/1<<qtr>>)* IF(ARRSUM('TREES-ARRAY')>0<<trees>>,1,0) | Each timestep, the array elements of TREES are aged. That is they are shifted to the next higher position in the array. |
Becoming Harvestable-Array | FOR (i= 152..152 | 'TREES-ARRAY'[i]/1<<qtr>>) | The contents of the oldest array element are shifted out to provide input to HARVESTABLE TREES module. |
Saplings | ARRSUM('TREES-ARRAY'[1..48]) | The array elements corresponding to SAPLINGS in earlier modules are counted. |
Small Trees | ARRSUM('TREES-ARRAY'[49..100]) | The array elements corresponding to SMALL TREES in earlier modules are counted. |
Medium Trees | ARRSUM('TREES-ARRAY'[101..152]) | The array elements corresponding to MEDIUM TREES in earlier modules are counted. |
HARVESTABLE TREES | 0 | Initial value = 0 <<trees>> |
Harvesting | IF('HARVESTABLE TREES'>'Target Mature Trees', ('Target Annual Harvest'), 0<<trees/qtr>>) |
A rudimentary management flight simulator interface is created to enable managers to experiment with the target number of mature trees and the target annual harvest, whilst not exceeding the capacity of the forest. This is shown in Figure 5-21. The module for calculating the size of the forest is shown in Figure 5-22.


