

Faculty of Forest Sciences and Forest Ecology
PLANT MODELLING GROUP
GROGRA "README" file
========================== GROGRA 3.3 =============================
This software was developed by the Plant Modelling Group,
University of Goettingen,
Department for Ecoinformatics, Biometrics and Forest Growth,
Buesgenweg 4, 37077 Goettingen, Germany,
Tel. +49-551-399715,
email:wk((at)) informatik.uni-goettingen.de
URL: http://www.uni-forst.gwdg.de/forst/fbi/plant.html
Author: Winfried Kurth,
adaptation to XWindows environment by Dirk Lanwert,
adaptation to Windows 95 by Gustavo A. Anzola Juergenson.
< Remarks concerning the Windows version: see end of this file. >
This is a scientific software. It is allowed to copy and use it for
scientific and / or educational purposes (and, in fact, the author
encourages this use and is thankful for any feedback about it).
It m a y n o t be distributed or used for any commercial purposes
without the written permission of the author. It m a y n o t
be used for any military purposes.
=========================================================================
General Remarks:
There exist five versions of this software:
(1) one running on an IBM-compatible microcomputer (80386 or higher)
under MS-DOS (this is only a small-memory demo version),
(2) the "master version" for a Silicon Graphics workstation (Iris Indigo)
with GL graphics (this version has special graphics features not
implemented in the other versions),
(3) one for various workstations (IBM, DEC-Alpha, SUN) and for micro-
computers under Linux 7.0, with XWindows-based graphics and menues,
(4) a version running under Windows 95/98,
(5) a "text-only" version with reduced interfacing and without screen
graphics output, designed for batch jobs.
The executable file is grogra.exe for (1), grogra for the workstation
versions (2, 3), wgrogra.exe for (4), and tgrogra for (5).
The requirements for the demo version under MS-DOS (1) are:
VGA- or EGA-card (or other graphics card supported by Borland Turbo-C++),
mouse (optional), printer (optional); MS-DOS 3.3 or higher, Borland
Graphics Interface (EGAVGA.BGI or other driver software, depending on the
graphics card), and the file "lexpla.msg" containing explanation texts.
ATTENTION:
The BGI-File is expected in the subdirectory \tc\bgi,
the file lexpla.msg in the subdirectory where GROGRA is called.
The XWindows-version (3) expects a colour table file named grogra.col
and the explanation file lexpla.msg in the subdirectory where GROGRA
is called.
When the UNIX versions are installed, it has to be ensured
that the user has the right to execute the file grogra. If this is
not yet the case, the UNIX command chmod has to be applied
(see a UNIX manual for details).
The Windows 95/98 version (4) requires a file cw3230mt.dll (a dynamic
link library), a colour table file grogra.col and the explanation file
lexpla.msg in the same subdirectory as wgrogra.exe.
The text-only version (5) requires only the explanation file
lexpla.msg.
The program is partly self-explanatory and menu-driven. Consult the
explanation item in the menu "Service functions and explanations".
You can toggle the language between English (default) and German in
the same menu.
Getting started:
Usually, the first thing to do is the generation of a new structure
(first item in the main menu). The submenu items "Give all segments
explicitely" and "Turtle geometry without grammar" are included mainly
for test purposes and are not recommended to the user, because they
require lengthy data specifications by hand. Use "non-sensitive grammars"
first.
The following file formats, distinguished by the extensions of the
filenames, are used by GROGRA:
.A format for array variables used in parametric grammars
.ANA analysis output file
.ARC (SGI version only) format for the interface to AMAP
.BOL format for results about the tree bole (stem analysis),
interface to GROBOL
.CFG files "gg2hy.cfg" and "gg_tn.cfg": configuration files
controlling the transformation process for the interface to
HYDRA and for the transformation of N-values, respectively,
when the command line version of GROGRA is applied with
command line options "hy" and / or "tn"
.COL (Windows and XWindows version only) Colour table file
.DAT data files produced by GROGRA in the analysis mode and
readable by data analysis tools like SAS
.DTA (SGI version only) format for the interface to AMAP
.DTB format for the interface to AUTOCAD
.DTD format for descriptive data (of measured plants) for comparison
purposes; has nothing to do with L systems
.DTG standard format for saving generated three-dimensional structures
.GPR protocol format for data transformations for HYDRA
.INF (SGI version only) format for the interface to AMAP
.KUB format for results of structure analysis in the cubic grid
(interface to mass distribution and light extinction models)
.LIG (SGI version only) format for the interface to AMAP
.LSY ASCII file for non-sensitive grammars
(description of the syntax see menu item "Service functions and
explanations", subitems "Explanations" - "L system syntax",
or directly in the file "lexpla.msg")
.MSG messages for the explanation part of the program (ASCII file)
.PBG format for the interface to the water flow simulation
program HYDRA, developed in Goettingen by Th. Frueh
.PFA format for results of path length analysis
.RES result file "ggvalue.res": contains evaluation results when the
command line option "e" is specified (see below)
.SBG second format for the interface to the water flow simulation
program HYDRA, developed in Goettingen
.SSY ASCII file for sensitive grammars
(description of the syntax see menu item "Service functions and
explanations", subitems "Explanations" - "L system syntax",
or directly in the file "lexpla.msg")
.STR, .OLL, .TEM auxiliary files generated by GROGRA during its work
The source code files "lmethod.c" and "lmethod.h" contain functions,
methods and evaluation procedures which can partly be used by grammars
and may be changed by the user. They have to be recompiled together with
the rest of GROGRA's object files after changement, using Borland's
Turbo-C++ 3.0 or higher, mode 'huge', or the "cc" compiler under Unix.
Grammar example files:
COLTEST.LSY a colour test example, producing a vertical bar with
all 16 standard colours according to the file
grogra.col (Windows and XWindows version) - use this
example to calibrate the colours for your machine
by changing grogra.col
KOCH.LSY )
DRAGON.LSY ) simple test examples without branching
GOSPER.LSY )
PRH32a.LSY )
PRH32b.LSY ) simple examples with branching
LAMBDA.LSY )
UHR.LSY )
PRUS.LSY example of a flower from Prusinkiewicz and Lindenmayer
1990 (slightly modified), 4-6 steps
EXAMP.LSY exemplary plant with crown, roots and root-born shoots
(reiteration from roots), 10-15 steps
GALIUM.LSY example of a realistic plant (Galium odoratum, in
German: "Waldmeister"), developing a rhizome over
several years, with annual flowering, 30-60 steps
FICHT5.LSY simulates young spruce crown (simplified), up to
about 8 steps (years)
ROOT.LSY simulates a root system, makes sense for up to about
20 steps
DICHO_N.LSY simple example of dichotomic branching, non-sensitive
(7-9 steps)
DICHO_S.SSY example for sensitivity: growth is stopped if obstacles
are present in a cone above the actual tip of shoot;
the opening angle of the cone has to be specified
by the user
(10 steps)
DICHOMUR.SSY like DICHO_S.SSY, (angle 30 degrees), with simulated wall
(11-12 steps)
COMPET2.SSY a more refined plant, also exhibiting shadow sensi-
tivity like DICHO_S.SSY, with orthotropic side
branches and needle aging (seen as color change of
stem and branches), 20-30 steps
The start word, asked for by GROGRA in the beginning, is * in every case.
(In the example COLTEST.LSY, the start word is not asked from the user.)
All example grammars besides DICHO_S, DICHOMUR and COMPET2 work in the
mode "non-sensitive growth grammar" (submenu "Generate a new structure").
For more detailed informations, consult the written documentation
entitled "Growth Grammar Interpreter GROGRA 2.4 -- A software tool
for the 3-dimensional interpretation of stochastic, sensitive growth
grammars in the context of plant modelling" and published in the
report series "Berichte des Forschungszentrums Waldoekosysteme",
Goettingen, Ser. B, Vol. 38 (1994), available from the author
or from the office of the FZW.
An appendix containing the extensions until version 2.7 (October 1996)
is published in the paper "Some new formalisms for modelling the
interactions between plant architecture, competition and carbon
allocation" (by W. Kurth), in the journal "Bayreuther Forum Oekologie",
Vol. 52 (1998), p. 53-98.
Both documentations are available as Postscript files via internet
under http://www.uni-forst.gwdg.de/forst/fbi/public.html.
A description in German language is given in W. Kurth's habilitation
thesis ("Die Simulation der Baumarchitektur mit Wachstumsgrammatiken",
Berlin 1999).
---------------------------------------------------------------------------
New features of the version 2.5,
compared to GROGRA 2.4:
- the XWindows support for the UNIX version is new;
- to leave the graphics display mode quickly, the key 'q' will
work in the same way as the key. In the XWindows-
version, the 'q'-key replaces the key in this function;
- an interface to the AMAP-"Glance"-Software of the Unit‚ de
Mod‚lisation des Plantes, CIRAD (Montpellier) was implemented
in the SGI version;
- an interpolation modus was included in the graphical part of
the SGI version. This made several extensions necessary:
- by the command line "\tsp" ( = "treat symbols as points")
in an LSY- or SSY-file, the grammar interpreter is told
to create an (invisible) zero growth unit (of length and
diameter zero) for each symbol which is not identical to
one of the standard turtle commands (normally, such symbols
are not interpreted by the turtle). These zero growth units
are used as a basis for growth in the interpolation routine.
(The interpolation works also without the zero units, but
in this case the interpolation is done between a new shoot
and its mother shoot, which is less realistic for botanical
applications.)
- In the SGI version, the user is asked whether "backward
references" have to be created before the interpretation of
a growth grammar is started. These references are pointers
connecting a growth unit at step t+1 with its predecessor
at step t, and they are used in the interpolation modus.
There are four possible answers to this questions: "n" (or
simply the return key) = "no", "y" = "yes", "e" ( = "even")
creates references only between the structures created at
time steps with even number, "o" ( = "odd") creates refe-
rences only between the structures created at time steps
with odd number. The choice depends on the interpreted
grammar (e.g. the grammar EPI1.LSY (see the manual)
requires odd interpolation).
- In the graphics mode of the SGI version, the key "s"
activates a slider which has to be placed by the mouse
(use the left mouse button to fix it on the screen) and
which enabels the control of the shown timestep by clicks
of the left mouse button when the mouse cursor is inside
the slider window. The key "i" activates the interpolation
mode (normally, "i" should be used after "s"). To have a
smooth interpolation of the growing structure, move the
mouse cursor from the left to the right end of the slider
while pressing the left mouse button.
The keys "s" and "i" work as toggles, i.e. slider and
interpolation modus can be desactivated by pressing them
again;
- two new turtle commands can be used (in LSY or SSY files):
S(n) = "save",
C(m,n) = "connect".
S(n) (n being an arbitrary integer) saves the current state of
the turtle in an internal list under the identificator n.
C(m,n) (m and n being integers which were used before in S-
commands) puts the turtle at the position which was its
position when S(m) was executed, and moves it afterwards to
the position corresponding to the state which was actual when
S(n) was executed, thereby creating a new elementary unit
between the two positions. Diameter, colour, N- and V-value are
not taken from the saved state, i.e. they can be specified before
the C(m,n)-command is executed. Length and direction vectors
(H, L, U) are calculated from the vector connecting the two
positions, the other state variables of the turtle (including
the mother shoot) are taken from the state saved by S(m).
The commands S and C are especially useful for the construction
of closed lines (polygons).
- the transformation procedure for SBG structures in the interface
to HYDRA now offers the additional possibility to specify whether
the basal node of an axis is included in the reorganisation of
branching nodes or not;
- the former file extension .DTA was replaced by .DTG (but the file
format has not changed) - eventually, old DTA-files have to be
renamed;
- a bug concerning the reading of incomplete DTG-files in 'harddisk'-
mode was removed.
- in the XWindows-version, the correspondence between the numbers
(utilized by the P command) and the colours is controlled by
a special file named grogra.col, which can be changed "by hand"
if necessary.
(The exact colour display can vary between different machines
and depends generally on the current setting of the server.)
A simple test of the colours is provided by the "t" key in
the graphics display mode of GROGRA: The right mouse button
then produces a coloured square, the middle mouse button
activates the next colour (the first colour being the last
one which was active before "t", then the colours
corresponding to 0, 1, 2 etc. are activated).
Known problems:
- When GROGRA is activated several times at once on a workstation,
there will be a confusion if the same auxiliary files
are used by different instances of GROGRA. Assure to start
GROGRA from different directories when several incarnations
of GROGRA are meant to be active at the same time.
- In the XWindows-Version, it can happen that the first page in the
graphics display is either not shown, i.e. the screen remains
black after leaving the explanatory text page preceding the
graphics, or is partially destroyed by other windows appearing
on the screen.
Press any key not having a specified function in the graphics
mode, e.g. , in this case to get the first graphics page
shown.
- In the XWindows-Version for DEC Alpha machines, the error message
in the case of a wrong utilization of the "zoom" option will
possibly not appear. Press the "e" key for re-installation of
the original scale in cases when the zoom does seemingly not
work correctly, and try once more.
*************************************************************************
Release 2.6 / 2.7
- In contradiction to the Manual, the encapsulation (nesting) of
repetition operators (&) is possible now.
In the declaration of a variable of type "index", a nesting
level can be specified like in the following example:
\var i index 0,
\var j index 1,
* # &(3) < RU20 L(i*10+3) &(2) < RU5 P(j+1) F > >
The declaration \var i index, is equivalent to \var i index 0,
and up to 20 < ... > - levels can be nested.
- The encapsulation (nesting) of rules is now possible, with the help
of the operator E ("expand"). The rule
a # E(5) < b c >,
specifies b and c to be further evaluated for 5 steps using the
current grammar in the moment when a is replaced. That means,
an arbitrary number of rewriting steps can be executed in one
developmental step. E operators can also be nested.
Index variables can be used for the E operator, analogously
to their use in connection with the & operator. Furthermore,
a variable of type "depth" can be used to specify which rules may
be used on a certain level of evaluation. E.g., in the case
\var d depth,
(d = 0) a # E(5) < b >,
b # a b,
the symbols "a" produced from b by the rule b # a b when the b
inside the E(5) < b > construction is evaluated are excluded from
transformation by the first rule during the E-evaluation, because
the depth is 1 when the second rule is applied on the b inside
the E(5) < b > construction and the application of the first rule
is restricted to level 0 (i.e. "ordinary" developmental) steps.
- For further examples on nested grammars see:
W. Kurth, Elemente einer Regelsprache zur dreidimensionalen
Modellierung des Triebwachstums von Laubbaeumen. Proceedings of
the 8th Annual Meeting of the Section for Forest Biometry and
Informatics in the DVFF, sept. 25-28 1995, Tharandt-Grillenburg
(in German).
- The semantics of the operator J has changed. Contradicting the
specification in the Manual, a J operator appearing in the r.h.s.
of a rule is executed in the moment when this rule is applied.
- The turtle commands U, U+, U*, Ul, Ul+, Ul* were introduced for the
manipulation of the current number of internodes used in the
creation of the next shoot as an attribute. The number of internodes
has no effect on the graphical display, but it is counted in the
"cubic grid analysis". The semantics of the different variants of
the U commands is analogous to the semantics of the commands
L, D, N and V (see the manual). The only difference is that the
argument is always rounded to the nearest integer.
The number of internodes has to be introduced in the list of
elementary unit variables (manual pages 81-83) as an additional
variable of type "long integer". The default value of this
variable is 0.
- Variables of type "table" can now be called in the r.h.s. of rules
alternatively with 0 parameters (like before; the actual step
number is used as argument in this case, see the manual) or with
1 parameter. The parameter specifies which number from the table
is to be taken as argument. E.g.,
\var k table 5 4 3,
* # F(k(1))
causes F to take the argument k(1) = 4. (k(0) would be 5, k(n) for
n >= 2 would be 3).
- Variables of the types "length", "diameter", "n_value", "color" and
"q_value" (Manual, p.71) are now also allowed in generative rules
(but only in sensitive grammars, then). They refer to the respective
shoot attributes of the corresponding elementary unit in the
structure just created (like "xcoordinate" etc.). Their use in
interpretative rules remains unchanged.
- A new variable type "order" (without parameter list) was introduced.
In interpretative rules, a variable of this type takes the value
of the current branching order (b on Manual page 56) calculated by
the turtle, in generative rules (of sensitive systems) it takes the
value of the branching order (b on Manual page 82-83) of the corres-
ponding elementary unit in the structure just created.
- An abbreviated call of grogra on the system level is possible now.
If the grammar file "name.lsy" is to be executed, type the command
grogra name
instead of grogra. The first menu choices will be skipped then.
If a sensitive grammar, "name.ssy", is to be executed, type
grogra name s
Several command line arguments are possible to specify certain
options. Each command line argument must be a string without
internal blanks. (If blanks shall be included in an argument,
the whole argument is to be enclosed in "...".) The first argument
must always be a filename without extension (normally, the grammar
file name to be worked with).
List of the possible command line arguments following the first
filename (here, "name" stands for a string and "17" for some
arbitrary nonnegative integer):
s sensitive mode, an ssy-file is read
d a dtd-file is read (the first command line argument must
be the name of the dtd-file (without .dtd) in this case)
h run GROGRA in harddisk mode
n17 specification of the number of steps (here, 17 steps)
and no user requests during grammar file reading
na17 like n17, but only the last developmental step is
translated into a geometrical structure ("n alone")
b create backward references
be create backward refs for even steps
bo create backward refs for odd steps
tsp treat symbols as points
w[name] use the specified start word "name" (instead of
default "*")
g[name] generate dtg file after reading & grammar evaluation,
filename "name.dtg"
ax[name] make analysis after reading & grammar evaluation.
Here, x stands for a character, corresponding to the
respective menu item in the submenu "analyze the actual
structure"
tn make a transformation of the N values (corresponding to
the transformation started from the respective submenu
under "Store or transform the actual structure"). When
this option is used, GROGRA consults the configuration
file "gg_tn.cfg" to determine the kind of transformation
to be carried out
hy start the transformation to the HYDRA format (.pbg or
.sbg or both). The configuration file "gg2hy.cfg" is
required in this case. When both "tn" and "hy" are
given in the command line, "tn" has to appear first.
A description of the file formats of the .cfg-Files
will be given in a future documentation (ask the author
if these informations are required).
e3 apply one of the evaluation functions (here: number 3)
to the finished structure (this option works only
together with the "n" option). The menu interface is
suppressed, and the numerical result of the evaluation
is written into the file "ggvalue.res". There will be two
values in this file, the first one must be a "1"
(indicating the success of the evaluation) and the second
one the result itself. The following evaluation functions
are currently available:
e1 calculates the maximal extension of the structure
in z direction (i.e., z_max - z_min),
e2 calculates the height ratio of a specified tree
to the average height of all trees,
e3 calculates the length sum of all shoots,
e4 calculates a length sum where the length of each
shoot is weighted by the z coordinate of the
shoot tip.
Of course, the normal call "grogra" without command line parameters
remains also possible.
- The start word can be read from a file. To achieve this, the input
at the start word request must be the character '#', immediately
followed by the name of the file from where the start word is to
be read. The format of the file must be that of the file
'lstri.str' produced by GROGRA. The file lstri.str from a former
GROGRA run can be renamed and used for this purpose, thus enabling
the continuation of a former developmental sequence.
When the start word is read from a file, GROGRA will first
interprete this start word ("step zero"), i.e. an interpretative
step will be carried out first, other than in the normal case
when GROGRA starts with a generative step.
- The item "change the colors" was removed from the submenu "service
functions and explanations". Instead, an item "change the treatment
of symbols" was introduced. This item acts as a toggle between
the two possibilities
* interpretation of non-predefined symbols as "none", i.e. the
turtle ignores them (this is the default status),
* interpretation as shoots of zero length, which is especially
useful for the interpolation modus on the SGI machine.
The specification "\tsp" in the declaration part of a grammar file
overrides the choice and enforces the interpretation as zero-length
shoots in any case (tsp = "treat symbols as points").
- A new "movie" modus was installed for the graphical display of the
SGI version. It is activated and inactivated by the "m" button.
The speed of the animation can be influenced by the cursor buttons
(cursor up = faster, cursor down = slower). The movie modus can be
used with or without the slider.
- In the analysis menu of the SGI version, an item "Set of height growth
curves" was added. This enables the display of height growth curves
of the simulated plants (one separate curve for each plant, the
individual plants are identified by the position of their base
shoots). The display can be left with the "escape"-button.
- Some analysis options were added. A detailed description is given
in the documentation appendix from 1996 (see above). Have a glance
at the submenu appearing when "analyze the actual structure" is
activated.
- Turtle commands A ("assignment") and K ("create local register"):
see documentation appendix (Bayreuther Forum Oekologie, see above)
for a detailed explanation.
ATTENTION:
==========
Do not use the upper-case letters A, K or any other upper-case
letters as your auxiliary symbols in grammar files! Upper-case
letters are reserved as special symbols with predefined purposes.
- The dtd syntax was extended by several symbols enabling the encoding
of branches of deciduous trees. The new symbols are:
B (with 1 integer argument) number of leaves
C (with 1 integer argument) colour index (referring to ega table)
E (with 1 integer argument) number of internodes of g.u.
F (with 1 integer argument) number of flowers or fruits of g.u.
I (with 1 integer argument) node index at the mother g.u. where
the current g.u. originates
(counted from tip of mother g.u.)
Q (with 1 integer argument) short shoot series (several short
shoots with fixed length are
specified at once)
T (with 1 integer argument) number of daughter buds
(not interpreted by grogra)
Y (with 1 integer argument) number of sleeping buds
(not interpreted by grogra)
Z (with 1 integer argument) number of dead buds
(not interpreted by grogra)
$ (without argument) enforces absolute orientation
in space (like in case 1 on p. 118
in the Manual)
D (with 1 floating point argument) diameter specification
(no longer necessarily in the form
(Dnb nb) )
. (without argument) enforces interpretation of angles
(specified by W, R and S) to be
interpreted in terms of global
directions
In case 2 (Manual p. 118), L lies now in the plane which is spanned
up by H and the l e f t direction L(m) of the mother shoot.
The colour specification can be chosen interactively by the user
before a dtd file is interpreted.
- A new .kub data format was created which allows for the transfer of
more information to the radiation model MicroEnv (formerly 3dCLIP)
than before.
This data format replaces the non-simplified .kub format described
in the Manual on page 132. (The "simplified" format remains
unchanged.)
The data files in the new .kub format for the GROGRA structures
contain the following additional informations:
- Needle surface areas per cell, separately for 4 needle age classes
(referring to needles grown in the years t, t-1, t-2 and older
needles when t is the last year simulated
[all surface values are given in mm^2 ],
- Needle numbers per cell, also separately for the 4 age classes
above,
- a direction information, given in the form of a vector obtained
as the sum of all n o r m a l vectors of shoots in the cell
under consideration (each shoot normal vector is weighted with
the shootlength). Attention: this direction information differs
from the direction vector d described in the manual (p. 132)!
The head lines of the file are the same as in the old format.
The line specifying a single cell has the following content:
mx my mz V vol a0 a1 a2 a3 n0 n1 n2 n3 dx dy dz l e
with
mx = x coordinate of cell midpoint (see old format)
V = upper case letter V (marker)
vol = sum of shoot (i.e., wood) volumes [mm^3] in the cell
a0 = sum of whole needle surface of current year (year t) needles
in the cell,
a1 = sum of whole needle surface of year t-1 needles in the cell,
a2 = sum of whole needle surface of two-years old (year t-2) needles
in the cell,
a3 = sum of whole needle surface of needles older than two years
(i.e. <= t-3)
n0 = total number of current year needles in the cell,
n1 etc. analogously,
dx = x component of sum of all shoot normal vectors in the cell
(shoot normal vector = orthogonal to direction vector of shoot),
l = sum of all shoot lengths in the cell,
e = exposition angle of the cell (cf. old format).
- Comments can be written into a grammar file in C language style, i.e.
/* comment */ .
- Three new types of random variable types are available:
\var x binomial p n, /* binomial distribution with parameters
p = probability of success,
n = number of repetitions */
\var x negbinomial p m, /* negative binomial distribution with
parameters p = prob. of success (p<1)
and m >= 0 number of successes to obtain,
x+m is the number of necessary trials */
\var x poisson v, /* Poisson distribution with parameter v */.
- By \randomseed n, (n being a positive integer,) the random number
generator of GROGRA is forced into a defined state. Repeated
execution of the same stochastic L-system will reproduce exactly
the same structure. By
\askrandomseed
an interactive specification of the random seed value by the user
is enabled.
- The command OR(n) can be used in an L-system to specify the order of
a branch explicitely (n must be an integer >= 0).
- The commands C(r) and H(r) can be used analogously to L(...), D(...)
etc. (also with modifyers l, + and *); they specify "carbon content"
and "hardwood diameter" of the next created shoot.
- A "hierarchy operator" / (normal slash, without arguments) can be used
in L-systems to distinguish entities between the elementary unit
(the unit created by "F") and the axis (e.g. growth units, annual
shoots). The analysis option "distribution analysis" makes use of
the hierarchy of entities thus defined.
The "distribution analysis" is mainly self-explanatory. Frequency
distributions are given in the form of tables. The entities
defined by the hierarchy operator are referred to as "compound
units".
****************************************************************************
Release 3.0
- It is possible to generate several structures from several start words
with the same L-system file. To this end, specifications of the form
\axiom wrd list_of_steps,
have to be given in the declaration part of the L-system file
(this is only possible in the normal (RAM) mode of operation, not
in HD mode). Here, "wrd" is a start word which should appear in one
of the rules as the left-hand side, and "list_of_steps" is a list
of strictly monotonically increasing positive integers which specify
the developmental steps of the structure obtained from applying the
grammar to "wrd" which are to be kept in memory. The list may contain
specifications like "12-17" (meaning that steps 12, 13, 14, 15, 16,
17 are to be kept), and may also contain just one single number.
Accessible via graphical display (and analysis) is only the structure
for which the start word was specified last. By
\askaxiom
an interactive specification of a start word is enforced (like in the
case when no "\axiom ..." is given in the file), and this will
generate the last structure. The other structures are accessible via
the new turtle command
O(wrd, n)
where wrd is a start word used in some "\axiom ..." specification (or
in the interactive specification) and n is an integer corresponding
to a step number occurring in the respective list of steps.
The "O" command has a similar effect as "F", but instead of a shoot,
the turtle creates a reference to the structure specified by wrd and
n. Hence, complete (sub-) structures can be inserted many times in
a structure, but need to be kept in memory only once.
In relation to the "O" command, the turtle variables "l" and "d",
normally controlling the (absolute) length and diameter of the next
shoot, have the meaning of (relative) scaling factors for the sub-
structure to be inserted. "l" acts as global scaling factor for all
lengths of the substructure, "d" is an additional factor affecting
only the directions perpendicular to the current "head" (H) direction
of the turtle.
***************************************************************************
Release 3.1
- In arithmetical expressions, the function "floor(...)" (with one
argument) can be used now. It returns the greatest integer less
than or equal to the argument.
- In the command line call of GROGRA, the additional option
p[name]
can be used. It enforces that a graphical image of a standard
view of the last generated structure is written into the file
"name.eps" in Postscript format.
- A new variant of GROGRA, named "TGROGRA" ("Text version of GROGRA")
was implemented, which doesn't use any graphical display. It can
be used when no graphical (GL or Xwindows) display is at hand,
or when the interactive interface costs unnecessary time.
Evaluation of the created structures is possible with the various
analysis options, or with the "e" option, or with the above-
mentioned "p" option in the command line.
***************************************************************************
Release 3.2
- A new analysis option for several trees, distinguished by their
colour index, and a new cubic discretization analysis format
was introduced.
The "several tree analysis" is essentially self-explanatory
by the text output of GROGRA. Note that the only item by which
individual trees are distinguished is the colour index.
If two trees of the same colour are generated, they will not
be distinguished in this analysis. (This is a "quick-and-dirty"-
solution which has to be improved in a later release.)
- The option "List the actual structure" was complemented by a
possibility to produce a binary data file with all informations
about the structure.
- An additional analysis option for population-dynamical models,
making a table of the frequencies of elementary units of all
colours for all time steps, was implemented.
- Several new methods were introduced by Veli-Pekka Ikonen (University
of Joensuu, Finland).
- A bug concerning the treatment of local register values was removed.
- By "\lasttofile" in the declaration part of an L-system file, it is
possible to enforce a switching to the Harddisk mode (for the
representation of the structure) in the last developmental step.
The previous steps are deleted.
The structure, written into the file "vlstru.tem", can be read
again by GROGRA when the new menu item "read from vlstru.tem"
is activated, or by starting GROGRA with the new command line
parameter "v" (the first parameter, specifying a file name, has
only a dummy function in this case - it should not be removed,
but it has no meaning.)
- Additional command line options were implemented:
"ga" writes only the last developmental step into a dtg file,
"r" reads a single value from the command line (the value to be
specified directly after the "r") to be used for the
variable specified with "\read" in the declaration part,
"pa", "pb", "pd" enable different views in the Postscript file
(pa = side view, pb = view from above, pd = view with
10 degree / 20 degree aspect),
"aq" starts two analysis methods: elementary analysis (for several
trees) and cube analysis (for several trees).
- The local register creation command KL(...) uses the current turtle
step length value (l) for the initialization of the new register.
- The assignment command A is also possible in the variants A+, A*,
Ar, Ar+, Ar*. A+ and A* are analogous to L+ etc., Ar uses a
reference shoot (chosen by a particular sensitive function,
number 21) instead of the nearest shoot down the structure
where normally the value of the local register is overwritten by A.
- New output options are available: PovRay input format (*.pov) and
format DXF for AutoCad (*.dxf). These interfaces can now be
accessed via a submenu under the main menu item "Store or
transform the actual structure".
***************************************************************************
Release 3.3
- A new rotation operator "RS(alpha)" was introduced into the
turtle command language (L-system syntax). It enforces a
rotation by alpha relative to the global z axis (the "S"
standing for "slope").
- In the "elementary analysis", the number of leaves and fruits
is given in extra lines if they are not 0.
- Four additional columns were added in the "pathlength analysis":
The total length of all elementary units which are distal to the
unit considered in the line, the total volume of these units
(each one assumed as cylindrical), the sum of their leaf parameters,
and the branching order of the unit under consideration.
- Four additional columns were added in the "lengths and angles"
analysis (option F): one gives the z coordinate of the endpoint
of the unit considered in the line, the other three give the
coordinates of the (normed) direction vector of the unit.
- The "Transformation" menu was extended by an item "Deletion of
colours when gu is not in a layer". The colour of a unit is
put to 0 when the z coordinate of its midpoint is situated
outside an interval which can be specified. This enables the
visualization of a specific horizontal layer of the structure.
- The "Transformation" menu was extended by the item "Normalization
of L to 1 and D to 0". This means that all lengths are 1 and
all diameters (unit variable edur) 0 afterwards.
- The "Fusion of all axes" in the "Transformation" menu melts all
subsequent elementary units which have the same branching order.
- Additional analysis options:
(n) "topological analysis": Topological parameters of the
structure are calculated. This option makes use of a
temporary copy of the structure where all subsequent
elementary units of the same order are first melted into
one axis and then split at the branching nodes.
(w) "coordinates": A table is generated with the number and
the basal x, y and z coordinate of each elementary unit
(except units with colour 0). Each such unit corresponds
to one line in the file.
(x) "axes": All subsequent elementary units of the same
branching order are melted into one axis. Afterwards, for
each axis a line is generated which contains the following
entries:
number of the axis (with prefix "a"),
branching order,
length,
basal diameter,
colour,
number of daughter axes,
average distance between these daughter axes,
standard deviation of this distance.
(z) "diameter table": For each elementary unit with 2, 3 or 4
daughter segments, a line is generated containing the
following entries:
number of the unit (with prefix "s"),
number of daughter units (2, 3 or 4),
diameter of the unit (unit variable "edur"),
diameter of the first daughter unit,
diameter of the second daughter unit,
diameter of the third daughter unit (if it exists; otherwise 0),
diameter of the fourth daughter unit ( " " ).
This analysis can be used for checking the diameter exponent
of a structure.
- The dtd format was extended by additional possible specifications
concerning leaves and fruits:
\leaflength xx, specifies a length for all leaves
(which are given by "Byy" in the dtd code),
\leafbreadth xx, specifies a diameter value for all leaves,
\leafarea xx, specifies an "N value" for all leaves
(note that this is entirely independent of
length and diameter)
\leafobject xxx.lsy yy nn,
generates an object reference to a substructure
defined by the L-system file xxx.lsy (xxx being
an arbitrary filename) using the start word
yy and nn steps of L-system application.
The file xxx.lsy must exist. Each leaf refers
afterwards to the object defined by the
L-system. In connection with \leafobject,
\leaflength and \leafbreadth specify only
relative factors (for scale and for distortion
in x and y direction, respectively). Management
of leaf objects is analogous to shared objects
defined by the "O" command in L-systems.
\fruitobject xxx.lsy yy nn,
analogous to \leafobject, but for fruits
or flowers (given by "Fyy") instead of leaves.
\phyllotaxy xxx, specifies a leaf arrangement (phyllotaxy)
for the structure to be created. xxx is one of
the keywords spiral, opposite or alternate
(default: alternate). Spiral phyllotaxy
assumes a rotation angle of 137.5 degrees
between successive leaves of the same
growth unit.
\min_intn nn, sets a minimal number of pseudo-internodes
for each leaf-bearing elementary unit.
When k leaves are present (number specified
by Bk), they are placed at the outermost k
nodes, each L/nn length units apart (L=length
of the elementary unit). \min_intn nn is
equivalent to writing "Enn" in each line
describing a leaf-bearing unit.
The line(s) beginning with \leafobject and / or \fruitobject
must stand at the beginning of the dtd file. (\leaflength,
\leafbreadth and \leafarea can also appear in the middle of
the file and will then change the dimensions of the subsequent
leaves while letting the previous ones unchanged.)
- An additional transformation option, "special diameter analysis",
can now be found under "Store or transform the actual structure /
Further, special transformations". This transformation creates
a file with filename extension ".dat" (Ascii file).
Each line of the file describes one elementary unit (shoot)
without inner branching nodes (i.e., first a transformation
into a pbg structure is done, cf. pp. 121-128 of the manual).
Column 1: Number (identifyer) of the shoot,
column 2: diameter [mm],
column 3: volume [mm^3],
column 4: leaf parameter (either dry mass [g] or area [mm^2],
depending on the used input data set),
column 5: number n of daughter shoots,
columns 5+1 to 5+n: diameter of i-th daughter shoot [mm],
i = 1, ..., n.
The order of the lines (shoots) is in depth-first mode, with
the axis-continuing shoot (shoot of same branching order) coming
in the last place among all daughter shoots. (The order of the
daughter shoot diameters in one line, however, is arbitrary.)
- Under the menu item "Store or transform the actual structure",
subitem "Further, special transformations", two additional options
have been introduced:
"Delete all leaves" and
"Differentiate leaves (petiole / blade)".
Leaves are recognized by the formal characteristic that their
"number of internodes" is -1. (The number of internodes can be
specified in L-systems by the U command. When a structure is read
from a dtd file, the specification of leaves (by B) creates them
automatically with the corresponding parameter set to -1.)
All leaves of the structure are either deleted or split into
two elementary units, one standing for the leaf petiole and the
other for the leaf blade.
- Under the menu item "Store or transform the actual structure",
subitem "Save in AMAP format", an option "MTG format" was
introduced to create a representation of GROGRA plants as
MTGs (multiple-scaled tree graphs) in the coding used by the
AMAP team at the CIRAD, see Ch. Godin, E. Costes & H. Sinoquet,
A method for describing plant architecture which integrates
topology and geometry, Ann. Bot. 84 (1999), 343-357.
***************************************************************************
Additional remarks concerning the Windows 95 version of GROGRA:
The following files should be together in one directory:
wgrogra.exe, cw3230mt.dll, grogra.col, lexpla.msg, coltest.lsy.
Start wgrogra with "a: generation of a new branching structure" /
subitem "non-sensitive growth grammar " first and load the file
"coltest.lsy" by entering its name without the extension ".lsy".
Watch the graphical appearance of the resulting vertical bar (item
"e: show the actual structure graphically"). If the bar is not
visible or has unacceptable colours (all grey or the like), either
the file "grogra.col" or the internal colour table of your machine
should be changed. The colours should (approximately) be (from bottom
to top of the bar): dark blue, green, cyan, red, magenta, brown,
light grey, dark grey, light blue, light green, light cyan, light red,
light magenta, yellow, white, white. The file grogra.col contains the
colour index values which should correspond to these colours on your
machine. (The same procedure applies to the XWindows version.)
The text output in several parts of the program depends partially
on the resolution of your screen. With a coarse screen, several
text messages of the program do not fit into one window and are
displayed in several portions, with a delay of some seconds in
between. You have to wait until a prompt "Press to continue"
(or the like) appears before you continue with the program. You can
accelerate the display by clicking with a mouse button or with some
key from the keyboard during the time when it waits. (This applies
also for the display of step numbers when an L-system is processed.)
Currently, the message handling is not done consequently in all parts
of the program. So, it can happen that text or graphics output of
GROGRA is destroyed if you shift another window above it.
When the graphical window was resized with the mouse, click the "a" key
to redraw the content in the proper proportions.
The Windows version of GROGRA is still in its test phase, and users
are encouraged to report their experiences to the authors of the
software.
---------------------------------------------------------------------------
Please, tell the author any errors, strange behaviour of the program or
suggestions for further improvement.
Goettingen, November 29, 2000
Winfried Kurth
Back to the GROGRA homepage
Back to Plant Modelling Group Homepage
Last modifications: October 10, 2008