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: .Aformat 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