OSDN Git Service

[modified] u_feedingcalc2.pasのStandardDailyWeightGainを訂正
[feedingorigin2/HikakuBunseki.git] / u_feedingcalc2.pas
1 {
2   Feeding Origin 2 is software that supports calculation of nutrient requirement of livestock
3   and feed design based on Japanese feeding standard.
4   Copyright (C) 2017,  Syuichiro Fukagawa.
5
6   This program is free software; you can redistribute it and/or modify it under the terms of
7   the GNU General Public License as published by the Free Software Foundation; either version 3
8   of the License, or (at your option) any later version.
9   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11   See the GNU General Public License for more details.
12   You should have received a copy of the GNU General Public License along with this program.
13   If not, see <http://www.gnu.org/licenses/>.
14
15
16   Feeding Origin 2 は、日本飼養標準に基づいた家畜の養分要求量の計算および飼料設計を支援するソフ
17   トウェアです.
18   Copyright (C) 2017, 深川修一郎.
19
20    このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって
21   発行されたGNU一般公衆利用許諾書(バージョン3か、それ以降のバージョンのうちどれか)が定める
22   条件の下で再頒布または改変することができます。
23   このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証
24   や特定目的への適合性は、言外に示されたものも含め、全く存在しません。詳しくはGNU一般公衆利用
25   許諾書をご覧ください。
26    あなたはこのプログラムと共に、GNU一般公衆利用許諾書のコピーを一部 受け取っているはずです。
27   もし受け取っていなければ、<http://www.gnu.org/licenses/> をご覧ください。
28   
29   *本日本語訳は、FSFより2007年6月29日に発行されたGNU GPL v3の原文から、八田真行氏が翻訳した
30    ものを基にしています。 < https://mag.osdn.jp/07/09/02/130237 >
31 }
32
33 unit u_feedingcalc2;
34
35 {$mode objfpc}{$H+}
36
37 interface
38
39 Uses Math, SysUtils;
40
41 type reNUTRIENT = record     // 養分要求量のレコード型宣言
42         dFCM  :  Double;          // FCM
43         dDMI  :  Double;          // DMI
44         dCP   :  Double;          // CP
45         dDCP  :  Double;          // DCP
46         dTDN  :  Double;          // TDN
47         dDE   :  Double;          // DE
48         dMEC  :  Double;          // ME(Mcal)
49         dMEJ  :  Double;          // ME(MJ)
50         dCa   :  Double;          // Ca
51         dP    :  Double;          // P
52         dVA   :  Double;          // VA
53         dVD   :  Double;          // VD
54 end;
55
56 type reMILK = record         // 搾乳牛用のレコード型宣言
57         dYld1  :    Double;       // 乳量
58         dFat   :    Double;       // 乳脂率
59         dWt1   :    Double;       // 体重
60         dWkbrt :    Double;       // 分娩後週
61         cFed   :    String;       // 給与方法
62         dKion  :    Double;       // 平均気温
63         cBrfq  :    String;       // 産次
64         cLVCP  :    String;       // CPの最低値
65         Nutrient :  reNUTRIENT;   // 養分要求量のレコード
66 end;
67
68 type reDRY = record          // 乾乳牛用のレコード型宣言
69         dWt1   :    Double;       // 体重
70         cPre   :    String;       // 分娩前
71         cWkb   :    String;       // 分娩1週間前
72         cLVCP  :    String;       // CPの最低値
73         cKind  :    String;       // 胎子の品種
74         Nutrient :  reNUTRIENT;   // 養分要求量のレコード
75 end;
76
77 type reGROW = record         // 育成牛用のレコード型宣言
78         dWt1     :  Double ;      // 体重
79         dInWt1   :  Double ;      // 日増体重
80         cLVCP    :  String ;      // CPの最低値
81         cKset    :  String ;      // 季節の考慮
82         cWean    :  String ;      // 育成牛の離乳(離乳前、離乳後、体重が66kg<X<75kg)
83         Nutrient :  reNUTRIENT;   // 養分要求量のレコード
84 end;
85
86 var
87    gdDMI         :      Double ;                // 乾物摂取量DMI(kg)
88
89    gdTDN         :      Double ;                // 可消化養分総量
90    gdDE          :      Double ;                // 可消化エネルギー
91    gdME          :      Double ;                // 代謝エネルギーの総要求量(Mcal)
92    gdMJ          :      Double ;                // 代謝エネルギーの総要求量(MJ)
93
94    gdCPR         :      Double ;                // 粗蛋白質要求量
95    gdDCPR        :      Double ;                // 可消化蛋白質要求量
96    gdMCP         :      Double ;                // 維持に要する粗蛋白質要求量
97    gdMDCP        :      Double ;                // 維持に要する粗蛋白質要求量
98    gdPCP         :      Double ;                // 妊娠に要する粗蛋白質要求量
99    gdPDCP        :      Double ;                // 妊娠に要する粗蛋白質要求量
100
101    gdCa          :      Double ;                // カルシウム
102    gdP           :      Double ;                // リン
103    gdVA          :      Double ;                // ビタミンA
104    gdVD          :      Double ;                // ビタミンD
105
106    gdFCM         :      Double ;                // FCM
107
108    gdMEm         :      Double ;                // 代謝エネルギーの維持要求量
109    gdMEp         :      Double ;                // 代謝エネルギーの生産要求量
110
111    gdYCP         :      Double ;                // 維持に要する粗蛋白質要求量
112    gdYDCP        :      Double ;                // 維持に要する粗蛋白質要求量
113
114 function  MilkingCow( stM : reMILK ) : reNUTRIENT ;      // 搾乳牛の養分要求量計算
115 procedure Milking_Calc_DMI( stM : reMILK ) ;             //  〃  乾物摂取量計算
116 procedure Milking_Calc_ME( stM : reMILK ) ;              //  〃  エネルギーの計算
117 procedure Milking_Calc_DCP( stM : reMILK ) ;             //  〃  蛋白質の計算
118 procedure Milking_Calc_CAPAD( stM : reMILK ) ;           //  〃  ミネラル&ビタミンの計算
119
120 function  DryingCow_A( stD : reDRY ) : reNUTRIENT ;      // 乾乳牛の養分要求量計算
121 procedure Drying_Calc_DMI_A( stD : reDRY ) ;             //  〃  乾物摂取量計算
122 procedure Drying_Calc_ME_A( stD : reDRY ) ;              //  〃  エネルギーの計算
123 procedure Drying_Calc_DCP_A( stD : reDRY ) ;             //  〃  蛋白質の計算
124 procedure Drying_Calc_CAPAD_A( stD : reDRY ) ;           //  〃  ミネラル&ビタミンの計算
125
126 function  GrowingCow_A( stG : reGROW ) : reNUTRIENT ;    // 育成牛の養分要求量計算
127 procedure Growing_Calc_DMI_A( stG : reGROW ) ;           //  〃  乾物摂取量計算
128 procedure Growing_Calc_ME_A( stG : reGROW ) ;            //  〃  エネルギーの計算
129 procedure Growing_Calc_DCP_A( stG : reGROW ) ;           //  〃  蛋白質の計算
130 procedure Growing_Calc_CAPAD_A( stG : reGROW ) ;         //  〃  ミネラル&ビタミンの計算
131
132 function StandardDailyWeightGain(var dWt : Double) : Double;  // 1日の増体重の計算
133
134 implementation
135
136 //*** 搾乳牛の養分要求量計算 ***
137 function MilkingCow( stM : reMILK ) : reNUTRIENT ;
138 var
139    stRet : reNUTRIENT ;
140 begin
141   //計算結果出力変数の初期化
142         gdFCM  := 0;            // 4%脂肪補正乳量
143         gdDMI  := 0;            // 乾物摂取量DMI(kg)
144         gdTDN  := 0;            // 可消化養分総量
145         gdDE   := 0;            // 可消化エネルギー
146         gdME   := 0;            // 代謝エネルギーの総要求量(Mcal)
147         gdMJ   := 0;            // 代謝エネルギーの総要求量(MJ)
148         gdCPR  := 0;            // 粗蛋白質要求量
149         gdDCPR := 0;            // 可消化蛋白質要求量
150         gdMCP  := 0;            // 維持に要する粗蛋白質要求量
151         gdMDCP := 0;            // 維持に要する粗蛋白質要求量
152         gdPCP  := 0;            // 妊娠に要する粗蛋白質要求量
153         gdPDCP := 0;            // 妊娠に要する粗蛋白質要求量
154         gdCa   := 0;            // カルシウム
155         gdP    := 0;            // リン
156         gdVA   := 0;            // ビタミンA
157         gdVD   := 0;            // ビタミンD
158
159   //養分要求量の計算処理
160         Milking_Calc_DMI( stM );    //乾物摂取量の計算
161         Milking_Calc_ME( stM );     //エネルギーの計算
162         Milking_Calc_DCP( stM );    //蛋白質の計算
163         Milking_Calc_CAPAD( stM );  //ミネラル&ビタミンの計算
164
165   //養分要求量計算結果の代入
166         stRet.dFCM      :=      gdFCM;      // 4%脂肪補正乳量
167         stRet.dDMI      :=      gdDMI;      // 乾物摂取量DMI(kg
168         stRet.dCP       :=      gdCPR;      // 粗蛋白質要求量
169         stRet.dDCP      :=      gdDCPR;     // 可消化蛋白質要求量
170         stRet.dTDN      :=      gdTDN;      // 可消化養分総量
171         stRet.dDE       :=      gdDE;       // 可消化エネルギー
172         stRet.dMEC      :=      gdME;       // 代謝エネルギーの総要求量(Mcal)
173         stRet.dMEJ      :=      gdMJ;       // 代謝エネルギーの総要求量(MJ)
174         stRet.dCa       :=      gdCa;       // カルシウム
175         stRet.dP        :=      gdP;        // リン
176         stRet.dVA       :=      gdVA;       // ビタミンA
177         stRet.dVD       :=      gdVD;       // ビタミンD
178
179         MilkingCow := stRet ;
180 end;
181
182 //*** 搾乳牛の乾物摂取量計算 ***
183 procedure Milking_Calc_DMI( stM : reMILK ) ;
184 var
185     iBnbn : Integer ;            //分娩後週
186     dDMI  : Double  ;
187     dKSU  : Double  ;
188
189 begin
190     iBnbn := Trunc(stM.dWkbrt);        //分娩後週
191     gdFCM  := stM.dYld1 * ( 0.15 * stM.dFat + 0.4 ) ; //4%脂肪補正乳量
192
193     if( iBnbn >= 11 ) then     //分娩後11週以降
194       begin
195         if( stM.cBrfq = '初産分娩後' )  then  //初産泌乳牛
196             dDMI := 1.9120 + 0.07031 *  power(stM.dWt1, 0.75) + 0.34923 * gdFCM   // JFS2006 p6, 1.1-2
197         else                      //2産以上の泌乳牛
198             dDMI := 1.3922 + 0.05839 *  power(stM.dWt1, 0.75) + 0.40497 * gdFCM ; // JFS2006 p6, 1.1-1
199       end
200     else                //泌乳初期
201       begin
202         if( stM.cBrfq = '初産分娩後' )  then  //初産泌乳牛
203           begin
204             dDMI := 1.9120 + 0.07031 *  power(stM.dWt1, 0.75) + 0.34923 * gdFCM ;  // JFS2006 p6, 1.1-2
205             dKSU := 1.3671 - 0.6558 * Exp((-0.0498 * iBnbn)) ;                // JFS2006 p7, 1.1-4
206           end
207         else                                      //2産以上の泌乳牛
208           begin
209             dDMI := 1.3922 + 0.05839 *  power(stM.dWt1, 0.75) + 0.40497 * gdFCM ;  // JFS2006 p6, 1.1-1
210             dKSU := 1.0 - 0.3531 * Exp((-0.3247 * iBnbn)) ;                   // JFS2006 p7, 1.1-3
211           end ;
212         dDMI := dDMI * dKSU ;
213       end ;
214
215     //平均気温による補正
216     if( stM.cBrfq = '初産分娩後' ) then   //初産泌乳牛
217       begin
218         if(stM.dKion < 20)  then           //平均気温による補正 JFS2006 p65、表4.9.1.2 
219             dDMI := dDMI * 1.00
220         else if((stM.dKion <= 20) and (stM.dKion < 22)) then
221             dDMI := dDMI * 1.00
222         else if((stM.dKion <= 22) and (stM.dKion < 24)) then
223             dDMI := dDMI * 1.00
224         else if((stM.dKion <= 24) and (stM.dKion < 26)) then
225             dDMI := dDMI * 0.99
226         else if((stM.dKion <= 26) and (stM.dKion < 28)) then
227             dDMI := dDMI * 0.96
228         else if((stM.dKion <= 28) and (stM.dKion < 30)) then
229             dDMI := dDMI * 0.92
230         else
231             dDMI := dDMI * 0.87 ;
232       end
233     else                        //2産以上の泌乳牛
234       begin
235         if(stM.dKion < 20) then                      //平均気温による補正 JFS2006 p65、表4.9.1.2
236             dDMI := dDMI * 1.00
237         else if((stM.dKion <= 20) and (stM.dKion < 22)) then
238             dDMI := dDMI * 1.00
239         else if((stM.dKion <= 22) and (stM.dKion < 24)) then
240             dDMI := dDMI * 0.99
241         else if((stM.dKion <= 24) and (stM.dKion < 26)) then
242             dDMI := dDMI * 0.96
243         else if((stM.dKion <= 26) and (stM.dKion < 28)) then
244             dDMI := dDMI * 0.90
245         else if((stM.dKion <= 28) and (stM.dKion < 30)) then
246             dDMI := dDMI * 0.82
247         else
248             dDMI := dDMI * 0.70 ;
249       end ;
250
251       gdDMI := dDMI ;
252 end;
253
254 //*** 搾乳牛のエネルギーの計算 ***
255 procedure Milking_Calc_ME( stM : reMILK ) ;
256 var
257     dMTDN, dMDE, dMMJ : Double  ;
258     dPTDN, dPDE, dPMJ : Double  ;
259     dMERC : Double  ;
260     dCFA  : Double  ;
261
262 begin
263     gdMEm := 0.1163 * power(stM.dWt1, 0.75);    //維持要求量 JFS2006 p129、8.3.2-1
264     dMDE  := gdMEm / 0.82 ;           // JFS2006 p130、8.3.2-2
265     dMTDN := dMDE  / 4.41 ;           // JFS2006 p130、8.3.2-3
266     dMMJ  := gdMEm * 4.184 ;          // JFS2006 p129、L36
267
268     //産次
269     if ( stM.cBrfq = '初産分娩後' ) then    //初産分娩時から2産分娩前まで
270         begin
271             gdMEm := gdMEm * 1.3 ;    // JFS2006 p129、右段、L17
272             dMDE  := dMDE  * 1.3 ;
273             dMTDN := dMTDN * 1.3 ;
274             dMMJ  := dMMJ  * 1.3 ;
275         end
276     else if ( stM.cBrfq = '2産分娩から3産分娩まで' ) then //2産分娩時から3産分娩前まで
277         begin
278             gdMEm := gdMEm * 1.15 ;    // JFS2006 p129、右段、L19
279             dMDE  := dMDE  * 1.15 ;
280             dMTDN := dMTDN * 1.15 ;
281             dMMJ  := dMMJ  * 1.15 ;
282         end ;
283
284     //飼料給与方式
285     if ( stM.cFed = '分離' ) then
286         dCFA := 1 + (stM.dYld1 / 15) * 0.04      //分離給与 JFS2006 p133、8.6.1
287     else if( stM.cFed = 'TMR' ) then
288         dCFA := 1 + (stM.dYld1 / 15) * 0.035 ;   //TMR   JFS2006 p133、8.6.2
289
290     //乳生産にかかる要求量
291     dMERC := ( 0.0913 * stM.dFat + 0.3678 ) / 0.62 ; // JFS2006 p10、1.2-1 & p133、8.5.2-1 & 8.5.2-2
292     gdMEp := dMERC * stM.dYld1 ;                // 代謝エネルギーの生産要求量
293
294     dPDE  := gdMEp / 0.82 ;   // JFS2006 p130、8.3.2-2
295     dPTDN := dPDE  / 4.41 ;   // JFS2006 p130、8.3.2-3
296     dPMJ  := gdMEp * 4.184 ;  // JFS2006 p129、L36
297
298     //維持と乳生産の合計と給与方式の補正
299     gdME  := ( gdMEm + gdMEp ) * dCFA ;   // 代謝エネルギーの総要求量(Mcal)
300     gdTDN := ( dMTDN + dPTDN ) * dCFA ;   // 可消化養分総量
301     gdDE  := ( dMDE  + dPDE  ) * dCFA ;   // 可消化エネルギー
302     gdMJ  := ( dMMJ  + dPMJ  ) * dCFA ;   // 代謝エネルギーの総要求量(MJ)
303 end;
304
305 //*** 搾乳牛の蛋白質の計算 ***
306 procedure Milking_Calc_DCP( stM : reMILK ) ;
307 var
308     ldKM    :  Double  ;    //飼料給与方法による補正値
309     ldHS    :  Double  ;    //産次による補正値
310     ldWrk1  :  Double  ;
311
312 begin
313     gdMDCP   := 2.71 * power(stM.dWt1, 0.75);    //維持可消化蛋白質要求量 JFS2006 p129、右段、8.3.1-1
314     gdYDCP   := (26.6 + 5.3 * stM.dFat) * stM.dYld1 ;    //産乳に要する可消化蛋白質要求量 JFS2006 p133、左段、8.5.1-1
315     gdMCP    := gdMDCP / 0.60 ;            //維持粗蛋白質要求量 JFS2006 p129、右段、8.3.1-2
316     gdYCP    := gdYDCP / 0.65 ;            //産乳に要する粗蛋白質要求量 JFS2006 p133、左段、8.5.1-2
317
318     //産次による条件
319     if( stM.cBrfq = '初産分娩後' ) then
320         ldHS := 1.30 ;    //初産分娩から二産分娩まで  JFS2006 p28~p29
321
322     if( stM.cBrfq = '2産分娩から3産分娩まで' ) then
323          ldHS := 1.15 ;   //二産分娩から三産分娩まで
324
325     if( stM.cBrfq = '3産分娩以後' ) then
326         ldHS := 1.00 ;   //三産分娩以降
327
328     gdMDCP := gdMDCP * ldHS;
329     gdMCP  := gdMCP  * ldHS;
330
331     //飼料給与方式による条件
332     if( stM.cFed = '分離' ) then
333         ldKM := 0.04  ;    //分離給与
334
335     if( stM.cFed = 'TMR' )  then
336         ldKM := 0.035 ;    //TMR
337
338     gdCPR  := (gdMCP  + gdYCP)  * (1 + (stM.dYld1 / 15) * ldKM ) ; // 粗蛋白質要求量     JFS2006 p32, p133 8.6.1
339     gdDCPR := (gdMDCP + gdYDCP) * (1 + (stM.dYld1 / 15) * ldKM ) ; // 可消化蛋白質要求量 JFS2006 p32, p133 8.6.1
340
341     //CPの最低値をDMの12%に設定する
342     if( stM.cLVCP = 'ON' ) then
343       begin
344         ldWrk1 := gdDMI * 120 ;  //DMの12%(g)
345         if( gdCPR < ldWrk1 ) then
346           begin
347             gdCPR  := ldWrk1 ;         // 粗蛋白質要求量
348             gdDCPR := gdCPR * 0.60;    // 可消化蛋白質要求量
349           end;
350       end;
351 end;
352
353 //*** 搾乳牛のミネラル&ビタミンの計算 ***
354 procedure Milking_Calc_CAPAD( stM : reMILK ) ;
355 var
356     ldCFA :  Double  ;    //飼料給与方法による補正値
357     ldHS  :  Double  ;    //産次による補正値
358     dMCa  :  Double  ;
359     dMP   :  Double  ;
360     dMVA  :  Double  ;
361     dMVD  :  Double  ;
362     dYCa  :  Double  ;
363     dYP   :  Double  ;
364     dYVA  :  Double  ;
365     dYVD  :  Double  ;
366
367 begin
368     dMCa := 0.0154 * stM.dWt1 / 0.38 ;   //維持に要するカルシウム JFS2006 p130, 8.3.3-1
369     dMP  := 0.0143 * stM.dWt1 / 0.5  ;   //維持に要するリン       JFS2006 p130, 8.3.3-2
370     dMVA := 0.0424 * stM.dWt1 ;          //維持に要するビタミンA  JFS2006 p130, 8.3.3-3
371     dMVD := 0.006  * stM.dWt1 ;          //維持に要するビタミンD  JFS2006 p130, 8.3.3-4
372
373     dYCa := ( 1.20 * gdFCM ) / 0.38 ;    //産乳に要するカルシウム JFS2006 p133、8.5.3-1
374     dYP  := ( 0.90 * gdFCM ) / 0.5  ;    //産乳に要するリン       JFS2006 p133、8.5.3-2
375     dYVA := 1.3 * stM.dYld1 ;            //産乳に要するビタミンA  JFS2006 p133、8.5.3-3
376     dYVD := 0.004 * stM.dWt1 ;           //産乳に要するビタミンD  JFS2006 p133、8.5.3-4
377
378     //産次による補正
379     if( stM.cBrfq = '初産分娩後' ) then
380         ldHS := 1.30 ;   //初産分娩から二産分娩まで  JFS2006 p28~p29 & p129,右段,L16~L19
381
382     if( stM.cBrfq = '2産分娩から3産分娩まで' ) then
383         ldHS := 1.15 ;   //二産分娩から三産分娩まで
384
385     if( stM.cBrfq = '3産分娩以後' ) then
386         ldHS := 1.00 ;   //三産分娩以降
387
388     dMCa := dMCa * ldHS;
389     dMP  := dMP  * ldHS;
390
391     //要求量の合計
392     gdCa :=  dMCa + dYCa  ;        // カルシウム
393     gdP  :=  dMP  + dYP   ;        // リン
394     gdVA :=  dMVA + dYVA  ;        // ビタミンA
395     gdVD :=  dMVD + dYVD  ;        // ビタミンD
396
397     //飼料給与方式による補正
398     if( stM.cFed = '分離' ) then
399         ldCFA := 1 + (stM.dYld1 / 15) * 0.04  ;    //分離給与 JFS2006 p133, 8.6.1
400
401     if( stM.cFed = 'TMR' )  then
402         ldCFA := 1 + (stM.dYld1 / 15) * 0.035 ;    //TMR JFS2006 p133, 8.6.2
403
404     gdCa := gdCa * ldCFA ;        // カルシウム
405     gdP  := gdP  * ldCFA ;        // リン
406
407     //平均気温による補正
408     if( ( stM.dKion >= 22.0) and (stM.dKion < 26.0) ) then
409     begin
410         gdCa := gdCa * 1.10 ;    // カルシウム   JFS2006 p66、表4.9.2
411         gdP  := gdP  * 1.10 ;    // リン         JFS2006 p66、表4.9.2
412     end;
413
414     if( stM.dKion >= 26.0 ) then
415     begin
416         gdCa := gdCa * 1.20 ;    // カルシウム   JFS2006 p66、表4.9.2
417         gdP  := gdP  * 1.20 ;    // リン         JFS2006 p66、表4.9.2
418     end;
419 end;
420
421 //*** 乾乳牛の養分要求量計算 ***
422 function  DryingCow_A( stD : reDRY ) : reNUTRIENT ;
423 var
424     stRet : reNUTRIENT ;
425 begin
426     //計算結果出力変数の初期化
427         gdFCM  := 0;        // 4%脂肪補正乳量
428         gdDMI  := 0;            // 乾物摂取量DMI(kg)
429         gdTDN  := 0;        // 可消化養分総量
430         gdDE   := 0;        // 可消化エネルギー
431         gdME   := 0;        // 代謝エネルギーの総要求量(Mcal)
432         gdMJ   := 0;        // 代謝エネルギーの総要求量(MJ)
433         gdCPR  := 0;            // 粗蛋白質要求量
434         gdDCPR := 0;        // 可消化蛋白質要求量
435         gdMCP  := 0;            // 維持に要する粗蛋白質要求量
436         gdMDCP := 0;            // 維持に要する粗蛋白質要求量
437         gdPCP  := 0;            // 妊娠に要する粗蛋白質要求量
438         gdPDCP := 0;            // 妊娠に要する粗蛋白質要求量
439         gdCa   := 0;            // カルシウム
440         gdP    := 0;            // リン
441         gdVA   := 0;            // ビタミンA
442         gdVD   := 0;            // ビタミンD
443
444     //養分要求量の計算処理
445         Drying_Calc_DMI_A( stD );    //乾物摂取量の計算
446         Drying_Calc_ME_A( stD );     //エネルギーの計算
447         Drying_Calc_DCP_A( stD );    //蛋白質の計算
448         Drying_Calc_CAPAD_A( stD );  //ミネラル&ビタミンの計算
449
450     //養分要求量計算結果の代入
451         stRet.dFCM      :=      gdFCM;      // 4%脂肪補正乳量
452         stRet.dDMI      :=      gdDMI;      // 乾物摂取量DMI(kg
453         stRet.dCP       :=      gdCPR;      // 粗蛋白質要求量
454         stRet.dDCP      :=      gdDCPR;     // 可消化蛋白質要求量
455         stRet.dTDN      :=      gdTDN;      // 可消化養分総量
456         stRet.dDE       :=      gdDE;       // 可消化エネルギー
457         stRet.dMEC      :=      gdME;       // 代謝エネルギーの総要求量(Mcal)
458         stRet.dMEJ      :=      gdMJ;       // 代謝エネルギーの総要求量(MJ)
459         stRet.dCa       :=      gdCa;       // カルシウム
460         stRet.dP        :=      gdP;        // リン
461         stRet.dVA       :=      gdVA;       // ビタミンA
462         stRet.dVD       :=      gdVD;       // ビタミンD
463
464         DryingCow_A := stRet ;
465 end;
466
467 //*** 乾乳牛の乾物摂取量計算 ***
468 procedure Drying_Calc_DMI_A( stD : reDRY ) ;
469 begin
470     if( stD.cKind = 'ホルスタイン(初妊)' )  then          // ホルスタイン(初妊)
471         if ( stD.cPre <> 'それ以外' )   then        // 分娩前
472             gdDMI := 0.49137 + 0.01768 * stD.dWt1 + 0.91754 * 0.35  // JFS2006 p7, 1.1-4 (日増体重0.35kg)
473         else
474             gdDMI := 0
475     else
476         if( stD.cWkb = 'ON' ) then  // 分娩1週間前
477             gdDMI := 0.016 * stD.dWt1                                // JFS2006 p7、1.1-6
478         else                        // それ以外
479             gdDMI := 0.017 * stD.dWt1 ;                             // JFS2006 p7、1.1-5
480 end;
481
482 //*** 乾乳牛のエネルギーの計算 ***
483 procedure Drying_Calc_ME_A( stD : reDRY ) ;
484 var
485     dMME   : Double ;  // 維持代謝エネルギー要求量
486     dMTDN  : Double ;  // 維持可消化養分総量
487     dMDE   : Double ;  // 維持可消化エネルギー
488     dMMJ   : Double ;  // 維持代謝エネルギー要求量(MJ)
489     dMERC  : Double ;  // 妊娠時のME増給量
490     dTDNRC : Double ;  //    〃   可消化養分増給量
491     dDERC  : Double ;  //    〃   可消化エネルギー増給量
492     dMJRC  : Double ;  //    〃   代謝エネルギー増給量(MJ)
493     dE     : Double ;  // 妊娠t日目における胎子のエネルギー蓄積総量(Mcal) JFS2006 p131, 8.4.2-1
494
495 begin
496     if ( stD.cKind = 'ホルスタイン(初妊)') then   //ホルスタイン種(初妊)
497       begin
498         // 維持&増体の代謝エネルギー要求量
499         dMME  := 0.1163 * power(stD.dWt1, 0.75)
500                + 0.1355 * 0.35 * power(stD.dWt1, 0.75) ;  // 維持代謝エネルギー要求量  JFS2006 p129, 8.2.2-3 (日増体重0.35kg)
501
502         dMDE  := dMME / 0.82 ;      // 維持可消化エネルギー  JFS2006 p130、8.3.2-2
503         dMTDN := dMDE / 4.41 ;      // 維持可消化養分総量    JFS2006 p130、8.3.2-3
504         dMMJ  := dMME * 4.184 ;     // 維持代謝エネルギー要求量(MJ)  p129、L36
505
506         dE := ((0.00159 * power(280, 2) - 0.0352 * 280 - 35.4) / 46 * 42)
507             - ((0.00159 * power(217, 2) - 0.0352 * 217 - 35.4) / 46 * 42) ;  // JFS2006 p131, 8.4.2-1
508
509         if ( stD.cPre = '分娩前9週から4週まで' ) then    //分娩前9週から4週まで
510           begin
511             dMERC  := dE / 63 / 0.14 * 0.9 ;      // JFS2006 p132, 8.4.2-2
512
513             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
514             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
515             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
516
517             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
518             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
519             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
520             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
521           end
522         else if ( stD.cPre = '分娩前3週から分娩まで' ) then     //分娩前3週から分娩まで
523           begin
524             dMERC  := dE / 63 / 0.14 * 1.2 ;      // JFS2006 p132, 8.4.2-3
525
526             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
527             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
528             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
529
530             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
531             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
532             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
533             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
534           end
535         else                             //それ以外
536           begin   //そのまま
537             gdME   := dMME  * 1.1 ;      // 代謝エネルギーの総要求量(Mcal)  JFS2006 p130、左段、L14
538             gdTDN  := dMTDN * 1.1 ;      // 可消化養分総量
539             gdDE   := dMDE  * 1.1 ;      // 可消化エネルギー
540             gdMJ   := dMMJ  * 1.1 ;      // 代謝エネルギーの総要求量(MJ)
541           end
542       end
543
544     else if ( stD.cKind = 'ホルスタイン(経産)') then   //ホルスタイン種(経産)
545       begin
546         // 維持の代謝エネルギー要求量
547         dMME  := 0.1163 * power(stD.dWt1, 0.75) ;      // JFS2006 p129、8.3.2-1
548
549         dMDE  := dMME / 0.82 ;      // JFS2006 p130、8.3.2-2
550         dMTDN := dMDE / 4.41 ;      // JFS2006 p130、8.3.2-3
551         dMMJ  := dMME * 4.184 ;     // JFS2006 p129、L36
552
553         dE := ((0.00159 * power(280, 2) - 0.0352 * 280 - 35.4) / 46 * 46)
554             - ((0.00159 * power(217, 2) - 0.0352 * 217 - 35.4) / 46 * 46) ;  // JFS2006 p131, 8.4.1-1
555
556         if( stD.cPre = '分娩前9週から4週まで' )  then    //分娩前9週から4週まで
557           begin
558             dMERC  := dE / 63 / 0.14 * 0.9 ;         // JFS2006 p132, 8.4.2-2
559
560             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
561             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
562             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
563
564             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
565             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
566             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
567             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
568           end
569         else if ( stD.cPre = '分娩前3週から分娩まで' )  then    //分娩前3週から分娩まで
570           begin
571             dMERC  := dE / 63 / 0.14 * 1.2 ;         // JFS2006 p132, 8.4.2-3
572
573             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
574             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
575             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
576
577             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
578             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
579             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
580             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
581           end
582         else                             //それ以外
583           begin   //そのまま
584             gdME   := dMME  * 1.1 ;      // 代謝エネルギーの総要求量(Mcal)    // JFS2006 p130、左段、L14
585             gdTDN  := dMTDN * 1.1 ;      // 可消化養分総量
586             gdDE   := dMDE  * 1.1 ;      // 可消化エネルギー
587             gdMJ   := dMMJ  * 1.1 ;      // 代謝エネルギーの総要求量(MJ)
588           end
589       end
590
591     else if ( stD.cKind = '黒毛和種単子') then  //黒毛和種(単子)
592       begin
593         // 維持の代謝エネルギー要求量
594         dMME  := 0.1163 * power(stD.dWt1,  0.75);        // JFS2006 p129、8.3.2-1
595
596         dMDE  := dMME / 0.82 ;      // JFS2006 p130、8.3.2-2
597         dMTDN := dMDE / 4.41 ;      // JFS2006 p130、8.3.2-3
598         dMMJ  := dMME * 4.184 ;     // JFS2006 p129、L36
599
600         dE := (1.542 * (1 / power(10, 12)) * power(285, 5.45601))
601             - (1.542 * (1 / power(10, 12)) * power(222, 5.45601)) ;  // JFS2006 p132, 8.4.2-5
602
603         if( stD.cPre = '分娩前9週から4週まで' )  then    //分娩前9週から4週まで
604           begin
605             dMERC  := dE / 63 / 0.123 * 0.9 ;        // JFS2006 p132、8.4.2-8
606
607             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
608             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
609             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
610
611             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
612             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
613             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
614             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
615           end
616         else if ( stD.cPre = '分娩前3週から分娩まで' )  then    //分娩前3週から分娩まで
617           begin
618             dMERC  := dE / 63 / 0.123 * 1.2 ;        // JFS2006 p132、8.4.2-11
619
620             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
621             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
622             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
623
624             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
625             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
626             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
627             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
628           end
629         else                             //それ以外
630           begin   //そのまま
631             gdME   := dMME  * 1.1 ;      // 代謝エネルギーの総要求量(Mcal)    // JFS2006 p130、左段、L14
632             gdTDN  := dMTDN * 1.1 ;      // 可消化養分総量
633             gdDE   := dMDE  * 1.1 ;      // 可消化エネルギー
634             gdMJ   := dMMJ  * 1.1 ;      // 代謝エネルギーの総要求量(MJ)
635           end
636       end
637
638     else if ( stD.cKind = '黒毛和種双子') then   //黒毛和種(双子)
639       begin
640         // 維持の代謝エネルギー要求量
641         dMME  := 0.1163 * power(stD.dWt1,  0.75);        // JFS2006 p129、8.3.2-1
642
643         dMDE  := dMME / 0.82 ;      // JFS2006 p130、8.3.2-2
644         dMTDN := dMDE / 4.41 ;      // JFS2006 p130、8.3.2-3
645         dMMJ  := dMME * 4.184 ;     // JFS2006 p129、L36
646
647         dE := (2.712 * (1 / power(10, 12)) * power(279, 5.45601))
648             - (2.712 * (1 / power(10, 12)) * power(216, 5.45601)) ;  // JFS2006 p132, 8.4.2-6
649
650         if( stD.cPre = '分娩前9週から4週まで' )  then    //分娩前9週から4週まで
651           begin
652             dMERC := dE / 63 / 0.123 * 0.9 ;        // JFS2006 p132、8.4.2-9
653
654             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
655             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
656             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
657
658             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
659             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
660             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
661             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
662           end
663         else if ( stD.cPre = '分娩前3週から分娩まで' )  then    //分娩前3週から分娩まで
664           begin
665             dMERC  := dE / 63 / 0.123 * 1.2 ;        // JFS2006 p132、8.4.2-12
666
667             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
668             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
669             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
670
671             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
672             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
673             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
674             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
675           end
676         else                             //それ以外
677           begin   //そのまま
678             gdME   := dMME  * 1.1 ;      // 代謝エネルギーの総要求量(Mcal)    // JFS2006 p130、左段、L14
679             gdTDN  := dMTDN * 1.1 ;      // 可消化養分総量
680             gdDE   := dMDE  * 1.1 ;      // 可消化エネルギー
681             gdMJ   := dMMJ  * 1.1 ;      // 代謝エネルギーの総要求量(MJ)
682           end
683       end
684
685     else if ( stD.cKind = '交雑種')  then   //交雑種
686       begin
687         // 維持の代謝エネルギー要求量
688         dMME  := 0.1163 * power(stD.dWt1,  0.75);        // JFS2006 p129、8.3.2-1
689
690         dMDE  := dMME / 0.82 ;      // JFS2006 p130、8.3.2-2
691         dMTDN := dMDE / 4.41 ;      // JFS2006 p130、8.3.2-3
692         dMMJ  := dMME * 4.184 ;     // JFS2006 p129、L36
693
694         dE := (1.979 * (1 / power(10, 12)) * power(280, 5.45601))
695             - (1.979 * (1 / power(10, 12)) * power(217, 5.45601)) ;  // JFS2006 p132, 8.4.2-7
696
697         if( stD.cPre = '分娩前9週から4週まで' )  then    //分娩前9週から4週まで
698           begin
699             dMERC  := dE / 63 / 0.123 * 0.9 ;        // JFS2006 p132、8.4.2-10
700
701             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
702             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
703             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
704
705             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
706             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
707             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
708             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
709           end
710         else if( stD.cPre = '分娩前3週から分娩まで' ) then      //分娩前3週から分娩まで
711           begin
712             dMERC  := dE / 63 / 0.123 * 1.2 ;        // JFS2006 p132、8.4.2-13
713
714             dDERC  := dMERC / 0.82 ;     // JFS2006 p130、8.3.2-2
715             dTDNRC := dDERC / 4.41 ;     // JFS2006 p130、8.3.2-3
716             dMJRC  := dMERC * 4.184 ;    // JFS2006 p129、L36
717
718             gdME   := dMME  + dMERC ;    // 代謝エネルギーの総要求量(Mcal)
719             gdTDN  := dMTDN + dTDNRC ;   // 可消化養分総量
720             gdDE   := dMDE  + dDERC ;    // 可消化エネルギー
721             gdMJ   := dMMJ  + dMJRC ;    // 代謝エネルギーの総要求量(MJ)
722           end
723         else                             //それ以外
724           begin   //そのまま
725             gdME   := dMME  * 1.1 ;      // 代謝エネルギーの総要求量(Mcal)    // JFS2006 p130、左段、L14
726             gdTDN  := dMTDN * 1.1 ;      // 可消化養分総量
727             gdDE   := dMDE  * 1.1 ;      // 可消化エネルギー
728             gdMJ   := dMMJ  * 1.1 ;      // 代謝エネルギーの総要求量(MJ)
729           end
730       end;
731 end;
732
733 //*** 乾乳牛の蛋白質の計算 ***
734 procedure Drying_Calc_DCP_A( stD : reDRY ) ;
735 var
736     ldPP_0   :  Double ;    //妊娠子宮への蛋白質蓄積量(妊娠期間)
737     ldPP_63  :  Double ;    //妊娠子宮への蛋白質蓄積量(妊娠期間-63)
738     ldPP     :  Double ;    //妊娠子宮への蛋白質蓄積量(g)
739     ldT      :  Double ;    //妊娠期間(日)
740     ldT63    :  Double ;    //妊娠期間-63(日)
741     ldPPDCPR :  Double ;    //妊娠に必要な可消化蛋白質要求量
742     ldFP     :  Double ;    //代謝ふん中蛋白質(g/日)
743     ldIDM    :  Double ;    //乾物摂取量増加分(kg/日)
744     ldFMEC   :  Double ;    //飼料ME含量(Mcal/kg DM)
745     ldIME    :  Double ;    //ME増給分(Mcal/日)
746     dWork1   :  Double ;
747     dFN      :  Double ;
748     dUN      :  Double ;
749     dSP      :  Double ;
750     dRPC     :  Double ;
751     dRP      :  Double ;
752     dNP      :  Double ;
753     dRD      :  Double ;
754     dEP      :  Double ;
755
756 begin
757     //維持&増体要求量
758     if ( stD.cKind = 'ホルスタイン(初妊)' )  then     //ホルスタイン種(初妊)
759       begin
760         dFN  := 30 * gdDMI / 6.25 ;                       // JFS2006 p-128、8.2.1-2
761         dUN  := 2.75 * (power( stD.dWt1, 0.5 ) / 6.25);   // 8.2.1-4
762         dSP  := 0.2 * power( stD.dWt1, 0.6 );             // 8.2.1-5
763         dRPC := 23.5505 * (1 / power(stD.dWt1, 0.0645));  // 8.2.1-6
764         dRP  := 10 * 0.35 * dRPC ;                        // 8.2.1-7(日増体重)
765         dNP  := dFN * 6.25 + dUN * 6.25 + dSP + dRP;      // 8.2.1-8
766         dRD  := 0.85 ;                                    // JFS2006 p128 表8.2.1
767         dEP  := 0.51 ;                                    // JFS2006 p128 表8.2.1
768         gdMDCP  := dNP / dEP ;                            // 粗蛋白質維持要求量     JFS2006 p128、8.2.1-1
769         gdMCP := gdMDCP * dRD - dFN * 6.25;               // 維持に要する粗蛋白質要求量   8.2.1-9
770       end
771     else     //ホルスタイン種(初妊)以外
772       begin
773         gdMCP  := 2.71 * power( stD.dWt1, 0.75 );         // 維持に要する粗蛋白質要求量   JFS2006 p129、8.3.1-1
774         gdMDCP := gdMCP / 0.60 ;                          // 粗蛋白質維持要求量           JFS2006 p129、8.3.1-2
775       end;
776
777     //妊娠要求量
778     if ( stD.cKind = 'ホルスタイン(初妊)' )  then
779       begin    //ホルスタイン種(初妊)
780         ldT     := 280 ;                 //妊娠期間、JFS2006 p130、表8.4
781         ldT63   := ldT - 63 ;            //妊娠期間-63
782         ldPP_0  := 0.345 * power(ldT,2) - 69.2 * ldT + 2818 ;        // JFS2006 p131、8.4.1-1
783         ldPP_63 := 0.345 * power(ldT63,2) - 69.2 * ldT63 + 2818 ;    // JFS2006 p131、8.4.1-1
784         ldPP    := ldPP_0 - ldPP_63 ;
785         if ( stD.cPre = '分娩前9週から4週まで' )  then         //分娩前9~4週間
786             gdPCP := ldPP * 42 / 46 / 63 / 0.33 / 0.7 * 0.9        //妊娠に必要な粗蛋白質要求量   JFS2006 p131、8.4.1-2 & p130、表8.4
787         else if ( stD.cPre = '分娩前3週から分娩まで' )  then   //分娩前3週間
788             gdPCP := ldPP * 42 / 46 / 63 / 0.33 / 0.7 * 1.2        //妊娠に必要な粗蛋白質要求量   JFS2006 p131、8.4.1-3 & p130、表8.4
789         else                                                   //それ以外
790             gdPCP := 0 ;                                           //妊娠に必要な粗蛋白質要求量
791
792         ldPPDCPR := gdPCP * 0.60 ;                                 //妊娠に必要な可消化蛋白質要求量
793       end;
794
795     if ( stD.cKind = 'ホルスタイン(経産)' )  then
796       begin    //ホルスタイン種(経産)
797         ldT     := 280 ;                     //妊娠期間、JFS2006 p130、表8.4
798         ldT63   := ldT - 63 ;                //妊娠期間-63
799         ldPP_0  := 0.345 * power(ldT,2) - 69.2 * ldT + 2818 ;        // JFS2006 p131、8.4.1-1
800         ldPP_63 := 0.345 * power(ldT63,2) - 69.2 * ldT63 + 2818 ;    // JFS2006 p131、8.4.1-1
801         ldPP    := ldPP_0 - ldPP_63 ;
802         if ( stD.cPre = '分娩前9週から4週まで' )  then               //分娩前9週から4週まで
803             gdPCP := ldPP * 46 / 46 / 63 / 0.33 / 0.7 * 0.9        //妊娠に必要な粗蛋白質要求量  JFS2006 p131、8.4.1-2 & p130、表8.4
804         else if ( stD.cPre = '分娩前3週から分娩まで' )  then         //分娩前3週から分娩まで
805             gdPCP := ldPP * 46 / 46 / 63 / 0.33 / 0.7 * 1.2        //妊娠に必要な粗蛋白質要求量  JFS2006 p131、8.4.1-3 & p130、表8.4
806         else                                                         //それ以外
807             gdPCP := 0 ;                                           //妊娠に必要な粗蛋白質要求量
808
809         ldPPDCPR := gdPCP * 0.60 ;                                 //妊娠に必要な可消化蛋白質要求量
810       end;
811
812     if ( stD.cKind = '黒毛和種単子' )  then
813       begin    //黒毛和種(単子)
814         ldT      := 285 ;                     //妊娠期間、JFS2006 p130、表8.4
815         ldT63    := ldT - 63 ;                //妊娠期間-63
816
817         ldPP_0   := (1.486 * 0.0001 * power(ldT,3) - 4.247
818                  *  0.01 * power(ldT,2) + 3.173 * ldT - 0.328)
819                  *  (-0.323 * 0.000001 * power(ldT,3) + 3.000
820                  *  0.0001 * power(ldT,2) - 9.430 * 0.01 * ldT
821                  +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
822         ldPP_63  := (1.486 * 0.0001 * power(ldT63,3) - 4.247
823                  *  0.01 * power(ldT63,2) + 3.173 * ldT63 - 0.328)
824                  *  (-0.323 * 0.000001 * power(ldT63,3) + 3.000
825                  *  0.0001 * power(ldT63,2) - 9.430 * 0.01 * ldT63
826                  +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
827         ldPP     := ldPP_0 - ldPP_63 ;
828         if ( stD.cPre = '分娩前9週から4週まで' )  then   //分娩前9週から4週まで
829           begin
830             ldFMEC := 2.28 ;                  //飼料ME含量(Mcal/kg DM)JFS2006 p131
831             ldIME  := 3.30 ;                  //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.1
832             ldIDM  := ldIME / ldFMEC ;        //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
833           //ldFP   := 6.25 * 4.8 * ldIDM ;    //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
834             ldFP   := 30.00 * ldIDM ;         //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
835           //ldPPDCPR := ldPP * 30 / 38.5 / 63 / 0.6 * 0.9 + ldFP ;      //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
836             ldPPDCPR := ldPP * 29.996 / 38.5 / 63 / 0.6 * 0.9 + ldFP ;  //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
837           end
838         else if ( stD.cPre = '分娩前3週から分娩まで' )  then  //分娩前3週から分娩まで
839           begin
840             ldFMEC := 2.42 ;                   //飼料ME含量(Mcal/kg DM)JFS2006 p131
841             ldIME  := 4.40 ;                   //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.2
842             ldIDM  := ldIME / ldFMEC ;         //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
843           //ldFP   := 6.25 * 4.8 * ldIDM ;     //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
844             ldFP   := 30.00 * ldIDM ;          //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
845           //ldPPDCPR := ldPP * 30 / 38.5 / 63 / 0.6 * 1.2 + ldFP ;        //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
846             ldPPDCPR := ldPP * 29.99625 / 38.5 / 63 / 0.6 * 1.2 + ldFP ;  //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
847           end
848         else                            //それ以外
849             ldPPDCPR := 0 ;                    //妊娠に必要な可消化蛋白質要求量
850
851         gdPCP := ldPPDCPR / 0.60 ;             //妊娠に要する粗蛋白質要求量
852       end;
853
854     if ( stD.cKind = '黒毛和種双子' )  then
855       begin    //黒毛和種(双子)
856         ldT      := 279 ;                     //妊娠期間、JFS2006 p130、表8.4
857         ldT63    := ldT - 63 ;                //妊娠期間-63
858         ldPP_0   := (1.486 * 0.0001 * power(ldT,3) - 4.247
859                  *  0.01 * power(ldT,2) + 3.173 * ldT - 0.328)
860                  *  (-0.323 * 0.000001 * power(ldT,3) + 3.000
861                  *  0.0001 * power(ldT,2) - 9.430 * 0.01 * ldT
862                  +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
863         ldPP_63  := (1.486 * 0.0001 * power(ldT63,3) - 4.247
864                  *  0.01 * power(ldT63,2) + 3.173 * ldT63 - 0.328)
865                  *  (-0.323 * 0.000001 * power(ldT63,3) + 3.000
866                  *  0.0001 * power(ldT63,2) - 9.430 * 0.01 * ldT63
867                  +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
868         ldPP     := ldPP_0 - ldPP_63 ;
869         if ( stD.cPre = '分娩前9週から4週まで' )  then     //分娩前9週から4週まで
870           begin
871             ldFMEC := 2.28 ;                //飼料ME含量(Mcal/kg DM)JFS2006 p131
872             ldIME  := 5.22 ;                //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.1
873             ldIDM  := ldIME / ldFMEC ;      //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
874             ldFP   := 6.25 * 4.8 * ldIDM ;  //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
875           //ldPPDCPR := ldPP * 48 / 38.5 / 63 / 0.6 * 0.9 + ldFP ;         //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
876             ldPPDCPR := ldPP * 48.02125 / 38.5 / 63 / 0.6 * 0.9 + ldFP ;   //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
877           end
878         else if ( stD.cPre = '分娩前3週から分娩まで' )  then     //分娩前3週から分娩まで
879           begin
880             ldFMEC := 2.42 ;                //飼料ME含量(Mcal/kg DM)JFS2006 p131
881             ldIME  := 6.97 ;                //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.2
882             ldIDM  := ldIME / ldFMEC ;      //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
883             ldFP   := 6.25 * 4.8 * ldIDM ;  //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
884           //ldPPDCPR := ldPP * 48 / 38.5 / 63 / 0.6 * 1.2 + ldFP ;        //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
885             ldPPDCPR := ldPP * 47.98622 / 38.5 / 63 / 0.6 * 1.2 + ldFP ;  //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
886           end
887         else                                //それ以外
888             ldPPDCPR := 0 ;                 //妊娠に必要な可消化蛋白質要求量
889
890         gdPCP := ldPPDCPR / 0.60 ;        //妊娠に必要な粗蛋白質要求量
891       end;
892
893     if ( stD.cKind = '交雑種' )  then
894       begin    //交雑種(F1)
895         ldT     := 280 ;                    //妊娠期間、JFS2006 p130、表8.4
896         ldT63   := ldT - 63 ;               //妊娠期間-63
897         ldPP_0  := (1.486 * 0.0001 * power(ldT,3) - 4.247
898                 *  0.01 * power(ldT,2) + 3.173 * ldT - 0.328)
899                 *  (-0.323 * 0.000001 * power(ldT,3) + 3.000
900                 *  0.0001 * power(ldT,2) - 9.430 * 0.01 * ldT
901                 +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
902         ldPP_63 := (1.486 * 0.0001 * power(ldT63,3) - 4.247
903                 *  0.01 * power(ldT63,2) + 3.173 * ldT63 - 0.328)
904                 *  (-0.323 * 0.000001 * power(ldT63,3) + 3.000
905                 *  0.0001 * power(ldT63,2) - 9.430 * 0.01 * ldT63
906                 +  11.263) * 6.25 ;                               // JFS2006 p131、8.4.1-4
907         ldPP    := ldPP_0 - ldPP_63 ;
908         if ( stD.cPre = '分娩前9週から4週まで' )  then     //分娩前9週から4週まで
909           begin
910             ldFMEC := 2.28 ;                //飼料ME含量(Mcal/kg DM)JFS2006 p131
911             ldIME  := 3.88 ;                //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.1
912             ldIDM  := ldIME / ldFMEC ;      //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
913             ldFP   := 6.25 * 4.8 * ldIDM ;  //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
914           //ldPPDCPR := ldPP * 35.6 / 38.5 / 63 / 0.6 * 0.9 + ldFP ;     //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
915             ldPPDCPR := ldPP * 35.60141 / 38.5 / 63 / 0.6 * 0.9 + ldFP ; //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-5 & p130、表8.4
916           end
917         else if ( stD.cPre = '分娩前3週から分娩まで' )  then     //分娩前3週から分娩まで
918           begin
919             ldFMEC := 2.42 ;                //飼料ME含量(Mcal/kg DM)JFS2006 p131
920             ldIME  := 5.17 ;                //ME増給分(Mcal/日)JFS2006 p31、表2.1.3.2
921             ldIDM  := ldIME / ldFMEC ;      //乾物摂取量増加分(kg/日)JFS2006 p131、8.4.1-8
922             ldFP   := 6.25 * 4.8 * ldIDM ;  //代謝ふん中蛋白質(g/日)JFS2006 p131、8.4.1-7
923           //ldPPDCPR := ldPP * 35.6 / 38.5 / 63 / 0.6 * 1.2 + ldFP ;     //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
924             ldPPDCPR := ldPP * 35.61246 / 38.5 / 63 / 0.6 * 1.2 + ldFP ; //妊娠に必要な可消化蛋白質要求量  JFS2006 p131、8.4.1-6 & p130、表8.4
925           end
926         else                                //それ以外
927             ldPPDCPR := 0 ;                 //妊娠に必要な可消化蛋白質要求量
928
929         gdPCP := ldPPDCPR / 0.60 ;          //妊娠に必要な粗蛋白質要求量
930     end;
931
932     gdDCPR := gdMCP + ldPPDCPR ;     //可消化粗蛋白質総要求量
933     gdCPR  := gdMDCP  + gdPCP  ;     //粗蛋白質総要求量
934
935     if ( stD.cLVCP = 'ON' )  then    // CPの最低値をDMの12%に設定する
936       begin
937         dWork1 := (gdDMI * 1000) * 0.12 ;
938         if (gdCPR < dWork1)  then
939           begin
940             gdCPR  := dWork1 ;
941             gdDCPR := dWork1 * 0.60 ; //可消化粗蛋白質総要求量
942           end;
943       end;
944
945     gdPDCP := gdPCP * 0.60 ;   // 妊娠に要する可消化蛋白質要求量
946 end;
947
948 //*** 乾乳牛のミネラル&ビタミンの計算 ***
949 procedure Drying_Calc_CAPAD_A( stD : reDRY ) ;
950 var
951     dMCa  :  Double ;    // カルシウム維持要求量
952     dMP   :  Double ;    // リン維持要求量
953     dMVA  :  Double ;    // ビタミンA維持要求量
954     dMVD  :  Double ;    // ビタミンD維持要求量
955     dHCa  :  Double ;    // カルシウム妊娠末期要求量
956     dHP   :  Double ;    // リン妊娠末期要求量
957     dHVA  :  Double ;    // ビタミンA妊娠末期要求量
958     dHVD  :  Double ;    // ビタミンD妊娠末期要求量
959
960 begin
961   //維持&増体要求量
962     if ( stD.cKind = 'ホルスタイン(初妊)' )  then    //ホルスタイン種(初妊)
963       begin
964         dMCa := 25.4 + 0.00092 * stD.dWt1 + 3.61 * 0.35 ;  // 維持カルシウム,日増体重(0.35kg), JFS2006 p129, 8.2.3-7
965         dMP  := 13.5 + 0.00207 * stD.dWt1 + 8.29 * 0.35 ;  // 維持リン,日増体重(0.35kg), JFS2006 p129, 8.3.3-8
966         dMVA := 0.078 * stD.dWt1 ;                         // 維持ビタミンA, JFS2006 p129, 8.2.3-9
967         dMVD := 0.006 * stD.dWt1 ;                         // 維持ビタミンD, JFS2006 p129, 8.2.3-10
968       end
969     else               //ホルスタイン種(初妊)以外のとき
970       begin
971         dMCa := 0.0154 * stD.dWt1 / 0.38 ;                 // 維持カルシウム, JFS2006 p130, 8.3.3-1
972         dMP  := 0.0143 * stD.dWt1 / 0.5  ;                 // 維持リン,       JFS2006 p130, 8.3.3-2
973         dMVA := 0.0424 * stD.dWt1 ;                        // 維持ビタミンA, JFS2006 p130, 8.3.3-3
974         dMVD := 0.006  * stD.dWt1 ;                        // 維持ビタミンD, JFS2006 p130, 8.3.3-4
975       end;
976
977   //妊娠末期に維持に加える量
978     dHCa := 0.0078 * 1.23 * stD.dWt1 / 0.38 ;  // JFS2006 p132, 8.4.3-1
979     dHP  := 0.0047 * 1.23 * stD.dWt1 / 0.5  ;  // JFS2006 p132, 8.4.3-2
980     dHVA := 0.0336 * stD.dWt1 ;                // JFS2006 p132, 8.4.3-3
981     dHVD := 0.004  * stD.dWt1 ;                // JFS2006 p132, 8.4.3-4
982
983     if( stD.cPre = '分娩前9週から4週まで' )  then        //分娩前9週から4週まで
984       begin
985         dHCa := dHCa * 0.90 ;    // JFS2006 p132, 右段
986         dHP  := dHP  * 0.90 ;
987       end
988     else if( stD.cPre = '分娩前3週から分娩まで' ) then   //分娩前3週から分娩まで
989       begin
990         dHCa := dHCa * 1.20 ;    // JFS2006 p132, 右段
991         dHP  := dHP  * 1.20 ;
992       end
993     else if( stD.cPre = 'それ以外' )  then               //それ以外
994       begin
995         dHCa := dHCa * 0 ;
996         dHP  := dHP  * 0 ;
997         dHVA := dHVA * 0 ;
998         dHVD := dHVD * 0 ;
999       end;
1000
1001   //胎子の品種に関係する計算
1002     if( stD.cKind = '黒毛和種単子' )  then
1003       begin
1004         if(( stD.cPre = '分娩前9週から4週まで' ) or ( stD.cPre = '分娩前3週から分娩まで' )) then
1005           begin
1006             dHCa := dHCa * 0.70 ;        // JFS2006 p132, 右段
1007             dHP  := dHP  * 0.70 ;
1008           end
1009       end
1010     else if( stD.cKind = '黒毛和種双子' )  then
1011       begin
1012         if(( stD.cPre = '分娩前9週から4週まで' ) or ( stD.cPre = '分娩前3週から分娩まで' )) then
1013           begin
1014             dHCa := dHCa * 1.10 ;        // JFS2006 p132, 右段
1015             dHP  := dHP  * 1.10 ;
1016           end
1017       end
1018     else if( stD.cKind = '交雑種' )  then
1019       begin
1020         if(( stD.cPre = '分娩前9週から4週まで' ) or ( stD.cPre = '分娩前3週から分娩まで' )) then
1021           begin
1022             dHCa := dHCa * 0.85 ;        // JFS2006 p132, 右段
1023             dHP  := dHP  * 0.85 ;
1024           end
1025       end;
1026
1027   //グローバル変数に代入
1028     gdCa := dMCa + dHCa ;        // カルシウム
1029     gdP  := dMP  + dHP  ;        // リン
1030     gdVA := dMVA + dHVA ;        // ビタミンA
1031     gdVD := dMVD + dHVD ;        // ビタミンD
1032 end;
1033
1034 //*** 育成牛の養分要求量計算 ***
1035 function  GrowingCow_A( stG : reGROW ) : reNUTRIENT ;
1036 var
1037     stRet : reNUTRIENT ;
1038 begin
1039     //計算結果出力変数の初期化
1040         gdFCM  := 0;            // 4%脂肪補正乳量
1041         gdDMI  := 0;            // 乾物摂取量DMI(kg)
1042         gdTDN  := 0;            // 可消化養分総量
1043         gdDE   := 0;            // 可消化エネルギー
1044         gdME   := 0;            // 代謝エネルギーの総要求量(Mcal)
1045         gdMJ   := 0;            // 代謝エネルギーの総要求量(MJ)
1046         gdCPR  := 0;            // 粗蛋白質要求量
1047         gdDCPR := 0;            // 可消化蛋白質要求量
1048         gdMCP  := 0;            // 維持に要する粗蛋白質要求量
1049         gdMDCP := 0;            // 維持に要する粗蛋白質要求量
1050         gdPCP  := 0;            // 妊娠に要する粗蛋白質要求量
1051         gdPDCP := 0;            // 妊娠に要する粗蛋白質要求量
1052         gdCa   := 0;            // カルシウム
1053         gdP    := 0;            // リン
1054         gdVA   := 0;            // ビタミンA
1055         gdVD   := 0;            // ビタミンD
1056
1057     //養分要求量の計算処理
1058         Growing_Calc_ME_A( stG );     //エネルギーの計算
1059         Growing_Calc_DMI_A( stG );    //乾物摂取量の計算
1060         Growing_Calc_DCP_A( stG );    //蛋白質の計算
1061         Growing_Calc_CAPAD_A( stG );  //ミネラル&ビタミンの計算
1062
1063     //養分要求量計算結果の代入
1064         stRet.dFCM      :=      gdFCM;      // 4%脂肪補正乳量
1065         stRet.dDMI      :=      gdDMI;      // 乾物摂取量DMI(kg
1066         stRet.dCP       :=      gdCPR;      // 粗蛋白質要求量
1067         stRet.dDCP      :=      gdDCPR;     // 可消化蛋白質要求量
1068         stRet.dTDN      :=      gdTDN;      // 可消化養分総量
1069         stRet.dDE       :=      gdDE;       // 可消化エネルギー
1070         stRet.dMEC      :=      gdME;       // 代謝エネルギーの総要求量(Mcal)
1071         stRet.dMEJ      :=      gdMJ;       // 代謝エネルギーの総要求量(MJ)
1072         stRet.dCa       :=      gdCa;       // カルシウム
1073         stRet.dP        :=      gdP;        // リン
1074         stRet.dVA       :=      gdVA;       // ビタミンA
1075         stRet.dVD       :=      gdVD;       // ビタミンD
1076
1077         GrowingCow_A := stRet ;
1078 end;
1079
1080 //*** 育成牛の乾物摂取量の計算 ***
1081 procedure Growing_Calc_DMI_A( stG : reGROW ) ;
1082 var
1083     dWrk  :  Double ;
1084 begin
1085     if ( stG.dWt1 <= 45 )  then
1086         gdDMI := 0.54
1087         //------------------------------
1088         // エネルギー要求量からDMIを算出(JFS2006 p7)
1089         // 全乳4.5Kg、ME含量:2.7216 Mcal(5.04Mcal/kg DM)、DM量:0.54kg
1090         // カーフスタータ,乾物含量:88%、ME含量:3.15 Mcal/kg DM
1091         //------------------------------
1092         // エネルギー要求量からDMIを算出
1093         // 全乳4.5Kgではエネルギー要求量を満たせない場合、
1094         // 不足分を全乳の追加で充足するとしてDMIを計算する。
1095         // 全乳の乾物含量:12%
1096         // 全乳4.5KgのME含量:2.7216 Mcal(5.04Mcal/kg DM)
1097     else if ( ( stG.dWt1 > 45 ) and ( stG.dWt1 <= 66 ) )  then
1098       begin
1099         // エネルギー要求量からDMIを算出(JFS2006 p7)
1100         // 全乳4.5Kg、ME含量:2.7216 Mcal(5.04Mcal/kg DM)、DM量:0.54kg
1101         // カーフスタータ,乾物含量:88%、ME含量:3.15 Mcal/kg DM
1102         dWrk  := gdME - 2.7216 ;
1103         gdDMI := dWrk / 3.15 + 0.54 ;
1104       end
1105     else if ( ( stG.dWt1 > 66 ) and ( stG.dWt1 < 75 ) )  then
1106       begin
1107         // 育成牛の離乳 ( 0:離乳前、1:離乳後 、体重が66kg<X<75kg )
1108         if ( stG.cWean = '離乳前' )  then
1109           begin
1110             dWrk  := gdME - 2.7216 ;
1111             gdDMI := dWrk / 3.15 + 0.54 ;
1112           end
1113         else if ( stG.cWean = '離乳後' )  then
1114             gdDMI := 0.49137 + 0.01768 * stG.dWt1 + 0.91754 * stG.dInWt1   // JFS2006 p7, 1.1-4
1115       end
1116     else
1117         gdDMI := 0.49137 + 0.01768 * stG.dWt1 + 0.91754 * stG.dInWt1 ;     // JFS2006 p7, 1.1-4
1118 end;
1119
1120 //*** 育成牛のエネルギーの計算 ***
1121 procedure Growing_Calc_ME_A( stG : reGROW ) ;
1122 var
1123     dMME  :  Double ;    //維持ME(MCal)
1124     dMMJ  :  Double ;    //維持ME(MJ)
1125     dMDE  :  Double ;    //維持DE(MCal)
1126     dMTDN :  Double ;    //維持TDN(kg)
1127
1128     dGME  :  Double ;    //増体ME(MCal)
1129     dGMJ  :  Double ;    //増体ME(MJ)
1130     dGDE  :  Double ;    //増体DE(MCal)
1131     dGTDN :  Double ;    //増体TDN(kg)
1132 begin
1133     if ( stG.dWt1 <= 66 )  then   // 体重 66kg 以下
1134       begin
1135         //dMME := 0.1183 * Power( stG.dWt1, 0.75 );              // JFS2006 p10、左段、L8~L9 (2006年版)
1136         dMME  := 0.1152 * Power( stG.dWt1, 0.75 );               // JFS1999 p10  (1999年版)
1137         dGME  := 0.1205 * stG.dInWt1 * Power( stG.dWt1, 0.75 );  // JFS2006 p10、左段、L10~L12
1138
1139         dMDE  := dMME / 0.82  ;       // JFS2006 p130、8.3.2-2
1140         dMTDN := dMDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1141         dMMJ  := dMME * 4.184 ;       // JFS2006 p129、L36
1142
1143         dGDE  := dGME / 0.82  ;       // JFS2006 p130、8.3.2-2
1144         dGTDN := dGDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1145         dGMJ  := dGME * 4.184 ;       // JFS2006 p129、L36
1146
1147         // 季節の考慮
1148         if ( stG.cKset = '考慮しない' ) then        //考慮しない
1149           begin
1150                 gdME  := dMME  + dGME  ;
1151                 gdMJ  := dMMJ  + dGMJ  ;
1152                 gdDE  := dMDE  + dGDE  ;
1153                 gdTDN := dMTDN + dGTDN ;
1154           end
1155         else if ( stG.cKset = '夏期' )  then        //夏期
1156           begin
1157                 gdME  := (dMME  + dGME)  * 0.9 ;    // JFS2006 p129、左段、L8
1158                 gdMJ  := (dMMJ  + dGMJ)  * 0.9 ;
1159                 gdDE  := (dMDE  + dGDE)  * 0.9 ;
1160                 gdTDN := (dMTDN + dGTDN) * 0.9 ;
1161           end
1162         else if ( stG.cKset = '冬期' )  then        //冬期
1163           begin
1164                 gdME  := (dMME  + dGME)  * 1.1 ;    // JFS2006 p129、左段、L8
1165                 gdMJ  := (dMMJ  + dGMJ)  * 1.1 ;
1166                 gdDE  := (dMDE  + dGDE)  * 1.1 ;
1167                 gdTDN := (dMTDN + dGTDN) * 1.1 ;
1168           end
1169         else if ( stG.cKset = '冬期(厳寒地)' )  then  //冬期(厳寒地)
1170           begin
1171                 gdME  := (dMME  + dGME)  * 1.1 ;      // JFS2006 p129、左段、L8
1172                 gdMJ  := (dMMJ  + dGMJ)  * 1.1 ;
1173                 gdDE  := (dMDE  + dGDE)  * 1.1 ;
1174                 gdTDN := (dMTDN + dGTDN) * 1.1 ;
1175           end
1176       end
1177     else if ( stG.dWt1 <= 120 )  then   // 体重 120kg 以下
1178       begin
1179         //dMME := 0.1183 * Power( stG.dWt1, 0.75 );               // JFS2006 p10、左段、L16~L17
1180         //dGME := 0.1293 * stG.dInWt1 * Power( stG.dWt1, 0.75 );  // JFS2006 p10、左段、L18~L20
1181         dMME := 0.99966 * (0.1183 * Power(stG.dWt1, 0.75));       // JFS2006 p10、左段、L16~L17
1182         dGME := 0.99966 * (0.1293 * stG.dInWt1 * Power(stG.dWt1, 0.75));  // JFS2006 p10、左段、L18~L20
1183
1184         dMDE  := dMME / 0.82  ;       // JFS2006 p130、8.3.2-2
1185         dMTDN := dMDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1186         dMMJ  := dMME * 4.184 ;       // JFS2006 p129、L36
1187
1188         dGDE  := dGME / 0.82  ;       // JFS2006 p130、8.3.2-2
1189         dGTDN := dGDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1190         dGMJ  := dGME * 4.184 ;       // JFS2006 p129、L36
1191
1192         // 季節の考慮
1193         if ( stG.cKset = '考慮しない' ) then          //考慮しない
1194           begin
1195                 gdME  := dMME  + dGME  ;
1196                 gdMJ  := dMMJ  + dGMJ  ;
1197                 gdDE  := dMDE  + dGDE  ;
1198                 gdTDN := dMTDN + dGTDN ;
1199           end
1200         else if ( stG.cKset = '夏期' )  then          //夏期
1201           begin
1202                 gdME  := (dMME  + dGME)  * 0.9 ;      // JFS2006 p129、左段、L8
1203                 gdMJ  := (dMMJ  + dGMJ)  * 0.9 ;
1204                 gdDE  := (dMDE  + dGDE)  * 0.9 ;
1205                 gdTDN := (dMTDN + dGTDN) * 0.9 ;
1206           end
1207         else if ( stG.cKset = '冬期' )  then          //冬期
1208           begin
1209                 gdME  := (dMME  + dGME)  * 1.1 ;      // JFS2006 p129、左段、L8
1210                 gdMJ  := (dMMJ  + dGMJ)  * 1.1 ;
1211                 gdDE  := (dMDE  + dGDE)  * 1.1 ;
1212                 gdTDN := (dMTDN + dGTDN) * 1.1 ;
1213           end
1214         else if ( stG.cKset = '冬期(厳寒地)' )  then  //冬期(厳寒地)
1215           begin
1216                 gdME  := (dMME  + dGME)  * 1.1 ;      // JFS2006 p129、左段、L8
1217                 gdMJ  := (dMMJ  + dGMJ)  * 1.1 ;
1218                 gdDE  := (dMDE  + dGDE)  * 1.1 ;
1219                 gdTDN := (dMTDN + dGTDN) * 1.1 ;
1220           end
1221       end
1222     else if ( stG.dWt1 > 120 )  then   // 体重 120kg より以上
1223       begin
1224         dMME  := 0.1163 * Power(stG.dWt1, 0.75);               // JFS2006 p10、左段、L24~L25
1225         dGME  := 0.1355 * stG.dInWt1 * Power(stG.dWt1, 0.75);  // JFS2006 p10、左段、L26~L28
1226
1227         dMDE  := dMME / 0.82  ;       // JFS2006 p130、8.3.2-2
1228         dMTDN := dMDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1229         dMMJ  := dMME * 4.184 ;       // JFS2006 p129、L36
1230
1231         dGDE  := dGME / 0.82  ;       // JFS2006 p130、8.3.2-2
1232         dGTDN := dGDE / 4.41  ;       // JFS2006 p130、8.3.2-3
1233         dGMJ  := dGME * 4.184 ;       // JFS2006 p129、L36
1234
1235         // 季節の考慮
1236         if ( stG.cKset = '考慮しない' ) then          //考慮しない
1237           begin
1238                 gdME  := dMME  + dGME  ;
1239                 gdMJ  := dMMJ  + dGMJ  ;
1240                 gdDE  := dMDE  + dGDE  ;
1241                 gdTDN := dMTDN + dGTDN ;
1242           end
1243         else if ( stG.cKset = '夏期' )  then          //夏期
1244           begin
1245                 gdME  := dMME  + dGME  ;
1246                 gdMJ  := dMMJ  + dGMJ  ;
1247                 gdDE  := dMDE  + dGDE  ;
1248                 gdTDN := dMTDN + dGTDN ;
1249           end
1250         else if ( stG.cKset = '冬期' )  then          //冬期
1251           begin
1252                 gdME  := dMME  * 1.07 + dGME  ;       // JFS2006 p129、左段、L10
1253                 gdMJ  := dMMJ  * 1.07 + dGMJ  ;
1254                 gdDE  := dMDE  * 1.07 + dGDE  ;
1255                 gdTDN := dMTDN * 1.07 + dGTDN ;
1256           end
1257         else if ( stG.cKset = '冬期(厳寒地)' )  then  //冬期(厳寒地)
1258           begin
1259                 gdME  := dMME  * 1.15 + dGME  ;       // JFS2006 p129、左段、L11
1260                 gdMJ  := dMMJ  * 1.15 + dGMJ  ;
1261                 gdDE  := dMDE  * 1.15 + dGDE  ;
1262                 gdTDN := dMTDN * 1.15 + dGTDN ;
1263           end
1264       end;
1265 end;
1266
1267 //*** 育成牛の蛋白質の計算 ***
1268 procedure Growing_Calc_DCP_A( stG : reGROW ) ;
1269 var
1270     dUN  :  Double ;
1271     dSP  :  Double ;
1272     dRPC :  Double ;
1273     dRP  :  Double ;
1274     dNP  :  Double ;
1275     dEP, dRD, dTmpCP : Double ;
1276     dFN  :  Double ;
1277 begin
1278     if ( stG.dWt1 > 66 )  then
1279         dFN  := 30   * gdDMI / 6.25                 // JFS2006 p128、8.2.1-2
1280     else
1281         dFN  := 12.5 * gdDMI / 6.25 ;               // JFS2006 p128、8.2.1-3
1282
1283     dUN  := 2.75 * (Power( stG.dWt1, 0.5 ) / 6.25);     // 8.2.1-4
1284     dSP  := 0.2 * Power( stG.dWt1, 0.6 );               // 8.2.1-5
1285     dRPC := 23.5505 * (1 / Power(stG.dWt1, 0.0645));    // 8.2.1-6
1286     dRP  := 10 * stG.dInWt1 * dRPC ;                    // 8.2.1-7
1287     dNP  := dFN * 6.25 + dUN * 6.25 + dSP + dRP;        // 8.2.1-8
1288
1289     if ( stG.dWt1 < 67 )  then                  //体重 67kg未満
1290       begin
1291         dRD := 0.94 ;                           // JFS2006 p128 表8.2.1
1292         dEP := 0.75 ;
1293       end
1294     else if ((stG.dWt1 >= 67) and (stG.dWt1 < 120))  then   //体重 67kg以上 120kg未満
1295       begin
1296         dRD := 0.90 ;                           // JFS2006 p128 表8.2.1
1297         //dEP := 0.3  ;                         // JFS2006 p128 表8.2.1
1298         dEP := 0.63 ;                           // JFS2006 p128 表8.2.1 (変換効率0.3を0.63に修正)
1299       end
1300     else if ( stG.dWt1 >= 120 )  then           //体重 120kg以上
1301       begin
1302         dRD := 0.85 ;                           // JFS2006 p128 表8.2.1
1303         dEP := 0.51 ;
1304       end;
1305
1306     gdCPR  := dNP / dEP ;            // 粗蛋白質要求量 JFS2006 p128、8.2.1-1
1307     if ( stG.cLVCP = 'ON' )  then    // CPの最低値をDMの12%に設定する JFS2006 p48、右段下
1308       begin
1309         dTmpCP := gdDMI * 0.12 * 1000 ;
1310         if ( gdCPR < dTmpCP ) then
1311             gdCPR := dTmpCP          // 粗蛋白質要求量 (DMの12%)
1312       end;
1313
1314     gdDCPR  := gdCPR * dRD - dFN * 6.25;     // 可消化蛋白質要求量  8.2.1-9
1315 end;
1316
1317 //*** 育成牛のミネラル&ビタミンの計算 ***
1318 procedure Growing_Calc_CAPAD_A( stG : reGROW ) ;
1319 begin
1320     if ( stG.dWt1 <= 90 )  then                              // 体重が 90kg以下
1321       begin
1322         //gdCa := 0.0213 * stG.dWt1 + 20.9 * stG.dInWt1 ;              // JFS2006 p129, 8.2.3-1
1323         gdCa := 1.00001 * (0.0213 * stG.dWt1) + 20.9 * stG.dInWt1 ;    // カルシウム JFS2006 p129, 8.2.3-1
1324         gdP  := 0.0156 * stG.dWt1 + 10.7 * stG.dInWt1 ;                // リン    JFS2006 p129, 8.2.3-2
1325       end
1326     else if (( stG.dWt1 > 90 ) and ( stG.dWt1 <= 250 ))  then    // 体重が 90kgより重く、かつ 250kg以下
1327       begin
1328         //gdCa := 8.00  + 0.0367 * stG.dWt1 + 8.48 * stG.dInWt1 ;            // JFS2006 p129, 8.2.3-3
1329         gdCa := 8.00  + 1.00001 * (0.0367 * stG.dWt1) + 8.48 * stG.dInWt1 ;  // カルシウム JFS2006 p129, 8.2.3-3
1330         gdP  := 0.884 + 0.0500 * stG.dWt1 + 4.86 * stG.dInWt1 ;              // リン    JFS2006 p129, 8.2.3-4
1331       end
1332     else if (( stG.dWt1 > 250 ) and ( stG.dWt1 <= 400 ))  then   // 体重が 250kgより重く、かつ 400kg以下
1333       begin
1334         //gdCa := 13.4 + 0.0184 * stG.dWt1 + 7.17 * stG.dInWt1 ;             // JFS2006 p129, 8.2.3-5
1335         //gdP  :=  7.2 + 0.0215 * stG.dWt1 + 6.02 * stG.dInWt1 ;             // JFS2006 p129, 8.2.3-6
1336         gdCa := 13.4 + 1.00001 * (0.0184 * stG.dWt1) + 7.17 * stG.dInWt1 ;   // カルシウム JFS2006 p129, 8.2.3-5
1337         gdP  :=  7.2 + 1.00001 * (0.0215 * stG.dWt1) + 6.02 * stG.dInWt1 ;   // リン    JFS2006 p129, 8.2.3-6
1338       end
1339     else  // それ以外(体重 400kgより重い)
1340       begin
1341         //gdCa := 25.4 + 0.00092 * stG.dWt1 + 3.61 * stG.dInWt1 ;            // JFS2006 p129, 8.2.3-7
1342         //gdP  := 13.5 + 0.00207 * stG.dWt1 + 8.29 * stG.dInWt1 ;            // JFS2006 p129, 8.2.3-8
1343         gdCa := 25.4 + 1.00001 * (0.00092 * stG.dWt1) + 3.61 * stG.dInWt1 ;  // カルシウム JFS2006 p129, 8.2.3-7
1344         gdP  := 13.5 + 1.00001 * (0.00207 * stG.dWt1) + 8.29 * stG.dInWt1 ;  // リン    JFS2006 p129, 8.2.3-8
1345       end;
1346
1347     //gdVA := 0.0078 * stG.dWt1 ;    // ビタミンA  JFS2006 p129, 8.2.3-9
1348     gdVA := 0.078 * stG.dWt1 ;    // ビタミンA  JFS2006 p129, 8.2.3-9
1349     gdVD := 0.006 * stG.dWt1 ;    // ビタミンD  JFS2006 p129, 8.2.3-10
1350 end;
1351
1352
1353 //*** 1日の増体重計算 ***
1354 function StandardDailyWeightGain(var dWt : Double) : Double;
1355 {    体重kg   1日増体重kg
1356  ----------------------------
1357     40~42       0.0
1358       43          0.1
1359       44          0.2
1360       45          0.3
1361     46~47       0.4
1362     48~50       0.5
1363     51~54       0.6
1364     55~59       0.7
1365     60~68       0.8
1366     69~72       0.9
1367     73~129      1.0
1368    130~213      0.9
1369    214~281      0.8
1370    282~344      0.7
1371    345~403      0.6
1372    404~461      0.5
1373    462~517       0.4
1374    518~572       0.3
1375    573~626       0.2
1376    627~680       0.1
1377    681~707       0.0          }
1378
1379 begin
1380   if( dWt >=  40 ) then StandardDailyWeightGain := 0.0 ;
1381   if( dWt >=  43 ) then StandardDailyWeightGain := 0.1 ;
1382   if( dWt >=  44 ) then StandardDailyWeightGain := 0.2 ;
1383   if( dWt >=  45 ) then StandardDailyWeightGain := 0.3 ;
1384   if( dWt >=  46 ) then StandardDailyWeightGain := 0.4 ;
1385   if( dWt >=  48 ) then StandardDailyWeightGain := 0.5 ;
1386   if( dWt >=  51 ) then StandardDailyWeightGain := 0.6 ;
1387   if( dWt >=  55 ) then StandardDailyWeightGain := 0.7 ;
1388   if( dWt >=  60 ) then StandardDailyWeightGain := 0.8 ;
1389   if( dWt >=  69 ) then StandardDailyWeightGain := 0.9 ;
1390   if( dWt >=  73 ) then StandardDailyWeightGain := 1.0 ;
1391   if( dWt >= 130 ) then StandardDailyWeightGain := 0.9 ;
1392   if( dWt >= 214 ) then StandardDailyWeightGain := 0.8 ;
1393   if( dWt >= 282 ) then StandardDailyWeightGain := 0.7 ;
1394   if( dWt >= 345 ) then StandardDailyWeightGain := 0.6 ;
1395   if( dWt >= 404 ) then StandardDailyWeightGain := 0.5 ;
1396   if( dWt >= 462 ) then StandardDailyWeightGain := 0.4 ;
1397   if( dWt >= 518 ) then StandardDailyWeightGain := 0.3 ;
1398   if( dWt >= 573 ) then StandardDailyWeightGain := 0.2 ;
1399   if( dWt >= 627 ) then StandardDailyWeightGain := 0.1 ;
1400   if( dWt >= 681 ) then StandardDailyWeightGain := 0.0 ;
1401
1402 end;
1403
1404 end.
1405