DmitrMakeev commited on
Commit
73faeec
·
verified ·
1 Parent(s): 45b020d

Update calculate.html

Browse files
Files changed (1) hide show
  1. 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="mg_content">Mg в MgSO₄·7H₂O:</label>
35
- <input type="number" id="mg_content" 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="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 mgContent = parseFloat(document.getElementById("mg_content").value) / 100;
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 от Mg
104
- let mgso4 = mg / mgContent;
 
105
  let sFromMgSO4 = mgso4 * sContentMgSO4;
106
 
107
- // 4. KNO₃ от остатка N (приоритет N)
108
- let nRemaining = n - nFromCaNO3;
 
 
 
 
 
 
 
 
 
 
 
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₄ для остатка K и S
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
- // Выбираем меньший K₂SO₄, чтобы не превысить K
135
- let k2so4 = Math.min(k2so4FromK, k2so4FromS);
136
- let kFromK2SO4 = k2so4 * kContentK2SO4;
 
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 * mgContent).toFixed(2);
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: ${totalMg}, S: ${sFromMgSO4.toFixed(2)})</p>
 
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>