Skip to content
Snippets Groups Projects
Commit f06556ef authored by Evers, Jochem's avatar Evers, Jochem
Browse files

Light optimizations

Removed the sine correction for the light sources; added (temporary) correction at soil tile sensors to perceive fraction PAR of 1 when scene is empty (to be replaced by virtual reference sensor); added accumulated PAR at plant level and corrected this for field level
parent d2d7c82f
Branches
Tags
No related merge requests found
...@@ -59,7 +59,7 @@ class Soil { ...@@ -59,7 +59,7 @@ class Soil {
} }
//Module that determines if an apex is entering unexplored soil //Module that determines if an apex is entering unexplored soil
abstract module ExploredSoil extends Box() {} abstract module ExploredSoil extends Box().(setLayer(rootBoxLayer)) {}
//Phosphorous rich soil //Phosphorous rich soil
module RichSoil extends ExploredSoil module RichSoil extends ExploredSoil
......
This diff is collapsed.
...@@ -67,17 +67,18 @@ static void initDatasets() ...@@ -67,17 +67,18 @@ static void initDatasets()
setColumnKey(10,"nrBranches"), setColumnKey(10,"nrBranches"),
setColumnKey(11,"leafArea(m2)"), setColumnKey(11,"leafArea(m2)"),
setColumnKey(12,"fpar"), setColumnKey(12,"fpar"),
setColumnKey(13,"rfr"), setColumnKey(13,"accumulated PAR(mol)"),
setColumnKey(14,"biom(mg)"), setColumnKey(14,"rfr"),
setColumnKey(15,"yield(mg)"), setColumnKey(15,"biom(mg)"),
setColumnKey(16,"leafMass(mg)"), setColumnKey(16,"yield(mg)"),
setColumnKey(17,"stemMass(mg)"), setColumnKey(17,"leafMass(mg)"),
setColumnKey(18,"rootMass(mg)"), setColumnKey(18,"stemMass(mg)"),
setColumnKey(19,"shootRootRatio(mg)"), setColumnKey(19,"rootMass(mg)"),
setColumnKey(20,"aboveBiom(mg)"), setColumnKey(20,"shootRootRatio(mg)"),
setColumnKey(21,"Nuptake(mg)"), setColumnKey(21,"aboveBiom(mg)"),
setColumnKey(22,"Total N uptake(mg)"), setColumnKey(22,"Nuptake(mg)"),
setColumnKey(23,"Root length(m)") setColumnKey(23,"Total N uptake(mg)"),
setColumnKey(24,"Root length(m)")
); );
combiLight.clear(); combiLight.clear();
...@@ -116,6 +117,7 @@ static void initDatasets() ...@@ -116,6 +117,7 @@ static void initDatasets()
plantNitroTotal.clear(); chart(plantNitroTotal,XY_PLOT); plantNitroTotal.clear(); chart(plantNitroTotal,XY_PLOT);
plantNitroRatio.clear(); chart(plantNitroRatio,XY_PLOT); plantNitroRatio.clear(); chart(plantNitroRatio,XY_PLOT);
plantFabs.clear(); chart(plantFabs,XY_PLOT); plantFabs.clear(); chart(plantFabs,XY_PLOT);
plantCPAR.clear(); chart(plantCPAR,XY_PLOT);
plantLeafArea.clear(); chart(plantLeafArea,XY_PLOT); plantLeafArea.clear(); chart(plantLeafArea,XY_PLOT);
fieldFabs.clear(); chart(fieldFabs,XY_PLOT); fieldFabs.clear(); chart(fieldFabs,XY_PLOT);
......
...@@ -13,7 +13,7 @@ module FieldBase extends Null ...@@ -13,7 +13,7 @@ module FieldBase extends Null
double[] lai = new double[totalSpecies]; // leaf area index double[] lai = new double[totalSpecies]; // leaf area index
double[] nrShoots = new double[totalSpecies]; // shoots per m2 (branches + main stem) double[] nrShoots = new double[totalSpecies]; // shoots per m2 (branches + main stem)
double[] absorbedRadiation = new double[totalSpecies]; // canopy absorbed radiation (umol / m2 / s) double[] absorbedRadiation = new double[totalSpecies]; // canopy absorbed radiation (umol / m2 / s)
double[] accumulatedRadiation = new double[totalSpecies]; // cumulative absorbed radiation (MJ / m2) - VALUE FACTOR 100 TOO HIGH - NEEDS CHECK double[] accumulatedRadiation = new double[totalSpecies]; // cumulative absorbed radiation (mol / m2)
double[] fabs = new double[totalSpecies]; // fraction of global radiation absorbed by the canopy double[] fabs = new double[totalSpecies]; // fraction of global radiation absorbed by the canopy
double totalFabs; // fabs for all species combined double totalFabs; // fabs for all species combined
double[] rfr = new double[totalSpecies]; // average R:FR in the canopy double[] rfr = new double[totalSpecies]; // average R:FR in the canopy
...@@ -59,7 +59,7 @@ module FieldBase extends Null ...@@ -59,7 +59,7 @@ module FieldBase extends Null
fieldRFR.getRow(time).(set(s,rfr[s])); fieldRFR.getRow(time).(set(s,rfr[s]));
k[s] = - Math.log(1-fabs[s]) / lai[s]; k[s] = - Math.log(1-fabs[s]) / lai[s];
//println(k[s]); //println(k[s]);
accumulatedRadiation[s] = sum((* pb:PlantBase, (pb.species == s) *)[accumulatedRadiation]*0.22) / area[s]; accumulatedRadiation[s] = sum((* pb:PlantBase, (pb.species == s) *)[accumulatedRadiation]) / area[s];
assCO2[s] = sum((* pb:PlantBase, (pb.species == s) *)[assimilated]) / area[s]; assCO2[s] = sum((* pb:PlantBase, (pb.species == s) *)[assimilated]) / area[s];
fieldAssim.getRow(time).(set(s,assCO2[s]/1e6)); fieldAssim.getRow(time).(set(s,assCO2[s]/1e6));
} }
...@@ -302,11 +302,11 @@ module PlantBase extends Null ...@@ -302,11 +302,11 @@ module PlantBase extends Null
void updateAbsorbedRadiation() { void updateAbsorbedRadiation() {
double leafRad = sum((* l:Leaf, (l.plantNumber == plantNumber) *)[abs]); double leafRad = sum((* l:Leaf, (l.plantNumber == plantNumber) *)[abs]);
double stemRad = sum((* i:Internode, (i.plantNumber == plantNumber) *)[abs]); double stemRad = sum((* i:Internode, (i.plantNumber == plantNumber) *)[abs]);
//absorbedRadiation = leafRad + stemRad / (leafArea+stemArea); absorbedRadiation = leafRad;
absorbedRadiation = leafRad /*/ leafArea*/;
fabs = absorbedRadiation / ( (leafArea) * PPFD); fabs = absorbedRadiation / ( (leafArea) * PPFD);
if (fabs < 2) {plantFabs.getRow(time).set(plantNumber,fabs);} if (fabs < 2) {plantFabs.getRow(time).set(plantNumber,fabs);}
accumulatedRadiation += 1e-6 * (absorbedRadiation * dayLength*60*60); accumulatedRadiation += 1e-6 * (absorbedRadiation * dayLength*60*60);
plantCPAR.getRow(time).set(plantNumber,accumulatedRadiation);
} }
// update plant red/far-red ratio // update plant red/far-red ratio
...@@ -361,18 +361,19 @@ module PlantBase extends Null ...@@ -361,18 +361,19 @@ module PlantBase extends Null
set(9,ageD), set(9,ageD),
set(10,nrBranches), set(10,nrBranches),
set(11,leafArea), set(11,leafArea),
set(12,fabs/*absorbedRadiation*/), set(12,fabs),
set(13,rfr), set(13,accumulatedRadiation),
set(14,biomass), set(14,rfr),
set(15,yld), set(15,biomass),
set(16,biomLeaf), set(16,yld),
set(17,biomStem), set(17,biomLeaf),
set(18,biomRoots), set(18,biomStem),
set(19,shootRoot), set(19,biomRoots),
set(20,biomassAbove), set(20,shootRoot),
set(21,Nsource), set(21,biomassAbove),
set(22,NuptakeTotal), set(22,Nsource),
set(23,rootLength) set(23,NuptakeTotal),
set(24,rootLength)
); );
} }
......
...@@ -47,14 +47,35 @@ module DiffuseLight ...@@ -47,14 +47,35 @@ module DiffuseLight
power = 1e6 * 0.55 * 4.55 * DailyDiffuseRadiation / (dayLength*60*60); power = 1e6 * 0.55 * 4.55 * DailyDiffuseRadiation / (dayLength*60*60);
} }
} }
==> RH(random(0,360)) ==> //RH(random(0,360))
RL(90) RL(90)
[ for (int i = 1; i<=12; i++) ([ RU(i*360/12) RL(-11.7) M(dist) RL(180) SingleLight(power*0.003218/Math.sin(11.7* Math.PI/180))] )]
// original
[ for (int i = 1; i<=12; i++) ([ RU(i*360/12) RL(-11.7) M(dist) RL(180) SingleLight(power*0.003218)] )]
[ for (int i = 1; i<=12; i++) ([ RU(20) RU(i*360/12) RL(-34.2) M(dist) RL(180) SingleLight(power*0.01163)] )]
[ for (int i = 1; i<=12; i++) ([ RU(40) RU(i*360/12) RL(-54.9) M(dist) RL(180) SingleLight(power*0.019812)] )]
[ for (int i = 1; i<=12; i++) ([ RU(60) RU(i*360/12) RL(-71.1) M(dist) RL(180) SingleLight(power*0.023022)] )]
[ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-82.8) M(dist) RL(180) SingleLight(power*0.018522)] )]
[ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-89.1) M(dist) RL(180) SingleLight(power*0.007096)])]
// turtle
/*[ for (int i = 0; i<=0; i++) ([ RU(0) RL(-90) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72) RL(-70.95) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72+36) RL(-49.44) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72) RL(-44.12) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72+24) RL(-30.99) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72+48) RL(-30.99) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=4; i++) ([ RU(i*72) RL(-25.07) M(dist) RL(180) SingleLight(power*1/46)])]
[ for (int i = 0; i<=14; i++) ([ RU(i*24+12) RL(-13.42) M(dist) RL(180) SingleLight(power*1/46)])]*/
// original sine corrected
/*[ for (int i = 1; i<=12; i++) ([ RU(i*360/12) RL(-11.7) M(dist) RL(180) SingleLight(power*0.003218/Math.sin(11.7* Math.PI/180))] )]
[ for (int i = 1; i<=12; i++) ([ RU(20) RU(i*360/12) RL(-34.2) M(dist) RL(180) SingleLight(power*0.01163/Math.sin(34.2* Math.PI/180))] )] [ for (int i = 1; i<=12; i++) ([ RU(20) RU(i*360/12) RL(-34.2) M(dist) RL(180) SingleLight(power*0.01163/Math.sin(34.2* Math.PI/180))] )]
[ for (int i = 1; i<=12; i++) ([ RU(40) RU(i*360/12) RL(-54.9) M(dist) RL(180) SingleLight(power*0.019812/Math.sin(54.9* Math.PI/180))] )] [ for (int i = 1; i<=12; i++) ([ RU(40) RU(i*360/12) RL(-54.9) M(dist) RL(180) SingleLight(power*0.019812/Math.sin(54.9* Math.PI/180))] )]
[ for (int i = 1; i<=12; i++) ([ RU(60) RU(i*360/12) RL(-71.1) M(dist) RL(180) SingleLight(power*0.023022/Math.sin(71.1* Math.PI/180))] )] [ for (int i = 1; i<=12; i++) ([ RU(60) RU(i*360/12) RL(-71.1) M(dist) RL(180) SingleLight(power*0.023022/Math.sin(71.1* Math.PI/180))] )]
[ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-82.8) M(dist) RL(180) SingleLight(power*0.018522/Math.sin(82.8* Math.PI/180))] )] [ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-82.8) M(dist) RL(180) SingleLight(power*0.018522/Math.sin(82.8* Math.PI/180))] )]
[ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-89.1) M(dist) RL(180) SingleLight(power*0.007096/Math.sin(89.1* Math.PI/180))])] [ for (int i = 1; i<=12; i++) ([ RU(80) RU(i*360/12) RL(-89.1) M(dist) RL(180) SingleLight(power*0.007096/Math.sin(89.1* Math.PI/180))])]*/
; ;
// general tile sensor // general tile sensor
...@@ -79,10 +100,11 @@ module TileSensor extends Null ...@@ -79,10 +100,11 @@ module TileSensor extends Null
spec = flm.getAbsorbedPower3d(this); spec = flm.getAbsorbedPower3d(this);
} else { } else {
spec = lm.getAbsorbedPower3d(this); spec = lm.getAbsorbedPower3d(this);
//println(lm.getHitCount(this));
} }
abs = cm * spec.x; abs = cm * spec.x / sensorCorrection;
red = cm * spec.y; red = cm * spec.y / sensorCorrection;
farred = cm * spec.z; farred = cm * spec.z / sensorCorrection;
if (red / farred > 0) {rfr = red / farred;} if (red / farred > 0) {rfr = red / farred;}
absm2 = abs / area ; absm2 = abs / area ;
fabs = absm2 / PPFD; fabs = absm2 / PPFD;
......
...@@ -14,26 +14,26 @@ static boolean sRFR = false; // toggle PAR or R:FR visualisation (default va ...@@ -14,26 +14,26 @@ static boolean sRFR = false; // toggle PAR or R:FR visualisation (default va
static boolean snapShot = false; // take snapshots? static boolean snapShot = false; // take snapshots?
static String path = "d:/snapshots/"; // location for the snapshots static String path = "d:/snapshots/"; // location for the snapshots
static String pathData = "d:/outputdata/"; // location for the output text files static String pathData = "d:/outputdata/"; // location for the output text files
static boolean writePlantTable = true; // true: write plant-level tables static boolean writePlantTable = true; // true: write plant-level tables
static boolean writeFieldTable = true; // true: write field-level tables static boolean writeFieldTable = true; // true: write field-level tables
static boolean writeLight = false; // true: record tile and sensor light variable (only for plant-independent tiles) static boolean writeLight = false; // true: record tile and sensor light variable (only for plant-independent tiles)
// field parameters // field parameters
static int[] speciesSequence = {maize}; // sequence of species in adjacent strips (nr of values determines nr of strips) static int[] speciesSequence = {maize}; // sequence of species in adjacent strips (nr of values determines nr of strips)
static double stripDistance = 0; // extra distance between adjacent strips (THIS EXTRA AREA IS NOT INCLUDED IN THE CALCULATION OF STRIP BIOMASS OR YIELD) static double stripDistance = 0; // extra distance between adjacent strips (THIS EXTRA AREA IS NOT INCLUDED IN THE CALCULATION OF STRIP BIOMASS OR YIELD)
// checkerboard // checkerboard
static boolean checker = false; // true: primary species is placed in a checkerboard design with a second species (checkerSpecies) static boolean checker = false; // true: primary species is placed in a checkerboard design with a second species (checkerSpecies)
static int checkerSpecies = sunflower; // the second species in the checkboard design static int checkerSpecies = at; // the second species in the checkboard design
static int checkerSize = 1; // size of checkerboard unit (e.g.: 3 would give units of 3x3 plants arranged in a checkboard design static int checkerSize = 1; // size of checkerboard unit (e.g.: 3 would give units of 3x3 plants arranged in a checkboard design
// mixtures // mixtures
static boolean mix = false; // true: primary species is mixed with a second species (mixSpecies) according to a proporionality (mixProp) static boolean mix = false; // true: primary species is mixed with a second species (mixSpecies) according to a proporionality (mixProp)
static int mixSpecies = sunflower; // the second species in the mix static int mixSpecies = at; // the second species in the mix
static double mixProp = 0.5; // the proporion of the primary species in the mix static double mixProp = 0.5; // the proporion of the primary species in the mix
// randomization // randomization
static boolean randomArrangement = false; // overrule plant arrangement and fully randomize plant location in strip static boolean randomArrangement = false; // overrule plant arrangement and fully randomize plant location in strip
// root and soil parameters // root and soil parameters
static boolean rootModule = true; // toggle root and soil simulation. If false, roots are present only as a simple sink for assimilates static boolean rootModule = false; // toggle root and soil simulation. If false, roots are present only as a simple sink for assimilates
static double soilN = 1000; // uMol N / L soil static double soilN = 1000; // uMol N / L soil
static double soilP = 50; // uMol N / L soil static double soilP = 50; // uMol N / L soil
static double cellSize = 0.1; // size of a cubical soil cell (m*m*m); should fit within field size chosen e.g. field length and width should be divisible by cellsize! static double cellSize = 0.1; // size of a cubical soil cell (m*m*m); should fit within field size chosen e.g. field length and width should be divisible by cellsize!
...@@ -45,21 +45,22 @@ static double P_Cmin_r = 1.2; // Minimum P concentration required for root u ...@@ -45,21 +45,22 @@ static double P_Cmin_r = 1.2; // Minimum P concentration required for root u
// weed parameters // weed parameters
static boolean weeds = false; // true: weeds grow according to parameters below static boolean weeds = false; // true: weeds grow according to parameters below
static double weedDens = 12; // density of weeds (per m2) static double weedDens = 12; // density of weeds (per m2)
static int weedSpecies = hemp; // which species# should represent the weed static int weedSpecies = at; // which species# should represent the weed
static int nrWeedPlants; static int nrWeedPlants;
// general plant settings // general plant settings
static boolean functional = true; // false: structural model only (light is intercepted but not used for growth) static boolean functional = true; // false: structural model only (light is intercepted but not used for growth)
static boolean plantDeath = false; // toggle possibilities for entire plants to taken from the scene in case of very low source/sink ratio static boolean plantDeath = false; // toggle possibilities for entire plants to taken from the scene in case of very low source/sink ratio
static boolean leafSenescence = true; // toggles falling of leaves at end of life span or when light level at leaf is low static boolean leafSenescence = true; // toggles falling of leaves at end of life span or when light level at leaf is low
static double fallPAR = 25; // light level (umol/m2/s) below which leaf should drop static double fallPAR = 25; // light level (umol/m2/s) below which leaf should drop
static boolean FvCB = true; // true: use biochemical photosynthesis model; false: use light response curve static boolean FvCB = true; // true: use biochemical photosynthesis model; false: use light response curve
static int timeToFlower = 60; // TO BE MADE A FUNCTION OF DAYLENGTH OR OTHER ENVIRONMENTAL VARIABLE static int timeToFlower = 60; // TO BE MADE A FUNCTION OF DAYLENGTH OR OTHER ENVIRONMENTAL VARIABLE
// light model options // light model options
static double rfrIncoming = 1.2; // red/far-red ratio of the incoming radiation static double rfrIncoming = 1.2; // red/far-red ratio of the incoming radiation
static int depth = 10; // maximum number of reflections / transmissions of a ray static int depth = 10; // maximum number of reflections / transmissions of a ray
static LightModel lm = new LightModel(2000000, depth); static double sensorCorrection = 0.87; // correction factor for horizontal flat light sensors at soil level
static LightModel lm = new LightModel(5000000, depth);
static FluxLightModel flm = new FluxLightModel(20000000, depth); static FluxLightModel flm = new FluxLightModel(20000000, depth);
static boolean seeRays = false; // see direction of rays from light sources if true static boolean seeRays = false; // see direction of rays from light sources if true
static boolean infinite = true; // clone the canopy to eliminate border effects static boolean infinite = true; // clone the canopy to eliminate border effects
...@@ -86,7 +87,7 @@ static int nrTiles = 1; // nr tiles per plant per edge (e.g. nrTiles=3 mean ...@@ -86,7 +87,7 @@ static int nrTiles = 1; // nr tiles per plant per edge (e.g. nrTiles=3 mean
// plant-independent tiles // plant-independent tiles
static double offSetX = 0.1; // x location of tile 1 with respect to plant 1 static double offSetX = 0.1; // x location of tile 1 with respect to plant 1
static double offSetY = 0.25; // y location of tile 1 with respect to plant 1 static double offSetY = 0.25; // y location of tile 1 with respect to plant 1
static int nrX = 10; // number of tiles in x direction static int nrX = 6; // number of tiles in x direction
static int nrY = 10; // number of tiles in y direction static int nrY = 10; // number of tiles in y direction
static int nrZ = 1; // number of associated sensors in z direction (height) static int nrZ = 1; // number of associated sensors in z direction (height)
static double tSizeX = 0.1; // width of tile static double tSizeX = 0.1; // width of tile
...@@ -95,8 +96,8 @@ static double tSizeZ = 0.1; // height of sensor ...@@ -95,8 +96,8 @@ static double tSizeZ = 0.1; // height of sensor
//view layers //view layers
static int leafLayer = 3; // layer in which to show the leaves static int leafLayer = 3; // layer in which to show the leaves
static int rootBoxLayer = 14; static int rootLayer = 14;
static int rootLayer = 13; static int rootBoxLayer = 13;
static int tileLayer = 12; static int tileLayer = 12;
// timers // timers
...@@ -351,6 +352,7 @@ const DatasetRef apicalDominance = new DatasetRef("Apical Dominance"); ...@@ -351,6 +352,7 @@ const DatasetRef apicalDominance = new DatasetRef("Apical Dominance");
const DatasetRef plantBranches = new DatasetRef("Branch number"); const DatasetRef plantBranches = new DatasetRef("Branch number");
const DatasetRef plantSAS = new DatasetRef("SAScoefficient"); const DatasetRef plantSAS = new DatasetRef("SAScoefficient");
const DatasetRef plantFabs = new DatasetRef("Plant fPAR"); const DatasetRef plantFabs = new DatasetRef("Plant fPAR");
const DatasetRef plantCPAR = new DatasetRef("Plant Accumulated PAR (mol)");
const DatasetRef plantRFR = new DatasetRef("Plant R:FR"); const DatasetRef plantRFR = new DatasetRef("Plant R:FR");
const DatasetRef plantNitro = new DatasetRef("Plant N uptake"); const DatasetRef plantNitro = new DatasetRef("Plant N uptake");
const DatasetRef plantNitroTotal = new DatasetRef("Total plant N uptake"); const DatasetRef plantNitroTotal = new DatasetRef("Total plant N uptake");
......
...@@ -4,10 +4,10 @@ import static parameters.*; ...@@ -4,10 +4,10 @@ import static parameters.*;
{ {
// field parameters // field parameters
nrRows[dicot1] = 5; // number of rows nrRows[dicot1] = 1; // number of rows
nrPlants[dicot1] = 1; // number of plants in a row nrPlants[dicot1] = 1; // number of plants in a row
rowDistance[dicot1] = 0.2; // distance between rows rowDistance[dicot1] = 10;//0.2; // distance between rows
plantDistance[dicot1] = 0.2; // distance between plants in a row plantDistance[dicot1] = 10;//0.2; // distance between plants in a row
delay[dicot1] = 0; // germination delay after start of simulation (in days, to represent late sowing) delay[dicot1] = 0; // germination delay after start of simulation (in days, to represent late sowing)
harvest[dicot1] = 77; // duration, i.e. harvest/removal time after emergence (in days) harvest[dicot1] = 77; // duration, i.e. harvest/removal time after emergence (in days)
hexa[dicot1] = false; // true: hexagonal layout, rectangular otherwise hexa[dicot1] = false; // true: hexagonal layout, rectangular otherwise
......
...@@ -4,10 +4,10 @@ import static parameters.*; ...@@ -4,10 +4,10 @@ import static parameters.*;
{ {
// field parameters // field parameters
nrRows[sunflower] = 5; // number of rows nrRows[sunflower] = 1; // number of rows
nrPlants[sunflower] = 5; // number of plants in a row nrPlants[sunflower] = 1; // number of plants in a row
rowDistance[sunflower] = 0.3; // distance between rows rowDistance[sunflower] = 0.5; // distance between rows
plantDistance[sunflower] = 0.3; // distance between plants in a row plantDistance[sunflower] = 0.5; // distance between plants in a row
delay[sunflower] = 0; // germination delay after start of simulation (in days, to represent late sowing) delay[sunflower] = 0; // germination delay after start of simulation (in days, to represent late sowing)
harvest[sunflower] = 110; // duration, i.e. harvest/removal time after emergence (in days) harvest[sunflower] = 110; // duration, i.e. harvest/removal time after emergence (in days)
hexa[sunflower] = false; // true: hexagonal layout, rectangular otherwise hexa[sunflower] = false; // true: hexagonal layout, rectangular otherwise
...@@ -74,7 +74,7 @@ import static parameters.*; ...@@ -74,7 +74,7 @@ import static parameters.*;
EL[sunflower] = 51; // Root elongation rate mm mm-1 day-1 EL[sunflower] = 51; // Root elongation rate mm mm-1 day-1
Dinit[sunflower] = 0.0011; // Initial root Diameter in m Dinit[sunflower] = 0.0011; // Initial root Diameter in m
RTD[sunflower] = 200; // Root tissue density (g/cm3) (Pages 2013 - generic) RTD[sunflower] = 200; // Root tissue density (g/cm3) (Pages 2013 - generic)
MP[sunflower] = 5; // Maximum number of root primordia MP[sunflower] = 0; // Maximum number of root primordia
ER[sunflower] = 0.056; // Emergence rate of root primordia per day = 0.968 at 25 degrees which is 0.056 per dregreeday. ER[sunflower] = 0.056; // Emergence rate of root primordia per day = 0.968 at 25 degrees which is 0.056 per dregreeday.
IBD[sunflower] = 0.0078; // Inter Branch Distance IBD[sunflower] = 0.0078; // Inter Branch Distance
IBDmax[sunflower] = 0.039; // Inter branch distance of the highest root order IBDmax[sunflower] = 0.039; // Inter branch distance of the highest root order
...@@ -85,7 +85,7 @@ import static parameters.*; ...@@ -85,7 +85,7 @@ import static parameters.*;
angleAVG[sunflower] = 60; // average insertion angle of lateral roots angleAVG[sunflower] = 60; // average insertion angle of lateral roots
angleVAR[sunflower] = 20; // variation in the insertion angle of lateral roots angleVAR[sunflower] = 20; // variation in the insertion angle of lateral roots
MCP[sunflower] = 5; //random root movement based on mechanical constraints; radial degrees/m MCP[sunflower] = 5; //random root movement based on mechanical constraints; radial degrees/m
MaxRootOrder[sunflower] = 0; MaxRootOrder[sunflower] = 1;
fineRootD[sunflower] = 0.1; // Diameter in m/m fineRootD[sunflower] = 0.1; // Diameter in m/m
fineRootDensity[sunflower] = 32; // m fine roots/m coarse root fineRootDensity[sunflower] = 32; // m fine roots/m coarse root
RLratio[sunflower] = 1; // Root/Leaf ratio RLratio[sunflower] = 1; // Root/Leaf ratio
......
...@@ -6,8 +6,8 @@ import static parameters.*; ...@@ -6,8 +6,8 @@ import static parameters.*;
// field parameters // field parameters
nrRows[maize] = 2; // number of rows nrRows[maize] = 2; // number of rows
nrPlants[maize] = 3; // number of plants in a row nrPlants[maize] = 3; // number of plants in a row
rowDistance[maize] = 0.5; // distance between rows rowDistance[maize] = 0.6; // distance between rows
plantDistance[maize] = 0.2; // distance between plants in a row plantDistance[maize] = 0.1; // distance between plants in a row
delay[maize] = 0; // germination delay after start of simulation (in days, to represent late sowing) delay[maize] = 0; // germination delay after start of simulation (in days, to represent late sowing)
harvest[maize] = 95; // duration, i.e. harvest/removal time after emergence (in days) harvest[maize] = 95; // duration, i.e. harvest/removal time after emergence (in days)
hexa[maize] = false; // true: hexagonal layout, rectangular otherwise hexa[maize] = false; // true: hexagonal layout, rectangular otherwise
...@@ -57,7 +57,7 @@ import static parameters.*; ...@@ -57,7 +57,7 @@ import static parameters.*;
nrLeavesUpper[maize] = 1; // number of leaves per phytomer for the upper phytomers nrLeavesUpper[maize] = 1; // number of leaves per phytomer for the upper phytomers
rankLower[maize] = 3; // number of lower phytomers that contain nrLeavesLower leaves rankLower[maize] = 3; // number of lower phytomers that contain nrLeavesLower leaves
phyllotaxisLower[maize] = 137; // angle between consecutive leaves along a stem for the lower phytomers phyllotaxisLower[maize] = 137; // angle between consecutive leaves along a stem for the lower phytomers
phyllotaxisUpper[maize] = 180; // angle between consecutive leaves along a stem for the upper phytomers phyllotaxisUpper[maize] = 137; // angle between consecutive leaves along a stem for the upper phytomers
varDelay[maize] = 2; // max variation in germination delay (in days, 0 = simultaneous germination) varDelay[maize] = 2; // max variation in germination delay (in days, 0 = simultaneous germination)
seedMass[maize] = 100; // seed endosperm mass in mg seedMass[maize] = 100; // seed endosperm mass in mg
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment