User Tools

Site Tools


tutorials:radiation-model-in-crop_model5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tutorials:radiation-model-in-crop_model5 [2025/05/27 17:15] – created barley1965tutorials:radiation-model-in-crop_model5 [2025/05/27 18:00] (current) barley1965
Line 1: Line 1:
 ====== Introducing simple linear leaf photosynthesis ====== ====== Introducing simple linear leaf photosynthesis ======
    
-//Open the file SimplePS.gsz.//+//Open the file {{ :tutorials:simpleps.gsz |simpleps.gsz}}.// 
  
 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// and works well as a rough tool for many crops. 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// and works well as a rough tool for many crops.
Line 14: Line 14:
 </code> </code>
  
- 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->assimilates: 
 +const float CONV_FACTOR = 0.2;  
 +</code>
    
-The leaf now receives a further parameter, which needs to be initiated when the Leaf is first invoked:+The new parameter, as, of Leaf needs to be initiated when the Leaf is first invoked, we have chose 1 to indicate that a new Leaf starts with a little reserve of assimilates: 
 + 
 +<code java> 
 +Bud(r, p, o), (r < 10 && p == 0 && o < 3) ==> RV(-0.1) Internode(0.1, 1) Node  
 + [RL(BRANCH_ANGLE) Bud(r, PHYLLOCHRON, o+1) ][ RL(LEAF_ANGLE) Leaf(0.1, 0.07, 0, 1, 1)]   
 + RH(GOLDEN_ANGLE) RV(-0.1) Internode(0.1, 1) Bud(r+1, PHYLLOCHRON, o); 
 +</code>
    
-The method absorbAndGrow() is modified accordingly:+The method ''absorbAndGrow()'' is modified accordingly: 
 + 
 +<code java> 
 +protected void absorbAndGrow () 
 +
 + lf:Leaf ::> { 
 + lf[al] = lm.getAbsorbedPower3d(lf).integrate()*2.25; 
 + //println(lf[al]); 
 + lf.(setShader(new AlgorithmSwitchShader(new RGBAShader(lf[al]/5.0, lf[al]*2,lf[al]/100.0),GREEN))); 
 + 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>0) { 
 + lf[length] += logistic(2,lf[age],10,0.2); 
 + lf[width] = lf[length]*0.7; }  
 +
 +</code>
    
 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 parameterDo you remember how to do that? + 
 +//Don’t forget to plot the parameter (see below)! Do you remember how to do that? And while you're at it, why don't you also plot the amount of light absorbed by the tiles? //  
 + 
 +{{tutorials:rueoutput.png}}
  
tutorials/radiation-model-in-crop_model5.1748358919.txt.gz · Last modified: 2025/05/27 17:15 by barley1965