node00602node00703node00704node00705node00806node00807node00808node00809node00810node00811node00812node00813node00814node00815node00816node00817node00918node00919node00920node00921node00922node00923node00924node00925node00926node00927node00928node00929node00930node00931node00932node00933node00934node00939node00940node00941node00942node00945node00946node00947node00948node00949node00950node00951node00952node00953node00954node00955node00956node00959node00960node00961node00962node00963node00964node00965node00966node00967node00968node00969node00970node00971node00972node00973node00974node00975node00976node00977node00978node00979node00980node00981node00982node00983node00984node00987node00988node00989node00990node00991node00992node00993node00994node00995node00996node00997node00998node00999node01172node01173node01174node01175node01176node01177node01178node01179node01180node01181node01182node01183node01184node01185node01186node01187node01188node01191node01192node01197node01198node01199node01200node01201node01202truewhitePart of GreenlabtruefRtruefn214fR0/maximum_root1fR0maximum_roottruefR0truefn207if CumThrm_t_1_>=TR-0.5 then 0 else ((CumThrm_t_1_+0.5)/TR)^(aR-1)*(1-(CumThrm_t_1_+0.5)/TR)^(bR-1)10CumThrm_t_1_TR0.5CumThrm_t_1_0.5TRaR11CumThrm_t_1_0.5TRbR1truephyllochrontrueCumThrm at emetruefn301if CumThrm_t_1_<(juv_TT+TT0) then juv_rate else ad_rate1juv_rateCumThrm_t_1_juv_TTTT0ad_ratefalseCumThrm(t+1)1truefn501if CumThrm_t_1_-Youngest_emerge_thermal_time>=phyllochron then 1 else 011CumThrm_t_1_Youngest_emerge_thermal_timephyllochron0truejuv_TT1trueadd new leaf?truefn401at_init(CumThrm)1at_initCumThrmtruewater contenttruefn6040.9210.92trueShoot FWtruefn605Shoot_DW/(1-water_content)1Shoot_DW1water_contenttrueShoot DWtruefn706BiomassL+Hypocotyl_mass1BiomassLHypocotyl_masstrueTotal plant DWtruefn807Root_mass+Shoot_DW1Root_massShoot_DWtruejuv_rate1truead_rate1node01000node01001node01002node01003node01004node01005node01006node01007node01008node01009node01010node01011node01012node01013node01014node01015node01016node01017node01018node01019node01020node01021node01022node01023node01024node01025node01026node01027node01028node01029node01030node01031node01032node01033node01034node01035node01036node01037node01038node01039node01040node01041node01042node01043node01044node01045node01046node01047node01048node01049node01050node01051node01052node01053node01054node01055node01056node01057node01058node01059node01060node01061node01062node01063node01064node01065node01066node01067node01068node01069truenonenonewhitenonepopulationPhytomers0bdr1615This is the fraction of the time through the growth cycle at which demand is maximum -- found by differentiating the beta law and solving the resulting equation analyticallytruemax_point_leaftruefn402TL/(1 + (bL-1)/(aL-1))-0.51TL1bL1aL10.5truemaximum_leaftruefn503((max_point_leaf+0.5)/TL)^(aL-1)*(1-(max_point_leaf+0.5)/TL)^(bL-1)1max_point_leaf0.5TLaL11max_point_leaf0.5TLbL1truealphatruefn305if i<=i_max then
min_alpha
else
min_alpha+inc_alpha*(i-i_max)/(last(Current_Leaf_No)-i_max)1min_alphaii_maxmin_alphainc_alphaii_maxlastCurrent_Leaf_Noi_maxtrueLeaf emerge thermal time
(Cycle threshold)truefn110at_init(CumThrm)1at_initCumThrmbdr2426bdr3665bdr4686truefn605Si*fS1SifSbdr32579trueLeaf_masstruefn617if index(1)<=2 then cot_area/SLA_cot else 01cot_areaSLA_cotindex120bdr33683truecd3bdr34470bdr35587bdr36897bdr40448trueTLtruefn101if channel_is(cotyledons) then TLcot else TLtrue1TLcotchannel_iscotyledonsTLtruebdr1653bdr2660truefL0truefn104if CumThrm_t_1_<=Cycle_threshold or CumThrm_t_1_>=Cycle_threshold+TL-0.5 then 0 else ((CumThrm_t_1_-Cycle_threshold+0.5)/TL)^(aL-1)
*(1-(CumThrm_t_1_-Cycle_threshold+0.5)/TL)^(bL-1)10CumThrm_t_1_Cycle_thresholdCumThrm_t_1_Cycle_thresholdTL0.5CumThrm_t_1_Cycle_threshold0.5TLaL11CumThrm_t_1_Cycle_threshold0.5TLbL1truefStruefn105if last(CumThrm)<Cycle_threshold+TS
then 1 else 0int1lastCumThrmCycle_thresholdTS0bdr11680bdr13668truerel_Ldtruefn1if Totaldemand==0 then 0 else Ld/Totaldemand10Totaldemand0LdTotaldemandbdr3675truecarried forwardtruefn404in_preceding([who])array113in_preceding.who[]truefLtruefn212fL0/maximum_leaf1fL0maximum_leafbdr4390trueSitruefn316max(Leaf_mass*SLA, prev(1))1maxLeaf_massSLAprev1bdr22908Leaf demandtrueLdtruefn329PL*fL1PLfLbdr41683bdr48435bdr63827trueTrue leavestruefn404add_new_leaf_1add_new_leaf_node01070node01071node01072node01073node01074node01075node01076node01077node01078node01079node01080node01081node01082node01083node01084node01085node01086node01087node01088node01089node01090node01091node01092node01093node01094node01095node01096node01097node01098node01099node01100node01101node01102node01103node01104truewhitegeometrynode01105node01106node01107node01108node01109node01110node01111node01112node01113node01114truewhiteattachmenttruextruefn10int0trueytruefn20int0trueztruefn3Attachment_height1Attachment_heightbdr1866bdr2405bdr3300bdr4128 - In Arabidopsis, the first two leaves (cotyledons) appear at the
same time with a degree of 180. The third leaf has an angle of close to 90
deg from one of the cotyledons and the fourth leaf is almost opposite the
third leaf. Leaf 5 onwards, the angle is around 137.5 degree from the
previous leaftrueRadial angle around trunkthetatruemajor radiustruefn101sqrt(eccentricity*Si/pi())1eccentricitySitruepetiolestruefn1if index(1)<=4 then element([0,180, 90,270],index(1))
else fmod(in_preceding(prev(0))+137.5, 360)1element.0.180.90.270[]index1index14fmodin_precedingprev0137.5360 Data from the literature (temperature ~ 20 deg C)
- For the first 3 leaves, the length:width ratio is almost 1. For
leaf 4 onwards, the ratio change with leaf rank with the following equation:
Ratio = 0.157 x rank +0.573
Note that the measurements were taken when the leaves were fully
expanded. For the visualisation purpose, I think it would be easier to just
assume
the ratios do not change with time.trueEccentricity of ellipseeccentricitytruefn2if index(1)<=3 then 1 else 0.157*index(1)+0.57311index130.157index10.573truepetiole lengthtruefn40.5*major_radius10.5major_radiusbdr1728trueAttachment heighttruefn5index(1)/25001index12500trueminor radiustruefn102major_radius/eccentricity1major_radiuseccentricitytruez coefftruefn103sin(alpha*pi()/180)1alpha180truey coefftruefn104horizontality*sintheta1horizontalitysinthetatruex coefftruefn105horizontality*costheta1horizontalitycosthetabdr1543bdr2455node01115node01116node01117node01118node01119node01120node01121node01122node01123node01124node01125node01126node01127node01128truewhiteleaf basetruextruefn107x_coeff*petiole_length1x_coeffpetiole_lengthtrueytruefn108y_coeff*petiole_length1y_coeffpetiole_lengthtrueztruefn109Attachment_height+z_coeff*petiole_length1Attachment_heightz_coeffpetiole_lengthbdr3586bdr4750bdr5909bdr6891bdr7785bdr12412bdr14244bdr1689node01129node01130node01131node01132node01133node01134node01135node01136node01137node01138node01139node01140node01141node01142node01143node01144truewhiteleaf centretruextruefn107x+x_coeff*major_radius1xx_coeffmajor_radiustrueytruefn108y+y_coeff*major_radius1yy_coeffmajor_radiustrueztruefn109z+z_coeff*major_radius1zz_coeffmajor_radiusbdr8588bdr9756bdr10909bdr11589bdr13762bdr15911bdr17785bdr26409bdr29232bdr3188node01145node01146node01147node01148node01149node01150node01151node01152node01153node01154node01155node01156node01157node01158node01159truewhiteleaf sidetruextruefn107x+sintheta*minor_radius1xsinthetaminor_radiustrueytruefn108y-costheta*minor_radius1ycosthetaminor_radiustrueztruefn109z1zbdr18586bdr20750bdr25588bdr27593bdr28756bdr30909bdr32359bdr33256bdr34152truecosthetatruefn110cos(theta*pi()/180)1theta180truesinthetatruefn111sin(theta*pi()/180)1theta180trueleavestruefn113mag*[x,y,z,x_0,y_0,z_0,x_1,y_1,z_1]array19mag.x.y.z.x_0.y_0.z_0.x_1.y_1.z_1[]truemagtruefn2021000int1000truefn204mag*[x,y,z,x_0,y_0,z_0]array16mag.x.y.z.x_0.y_0.z_0[]trueitruefn505index(1)intindex1bdr5422truecotyledonstruefn301212node01160node01161node01162node01163node01164node01165node01166node01167node01168Purpose of this bit is to get the 13 highest values of S without using an auto-relationtruenonenonewhitenone13sort_descend001bdr6955bdr828truecurtruefn406element([carried_forward],index(1))1element.carried_forward[]index1truedroppedtruefn407if index(1)==1 then S else element([carried_forward],index(1)-1)1Sindex11element.carried_forward[]index11truewhotruefn405if cur>S then cur elseif dropped<S then dropped else S1curcurSdroppeddroppedSSbdr41766bdr2660truehorizontalitytruefn106if alpha < 10 then 0 else cos(alpha*pi()/180)10alpha10alpha180bdr43378trueStruefn504Si*horizontality*fS1SihorizontalityfStrueSftrueleaf emerge timetruefn201at_init(time())*241at_inittime24bdr5568bdr6556bdr8499bdr1644SLA (in m2/g dry mass) Fig. 3 Christophe et al (2008)trueSLAtruefn201if CumThrm==CumThrm_at_eme then SLA_cot else SLA_cot*exp(-SLA_exp*(CumThrm-TT0))1SLA_cotCumThrmCumThrm_at_emeSLA_cotSLA_expCumThrmTT01.3 fold flowering time (the current value is for Col)trueTRtruefn206963.4951963.495truefR0(eme)truefn207((CumThrm+0.5)/TR)^(aR-1)*(1-(CumThrm+0.5)/TR)^(bR-1)1CumThrm0.5TRaR11CumThrm0.5TRbR1truemaximum_roottruefn213((max_point_root+0.5)/TR)^(aR-1)*(1-(max_point_root+0.5)/TR)^(bR-1)1max_point_root0.5TRaR11max_point_root0.5TRbR1truefR(eme)truefn214fR0_eme_/maximum_root1fR0_eme_maximum_roottruenumtruefn203fR*PR1fRPRtruedenomtruefn204sum({fL})*PL1sum{}fLPLSeed dry mass (g), emptied after the first cycle to reach stage 1.0trueSeed_masstruefn307seed_input1seed_inputtrueQ(eme)truefn308Seed_mass1Seed_masstrueD(eme)truefn309PR*fR + 2*PL1PRfR2PLtrueRoot_masstruefn310num*Q/D1numQDtrueHypocotyl_masstruefn313if CumThrm==CumThrm_at_eme then Seed_mass - Root_mass_0 - sum({Leaf_mass}) else prev(1)1Seed_massRoot_mass_0sum{}Leaf_massCumThrmCumThrm_at_emeprev1trueTotal_shoot(eme)truefn315Seed_mass-Root_mass_01Seed_massRoot_mass_0truei_maxtruefn306max(with_greatest({Si},{i}),2)intmaxwith_greatest{}Si{}i2Previously started: if use_initial then S_eme_*cos(10*pi()/180)
else...
but this should be the same as the actual initial value from the leaf submodeltrueS_intercept(n-1)truefn312if TLN<=15 then
sum({S})
else
sum([maxblade])1sum{}STLN15sum.maxblade[]Total dry biomass accumulation for leaves (g)trueBiomassLtruefn328denom*Q/D1denomQDtrueTotaldemandtruefn330sum({Ld})1sum{}LdThis is the fraction of the time through the growth cycle at which demand is maximum -- found by differentiating the beta law and solving the resulting equation analyticallytruemax_point_roottruefn504TR/(1 + (bR-1)/(aR-1))-0.51TR1bR1aR10.5falseCumThrm1trueSLA_cot1trueinc_alpha1truemin_alpha1falsecot_area1truePL1trueTS1trueaL1truebL1trueTLtrue1trueTLcot1trueemebooleanfalseTT01trueSLA_exp1truebR1trueaR1truePR1trueseed_input1trueemergedtruefn707emecond_specemenode01169node01170truewhiteroot geometrytruedepthtruefn3111truemaxbladetruefn623with_greatest({i},{[who]})array113with_greatest{}i{}.who[]trueYoungest emerge timetruefn607with_greatest({i},{leaf_emerge_time})1with_greatest{}i{}leaf_emerge_timetrueCurrent Leaf Notruefn403greatest({i})intgreatest{}itrueYoungest emerge thermal timetruefn302with_greatest({i},{Leaf_emerge_thermal_time__Cycle_threshold_})1with_greatest{}i{}Leaf_emerge_thermal_time__Cycle_threshold_truefn10113.03113.03truefn1020.14410.144truefn1033551355truefn10460160truefn10510110truefn1064001400truefn1073001300truefn1085.5915.59truefn1091.6e-511.6e-05truefn1102.6412.64truefn1113.0713.07truefn1125601560truefn113111truefn11430.3130.3truefn11511.9111.9truefn1169.5819.58truefn1170.00210.002trueRUEfalsefn119truePARfalsefn122trueQtruefn123RUE*S_intercept_n_1_*PARanyRUES_intercept_n_1_PARtrueDtruefn124denom+num1denomnumfalsefn618rel_Ld*BiomassL1rel_LdBiomassL562i449truei1114truei1115i323truei1116truei1117truei1118truei1119i703i201truei704truei808truei1020truei1022truei306truei605truei803truei804i1003i602truei502i606i812truei918truei917i913truei903truei1340i914truei919truei1120i1014i1015truei907truei301truei1095truei505truei1106truei1104truei303truei1099truei609truei507truei887truei839truei310truei327truei324truei205truei103truei1131i509truei606truei608truei607i612truei609truei810truei812truei811i411truei506truei508truei610truei4truei1132i233truei304truei726truei725i1097node01171trueLeaf_growthtruei1107truei711truei1100truei1101truei1110truei1149i101truei104truei206truei714i212truei806truei223truei401truei326truei329i213truei807truei402truei312i708truei710truei709i409truei1157i442truei813truei443truei415i573truei1096truei829truei578i837truei838truei841truei850i406truei908truei5truei110truei114truei204i1i2i3truei205truei208truei210truei212i1i101truei103truei104i206i2i4truei201i8i102truei105truei106i107truei111i108truei115truei159i109truei116truei158truei122truei124truei126truei128truei130i119truei123truei132i120truei125truei131i121truei127truei129truei133truei142truei145truei148truei134truei136truei138truei140truei143truei146truei149i119truei135truei141truei151i120truei137truei144truei150i121truei139truei147truei152truei179truei184truei188truei177truei180truei182truei186truei160truei166i119truei168truei178truei181i120truei162truei185truei183i121truei187truei197truei199truei201i153truei156i154truei157i189truei190truei191truei192truei193truei194truei195truei196truei198truei200truei305i304truei207truei209truei211truei213truei214truei215truei306i930truei932i301truei418truei1150truei414i420truei421i422truei423truei1152i410truei424truei425truei1151i112truei113truei1159i720truei723truei721truei1i724i201truei817truei823i1truei802truei309truei3truei108truei106i320i323truei401truei326truei430truei428i446truei402truei625truei624truei623i449truei450truei452i103truei1221truei212i104truei414truei420i425truei426i527truei528i529truei532truei534truei530i535truei1327truei1333truei1336i553truei503truei604truei554truei555truei1109i569truei570truei571i412truei929truei931i756truei1148truei1160truei825i834truei1326truei1334truei1335i842truei849i620truei101truei622truei621i902i1004i1005i1013i1012i1011i1008i1006i1007i1017i1016i501i1010i1009i1259truei1261i5i1153truei1156truei1158i1036truei819truei820i607truei702i202truei821truei822i1019i1322i1325falsei1337falsei1338truei1339i1330truei1331truei1332