iLand
fomescript.h
Go to the documentation of this file.
1/********************************************************************************************
2** iLand - an individual based forest landscape and disturbance model
3** http://iland-model.org
4** Copyright (C) 2009- Werner Rammer, Rupert Seidl
5**
6** This program is free software: you can redistribute it and/or modify
7** it under the terms of the GNU General Public License as published by
8** the Free Software Foundation, either version 3 of the License, or
9** (at your option) any later version.
10**
11** This program is distributed in the hope that it will be useful,
12** but WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14** GNU General Public License for more details.
15**
16** You should have received a copy of the GNU General Public License
17** along with this program. If not, see <http://www.gnu.org/licenses/>.
18********************************************************************************************/
19
20#ifndef FOMESCRIPT_H
21#define FOMESCRIPT_H
22
23#include <QObject>
24#include <QStringList>
25#include <QVariantList>
26
27#include "fmstand.h"
28#include "fmunit.h"
29#include "scripttree.h"
30
31namespace ABE {
32
33class StandObj;
34class UnitObj;
35class SimulationObj;
36class SchedulerObj;
37class STPObj;
38class FMTreeList; // forward
39class FMSTP; // forward
40class ActivityObj;
41
44class FomeScript : public QObject
45{
46 Q_OBJECT
47 Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
48 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
49 Q_PROPERTY(int standId READ standId WRITE setStandId)
51 Q_PROPERTY(QVariantList standIds READ standIds)
52public:
53 explicit FomeScript(QObject *parent = nullptr);
55 // prepare scripting features
57 // functions
60 static void setExecutionContext(FMStand *stand, bool add_agent=false);
61
63 static void setActivity(Activity *act);
64
66 static FomeScript *bridge();
68 const QString &context() const { return mStand?mStand->context():mInvalidContext; }
69
71 static QString JStoString(QJSValue value);
72
73
74 StandObj *standObj() const { return mStandObj; }
75 UnitObj *siteObj() const { return mUnitObj; }
76 FMTreeList *treesObj() const { return mTrees; }
77 ActivityObj *activityObj() const { return mActivityObj; }
79 QJSValue treeRef(Tree *tree);
80
81 // Properties
83 bool verbose() const;
84 void setVerbose(bool arg);
85
86 int standId() const;
87 void setStandId(int new_stand_id);
88
89 bool enabled() const;
90 void setEnabled(bool enable);
91
92
94 QVariantList standIds();
95
96signals:
97
98public slots:
100 void log(QJSValue value);
102 void abort(QJSValue message);
104 bool addManagement(QJSValue program, QString name);
107 bool updateManagement(QJSValue program, QString name);
109 bool addManagementToAgentType(QString name, QString agentname);
111 bool addAgentType(QJSValue program, QString name);
113 QJSValue addAgent(QString agent_type, QString agent_name);
114
116 QJSValue addAgent(QJSValue program, QString name);
119 bool runActivity(int stand_id, QString activity);
122 bool runActivityEvaluate(int stand_id, QString activity);
123
125 bool runAgent(int stand_id, QString function);
126 // special functions
127 bool isValidStand(int stand_id);
128
129 QJSValue activity(QString stp_name, QString activity_name);
130
131 void runPlanting(int stand_id, QJSValue planting_item);
132
133 // just for testing
134 QJSValue test(QJSValue val);
135public:
136 static int levelIndex(const QString &level_label);
137 static const QString levelLabel(const int level_index);
138 QString standVisualization() const { return mStandVisualization; }
139 void setStandVisualization(QString vis) { mStandVisualization = vis; }
140
141private:
142 static QString mInvalidContext;
143 const FMStand *mStand;
144 StandObj *mStandObj;
145 UnitObj *mUnitObj;
146 SimulationObj *mSimulationObj;
147 ActivityObj *mActivityObj;
148 FMTreeList *mTrees;
149 SchedulerObj *mSchedulerObj;
150 STPObj *mSTPObj;
151 QString mLastErrorMessage;
152 QString mStandVisualization;
153 QJSValue mTreeValue;
155
156
157};
158
160class StandObj: public QObject
161{
162 Q_OBJECT
163 Q_PROPERTY (bool trace READ trace WRITE setTrace)
164 Q_PROPERTY (QJSValue agent READ agent)
165 Q_PROPERTY (double basalArea READ basalArea)
166 Q_PROPERTY (double age READ age)
167 Q_PROPERTY (double absoluteAge READ absoluteAge WRITE setAbsoluteAge)
168 Q_PROPERTY (double volume READ volume)
169 Q_PROPERTY (double height READ height)
170 Q_PROPERTY (double topHeight READ topHeight)
171 Q_PROPERTY (int id READ id)
172 Q_PROPERTY (int nspecies READ nspecies)
173 Q_PROPERTY (double area READ area)
174 Q_PROPERTY (QRectF rectangle READ rectangle)
175 Q_PROPERTY (int elapsed READ timeSinceLastExecution)
176 Q_PROPERTY (QString lastActivity READ lastActivity)
177
178 Q_PROPERTY (double U READ rotationLength WRITE setRotationLength)
179 Q_PROPERTY(QString speciesComposition READ speciesComposition )
180 Q_PROPERTY(QString thinningIntensity READ thinningIntensity )
181
182 Q_PROPERTY(QString stp READ stp WRITE setStp)
183
184
185/* basalArea: 0, // total basal area/ha of the stand
186 volume: 100, // total volume/ha of the stand
187 speciesCount: 3, // number of species present in the stand with trees > 4m
188 age: 100, // "age" of the stand (in relation to "U")
189 flags: {}*/
190public slots:
192 double speciesBasalAreaOf(QString species_id) const {return mStand->basalArea(species_id); }
193 double relSpeciesBasalAreaOf(QString species_id) const {return mStand->relBasalArea(species_id); }
194 double speciesBasalArea(int index) const { if (index>=0 && index<nspecies()) return mStand->speciesData(index).basalArea; else return 0.; }
195 double relSpeciesBasalArea(int index) const { if (index>=0 && index<nspecies()) return mStand->speciesData(index).relBasalArea; else return 0.; }
196 QString speciesId(int index) const;
197
198 // set and get standspecific data (persistent!)
199 void setFlag(const QString &name, QJSValue value){ const_cast<FMStand*>(mStand)->setProperty(name, value);}
200 QJSValue flag(const QString &name) { return const_cast<FMStand*>(mStand)->property(name); }
201 QJSValue activity(QString name);
202 QJSValue agent();
203
204 // actions
206 void reload() { if (mStand) mStand->reload(true); }
207 void sleep(int years) { if (mStand) mStand->sleep(years); }
208
209 void setAbsoluteAge(double arg);
211 void reset();
212
213public:
214 explicit StandObj(QObject *parent = 0): QObject(parent), mStand(0) {}
215 // system stuff
216 void setStand(FMStand* stand) { mStand = stand; }
217 bool trace() const;
218 void setTrace(bool do_trace);
219
220 // properties of the forest
221 double basalArea() const { if (mStand)return mStand->basalArea(); throwError("basalArea"); return -1.;}
222 double height() const { if (mStand)return mStand->height(); throwError("height"); return -1.;}
223 double topHeight() const { if (mStand)return mStand->topHeight(); throwError("topHeight"); return -1.;}
224 double age() const {if (mStand)return mStand->age(); throwError("age"); return -1.;}
225 double absoluteAge() const {if (mStand)return mStand->absoluteAge(); throwError("absoluteAge"); return -1.; }
226 double volume() const {if (mStand) return mStand->volume(); throwError("volume"); return -1.; }
227 int id() const { if (mStand) return mStand->id(); throwError("id"); return -1; }
228 int nspecies() const {if (mStand) return mStand->nspecies(); throwError("id"); return -1;}
229 double area() const {if (mStand) return mStand->area(); throwError("area"); return -1;}
230 QRectF rectangle() const;
231 int timeSinceLastExecution() const;
232 QString lastActivity() const;
233 double rotationLength() const;
234 void setRotationLength(int new_length);
235 QString speciesComposition() const;
236 QString thinningIntensity() const;
237 QString stp() const;
238 void setStp(QString stp_name);
239
240
241
242
243private:
244 void throwError(QString msg) const;
245 FMStand *mStand;
246};
247
251class UnitObj: public QObject
252{
253 Q_OBJECT
254 Q_PROPERTY (QString harvestMode READ harvestMode)
255 Q_PROPERTY(QString speciesComposition READ speciesComposition )
256 Q_PROPERTY(double U READ U )
257 Q_PROPERTY(QString thinningIntensity READ thinningIntensity )
258 // performance indicators
259 Q_PROPERTY(double MAIChange READ MAIChange )
260 Q_PROPERTY(double MAILevel READ MAILevel )
261 Q_PROPERTY(double landscapeMAI READ landscapeMAI )
262 Q_PROPERTY(double mortalityChange READ mortalityChange )
263 Q_PROPERTY(double mortalityLevel READ mortalityLevel )
264 Q_PROPERTY(double regenerationChange READ regenerationChange )
265 Q_PROPERTY(double regenerationLevel READ regenerationLevel )
266
267public slots:
269 bool agentUpdate(QString what, QString how, QString when);
272public:
273 explicit UnitObj(QObject *parent = 0): QObject(parent) {}
274 void setStand(const FMStand* stand) { mStand = stand; }
275 QString harvestMode() const;
276 QString speciesComposition() const;
277 double U() const;
278 QString thinningIntensity() const;
279
280 // performance indicators
281 double MAIChange() const;
282 double MAILevel() const;
283 double landscapeMAI() const;
284 double mortalityChange() const;
285 double mortalityLevel() const;
286 double regenerationChange() const;
287 double regenerationLevel() const;
288
289
290private:
291 const FMStand *mStand;
292
293};
294
298class SimulationObj: public QObject
299{
300 Q_OBJECT
301 Q_PROPERTY (double timberPriceIndex READ timberPriceIndex)
302public:
303 explicit SimulationObj(QObject *parent = 0): QObject(parent) {}
304 double timberPriceIndex() const { return 1.010101; } // dummy
305private:
306
307};
308
312class STPObj: public QObject
313{
314 Q_OBJECT
315 Q_PROPERTY (QString name READ name)
316 Q_PROPERTY (QJSValue options READ options)
317public:
318 void setSTP(FMStand *stand);
319 explicit STPObj(QObject *parent = 0): QObject(parent) { mSTP = 0;}
320 QJSValue options() { if (mOptions) return *mOptions; else return QJSValue(); }
321 QString name();
322private:
323 FMSTP *mSTP;
324 QJSValue *mOptions;
325
326
327};
332class ActivityObj : public QObject
333{
334 Q_OBJECT
335 Q_PROPERTY (bool enabled READ enabled WRITE setEnabled)
336 Q_PROPERTY(bool active READ active WRITE setActive)
337 Q_PROPERTY(bool finalHarvest READ finalHarvest WRITE setFinalHarvest)
338 Q_PROPERTY(bool scheduled READ scheduled WRITE setScheduled)
339 Q_PROPERTY(QString name READ name)
340public:
341 explicit ActivityObj(QObject *parent = 0): QObject(parent) { mActivityIndex=-1; mStand=0; mActivity=0; }
342 // used to construct a link to a given activty (with an index that could be not the currently active index!)
343 ActivityObj(FMStand *stand, Activity *act, int index ): QObject(0) { mActivityIndex=index; mStand=stand; mActivity=act; }
345 void setStand(FMStand *stand) { mStand = stand; mActivity=0; mActivityIndex=-1;}
347 void setActivity(Activity *act) { mStand = 0; mActivity=act; mActivityIndex=-1;}
349 void setActivityIndex(const int index) { mActivityIndex = index; }
350
351 // properties
352
353 QString name() const;
354 bool enabled() const;
355 void setEnabled(bool do_enable);
356
357 bool active() const { return flags().active(); }
358 void setActive(bool activate) { flags().setActive(activate);}
359
360 bool finalHarvest() const { return flags().isFinalHarvest(); }
361 void setFinalHarvest(bool isfinal) { flags().setFinalHarvest(isfinal);}
362
363 bool scheduled() const { return flags().isScheduled(); }
364 void setScheduled(bool issched) { flags().setIsScheduled(issched);}
365public slots:
366private:
367 ActivityFlags &flags() const; // get (depending on the linked objects) the right flags
368 static ActivityFlags mEmptyFlags;
369 int mActivityIndex; // link to base activity
370 Activity *mActivity; // pointer
371 FMStand *mStand; // and to the forest stand....
372
373};
374
378class SchedulerObj : public QObject
379{
380 Q_OBJECT
381 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
382 Q_PROPERTY(double harvestIntensity READ harvestIntensity WRITE setHarvestIntensity)
384 Q_PROPERTY(double maxHarvestLevel READ maxHarvestLevel WRITE setMaxHarvestLevel)
387public slots:
388 void dump() const;
389public:
390 explicit SchedulerObj(QObject *parent = 0): QObject(parent) {mStand=0; }
391 void setStand(FMStand *stand) { mStand = stand;}
392
393 bool enabled();
394 void setEnabled(bool is_enabled);
396 void setHarvestIntensity(double new_intensity);
398 void setUseSustainableHarvest(double new_level);
400 void setMaxHarvestLevel(double new_harvest_level);
403 void setMinScheduleHarvest(double new_level);
404 void setMaxScheduleHarvest(double new_level);
405
406private:
407 FMStand *mStand; // link to the forest stand
408};
409
410
411} // namespace
412
413#endif // FOMESCRIPT_H
Activity meta data (enabled, active, ...) that need to be stored per stand.
Definition: activity.h:110
void setIsScheduled(const bool doschedule)
Definition: activity.h:135
bool isFinalHarvest() const
Definition: activity.h:121
bool isScheduled() const
Definition: activity.h:123
bool active() const
Definition: activity.h:116
void setFinalHarvest(const bool isfinal)
Definition: activity.h:133
void setActive(const bool active)
Definition: activity.h:128
Activity is the base class for management activities.
Definition: activity.h:162
The ActivityObj class encapsulates the 'activity' object in JS.
Definition: fomescript.h:333
bool active
Definition: fomescript.h:336
void setScheduled(bool issched)
Definition: fomescript.h:364
bool enabled
Definition: fomescript.h:335
QString name
Definition: fomescript.h:339
void setActivity(Activity *act)
set an activity context (without a stand) to access base properties of activities
Definition: fomescript.h:347
void setActive(bool activate)
Definition: fomescript.h:358
bool finalHarvest() const
Definition: fomescript.h:360
bool finalHarvest
Definition: fomescript.h:337
void setActivityIndex(const int index)
set an activity that is not the current activity of the stand
Definition: fomescript.h:349
void setEnabled(bool do_enable)
Definition: fomescript.cpp:613
ActivityObj(QObject *parent=0)
Definition: fomescript.h:341
bool scheduled
Definition: fomescript.h:338
void setFinalHarvest(bool isfinal)
Definition: fomescript.h:361
bool scheduled() const
Definition: fomescript.h:363
ActivityObj(FMStand *stand, Activity *act, int index)
Definition: fomescript.h:343
bool active() const
Definition: fomescript.h:357
void setStand(FMStand *stand)
default-case: set a forest stand as the context.
Definition: fomescript.h:345
The FMSTP class encapsulates a stand treatment program, which is defined in Javascript.
Definition: fmstp.h:39
FMStand encapsulates a forest stand for the forest management engine.
Definition: fmstand.h:49
int id() const
Definition: fmstand.h:67
double volume() const
total standing volume (m3/ha) in the stand
Definition: fmstand.h:98
double area() const
total area of the stand (ha)
Definition: fmstand.h:90
SSpeciesStand & speciesData(const int index)
retrieve species-specific meta data by index (0: largest basal area share, up to nspecies()-1)
Definition: fmstand.h:131
double age() const
(average) age of the stand (weighted with basal area)
Definition: fmstand.h:96
double relBasalArea(const QString &species_id) const
Definition: fmstand.cpp:533
const QString & context() const
Definition: fmstand.h:60
double absoluteAge() const
absolute age: years since the rotation has started (years)
Definition: fmstand.cpp:267
double height() const
mean tree height (basal area weighted, of trees>4m), in m
Definition: fmstand.h:104
double basalArea() const
total basal area (m2/ha)
Definition: fmstand.h:94
void reload(bool force=false)
Definition: fmstand.cpp:192
void sleep(int years_to_sleep)
sleep() pauses the evaluation/execution of management activities for 'years_to_sleep'.
Definition: fmstand.cpp:505
int nspecies() const
Definition: fmstand.h:129
double topHeight() const
top height (mean height of the 100 thickest trees/ha), in m
Definition: fmstand.h:106
The FMTreeList class implements low-level functionality for selecting and harvesting of trees.
Definition: fmtreelist.h:34
FomeScript provides general helping functions for the Javascript world.
Definition: fomescript.h:45
bool verbose
Definition: fomescript.h:47
QString standVisualization
Definition: fomescript.h:50
QJSValue activity(QString stp_name, QString activity_name)
Definition: fomescript.cpp:395
ActivityObj * activityObj() const
Definition: fomescript.h:77
bool addAgentType(QJSValue program, QString name)
add an agent definition (Javascript). 'name' is used internally. Returns true on success.
Definition: fomescript.cpp:281
QString standVisualization() const
Definition: fomescript.h:138
UnitObj * siteObj() const
Definition: fomescript.h:75
void log(QJSValue value)
logging function (which includes exeuction context)
Definition: fomescript.cpp:211
static void setExecutionContext(FMStand *stand, bool add_agent=false)
prepares the context for executing javascript functions by setting up all internal structures for the...
Definition: fomescript.cpp:123
static FomeScript * bridge()
static accessor function for the responsible script bridge
Definition: fomescript.cpp:149
void runPlanting(int stand_id, QJSValue planting_item)
Definition: fomescript.cpp:417
bool runActivity(int stand_id, QString activity)
executes an activity for stand 'stand_id'.
Definition: fomescript.cpp:324
FomeScript(QObject *parent=nullptr)
Definition: fomescript.cpp:51
void abort(QJSValue message)
abort execution
Definition: fomescript.cpp:217
void setupScriptEnvironment()
Definition: fomescript.cpp:76
QVariantList standIds
Definition: fomescript.h:51
static QString JStoString(QJSValue value)
convert a javascript object to a string (for debug output)
Definition: fomescript.cpp:155
QJSValue test(QJSValue val)
Definition: fomescript.cpp:430
void setEnabled(bool enable)
Definition: fomescript.cpp:206
QJSValue treeRef(Tree *tree)
get a JS-Object referencing a single tree
Definition: fomescript.cpp:166
void setStandVisualization(QString vis)
Definition: fomescript.h:139
bool runActivityEvaluate(int stand_id, QString activity)
executes an the "evaluate" part of the activity for stand 'stand_id'.
Definition: fomescript.cpp:340
int standId
Definition: fomescript.h:49
StandObj * standObj() const
Definition: fomescript.h:74
static const QString levelLabel(const int level_index)
Definition: fomescript.cpp:446
QVariantList standIds()
a list of all stand-ids that are currently in the landscape
FMTreeList * treesObj() const
Definition: fomescript.h:76
bool addManagementToAgentType(QString name, QString agentname)
add a certain stp (given by 'name') to the agent 'agentname'. Returns false if either stp or agent we...
Definition: fomescript.cpp:264
bool isValidStand(int stand_id)
Definition: fomescript.cpp:381
~FomeScript()
Definition: fomescript.cpp:65
bool enabled
Definition: fomescript.h:48
bool updateManagement(QJSValue program, QString name)
set the STP with the name 'name' to the (new) 'program'.
Definition: fomescript.cpp:238
void setVerbose(bool arg)
Definition: fomescript.cpp:178
QJSValue addAgent(QString agent_type, QString agent_name)
create an agent of type 'agent_type' (the name of an agent type) and give the name 'agent_name'....
Definition: fomescript.cpp:296
static int levelIndex(const QString &level_label)
Definition: fomescript.cpp:438
static void setActivity(Activity *act)
special function for setting context without a valid stand
Definition: fomescript.cpp:142
const QString & context() const
returns a string for debug/trace messages
Definition: fomescript.h:68
void setStandId(int new_stand_id)
Definition: fomescript.cpp:191
bool addManagement(QJSValue program, QString name)
adds a management program (STP) that is provided as the Javascript object 'program'....
Definition: fomescript.cpp:224
bool runAgent(int stand_id, QString function)
execute 'function' of the agent for the given stand; this is primarily aimed at testing/debugging.
Definition: fomescript.cpp:357
The STPObj encapsulates the 'stp' object in JS.
Definition: fomescript.h:313
STPObj(QObject *parent=0)
Definition: fomescript.h:319
QJSValue options
Definition: fomescript.h:316
void setSTP(FMStand *stand)
Definition: fomescript.cpp:856
QJSValue options()
Definition: fomescript.h:320
QString name()
QString name
Definition: fomescript.h:315
The SchedulerObj class is accessible via 'scheduler' in Javascript.
Definition: fomescript.h:379
double maxScheduleHarvest()
double maxScheduleHarvest
Definition: fomescript.h:386
double harvestIntensity
Definition: fomescript.h:382
double useSustainableHarvest
Definition: fomescript.h:383
double maxHarvestLevel()
double minScheduleHarvest()
void dump() const
write log to console
Definition: fomescript.cpp:754
void setUseSustainableHarvest(double new_level)
Definition: fomescript.cpp:800
double useSustainableHarvest()
void setMaxHarvestLevel(double new_harvest_level)
Definition: fomescript.cpp:816
void setEnabled(bool is_enabled)
Definition: fomescript.cpp:768
void setMaxScheduleHarvest(double new_level)
Definition: fomescript.cpp:848
void setMinScheduleHarvest(double new_level)
Definition: fomescript.cpp:840
SchedulerObj(QObject *parent=0)
Definition: fomescript.h:390
double harvestIntensity()
double maxHarvestLevel
Definition: fomescript.h:384
bool enabled
Definition: fomescript.h:381
double minScheduleHarvest
Definition: fomescript.h:385
void setHarvestIntensity(double new_intensity)
Definition: fomescript.cpp:784
void setStand(FMStand *stand)
Definition: fomescript.h:391
The SimulationObj encapsulates the 'simulation' object in JS.
Definition: fomescript.h:299
double timberPriceIndex
Definition: fomescript.h:301
SimulationObj(QObject *parent=0)
Definition: fomescript.h:303
StandObj is the bridge to stand variables from the Javascript world.
Definition: fomescript.h:161
double height
Definition: fomescript.h:169
QJSValue flag(const QString &name)
Definition: fomescript.h:200
int timeSinceLastExecution() const
Definition: fomescript.cpp:519
QString speciesId(int index) const
Definition: fomescript.cpp:456
double basalArea() const
Definition: fomescript.h:221
void setTrace(bool do_trace)
Definition: fomescript.cpp:503
void sleep(int years)
Definition: fomescript.h:207
void setStand(FMStand *stand)
Definition: fomescript.h:216
double volume
Definition: fomescript.h:168
double speciesBasalArea(int index) const
Definition: fomescript.h:194
QString thinningIntensity
Definition: fomescript.h:180
double topHeight
Definition: fomescript.h:170
QString speciesComposition
Definition: fomescript.h:179
int nspecies() const
Definition: fomescript.h:228
double speciesBasalAreaOf(QString species_id) const
basal area of a given species (m2/ha) given by Id.
Definition: fomescript.h:192
QString stp
Definition: fomescript.h:182
double age
Definition: fomescript.h:166
QRectF rectangle
Definition: fomescript.h:174
double absoluteAge() const
Definition: fomescript.h:225
QJSValue activity(QString name)
Definition: fomescript.cpp:461
double height() const
Definition: fomescript.h:222
double absoluteAge
Definition: fomescript.h:167
void reload()
force a reload of the stand data.
Definition: fomescript.h:206
double area
Definition: fomescript.h:173
double topHeight() const
Definition: fomescript.h:223
double U
Definition: fomescript.h:178
double relSpeciesBasalArea(int index) const
Definition: fomescript.h:195
double rotationLength() const
Definition: fomescript.cpp:534
int id() const
Definition: fomescript.h:227
void setStp(QString stp_name)
Definition: fomescript.cpp:569
double relSpeciesBasalAreaOf(QString species_id) const
Definition: fomescript.h:193
void setAbsoluteAge(double arg)
Definition: fomescript.cpp:483
double age() const
Definition: fomescript.h:224
double volume() const
Definition: fomescript.h:226
double area() const
Definition: fomescript.h:229
void setRotationLength(int new_length)
Definition: fomescript.cpp:542
QJSValue agent
Definition: fomescript.h:164
QJSValue agent()
int nspecies
Definition: fomescript.h:172
int elapsed
Definition: fomescript.h:175
QString lastActivity
Definition: fomescript.h:176
void setFlag(const QString &name, QJSValue value)
Definition: fomescript.h:199
double basalArea
Definition: fomescript.h:165
void reset()
start the management program again (initialize the stand)
Definition: fomescript.cpp:490
StandObj(QObject *parent=0)
Definition: fomescript.h:214
bool trace
Definition: fomescript.h:163
The UnitObj class is the Javascript object known as 'unit' in JS and represents a management unit.
Definition: fomescript.h:252
bool agentUpdate(QString what, QString how, QString when)
main function to provide agent decisions to the engine
Definition: fomescript.cpp:647
double landscapeMAI
Definition: fomescript.h:261
void updateManagementPlan()
force an out-of-schedule update of the management plan
Definition: fomescript.cpp:676
void setStand(const FMStand *stand)
Definition: fomescript.h:274
double regenerationChange
Definition: fomescript.h:264
double mortalityLevel
Definition: fomescript.h:263
double MAIChange
Definition: fomescript.h:259
QString harvestMode
Definition: fomescript.h:254
QString thinningIntensity
Definition: fomescript.h:257
QString speciesComposition
Definition: fomescript.h:255
double mortalityChange
Definition: fomescript.h:262
UnitObj(QObject *parent=0)
Definition: fomescript.h:273
double U
Definition: fomescript.h:256
double MAILevel
Definition: fomescript.h:260
double regenerationLevel
Definition: fomescript.h:265
Definition: scripttree.h:10
A tree is the basic simulation entity of iLand and represents a single tree.
Definition: tree.h:44
Definition: abegrid.h:22
double relBasalArea
fraction [0..1] fraction of species based on basal area.
Definition: fmstand.h:41
double basalArea
basal area m2
Definition: fmstand.h:40