User Tools

Site Tools


tutorials:radiation-model-in-crop_model5

Introducing simple linear leaf photosynthesis

Open the file 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 first add another parameter, as, to the Leaf module. In this parameter, the output of our primitive photosynthesis model will be stored:

//                                                 new parameter as
module Leaf (super.length, super.width, float al, int age, float as) extends Box(length, width, 0.01).
	(setShader(new AlgorithmSwitchShader(new RGBAShader(0, 1, 0), GREEN)));

Then we define a simple conversion factor that serves to calculate the amount of assimilates in one step from the quantity of absorbed light:

// conversion factor light->assimilates:
const float CONV_FACTOR = 0.2; 

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:

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);

The method absorbAndGrow() is modified accordingly:

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; }	
	}

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 (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/radiation-model-in-crop_model5.txt · Last modified: 2025/05/27 18:00 by barley1965