1. 株高 :印象中這邊是原始碼有點問題
2.
模擬的莢數 >> 實際莢數:
3.
模擬的分支數 >> 實際分支數:
rosetta 程式需要有visual studio才能開啟(還要有C++套件),有可能是當初building的時候有問題
株高 = Parm(21)VSTAGE^PARM(22)
為了表示增加速率,我們把上式進行微分可獲得
d株高/dvstage = Parm(21)Parm(22)*Vstage^(Parm(22)-1)
程式碼在2750行
!YA PDMH=(PARM(21)+(PARM(22)*(VSTAGE+PDV/2.0)**1.37))*PDV*SLOW*HTFATR
IF (VSTAGE.GT.0.0) THEN
F1=PARM(21)*PARM(22)*(VSTAGE)**(PARM(22)-1.)
ELSE
F1=0.0
END IF
IF (VSTAGE+PDV.GT.0.0) THEN
F2=PARM(21)*PARM(22)*(VSTAGE+PDV)**(PARM(22)-1.)
ELSE
F2=0.0
END IF
PDMH=0.5*(F1+F2)*PDV
這裡的計算方法很值得學習,它分別計算 Vstage (這一個時間點)和 Vstage + dv (下一個時間點所對應的株高增長速度,再計算平均植以取得較準確的生長速率值。
值得注意的是,在第4270行的時候開始累計株高,這邊使用Maturity group和 R stage作為條件
! CALCULATE CHANGES IN MAINSTEM AND BRANCH LENGTHS AND DRY WEIGHTS.
IF((MG.GT.4.AND.RSTAGE.LT.2.0).OR. &
(MG.EQ.4.AND.RSTAGE.LE.2.0)) THEN
ADMH = PDMH*PERIOD
ELSE
ADMH = 0.0
ENDIF
IF (RSTAGE.LE.PARM(16)) THEN
ADMW = PDMW*SGTR*PERIOD*(1.0 + (1.5*SCRATO))
MSTEMH = MSTEMH + ADMH
MSTEMW = MSTEMW + ADMW
STEMWT = STEMWT + ADMW
END IF
我們可以觀察到的是:
1. 每一個的株高增加速率為ADMH,程式先把PDMH * PERIOD 計算為ADMH,而PERIOD在這裡是1。
2. 上面這段程式碼只有在R stage 小於2的時候才執行,也就是說,模式假設 R stage 在2之前才會計算株高的增加速率。
3. 株高的累積是在下一個流程控制執行,模式假設在PARM(16)之前,主幹高度(MSTEMH)、主幹重量(MSTEMW)都會增加。其中,Parm(16)的描述是營養生長停止的R時期(R stage to stop vegetative growth)
有趣的問題來了:R2真的會停止株高變化嗎?如果不是的話,我們前面的 RSTAGE .LT. 2.0 改為 RSTAGE .LT. PARM(16),讓兩邊的定義一致
我們可以觀察到的是:
1. 每一個的株高增加速率為ADMH,程式先把PDMH * PERIOD 計算為ADMH,而PERIOD在這裡是1。
2. 上面這段程式碼只有在R stage 小於2的時候才執行,也就是說,模式假設 R stage 在2之前才會計算株高的增加速率。
3. 株高的累積是在下一個流程控制執行,模式假設在PARM(16)之前,主幹高度(MSTEMH)、主幹重量(MSTEMW)都會增加。其中,Parm(16)的描述是營養生長停止的R時期(R stage to stop vegetative growth)
有趣的問題來了:R2真的會停止株高變化嗎?如果不是的話,我們前面的 RSTAGE .LT. 2.0 改為 RSTAGE .LT. PARM(16),讓兩邊的定義一致