25#include <QVariantList>
53 explicit FomeScript(QObject *parent =
nullptr);
68 const QString &
context()
const {
return mStand?mStand->
context():mInvalidContext; }
100 void log(QJSValue value);
102 void abort(QJSValue message);
113 QJSValue
addAgent(QString agent_type, QString agent_name);
116 QJSValue
addAgent(QJSValue program, QString name);
125 bool runAgent(
int stand_id, QString
function);
129 QJSValue
activity(QString stp_name, QString activity_name);
131 void runPlanting(
int stand_id, QJSValue planting_item);
134 QJSValue
test(QJSValue val);
136 static int levelIndex(
const QString &level_label);
137 static const QString
levelLabel(
const int level_index);
142 static QString mInvalidContext;
151 QString mLastErrorMessage;
152 QString mStandVisualization;
166 Q_PROPERTY (
double age READ
age)
171 Q_PROPERTY (
int id READ
id)
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); }
214 explicit StandObj(QObject *parent = 0): QObject(parent), mStand(0) {}
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.;}
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; }
229 double area()
const {
if (mStand)
return mStand->
area(); throwError(
"area");
return -1;}
238 void setStp(QString stp_name);
244 void throwError(QString msg)
const;
256 Q_PROPERTY(
double U READ
U )
269 bool agentUpdate(QString what, QString how, QString when);
273 explicit UnitObj(QObject *parent = 0): QObject(parent) {}
319 explicit STPObj(QObject *parent = 0): QObject(parent) { mSTP = 0;}
320 QJSValue
options() {
if (mOptions)
return *mOptions;
else return QJSValue(); }
341 explicit ActivityObj(QObject *parent = 0): QObject(parent) { mActivityIndex=-1; mStand=0; mActivity=0; }
353 QString
name()
const;
390 explicit SchedulerObj(QObject *parent = 0): QObject(parent) {mStand=0; }
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
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 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
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
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