GreenLab Course
Development
Implicit and Explicit Structure construction
In computation terms, structure construction is a costly operation, since it requires multiple axes of development copies and instantiations.
If plant 3D structure representation is not required, these rewrittings can be skipped, storing the number of organs in tables (matrices). This fast construction is called the matrix mode.
If not, axis of development state lists are effectively copied. By building a tree graph those nodes stand for a state. This construction is called the list mode.
Structure Matrix mode

Axes of developments state lists defines the patterns on which the structure is built.
 The organ nature o
Leaves, roots, internodes, female, male fruits, etc.
However, since the number of organ types is limited and the typology quite constant, separate tables may be used.
In the following, index o is omitted  The physiological age φ
as defined from architectural botany, the physiological age φ (in practice limited to 5) is the most representative index  The ontogenetical age a
defined from the bud age since axis appearance (set to 1), expressed in growth cycles  A random identifier r
specifying an identifier r = 1, Nrep_{φ} when stochastic modelling and simulation are chosen.
Building a tree structure thus means defining paths in these axes from state to state within the same axis (axis development) or jumping to another axis (branching).
In a word, the structure matrix mode stores the number of visits of a given state.
The structure matrix mode encodes the plant structure as a multidimensional table, indexed by:
Given such tables, organ cohort series can easily be retrieved from single additions.
The complexity of the encoding is linear in growth cycles, making it really efficient.
Building the structure in matrix mode
Building the structure means updating the matrix for consecutive growth cycles

After a new growth cycle, the functional model requires structural changes to be defined:
 the number of functional source organs at their different ages(the number of fonctional leaves),
 the number of functional sink organs at their different ages (in order to evaluate the plant demand).
We assume that the current growth cycle is i.
Let us consider organs / phytomers / axes of physiological age φ borne at cycle a living at cycle i and write their number M(φ,a,i) (assumed to be known at cycle i)
At cycle i+1 all cells are initialized to 0 ( M(*,*,i+1) = 0 )
Let's evaluate the new number of organs / phytomers / axes at the next cycle i+1 in the determinate case (not stochastic).
We have seen that structure development occurs from the apical bud (leading to new phytomer occurrences on the current axis) and from axillaries (branching process).
Axis development

A new phytomer appears on the axis if Axd_{φ}(i+1) > 0.
Such will be the case of all axes borne at ontological case a and of physiological age φ
We then have:
M(φ,a,i+1) = M(φ,a,i+1) + M(φa,i) (M(φ,a,i+1) was initially set to 0)
Branching

Let us now consider the case of a branching (or a transition), with m axillary buds of physiological age φ2
Note that :
 with our list encoding φ2 is given by Axd(φ,i)
 we may have partial or total reiteration with φ = φ2.
In the branching process a new axis appears, borne at age i+1. We thus have:
M(φ2,i+1,i+1) = M(φ2,i+1,i+1) + m . M(φ, a, i)
At this point, a loop must be performed on all ontogenetic ages, since development and branching may occur for each of them.
This recursive definition is in fact one implementation of the recursive substructure construction, as defined previously (see here).
The stochastic case is derived straightforwardly from the deterministic case, using the stochastic axes of development for each random identifier.
In more detail, mattrix mode cell filling must be filtered by the corresponding organ properties:
 the appropriate number of organs per phytomer
 filter organ occurrence in respect of a minimal ontogenetic age if required
 filter organ occurrence according to its lifespan (*)
 limit reiteration development if the maximal order is reached
(*) Self pruning is not always a good idea to be implemented at this stage:
it is better to check if the organ is still a biomass producer/consumer when estimating production.
By doing so, the encoding allows the matrix to be revisited at past growing stage cycles.