Rev |
Age |
Author |
Path |
Log message |
Diff |
1222 |
3157d 01h |
werner |
/ |
public SVN |
|
1221 |
3157d 01h |
werner |
/branches/ |
public SVN |
|
1220 |
3157d 01h |
werner |
/branches/version1.0/ |
Version 1.0 |
|
1218 |
3157d 03h |
werner |
/ |
clean up repository - make 1.0 trunk again! |
|
1217 |
3157d 03h |
werner |
/ |
clean up repository - make 1.0 trunk again! |
|
1182 |
3303d 01h |
werner |
/branches/iland_regen/src/ |
Torus also effective for seed distribution
new output "SaplingDetails" (super high detail level of individual cohorts)
version information also in ilandc [move version.cpp to core]
[due to a sync problem with the SVN server, some revisions where lost: here they are:]
compiling ilandc
some code clean up - removed old code (sapling.cpp) for sapling trees and establishment. |
|
1180 |
3325d 00h |
werner |
/branches/iland_regen/src/ |
major rewrite of the seed distribution module:
* dispersal kernels fixed (using seeds per area, and not per radius)
* seed production now depends on leaf area of species (on source pixels)
* distribution for all source pixels (skipped the shortcut via continuously covered forest)
* probability of establishment calculated as function of available seedlings (sum of all incoming seedlings)
still testing ;)
more automation functions (e.g. to call OS commands, additional JS event handlers) |
|
1177 |
3334d 01h |
werner |
/branches/iland_regen/src/ |
updating the sapling growth (calculation of stem numbers) |
|
1172 |
3358d 09h |
werner |
/branches/iland_regen/src/ |
fixed nasty bug in fire module that caused crashes in release mode (but interestingly not in debug mode).
Reason: The ILAND_GUI #define is *not* visible when building the modules (fire, wind, barkbeetle); a conditional define in species.h has the effect that the structure (i.e. the memory address of some of the member properties) are different (specifically, the "mSeedDispersal" property). From the fire module, accessing the property resolved to a wrong memory address -> crash. Fix: moved the color-property (that is affected by the ILAND_GUI #define) to the end of the object.... |
|
1167 |
3366d 09h |
werner |
/branches/iland_regen/ |
merged serotiny from trunk |
|
1165 |
3368d 00h |
werner |
/branches/iland_regen/src/ |
implementation of sprouting |
|
1162 |
3373d 08h |
werner |
/branches/iland_regen/src/ |
removed the old "mSaplings" from resource unit/model.
Open Issues:
* ActPlanting [init/remove of saplings]
* MapGrid: retrieve list of saplings
* testing of standloader |
|
1160 |
3374d 01h |
werner |
/branches/iland_regen/src/core/ |
bug-fixes of the new establishment module (carbon)
first part of the YNP water limitation in establishment. |
|
1104 |
3445d 08h |
werner |
/branches/iland_regen/ |
Branch dedicated to playing around with establishment/regeneration.
Goals are:
(i) speed up
(ii) introduction of new features for Yellowstone |
|
1063 |
3561d 03h |
werner |
/branches/port_qt5_64bit/src/ |
implementing a first version of the browsing submodule.
many small improvements for ABE. |
|
989 |
3801d 05h |
werner |
/branches/port_qt5_64bit/src/ |
removed the QT GUI library dependency for the console variant of iLand. For this some #ifdef were required. |
|
837 |
4257d 05h |
werner |
/branches/port_qt5_64bit/src/ |
* added total carbon to stand output
* created a new output "landscape" for stand aggregates on landscape level (per species)
* improved error handling ModelController
* improved ilandc: now model settings can be changed via command line (and javascript function can be called)
* finalized "background external seeds" |
|
780 |
4416d 04h |
werner |
/branches/port_qt5_64bit/src/ |
Steps to build iLand with Qt 5 and with MSVC compiler and 64 bit.
http://iland.boku.ac.at/blogpost44
removed also a couple of warnings that were thrown by the MSVC compiler. |
|
779 |
4429d 03h |
werner |
/branches/port_qt5_64bit/ |
|
|
707 |
4960d 05h |
werner |
/trunk/src/ |
rework of the random numbers in iland.
Now, many (200000) random numbers are precalculated using a given algorithm (there are three or four choices), then the drandom() etc functions read from this array. After some rotations, the numbers are renewed. The point is: this is now reentrant, so the per-thread storage of MTRand objects is obsolete. |
|
705 |
4961d 00h |
werner |
/trunk/src/ |
series of performance tests / modifications.
Using "valgrind" on the linux virtual machine, some performance
measurements were made.
Some candidates for optimization were tested. (1) the applyLIP()
function (about 30% of total run time in runYear()): here several
inlining options were tested; testing the value of the stamp before
using it (in order to omit the other steps) prooved to be slower than
unsing all stamp values.
(2) the random number generator; here the random number generation is
about 5% of the total run time; the commit contains two/three other
variants. |
|
671 |
5012d 04h |
werner |
/trunk/src/ |
Necessary changes for GPL licence (i.e. headers in all source files) |
|
667 |
5047d 12h |
werner |
/trunk/src/ |
finetuning of fire module (new species parameters, xml file parameters, ...) |
|
639 |
5173d 01h |
werner |
/ |
move current content to the "trunk" |
|
595 |
5256d 10h |
werner |
/src/core/ |
changed behavior of coarse roots: if biomass exceeds value from allometric relation, the excell biomass is pushed to the soil (avoid piling up of coarse root carbon in the soil)
inlined some biomass functions in species.h. |
|
535 |
5328d 04h |
werner |
/src/core/ |
modified calculation of the Species::soilwaterResponse() following a discussion during paper preparation.
# Supplement
- Eq. S7: ja, sollte glaub ich schon tatsaechlich so ausschauen, wie im Supplement, da sollten wir ev. den Code nachziehen. Wie ist denn deine Einschaetzung, gibts dadurch grosse Aenderungen, und wenn ja in welche Richtung? Und wir sollten wegen der Konsistenz aufpassen. Wenn ich mich recht erinnere ist es ja jetzt so, das wir die Wasserkapazitaet bis zur Psi_sat rechnen (i.e. es wird mehr Wasser gespeichert als wenn wir unsere WHC nur bis Psi_fc definieren wuerden; i.e. mein default setting fuer model.settings.waterUseSoilSaturation=TRUE). Das passt aber schon so weit ich das sehe, i.e. zwischen Psi_sat und Psi_fc sollte die response dann einfach 1 sein.
---> Ich hab das im Code nachgezogen. Der Effekt ist IMHO minimal und wirkt sich dadurch aus, dass bei sehr guter wasserversorgung die soilwaterresponse ein klein wenig besser wird (dritte stelle nach dem komma) |
|
534 |
5328d 05h |
werner |
/src/ |
large(r) update of the soil model. Now, the 'kyl' and 'kyr' parameters (i.e. decomposition rates for the litter/wood-soil pool) are now species parameters and calculated dynamically from the litter inputs. |
|
528 |
5331d 21h |
werner |
/src/ |
more enabling of C/N cycling in iLand. little GUI-feature: click on a RU in resource-unit visualization now properly shows RU-related debug outputs. |
|
511 |
5360d 08h |
werner |
/src/ |
again, the reineke |
|
508 |
5361d 10h |
werner |
/src/ |
fixed calculation of number of saplings (Reineke) |
|
493 |
5380d 07h |
werner |
/src/ |
some GUI improvements: paint trees according to a predefined tree color, added also a general info-statusbar-message that shows the runyear/maxrunyear.
use this SQL to add necessary columns:
-- script to add "displayColor" and to fix the spelling error of "reineke"
-- 2010-10-16
alter table species rename to species_copy;
CREATE TABLE "species" ("shortName" CHAR(4),"name" TEXT,"active" INTEGER, "displayColor" TEXT, "LIPFile" TEXT,"specificLeafArea" REAL,"turnoverLeaf" REAL,"turnoverRoot" REAL,"HDlow" TEXT,"HDhigh" TEXT,"woodDensity" REAL,"formFactor" REAL,"bmWoody_a" REAL,"bmWoody_b" REAL,"bmFoliage_a" REAL,"bmFoliage_b" REAL,"bmRoot_a" REAL,"bmRoot_b" REAL,"bmBranch_a" REAL,"bmBranch_b" REAL,"probIntrinsic" REAL,"probStress" REAL,"maximumAge" REAL,"maximumHeight" REAL,"aging" TEXT,
"respVpdExponent" real,"respTempMin" real,"respTempMax" real,"respNitrogenClass" real,"phenologyClass" integer,"isConiferous" INTEGER,"isEvergreen" INTEGER,"maxCanopyConductance" INTEGER,"psiMin" INTEGER,"lightResponseClass" real,"finerootFoliageRatio" real, maturityYears integer, seedYearInterval integer, nonSeedYearFraction real, fecundity_m2 real, seedKernel_as1 real, seedKernel_as2 real, seedKernel_ks0 real,
estMinTemp real, estChillRequirement integer, estGDDMin integer, estGDDMax integer, estGDDBaseTemp real, estBudBirstGDD integer, estFrostFreeDays integer, estFrostTolerance double, sapHeightGrowthPotential text, sapMaxStressYears integer, sapStressThreshold real, sapHDSapling real, sapReinekesR real, sapReferenceRatio real);
insert into species (shortName, name, active, LIPFile, specificLeafArea, turnoverLeaf, turnoverRoot, HDlow, HDhigh, woodDensity, formFactor, bmWoody_a, bmWoody_b, bmFoliage_a, bmFoliage_b, bmRoot_a, bmRoot_b, bmBranch_a, bmBranch_b, probIntrinsic, probStress, maximumAge, maximumHeight, aging, respVpdExponent,
respTempMin, respTempMax, respNitrogenClass, phenologyClass, isConiferous, isEvergreen, maxCanopyConductance, psiMin, lightResponseClass, finerootFoliageRatio, maturityYears, seedYearInterval, nonSeedYearFraction, fecundity_m2, seedKernel_as1, seedKernel_as2, seedKernel_ks0,
estMinTemp, estChillRequirement, estGDDMin, estGDDMax, estGDDBaseTemp, estBudBirstGDD, estFrostFreeDays, estFrostTolerance, sapHeightGrowthPotential, sapMaxStressYears, sapStressThreshold, sapHDSapling, sapReinekesR, sapReferenceRatio
)
select shortName, name, active, LIPFile, specificLeafArea, turnoverLeaf, turnoverRoot, HDlow, HDhigh, woodDensity, formFactor, bmWoody_a, bmWoody_b, bmFoliage_a, bmFoliage_b, bmRoot_a, bmRoot_b, bmBranch_a, bmBranch_b, probIntrinsic, probStress, maximumAge, maximumHeight, aging, respVpdExponent,
respTempMin, respTempMax, respNitrogenClass, phenologyClass, isConiferous, isEvergreen, maxCanopyConductance, psiMin, lightResponseClass, finerootFoliageRatio, maturityYears, seedYearInterval, nonSeedYearFraction, fecundity_m2, seedKernel_as1, seedKernel_as2, seedKernel_ks0,
estMinTemp, estChillRequirement, estGDDMin, estGDDMax, estGDDBaseTemp, estBudBirstGDD, estFrostFreeDays, estFrostTolerance, sapHeightGrowthPotential, sapMaxStressYears, sapStressThreshold, sapHDSapling, sapReineckesR, sapReferenceRatio
FROM species_copy;
update species set displayColor = '3E9C49'; -- a simple green |
|
483 |
5383d 06h |
werner |
/src/core/ |
recruitment: recruit the number of individuals provided by the Reineke equation.
(correct spelling error: reinecke -> reineke) |
|
475 |
5384d 06h |
werner |
/src/ |
* Snag dynamics
debug output "SnagDynamics"
life cycle of Snag objects
include Snag Dynamics in newYear / year end routines
* threadrunner.cpp: parallel execution of species related tasks, e.g. the seed dispersal. In the current form, the ThreadRunner is much nicer:
ThreadRunner runner(mActiveSpecies);
runner.run(func_ptr); |
|
470 |
5388d 10h |
werner |
/src/core/ |
add light response function to sapling growth (rest: constness of lightresponse function calls) |
|
467 |
5389d 10h |
werner |
/src/core/ |
added species-parameter "sapReferenceFactor" (for calculation of f_env,yr for sapling growth). |
|
460 |
5390d 01h |
werner |
/src/ |
changed label in regeneration debug output,
added minimum height of 4m as requirement for seed production. |
|
453 |
5439d 21h |
werner |
/src/ |
sapling growth now in a basic working state. started to implement recruitment. One bug with the "maximum-establishment-height-grid" known.
added also visualization of regeneration layer. Once I have time, I should restructure the drawing/visualization code as it gets quirky (and a paper-concept is available...) |
|
450 |
5440d 07h |
werner |
/src/core/ |
implementing sapling growth... |
|
449 |
5440d 08h |
werner |
/src/ |
start of implementation of sapling growth.
setup of the temporal height-map for saplings. |
|
446 |
5489d 09h |
werner |
/src/ |
put Establishment parameters into database (total of 8 params).
new version 0.3 -- yeah!
just for the records the SQL for regeneration and Establishment:
-- add columns for regeneration
alter table species add maturityYears integer;
alter table species add seedYearInterval integer;
alter table species add nonSeedYearFraction real;
alter table species add fecundity_m2 real;
alter table species add seedKernel_as1 real;
alter table species add seedKernel_as2 real;
alter table species add seedKernel_ks0 real;
-- default values regeneration
update species
set maturityYears=30,seedYearInterval=5, nonSeedYearFraction=0.25, fecundity_m2=100, seedKernel_as1=100, seedKernel_as2=0, seedKernel_ks0=0;
-- add columns for establishment
/* --> corresponding c++-struct:
struct EstablishmentParameters
{
double min_temp; //degC
int chill_requirement; // days of chilling requirement
int GDD_min, GDD_max; // GDD thresholds
double GDD_baseTemperature; // for GDD-calc: GDD=sum(T - baseTemp)
int bud_birst; // GDDs needed until bud burst
int frost_free; // minimum number of annual frost-free days required
double frost_tolerance; //factor in growing season frost tolerance calculation
EstablishmentParameters(): min_temp(-37), chill_requirement(56), GDD_min(177), GDD_max(3261), GDD_baseTemperature(3.4),
bud_birst(255), frost_free(65), frost_tolerance(0.5) {}
}; */
alter table species add estMinTemp real;
alter table species add estChillRequirement integer;
alter table species add estGDDMin integer;
alter table species add estGDDMax integer;
alter table species add estGDDBaseTemp real;
alter table species add estBudBirstGDD integer;
alter table species add estFrostFreeDays integer;
alter table species add estFrostTolerance double;
-- default values establishment
update species
set estMinTemp=-37, estChillRequirement=56, estGDDMin=177, estGDDMaX=3261, estGDDBaseTemp=3.4,
estBudBirstGDD=255, estFrostFreeDays=65, estFrostTolerance=0.5; |
|