iLand
actsalvage.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#ifndef ACTSALVAGE_H
20#define ACTSALVAGE_H
21
22#include "activity.h"
23#include "grid.h"
24
25class Expression; // forward
26class Tree; // forward
27namespace ABE {
28
29class FMSTP; // forward
30class FMStand; // forward
31
32class ActSalvage : public Activity
33{
34public:
35 ActSalvage(FMSTP *parent);
37 QString type() const { return "salvage"; }
38 void setup(QJSValue value);
39 bool execute(FMStand *stand);
40 QStringList info();
41 // special functions of salvage activity
42
44 bool evaluateRemove(Tree* tree) const;
45 bool barkbeetleAttack(FMStand *stand, double generations, int infested_px_ha);
46
47 bool checkSanitation(FMStand *stand);
48private:
49 void checkStandAfterDisturbance(FMStand *stand);
50 int floodFillHelper(Grid<int> &grid, QPoint start, int old_color, int color);
51 int neighborFinderHelper(Grid<int> &grid, QVector<int> &neighbors, int stand_id);
52 int replaceValueHelper(Grid<int> &grid, int old_value, int new_value);
53 bool mDebugSplit;
54 Expression *mCondition;
55 Expression *mSanitationCondition;
56 int mMaxPreponeActivity;
57 double mThresholdMinimal;
58 double mThresholdSplit;
59 double mThresholdClear;
60 bool mJSCondition;
61 QJSValue mJSConditionFunc;
62
63};
64
65
66} // namespace
67#endif // ACTSALVAGE_H
The ActSalvage class handles salvage logging after disturbances.
Definition: actsalvage.h:33
bool evaluateRemove(Tree *tree) const
return true, if the (disturbed) tree should be harvested by the salvage activity
Definition: actsalvage.cpp:132
bool checkSanitation(FMStand *stand)
Definition: actsalvage.cpp:161
bool execute(FMStand *stand)
executes the action (usually defined in derived classes) using the context of 'stand'.
Definition: actsalvage.cpp:87
QStringList info()
dumps some information for debugging
Definition: actsalvage.cpp:123
QString type() const
Definition: actsalvage.h:37
bool barkbeetleAttack(FMStand *stand, double generations, int infested_px_ha)
Definition: actsalvage.cpp:149
~ActSalvage()
Definition: actsalvage.cpp:55
void setup(QJSValue value)
setup of the activity (events, schedule, constraints). additional setup in derived classes.
Definition: actsalvage.cpp:61
ActSalvage(FMSTP *parent)
Definition: actsalvage.cpp:43
Activity is the base class for management activities.
Definition: activity.h:162
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
An expression engine for mathematical expressions provided as strings.
Definition: expression.h:29
Grid class (template).
Definition: grid.h:44
A tree is the basic simulation entity of iLand and represents a single tree.
Definition: tree.h:44
Definition: abegrid.h:22