User Tools

Site Tools


tutorials:radiation-model-in-crop_model9

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutorials:radiation-model-in-crop_model9 [2025/10/30 22:21] barley1965tutorials:radiation-model-in-crop_model9 [2025/10/31 14:11] (current) barley1965
Line 1: Line 1:
 ====== Assimilate Transport and Fruit Development ====== ====== Assimilate Transport and Fruit Development ======
  
-The Transport model extends the FlowerAging model by implementing a physiologically-based system for sugar transport from photosynthetically active leaves through the plant architecture to developing fruits. This creates a more realistic simulation of source-sink relationships in the virtual plant.+//Open {{ :tutorials:advanced:Transport.gsz |Transport.gsz}}// 
 + 
 +The Transport model extends the [[:Tutorials:Radiation-model-in-crop model7|Flower aging model]] by implementing a physiologically-based system for sugar transport from photosynthetically active leaves through the plant architecture to developing fruits. This creates a more realistic simulation of source-sink relationships in the virtual plant.
  
 ===== Assimilate Storage and Transport Parameters ===== ===== Assimilate Storage and Transport Parameters =====
  
  
-The model introduces a new parameter ''as'' (assimilate storage) to track sugar content in different organs:+The model introduces a new parameter ''as'' (assimilate storage) to track sugar content in different organs (L. 9, 12, 43):
  
 <code java> <code java>
Line 17: Line 19:
  
 ===== Maintenance Respiration =====  ===== Maintenance Respiration ===== 
-A maintenance respiration constant has been added to simulate the metabolic cost of keeping tissues alive (L. 78):+A maintenance respiration constant has been added to simulate the metabolic cost of keeping tissues alive (L. 96):
  
 <code java> <code java>
Line 23: Line 25:
 </code> </code>
  
-This is applied to internodes during growth to simulate sugar consumption:+This is applied to internodes during growth to simulate sugar consumption (L. 207 ff):
  
 <code java> <code java>
 itn:Internode ::> { itn:Internode ::> {
-    itn[age]++; + itn[age]++; 
-    if(itn[as]>0) {itn[as] *= (1-MR); } + if(itn[as]>0) {itn[as] *= (1-MR); } 
-    itn[length] += logistic(1, itn[age], 10, 0.1); + itn[length] += logistic(1, itn[age], 10, itn[as]); 
-}+ itn.(setShader(new RGBAShader(itn[as]*15.0, itn[as]*7.5, itn[as]))); 
 + }
 </code> </code>
 +
 +Note that internode length is incremented up to a fixed length of 1, however, we vary the speed of elongation as a function of sugar available in the internode, ''itn[as]''
  
 ===== Transport Mechanism =====  ===== Transport Mechanism ===== 
-The main novelty of the present model is the implementation of a diffusion-based transport system. The transport occurs with a diffusion constant that controls the rate (L. 75):+The main novelty of the present model is the implementation of a diffusion-based transport system. The transport occurs with a diffusion constant that controls the rate (L. 94):
  
 <code java> <code java>
-const float DIFF_CONST = 0.001;+const float DIFF_CONST = 0.002;
 </code> </code>
  
-The transport is invoked periodically in the ''grow()'' method - every 24 timesteps to simulate hourly transport (L. 138-143):+Transport is invoked periodically in the ''grow()'' method - every 24 timesteps to simulate hourly transport (L. 145-149):
  
 <code java> <code java>
Line 52: Line 57:
 ===== Transport Rules ===== ===== Transport Rules =====
 Three types of transport are implemented using user-defined edge relations: Three types of transport are implemented using user-defined edge relations:
-a) Leaf to Internode Transport (L. 251-258):+ 
 +**a) Leaf to Internode Transport, and vice versa ** (L. 256-280): 
 <code java> <code java>
 lf:Leaf <-minDescendants- itn:Internode ::> { lf:Leaf <-minDescendants- itn:Internode ::> {
-    if(lf[as] > 0.01) { // Keep minimum for leaf maintenance+ if(lf[as] > 0.01 && lf[age]>=10) { // Keep minimum for leaf maintenance
         float exportable = lf[as] - 0.01;         float exportable = lf[as] - 0.01;
         float r = DIFF_CONST * exportable;         float r = DIFF_CONST * exportable;
         lf[as] -= r;         lf[as] -= r;
         itn[as] += r;         itn[as] += r;
-    + //println("transport from leaf to internode"); 
-}+ } else 
 + if(itn[as] > 0.01 && lf[age]<10) { // Keep minimum for internode maintenance 
 +        float exportable = itn[as] - 0.01; 
 +        float r = DIFF_CONST * exportable; 
 +        lf[as] += r; 
 +        itn[as] -= r; 
 + //println("transport from internode to leaf"); 
 +
 + }
 </code> </code>
  
-This rule ensures leaves retain a minimum amount (0.01) for maintenance while exporting the surplus. +This rule ensures leaves retain a minimum amount (0.01) for maintenance while exporting the surplus. In fact, if you look closely, assimilates can also go the other way, from an internode to a (young) leaf, because the latter is a sugar sink before it has reached its final size and becomes a net exporter of assimilates!  
-b) Internode to Internode Transport (L. 260-268):+ 
 +**b) Internode to Internode Transport** (L. 260-268): 
 +<code java>
 i_top:Internode <-minDescendants- i_bottom:Internode ::> { i_top:Internode <-minDescendants- i_bottom:Internode ::> {
     if((i_bottom[as] - i_top[as])<=0) {      if((i_bottom[as] - i_top[as])<=0) { 
Line 78: Line 95:
     }     }
 } }
