Allen, R.G., Pereira, L.S., Raes, D. & Smith, M. (1998). Crop evapotranspiration: guidelines for computing crop water requirements. FAO Irrigation and Drainage Paper 56. FAO, Rome. fao.org/4/x0490e. ETo (Eq. 6), Kc ਸੁਧਾਰ (Eq. 62/65), TAW/RAW (Eq. 82/83) ਅਤੇ ਟੇਬਲ 19/22 ਲਈ ਸਰੋਤ।
Penman, H.L. (1948). Natural evaporation from open water, bare soil and grass. Proceedings of the Royal Society A, 193, 120-145. doi:10.1098/rspa.1948.0037
Monteith, J.L. (1965). Evaporation and environment. Symposia of the Society for Experimental Biology, 19, 205-234.
Makkink, G.F. (1957). Testing the Penman formula by means of lysimeters. Journal of the Institution of Water Engineers, 11, 277-288.
De Bruin, H.A.R. (1987). From Penman to Makkink. In: Hooghart, J.C. (ed.), Evaporation and Weather, CHO-TNO Proceedings 39, 5-31. KNMI ਸਥਿਰਾਂਕ c = 0.65 ਪੇਸ਼ ਕਰਦਾ ਹੈ।
Hooghart, J.C. & Lablans, W.N. (eds.) (1988). Van Penman naar Makkink; een nieuwe berekeningswijze voor de klimatologische verdampingsgetallen. CHO-TNO Rapporten en Nota’s 19 (also KNMI TR-111), The Hague.
Maas, E.V. & Hoffman, G.J. (1977). Crop salt tolerance: current assessment. Journal of the Irrigation and Drainage Division (ASCE), 103(IR2), 115-134. doi:10.1061/JRCEA4.0001137
McMaster, G.S. & Wilhelm, W.W. (1997). Growing degree-days: one equation, two interpretations. Agricultural and Forest Meteorology, 87(4), 291-300. doi:10.1016/S0168-1923(97)00027-0
Meier, U. (ed.) (2001). Growth stages of mono- and dicotyledonous plants. BBCH Monograph, 2nd edition. Federal Biological Research Centre for Agriculture and Forestry (BBA), Germany. Open access (2018): doi:10.5073/20180906-074619
Steduto, P., Hsiao, T.C., Raes, D. & Fereres, E. (2009). AquaCrop, the FAO crop model to simulate yield response to water: I. Concepts and underlying principles. Agronomy Journal, 101(3), 426-437. doi:10.2134/agronj2008.0139s
Allen, R.G. & Pereira, L.S. (2009). Estimating crop coefficients from fraction of ground cover and height. Irrigation Science, 28(1), 17-34. doi:10.1007/s00271-009-0182-z
Stanghellini, C. (1987). Transpiration of greenhouse crops: an aid to climate management. PhD thesis, Wageningen Agricultural University. doi:10.18174/202121
Katsoulas, N. & Stanghellini, C. (2019). Modelling crop transpiration in greenhouses: different models for different applications. Agronomy, 9(7), 392. doi:10.3390/agronomy9070392
Ayers, R.S. & Westcot, D.W. (1985). Water quality for agriculture. FAO Irrigation and Drainage Paper 29 Rev.1, Rome. Maas ਅਤੇ Hoffman ਦੀ ਖਾਰਾਪਣ ਸਹਿਣਸ਼ੀਲਤਾ ਟੇਬਲ ਦੁਹਰਾਉਂਦਾ ਹੈ।
‘;
}
g.innerHTML=h;
}
function fgPopulateCrops(sel){
var s=document.getElementById(‘fgCrop’); var h=”;
for(var k in FG_CROPS){ h+=’‘; }
s.innerHTML=h;
}
function fgPickType(key){
var t=null; for(var i=0;ihi){ return hi; } return v; }
function fgVal(id){ var e=document.getElementById(id); return e?e.value:”; }
function fgApplyDefaults(crop, gh){
if(!crop){ return; }
document.getElementById(‘fgZr’).value = crop.zr;
document.getElementById(‘fgP’).value = crop.p;
document.getElementById(‘fgH’).value = crop.h;
document.getElementById(‘fgU2’).value = gh ? 1 : 2;
document.getElementById(‘fgRH’).value = gh ? 70 : 45;
}
function fgCropChanged(){
var t=fgState.type; var gh = fgVal(‘fgGh’)===’1′;
fgApplyDefaults(FG_CROPS[fgVal(‘fgCrop’)], gh);
fgCalc();
}
function fgSyncEa(){
var ea=FG_EA[fgVal(‘fgIrr’)]; if(ea){ document.getElementById(‘fgEa’).value=ea; }
fgCalc();
}
function fgBack(){
document.getElementById(‘fgStep2′).style.display=’none’;
document.getElementById(‘fgStep1′).style.display=’block’;
document.getElementById(‘fgModalSub’).textContent=’Choose your type of crop’;
}
function fgMode(m){
fgState.mode=m;
document.getElementById(‘fgSimpleBtn’).className = m===’simple’?’on’:”;
document.getElementById(‘fgAdvBtn’).className = m===’advanced’?’on’:”;
document.getElementById(‘fgAdvBlock’).className = m===’advanced’?’fg-adv show’:’fg-adv’;
fgCalc();
}
function fgKcFor(crop,stageIdx){
var kc=crop.kc; /* [ini,mid,end] */
if(stageIdx===0) return kc[0];
if(stageIdx===1) return (kc[0]+kc[1])/2; /* vegetatief: oplopend */
if(stageIdx===2) return kc[1];
return kc[2];
}
/* ===== CALCULATE ===== */
function fgCalc(){
var t=fgState.type; if(!t){ return; }
var adv = fgState.mode===’advanced’;
var area=parseFloat(fgVal(‘fgArea’))||0;
var crop=FG_CROPS[fgVal(‘fgCrop’)];
var stage=parseInt(fgVal(‘fgStage’),10);
var season=fgVal(‘fgSeason’);
var gh = fgVal(‘fgGh’)===’1′;
var soil=FG_SOIL[fgVal(‘fgSoil’)]||FG_SOIL.loam;
/* referentieverdamping ETo */
var manual=false; if(adv){ if(fgVal(‘fgEtoSrc’)===’manual’){ manual=true; } }
var emw=document.getElementById(‘fgEtoManWrap’); if(emw){ emw.style.display = manual?’block’:’none’; }
var etoBase = manual ? (parseFloat(fgVal(‘fgEtoMan’))||0) : FG_ETO[season];
var ghReduct = gh?FG_GH_REDUCT:1;
var eto = etoBase*ghReduct;
/* Kc en klimaatcorrectie (FAO-56 Eq.62/65) */
var kcTab=fgKcFor(crop,stage);
var kcAdj=kcTab;
var h=crop.h, u2=2, rh=45;
if(adv){
h=fgClamp(fgVal(‘fgH’),0.1,10); u2=fgClamp(fgVal(‘fgU2’),1,6); rh=fgClamp(fgVal(‘fgRH’),20,80);
var doAdj=false;
if(stage===2){ if(kcTab>=0.45){ doAdj=true; } }
if(stage===3){ if(kcTab>=0.45){ doAdj=true; } }
if(doAdj){ kcAdj = kcTab + (0.04*(u2-2) – 0.004*(rh-45))*Math.pow(h/3,0.3); if(kcAdj<0.1){ kcAdj=0.1; } }
}
var rain=0; if(adv){ if(!gh){ rain=parseFloat(fgVal('fgRain'))||0; } }
var ea = adv ? (fgClamp(fgVal('fgEa'),40,98)/100) : (gh?0.95:0.90);
/* ETc en liters/dag */
var etc, lpd;
if(adv){
etc = eto*kcAdj - rain; if(etc<0){ etc=0; }
lpd = etc*area/ea;
} else if(gh){
var base=crop.ghRate*FG_GHMULT[season];
var stageMul=[0.45,0.8,1.0,0.7][stage];
etc=base*stageMul; lpd=etc*area/0.95;
} else {
etc = Math.max(0, FG_ETO[season]*kcTab); lpd=etc*area/0.90;
}
var lpw=lpd*7;
/* bodemwaterbalans / gietinterval */
var freq, perGift, tawmm=0, rawmm=0, pAdj=0, netmm=0, grossmm=0;
if(adv){
var zr=fgClamp(fgVal('fgZr'),0.1,2); var pBase=fgClamp(fgVal('fgP'),0.1,0.8);
pAdj = pBase + 0.04*(5-etc); if(pAdj<0.1){ pAdj=0.1; } if(pAdj>0.8){ pAdj=0.8; }
tawmm = 1000*(soil.fc-soil.wp)*zr;
rawmm = pAdj*tawmm;
netmm = rawmm; grossmm = rawmm/ea;
freq = etc>0 ? Math.max(1, Math.round(rawmm/etc)) : 7;
perGift = grossmm*area;
} else {
var buf = gh?8:soil.buffer;
freq = etc>0 ? Math.max(1, Math.round(buf/etc)) : 7;
perGift = lpd*freq;
}
var tank = Math.ceil(Math.max(lpw, perGift)/10)*10;
/* GDD (McMaster & Wilhelm) */
var gdd=0;
if(adv){
var tx=parseFloat(fgVal(‘fgTmax’)); var tn=parseFloat(fgVal(‘fgTmin’));
if(isNaN(tx)){ tx=20; } if(isNaN(tn)){ tn=10; } if(tx>30){ tx=30; }
var tm=(tx+tn)/2; gdd = tm>crop.tbase ? (tm-crop.tbase) : 0;
}
/* verzilting (Maas & Hoffman) */
var saltRed=0, ece=0;
if(adv){ ece=parseFloat(fgVal(‘fgECe’))||0; if(ece>crop.salt.a){ saltRed=crop.salt.b*(ece-crop.salt.a); if(saltRed>100){ saltRed=100; } } }
/* aanbevolen Zigbee-set */
var zones=Math.max(1, Math.ceil(area/t.zone));
var soilSensors=Math.max(1, Math.ceil(zones*(adv?1:0.7)));
var rec=[‘1x Zigbee gateway (e.g. Woox R7070)’, zones+’x smart tap / valve (e.g. Woox R7060)’, soilSensors+’x soil moisture sensor’];
if(gh){ rec.push(‘1x temperature and humidity sensor for the greenhouse climate’); }
if(t.key===’rozenkwekerij’){ rec.push(‘1x smart plug for the pump + 1x water leak sensor’); }
if(t.key===’groentekas’){ rec.push(‘1x smart plug for the pump + 1x water leak sensor’); }
var tips=[
‘During germination you water little but often. Keep the top layer moist, but do not let the plant sit in water.’,
‘During leaf growth the need rises. Give gradually more water as the leaves grow.’,
‘This is the thirstiest stage. A lack of water during flowering and fruit set costs the most yield, so keep the level stable.’,
‘During ripening you may scale back. Too much water now actually harms quality (cracking, taste, rot).’
];
/* hints in geavanceerde velden */
if(adv){
fgSetHtml(‘fgSoilHint’,’θFC = ‘+soil.fc.toFixed(2)+’, θWP = ‘+soil.wp.toFixed(2)+’ m³/m³ (FAO-56 Table 19).’);
fgSetHtml(‘fgZrHint’,’Zr and p are pre-filled from FAO-56 Table 22’+(crop.est?’; for this crop type a reasoned estimate (not as such in FAO-56)’:”)+’. p after ET correction: ‘+pAdj.toFixed(2)+’.’);
fgSetHtml(‘fgSaltHint’, ece>crop.salt.a ? (‘Threshold a = ‘+crop.salt.a+’ dS/m, slope b = ‘+crop.salt.b+’ %/dS/m’+(crop.est?’ (indicative)’:”)+’.’) : (‘Threshold a = ‘+crop.salt.a+’ dS/m: below that value no yield loss.’));
fgSetHtml(‘fgTbaseHint’,’Base temperature Tbase = ‘+crop.tbase+’ °C for this crop. Tmax is capped at 30 °C.’);
}
/* resultaat opbouwen */
var html=”;
html+=’
Water need
‘;
html+=’
‘+fgFmt(lpd)+’ litres / day
‘;
html+=’
About ‘+fgFmt(lpw)+’ litres per week for ‘+fgFmt(area,0)+’ m².
‘;
html+=’
Watering frequencyabout every ‘+freq+’ ‘+(freq===1?’day’:’days’)+’
Figures are guide values from climatological averages, not a measurement of your plot. ‘+(crop.est?’For this crop, Zr, p and salt tolerance are estimates (not exact in FAO-56). ‘:”)+’See the sources.
‘;
html+=’
‘;
}
document.getElementById(‘fgRes’).innerHTML=html;
}
function fgSetHtml(id,s){ var e=document.getElementById(id); if(e){ e.innerHTML=s; } }
function fgRow(label,val,refs){ return ‘
‘+label+’‘+val+’ [‘+refs+’]
‘; }
function fgFmt(n,dec){
if(dec===undefined) dec = n>=10?0:1;
var neg=n<0; n=Math.abs(Number(n));
var v=n.toFixed(dec);
var parts=v.split('.');
parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,'.');
var out = parts.length>1 ? parts[0]+’,’+parts[1] : parts[0];
return (neg?’-‘:”)+out;
}
/* ===== OPEN / CLOSE ===== */
function fgOpenTB(){
var ov=document.getElementById(‘fgOv’); ov.classList.add(‘open’);
document.body.style.overflow=’hidden’;
if(!fgState.type){ document.getElementById(‘fgStep1′).style.display=’block’; document.getElementById(‘fgStep2′).style.display=’none’; }
}
function fgCloseTB(){
document.getElementById(‘fgOv’).classList.remove(‘open’);
document.body.style.overflow=”;
}
document.addEventListener(‘keydown’,function(e){ if(e.key===’Escape’) fgCloseTB(); });
document.getElementById(‘fgOv’).addEventListener(‘click’,function(e){ if(e.target===this) fgCloseTB(); });
/* ===== GROWTH PHASE EXPLORER ===== */
var FG_PHASES=[
{pn:’Stage 1′, simple:’Germination’, fao:’Initial’, bbch:’BBCH 0 to 1′, kc:’Kc ≈ 0.3 to 0.5′, water:18,
desc:’The seed awakens and forms its first little root and leaves. The plant is still small and uses very little water, about a tenth of what it needs over its whole life.’,
todo:’Water little but often. Keep the top layer moist and provide warmth.’},
{pn:’Stage 2′, simple:’Leaf growth’, fao:’Development’, bbch:’BBCH 1 to 4′, kc:’Kc rising’, water:55,
desc:’The plant builds leaf, stem and roots. The canopy fills out and the water need rises with it, because the more leaf, the more transpiration.’,
todo:’Gradually more water. This is the moment to fine-tune your drip system.’},
{pn:’Stage 3′, simple:’Flowering & full growth’, fao:’Mid-season’, bbch:’BBCH 5 to 7′, kc:’Kc ≈ 0.9 to 1.2 (peak)’, water:100,
desc:’The plant is in full bloom and setting fruit. Now it is at its largest and thirstiest. The daily need can rise to three times the start.’,
todo:’Keep the water level stable. Stress in this stage costs the most yield, so this is exactly when sensors pay off.’},
{pn:’Stage 4′, simple:’Ripening’, fao:’Late-season’, bbch:’BBCH 8 to 9′, kc:’Kc ≈ 0.25 to 0.6′, water:40,
desc:’The fruit or flower ripens and the leaf ages. The water need falls again. Many growers deliberately scale back the water for better quality.’,
todo:’Less water. Too wet now gives cracking, loss of taste or rot.’}
];
var fgPhSel=2, fgPhMd=’simple’;
function fgRenderPhases(){
var s=document.getElementById(‘phStrip’); var h=”;
for(var i=0;i‘;
h+=’
‘;
}
s.innerHTML=h;
fgRenderPhDetail();
}
function fgPhPick(i){ fgPhSel=i; fgRenderPhases(); }
function fgRenderPhDetail(){
var p=FG_PHASES[fgPhSel]; var d=document.getElementById(‘phDetail’);
var h=’