tutorials:radiation-model-in-crop_model5
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| tutorials:radiation-model-in-crop_model5 [2025/05/27 17:15] – created barley1965 | tutorials:radiation-model-in-crop_model5 [2025/10/29 21:39] (current) – barley1965 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Introducing simple linear leaf photosynthesis ====== | ====== Introducing simple linear leaf photosynthesis ====== | ||
| - | //Open the file SimplePS.gsz.// | + | //Open the file {{ : |
| We want to have some rudimentary photosynthesis. In its simplest version, the model of photosynthesis is simply a linear function of absorbed radiation. This approach is called //Radiation Use Efficiency// | We want to have some rudimentary photosynthesis. In its simplest version, the model of photosynthesis is simply a linear function of absorbed radiation. This approach is called //Radiation Use Efficiency// | ||
| Line 14: | Line 14: | ||
| </ | </ | ||
| - | Then we define a simple conversion factor that serves to calculate the amount of assimilates in one step from the quantity of absorbed light: | + | Then we define a simple conversion factor that serves to calculate the amount of assimilates in one step from the quantity of absorbed light: |
| + | |||
| + | <code java> | ||
| + | // conversion factor light-> | ||
| + | const float CONV_FACTOR = 0.2; | ||
| + | </ | ||
| - | The leaf now receives a further | + | The new parameter, |
| + | |||
| + | <code java> | ||
| + | Bud(r, p, o), (r < 10 && p == 0 && o < 3) ==> RV(-0.1) Internode(0.1, | ||
| + | [RL(BRANCH_ANGLE) Bud(r, PHYLLOCHRON, | ||
| + | RH(GOLDEN_ANGLE) RV(-0.1) Internode(0.1, | ||
| + | </ | ||
| - | The method absorbAndGrow() is modified accordingly: | + | The method |
| + | |||
| + | <code java> | ||
| + | protected void absorbAndGrow () | ||
| + | [ | ||
| + | lf:Leaf ::> { | ||
| + | lf[al] = lm.getAbsorbedPower3d(lf).integrate()*2.25; | ||
| + | // | ||
| + | lf.(setShader(new AlgorithmSwitchShader(new RGBAShader(lf[al]/ | ||
| + | lf[age]++; | ||
| + | //amount of assimilates | ||
| + | lf[as] = lf[al]*CONV_FACTOR; | ||
| + | // amount of assimilates of all leaves | ||
| + | float lfas = sum((* Leaf *)[as]); | ||
| + | // dependency of growth on availability of assimilates | ||
| + | if(lfas> | ||
| + | lf[length] += logistic(2, | ||
| + | lf[width] = lf[length]*0.7; | ||
| + | } | ||
| + | </ | ||
| Note that we also introduced a new condition to leaf growth: it is now dependent on the global availability of assimilates. Before leaf growth can occur, it is checked whether the sum of assimilates of all leaves is not zero. | Note that we also introduced a new condition to leaf growth: it is now dependent on the global availability of assimilates. Before leaf growth can occur, it is checked whether the sum of assimilates of all leaves is not zero. | ||
| - | Don’t forget to plot the parameter. Do you remember how to do that? | + | |
| + | //Don’t forget to plot the parameter | ||
| + | |||
| + | {{tutorials: | ||
tutorials/radiation-model-in-crop_model5.1748358919.txt.gz · Last modified: 2025/05/27 17:15 by barley1965