-This bidirectional transport follows the concentration gradient between successive internodes. +</code> 
-c) Internode to Fruit Transport (L. 269-275):+ 
 +This bidirectional transport follows the concentration gradient between successive internodes.  
 + 
 +**c) Internode to Fruit Transport** (L. 269-275): 
 +<code java>
 itn:Internode -minDescendants-> fr:Fruit ::> { itn:Internode -minDescendants-> fr:Fruit ::> {
     if(itn[as]>0) {     if(itn[as]>0) {
Line 88: Line 109:
     }     }
 } }
-5) Fruit Set Decision Based on Sugar Availability +</code> 
-The model now makes fruit formation dependent on available sugar in the plant (L. 165-172): +This final rule expresses transport in only one direction, i.e. fruits are //absolute sinks// (which is wrong, because young fruit are often green and have been shown to carry out photosynthesis).  
-fl:Flower(t, m), (t >= m) ==>  + 
-    {float sugar = sum((* lf:Leaf *)[as]); +===== Fruit Set Decision Based on Sugar Availability =====  
-    println(sugar); +The model now makes fruit formation dependent on sugar available in the nearest leaf (L. 169-174): 
-    }  +<code java> 
-    if(probability(0.6)) (Fruit(0.01,1,0.1)) +fl:Flower(t, m), (t >= m && t<m+2) ==>  
-    else if(probability(0.4)) (); + {float sugar = first((* Leaf *)[as]); 
-The sugar availability is calculated by summing all leaf assimilates before deciding on fruit formation. + println("sugar: " + sugar); 
-6) Fruit Growth Competition + }  
-Multiple fruits compete for available resources using an age-based weighting system (L. 209-225):+ if(sugar>0.0005) ({noFrts++;Fruit(0.01,1,0.1,noFrts)) 
 + else (fl); 
 +</code> 
 +Note that a ''Flower'' that has not yet become a ''Fruit'', has two more chances to become one.   
 +Availability of sugar is calculated by querying ''as'' of the nearest ''Leaf'' before deciding on fruit formation. 
 + 
 +===== Fruit Growth Competition ===== 
 +Multiple fruits compete for available resources using an age-based weighting system (L. 214-226): 
 +<code java>
 fr:Fruit ::> { fr:Fruit ::> {
     float totalSugar = sum((* lf1:Leaf *)[as]);     float totalSugar = sum((* lf1:Leaf *)[as]);
Line 112: Line 141:
     float sugar = (totalAgeWeight > 0) ?      float sugar = (totalAgeWeight > 0) ? 
         (totalSugar * ageWeight) / totalAgeWeight : totalSugar / fruitCount;         (totalSugar * ageWeight) / totalAgeWeight : totalSugar / fruitCount;
-Younger fruits receive proportionally more resources through exponential age weighting, simulating their stronger sink strength+    </code> 
-7) Visual Feedback+ 
 +Younger fruits receive proportionally more resources through exponential age weighting, simulating their stronger sink affinity (thereby compensating their smaller size)
 + 
 +===== Visual Feedback =====
 Internodes change color based on their sugar content, providing visual feedback of the transport process: Internodes change color based on their sugar content, providing visual feedback of the transport process:
 +<code java>
 itn.(setShader(new RGBAShader(itn[as]*2000.0, itn[as]*1000, itn[as]))); itn.(setShader(new RGBAShader(itn[as]*2000.0, itn[as]*1000, itn[as])));
-Tasks for Exploration +</code> 
-1. Run the model and observe sugar flow: Watch how internodes change color as sugar moves through them. + 
-2. Modify DIFF_CONST: Try values between 0.0001 and 0.01. How does this affect: +===== Tasks for Exploration ===== 
-o Speed of sugar movement? +  Run the model and observe sugar flow: Watch how internodes change color as sugar moves through them. 
-o Final fruit size? +  Modify DIFF_CONST: Try values between 0.0001 and 0.01. How does this affect: 
-o Number of successfully developed fruits? +      Speed of sugar movement? 
-3. Change transport frequency: Modify the condition if(time % 24 == 0) to different values (e.g., % 12 for twice-daily transport). What impact does this have? +  * Final fruit size? 
-4. Adjust maintenance respiration: Change MR from 0.01 to 0.05. How does increased respiration affect fruit development? +  * Number of successfully developed fruits? 
-Key Improvements Over FlowerAging Model +  Change transport frequency: Modify the condition if(time % 24 == 0) to different values (e.g., % 12 for twice-daily transport). What impact does this have? 
-Feature FlowerAging Transport +  Adjust maintenance respiration: Change MR from 0.01 to 0.05. How does increased respiration affect fruit development? 
-Sugar tracking Only in leaves Leaves, internodes, and fruits + 
-Transport None Diffusion-based with user-defined edges +===== Biological Relevance =====
-Fruit growth Fixed size Based on sugar availability +
-Resource competition None Age-based weighting +
-Maintenance costs None Respiration in internodes +
-Visual feedback Leaf color only Leaf and internode color +
-Biological Relevance+
 This transport model introduces key physiological concepts: This transport model introduces key physiological concepts:
 • Source-sink relationships: Leaves act as sources, fruits as sinks • Source-sink relationships: Leaves act as sources, fruits as sinks
Line 139: Line 167:
 • Maintenance respiration: Realistic metabolic costs • Maintenance respiration: Realistic metabolic costs
 • Sink strength: Younger fruits have stronger sink strength • Sink strength: Younger fruits have stronger sink strength
-The model provides a foundation for exploring how plant architecture and physiology interact to determine yield formation.+
  
tutorials/radiation-model-in-crop_model9.1761859267.txt.gz · Last modified: 2025/10/30 22:21 by barley1965