Update calculate.html
Browse files- calculate.html +37 -20
calculate.html
CHANGED
@@ -31,11 +31,16 @@
|
|
31 |
<label for="n_content_kno3">N в KNO₃:</label>
|
32 |
<input type="number" id="n_content_kno3" value="13.5" step="0.1"><br>
|
33 |
|
34 |
-
<label for="
|
35 |
-
<input type="number" id="
|
36 |
<label for="s_content_mgso4">S в MgSO₄·7H₂O:</label>
|
37 |
<input type="number" id="s_content_mgso4" value="13.5" step="0.1"><br>
|
38 |
|
|
|
|
|
|
|
|
|
|
|
39 |
<label for="k_content_k2so4">K в K₂SO₄:</label>
|
40 |
<input type="number" id="k_content_k2so4" value="41.5" step="0.1"><br>
|
41 |
<label for="s_content_k2so4">S в K₂SO₄:</label>
|
@@ -72,8 +77,10 @@
|
|
72 |
const kContentKH2PO4 = parseFloat(document.getElementById("k_content_kh2po4").value) / 100;
|
73 |
const kContentKNO3 = parseFloat(document.getElementById("k_content_kno3").value) / 100;
|
74 |
const nContentKNO3 = parseFloat(document.getElementById("n_content_kno3").value) / 100;
|
75 |
-
const
|
76 |
const sContentMgSO4 = parseFloat(document.getElementById("s_content_mgso4").value) / 100;
|
|
|
|
|
77 |
const kContentK2SO4 = parseFloat(document.getElementById("k_content_k2so4").value) / 100;
|
78 |
const sContentK2SO4 = parseFloat(document.getElementById("s_content_k2so4").value) / 100;
|
79 |
const nContentNH4NO3 = parseFloat(document.getElementById("n_content_nh4no3").value) / 100;
|
@@ -100,12 +107,24 @@
|
|
100 |
let kh2po4 = p / pContent;
|
101 |
let kFromKH2PO4 = kh2po4 * kContentKH2PO4;
|
102 |
|
103 |
-
// 3. MgSO₄·7H₂O
|
104 |
-
let mgso4 =
|
|
|
105 |
let sFromMgSO4 = mgso4 * sContentMgSO4;
|
106 |
|
107 |
-
|
108 |
-
let
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
let kno3FromN = nRemaining > 0 ? nRemaining / nContentKNO3 : 0;
|
110 |
let kFromKNO3FromN = kno3FromN * kContentKNO3;
|
111 |
|
@@ -113,35 +132,32 @@
|
|
113 |
let kno3FromK = kRemaining > 0 ? kRemaining / kContentKNO3 : 0;
|
114 |
let nFromKNO3FromK = kno3FromK * nContentKNO3;
|
115 |
|
116 |
-
// Выбираем меньший KNO₃, чтобы не превысить N или K
|
117 |
let kno3 = Math.min(kno3FromN, kno3FromK);
|
118 |
let nFromKNO3 = kno3 * nContentKNO3;
|
119 |
let kFromKNO3 = kno3 * kContentKNO3;
|
120 |
|
121 |
// 5. NH₄NO₃ для остатка N
|
122 |
-
nRemaining = n - nFromCaNO3 - nFromKNO3;
|
123 |
let nh4no3 = nRemaining > 0 ? nRemaining / nContentNH4NO3 : 0;
|
124 |
|
125 |
-
// 6. K₂SO₄ для остатка
|
126 |
-
kRemaining = k - kFromKH2PO4 - kFromKNO3;
|
127 |
-
let k2so4FromK = kRemaining > 0 ? kRemaining / kContentK2SO4 : 0;
|
128 |
-
let sFromK2SO4FromK = k2so4FromK * sContentK2SO4;
|
129 |
-
|
130 |
let sRemaining = s - sFromMgSO4;
|
131 |
let k2so4FromS = sRemaining > 0 ? sRemaining / sContentK2SO4 : 0;
|
132 |
let kFromK2SO4FromS = k2so4FromS * kContentK2SO4;
|
133 |
|
134 |
-
|
135 |
-
let
|
136 |
-
|
|
|
137 |
let sFromK2SO4 = k2so4 * sContentK2SO4;
|
|
|
138 |
|
139 |
// Итоговые концентрации
|
140 |
-
let totalN = (nFromCaNO3 + nFromKNO3 + nh4no3 * nContentNH4NO3).toFixed(2);
|
141 |
let totalP = (kh2po4 * pContent).toFixed(2);
|
142 |
let totalK = (kFromKH2PO4 + kFromKNO3 + kFromK2SO4).toFixed(2);
|
143 |
let totalCa = (caNO3 * caContentCa).toFixed(2);
|
144 |
-
let totalMg = (mgso4 *
|
145 |
let totalS = (sFromMgSO4 + sFromK2SO4).toFixed(2);
|
146 |
|
147 |
// Результаты
|
@@ -150,7 +166,8 @@
|
|
150 |
<p>Ca(NO₃)₂·4H₂O: ${caNO3.toFixed(2)} (Ca: ${totalCa}, N: ${nFromCaNO3.toFixed(2)})</p>
|
151 |
<p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
|
152 |
<p>KNO₃: ${kno3.toFixed(2)} (K: ${kFromKNO3.toFixed(2)}, N: ${nFromKNO3.toFixed(2)})</p>
|
153 |
-
<p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${
|
|
|
154 |
<p>K₂SO₄: ${k2so4.toFixed(2)} (S: ${sFromK2SO4.toFixed(2)}, K: ${kFromK2SO4.toFixed(2)})</p>
|
155 |
<p>NH₄NO₃: ${nh4no3.toFixed(2)} (N: ${(nh4no3 * nContentNH4NO3).toFixed(2)})</p>
|
156 |
<h3>Итоговые концентрации (мг/л):</h3>
|
|
|
31 |
<label for="n_content_kno3">N в KNO₃:</label>
|
32 |
<input type="number" id="n_content_kno3" value="13.5" step="0.1"><br>
|
33 |
|
34 |
+
<label for="mg_content_mgso4">Mg в MgSO₄·7H₂O:</label>
|
35 |
+
<input type="number" id="mg_content_mgso4" value="16" step="0.1"><br>
|
36 |
<label for="s_content_mgso4">S в MgSO₄·7H₂O:</label>
|
37 |
<input type="number" id="s_content_mgso4" value="13.5" step="0.1"><br>
|
38 |
|
39 |
+
<label for="mg_content_mgno3">Mg в Mg(NO₃)₂:</label>
|
40 |
+
<input type="number" id="mg_content_mgno3" value="9.8" step="0.1"><br>
|
41 |
+
<label for="n_content_mgno3">N в Mg(NO₃)₂:</label>
|
42 |
+
<input type="number" id="n_content_mgno3" value="11" step="0.1"><br>
|
43 |
+
|
44 |
<label for="k_content_k2so4">K в K₂SO₄:</label>
|
45 |
<input type="number" id="k_content_k2so4" value="41.5" step="0.1"><br>
|
46 |
<label for="s_content_k2so4">S в K₂SO₄:</label>
|
|
|
77 |
const kContentKH2PO4 = parseFloat(document.getElementById("k_content_kh2po4").value) / 100;
|
78 |
const kContentKNO3 = parseFloat(document.getElementById("k_content_kno3").value) / 100;
|
79 |
const nContentKNO3 = parseFloat(document.getElementById("n_content_kno3").value) / 100;
|
80 |
+
const mgContentMgSO4 = parseFloat(document.getElementById("mg_content_mgso4").value) / 100;
|
81 |
const sContentMgSO4 = parseFloat(document.getElementById("s_content_mgso4").value) / 100;
|
82 |
+
const mgContentMgNO3 = parseFloat(document.getElementById("mg_content_mgno3").value) / 100;
|
83 |
+
const nContentMgNO3 = parseFloat(document.getElementById("n_content_mgno3").value) / 100;
|
84 |
const kContentK2SO4 = parseFloat(document.getElementById("k_content_k2so4").value) / 100;
|
85 |
const sContentK2SO4 = parseFloat(document.getElementById("s_content_k2so4").value) / 100;
|
86 |
const nContentNH4NO3 = parseFloat(document.getElementById("n_content_nh4no3").value) / 100;
|
|
|
107 |
let kh2po4 = p / pContent;
|
108 |
let kFromKH2PO4 = kh2po4 * kContentKH2PO4;
|
109 |
|
110 |
+
// 3. MgSO₄·7H₂O и Mg(NO₃)₂ для Mg и S
|
111 |
+
let mgso4 = s / sContentMgSO4; // Сначала максимум S
|
112 |
+
let mgFromMgSO4 = mgso4 * mgContentMgSO4;
|
113 |
let sFromMgSO4 = mgso4 * sContentMgSO4;
|
114 |
|
115 |
+
let mgRemaining = mg - mgFromMgSO4;
|
116 |
+
let mgno3 = mgRemaining > 0 ? mgRemaining / mgContentMgNO3 : 0;
|
117 |
+
let nFromMgNO3 = mgno3 * nContentMgNO3;
|
118 |
+
|
119 |
+
if (mgFromMgSO4 > mg) {
|
120 |
+
mgso4 = mg / mgContentMgSO4;
|
121 |
+
sFromMgSO4 = mgso4 * sContentMgSO4;
|
122 |
+
mgno3 = 0;
|
123 |
+
nFromMgNO3 = 0;
|
124 |
+
}
|
125 |
+
|
126 |
+
// 4. KNO₃ для остатка N
|
127 |
+
let nRemaining = n - nFromCaNO3 - nFromMgNO3;
|
128 |
let kno3FromN = nRemaining > 0 ? nRemaining / nContentKNO3 : 0;
|
129 |
let kFromKNO3FromN = kno3FromN * kContentKNO3;
|
130 |
|
|
|
132 |
let kno3FromK = kRemaining > 0 ? kRemaining / kContentKNO3 : 0;
|
133 |
let nFromKNO3FromK = kno3FromK * nContentKNO3;
|
134 |
|
|
|
135 |
let kno3 = Math.min(kno3FromN, kno3FromK);
|
136 |
let nFromKNO3 = kno3 * nContentKNO3;
|
137 |
let kFromKNO3 = kno3 * kContentKNO3;
|
138 |
|
139 |
// 5. NH₄NO₃ для остатка N
|
140 |
+
nRemaining = n - nFromCaNO3 - nFromMgNO3 - nFromKNO3;
|
141 |
let nh4no3 = nRemaining > 0 ? nRemaining / nContentNH4NO3 : 0;
|
142 |
|
143 |
+
// 6. K₂SO₄ для остатка S и K
|
|
|
|
|
|
|
|
|
144 |
let sRemaining = s - sFromMgSO4;
|
145 |
let k2so4FromS = sRemaining > 0 ? sRemaining / sContentK2SO4 : 0;
|
146 |
let kFromK2SO4FromS = k2so4FromS * kContentK2SO4;
|
147 |
|
148 |
+
kRemaining = k - kFromKH2PO4 - kFromKNO3;
|
149 |
+
let k2so4FromK = kRemaining > 0 ? kRemaining / kContentK2SO4 : 0;
|
150 |
+
|
151 |
+
let k2so4 = Math.min(k2so4FromS, k2so4FromK);
|
152 |
let sFromK2SO4 = k2so4 * sContentK2SO4;
|
153 |
+
let kFromK2SO4 = k2so4 * kContentK2SO4;
|
154 |
|
155 |
// Итоговые концентрации
|
156 |
+
let totalN = (nFromCaNO3 + nFromKNO3 + nFromMgNO3 + nh4no3 * nContentNH4NO3).toFixed(2);
|
157 |
let totalP = (kh2po4 * pContent).toFixed(2);
|
158 |
let totalK = (kFromKH2PO4 + kFromKNO3 + kFromK2SO4).toFixed(2);
|
159 |
let totalCa = (caNO3 * caContentCa).toFixed(2);
|
160 |
+
let totalMg = (mgso4 * mgContentMgSO4 + mgno3 * mgContentMgNO3).toFixed(2);
|
161 |
let totalS = (sFromMgSO4 + sFromK2SO4).toFixed(2);
|
162 |
|
163 |
// Результаты
|
|
|
166 |
<p>Ca(NO₃)₂·4H₂O: ${caNO3.toFixed(2)} (Ca: ${totalCa}, N: ${nFromCaNO3.toFixed(2)})</p>
|
167 |
<p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
|
168 |
<p>KNO₃: ${kno3.toFixed(2)} (K: ${kFromKNO3.toFixed(2)}, N: ${nFromKNO3.toFixed(2)})</p>
|
169 |
+
<p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${(mgso4 * mgContentMgSO4).toFixed(2)}, S: ${sFromMgSO4.toFixed(2)})</p>
|
170 |
+
<p>Mg(NO₃)₂: ${mgno3.toFixed(2)} (Mg: ${(mgno3 * mgContentMgNO3).toFixed(2)}, N: ${nFromMgNO3.toFixed(2)})</p>
|
171 |
<p>K₂SO₄: ${k2so4.toFixed(2)} (S: ${sFromK2SO4.toFixed(2)}, K: ${kFromK2SO4.toFixed(2)})</p>
|
172 |
<p>NH₄NO₃: ${nh4no3.toFixed(2)} (N: ${(nh4no3 * nContentNH4NO3).toFixed(2)})</p>
|
173 |
<h3>Итоговые концентрации (мг/л):</h3>
|