tutorials:radiation-model-in-crop_model9
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tutorials:radiation-model-in-crop_model9 [2025/10/31 12:39] – barley1965 | tutorials:radiation-model-in-crop_model9 [2025/10/31 14:11] (current) – barley1965 | ||
|---|---|---|---|
| Line 36: | Line 36: | ||
| </ | </ | ||
| - | For simplicity, we have only introduced maintenance respiration in internodes, not in fruits and leaves (you can do this yourself...). | + | Note that internode length is incremented up to a fixed length of 1, however, |
| ===== 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; |
| </ | </ | ||
| - | The transport | + | Transport |
| <code java> | <code java> | ||
| Line 58: | 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 < | lf:Leaf < | ||
| - | | + | if(lf[as] > 0.01 && lf[age]> |
| 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; | ||
| - | | + | // |
| - | } | + | } else |
| + | if(itn[as] > 0.01 && lf[age]< | ||
| + | float exportable = itn[as] - 0.01; | ||
| + | float r = DIFF_CONST * exportable; | ||
| + | lf[as] += r; | ||
| + | itn[as] -= r; | ||
| + | // | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| - | 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. |
| **b) Internode to Internode Transport** (L. 260-268): | **b) Internode to Internode Transport** (L. 260-268): | ||
| Line 89: | Line 97: | ||
| </ | </ | ||
| - | 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 102: | Line 110: | ||
| } | } | ||
| </ | </ | ||
| + | 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 | + | The model now makes fruit formation dependent on sugar available |
| <code java> | <code java> | ||
| - | fl: | + | fl: |
| - | {float sugar = sum((* lf:Leaf *)[as]); | + | {float sugar = first((* Leaf *)[as]); |
| - | println(sugar); | + | println(" |
| - | } | + | } |
| - | if(probability(0.6)) (Fruit(0.01, | + | if(sugar>0.0005) ({noFrts++; |
| - | else if(probability(0.4)) | + | else (fl); |
| </ | </ | ||
| - | + | Note that a '' | |
| - | Sugar availability | + | Availability of sugar is calculated by querying '' |
| ===== 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 132: | 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. | + | 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 143: | 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: | + | |
| - | o 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? | + | |
| - | 4. Adjust maintenance respiration: | + | |
| ===== Biological Relevance ===== | ===== Biological Relevance ===== | ||
tutorials/radiation-model-in-crop_model9.1761910779.txt.gz · Last modified: 2025/10/31 12:39 by barley1965
