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/31 07:40] 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 ======
 +
 +//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. 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.
Line 6: Line 8:
  
  
-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 53: Line 58:
 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):
Line 84: Line 97:
 </code> </code>
  
-This bidirectional transport follows the concentration gradient between successive internodes.+This bidirectional transport follows the concentration gradient between successive internodes. 
  
 **c) Internode to Fruit Transport** (L. 269-275): **c) Internode to Fruit Transport** (L. 269-275):
Line 97: Line 110:
 } }
 </code> </code>
 +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). 
  
 ===== Fruit Set Decision Based on Sugar Availability =====  ===== Fruit Set Decision Based on Sugar Availability ===== 
-The model now makes fruit formation dependent on available sugar in the plant (L. 165-172):+The model now makes fruit formation dependent on sugar available in the nearest leaf (L. 169-174):
 <code java> <code java>
-fl:Flower(t, m), (t >= m) ==>  +fl:Flower(t, m), (t >= m && t<m+2) ==>  
-    {float sugar = sum((* lf:Leaf *)[as]); + {float sugar = first((* Leaf *)[as]); 
-    println(sugar); + println("sugar: " + sugar); 
-    }  + }  
-    if(probability(0.6)) (Fruit(0.01,1,0.1)) + if(sugar>0.0005) ({noFrts++;Fruit(0.01,1,0.1,noFrts)) 
-    else if(probability(0.4)) ();+ else (fl);
 </code> </code>
- +Note that a ''Flower'' that has not yet become a ''Fruit'', has two more chances to become one.   
-Sugar availability is calculated by summing all leaf assimilates before deciding on fruit formation.+Availability of sugar is calculated by querying ''as'' of the nearest ''Leaf'' before deciding on fruit formation.
  
 ===== Fruit Growth Competition ===== ===== Fruit Growth Competition =====
-Multiple fruits compete for available resources using an age-based weighting system (L. 209-225):+Multiple fruits compete for available resources using an age-based weighting system (L. 214-226):
 <code java> <code java>
 fr:Fruit ::> { fr:Fruit ::> {
Line 127: Line 141:
     float sugar = (totalAgeWeight > 0) ?      float sugar = (totalAgeWeight > 0) ? 
         (totalSugar * ageWeight) / totalAgeWeight : totalSugar / fruitCount;         (totalSugar * ageWeight) / totalAgeWeight : totalSugar / fruitCount;
-</code>+    </code>
  
-Younger fruits receive proportionally more resources through exponential age weighting, simulating their stronger sink strength.+Younger fruits receive proportionally more resources through exponential age weighting, simulating their stronger sink affinity (thereby compensating their smaller size).
  
 ===== Visual Feedback ===== ===== Visual Feedback =====
Line 138: Line 152:
  
 ===== Tasks for Exploration ===== ===== Tasks for Exploration =====
-1. Run the model and observe sugar flow: Watch how internodes change color as sugar moves through them. +  - 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: +  Modify DIFF_CONST: Try values between 0.0001 and 0.01. How does this affect: 
-o Speed of sugar movement? +      Speed of sugar movement? 
-o Final fruit size? +  * Final fruit size? 
-o Number of successfully developed fruits? +  * Number of successfully developed fruits? 
-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? +  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? 
-4. Adjust maintenance respiration: Change MR from 0.01 to 0.05. How does increased respiration affect fruit development?+  Adjust maintenance respiration: Change MR from 0.01 to 0.05. How does increased respiration affect fruit development?
  
 ===== Biological Relevance ===== ===== Biological Relevance =====
tutorials/radiation-model-in-crop_model9.1761892857.txt.gz · Last modified: 2025/10/31 07:40 by barley1965