Subversion Repositories public iLand

Rev

Go to most recent revision | Hide changed files | Details | Compare with Previous | Blame | RSS feed

Filtering Options

Rev Age Author Path Log message Diff Changes
639 4892d 13h werner / move current content to the "trunk"  
/trunk/executable
/trunk/src
/executable
/src
595 4975d 22h 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.
 
/src/core/sapling.cpp
/src/core/snag.cpp
/src/core/snag.h
/src/core/species.cpp
/src/core/species.h
/src/core/tree.cpp
535 5047d 16h 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)
 
/src/core/species.h
/src/core/watercycle.h
534 5047d 16h 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.  
/src/core/resourceunit.cpp
/src/core/snag.cpp
/src/core/snag.h
/src/core/soil.cpp
/src/core/soil.h
/src/core/species.cpp
/src/core/species.h
/src/core/speciesset.cpp
/src/iland/mainwindow.ui
/src/iland/tests.cpp
/src/tools/globalsettings.cpp
528 5051d 09h 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.  
/src/core/model.cpp
/src/core/snag.cpp
/src/core/soil.cpp
/src/core/species.cpp
/src/core/species.h
/src/iland/mainwindow.cpp
/src/iland/version.cpp
/src/tools/globalsettings.cpp
511 5079d 20h werner /src/ again, the reineke  
/src/core/sapling.cpp
/src/core/species.h
/src/tools/globalsettings.h
508 5080d 22h werner /src/ fixed calculation of number of saplings (Reineke)  
/src/core/sapling.cpp
/src/core/species.h
/src/iland/mainwindow.cpp
/src/iland/tests.cpp
493 5099d 19h 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
 
/src/core/model.cpp
/src/core/modelcontroller.h
/src/core/species.h
/src/iland/mainwindow.cpp
/src/iland/mainwindow.h
/src/iland/mainwindow.ui
483 5102d 18h werner /src/core/ recruitment: recruit the number of individuals provided by the Reineke equation.
(correct spelling error: reinecke -> reineke)
 
/src/core/model.cpp
/src/core/production3pg.cpp
/src/core/sapling.cpp
/src/core/species.cpp
/src/core/species.h
/src/core/standstatistics.cpp
/src/core/standstatistics.h
475 5103d 18h 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);
 
/src/core/model.cpp
/src/core/resourceunit.cpp
/src/core/resourceunitspecies.cpp
/src/core/resourceunitspecies.h
/src/core/snag.cpp
/src/core/snag.h
/src/core/species.h
/src/core/speciesset.cpp
/src/core/threadrunner.cpp
/src/core/threadrunner.h
/src/tools/globalsettings.cpp
/src/tools/globalsettings.h
470 5107d 22h werner /src/core/ add light response function to sapling growth (rest: constness of lightresponse function calls)  
/src/core/sapling.cpp
/src/core/species.h
/src/core/speciesset.cpp
/src/core/speciesset.h
/src/core/tree.cpp
467 5108d 22h werner /src/core/ added species-parameter "sapReferenceFactor" (for calculation of f_env,yr for sapling growth).  
/src/core/production3pg.cpp
/src/core/species.cpp
/src/core/species.h
/src/core/speciesresponse.h
460 5109d 13h werner /src/ changed label in regeneration debug output,
added minimum height of 4m as requirement for seed production.
 
/src/core/species.cpp
/src/core/species.h
/src/core/tree.cpp
/src/tools/globalsettings.cpp
453 5159d 09h 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...)
 
/src/core/grid.h
/src/core/resourceunit.cpp
/src/core/resourceunitspecies.cpp
/src/core/resourceunitspecies.h
/src/core/sapling.cpp
/src/core/sapling.h
/src/core/species.cpp
/src/core/species.h
/src/core/standstatistics.cpp
/src/core/standstatistics.h
/src/iland/mainwindow.cpp
/src/iland/mainwindow.h
/src/tools/expressionwrapper.cpp
450 5159d 19h werner /src/core/ implementing sapling growth...  
/src/core/model.cpp
/src/core/resourceunit.cpp
/src/core/resourceunitspecies.cpp
/src/core/resourceunitspecies.h
/src/core/sapling.cpp
/src/core/sapling.h
/src/core/species.h
449 5159d 20h werner /src/ start of implementation of sapling growth.
setup of the temporal height-map for saplings.
 
/src/core/sapling.cpp
/src/core/sapling.h
/src/core/resourceunit.h
/src/core/resourceunitspecies.h
/src/core/species.cpp
/src/core/species.h
/src/core/tree.h
/src/iland/iland.pro
/src/tools/globalsettings.h
446 5208d 21h 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;
 
/src/core/establishment.cpp
/src/core/species.cpp
/src/core/species.h
/src/iland/version.cpp
445 5208d 21h werner /src/core/ added database species parameters for seed dispersal, fixed a bug with random generator in StandLoader, change maturity criterion for seed production to age instead of height.  
/src/core/seeddispersal.cpp
/src/core/seeddispersal.h
/src/core/species.cpp
/src/core/species.h
/src/core/standloader.cpp
/src/core/tree.cpp
425 5240d 18h werner /src/ made the calculate() and execute() function of Expression const (using a trick), so there is no more need for un-const functions which should be const (e.g. in Species).  
/src/core/species.cpp
/src/core/species.h
/src/core/speciesset.cpp
/src/core/speciesset.h
/src/tools/expression.cpp
/src/tools/expression.h
420 5241d 10h werner /src/core/ removed the QMutex and the QMutexLocker for serializing the execution of expression evaluations. This is no longer necessary, because Expression::calculate() now is reentrant.
The performance effect of this change is awesome: the time used to grow individual trees drops by ca. 40% (the total runtime is maybe 5-10% faster) (tested with iLandSpeed.xml -> 2x2km)
 
/src/core/management.cpp
/src/core/species.cpp
/src/core/species.h
/src/core/speciesset.cpp
/src/core/speciesset.h

Show All