DmitrMakeev commited on
Commit
83d7824
·
verified ·
1 Parent(s): bf9b840

Update calculate.html

Browse files
Files changed (1) hide show
  1. calculate.html +32 -19
calculate.html CHANGED
@@ -108,34 +108,47 @@
108
  }
109
 
110
  // Расчёт массы удобрений (г/1000 л)
111
- // 1. MgSO₄·7HO от Mg
 
 
 
 
112
  const mgso4 = mg / mgso4ContentMg;
113
  const sFromMgSO4 = mgso4 * mgso4ContentS;
114
 
115
- // 2. K₂SO₄ от остатка S
116
  const sRemaining = s - sFromMgSO4;
117
  const k2so4 = sRemaining > 0 ? sRemaining / k2so4ContentS : 0;
118
  const kFromK2SO4 = k2so4 * k2so4ContentK;
119
 
120
- // 3. KHPO₄ от P
121
- const kh2po4 = p / kh2po4ContentP;
122
- const kFromKH2PO4 = kh2po4 * kh2po4ContentK;
123
-
124
- // 4. KNO₃ от остатка K
125
- const kRemaining = k - kFromKH2PO4 - kFromK2SO4;
126
- const kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
127
- const nFromKNO3 = kno3 * kno3ContentN;
128
-
129
- // 5. Ca(NO₃)₂·4H₂O от Ca
130
  const caNO3FromCa = ca / caContentCa;
131
  const nFromCaNO3Min = caNO3FromCa * caContentN;
132
 
133
- // 6. Распределение остатка N между NH₄NO₃ и Ca(NO₃)₂
134
- const nRemaining = nitrogen - nFromKNO3 - nFromCaNO3Min;
135
- const nFromNH4NO3 = nRemaining * nRatio;
136
- const nFromCaNO3Extra = nRemaining * (1 - nRatio);
137
- const nh4no3 = nFromNH4NO3 > 0 ? nFromNH4NO3 / nh4no3ContentN : 0;
138
- const caNO3Extra = nFromCaNO3Extra > 0 ? nFromCaNO3Extra / caContentN : 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  const caNO3Total = caNO3FromCa + caNO3Extra;
140
 
141
  // Итоговые концентрации для проверки
@@ -154,7 +167,7 @@
154
  <p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
155
  <p>KNO₃: ${kno3.toFixed(2)} (N: ${nFromKNO3.toFixed(2)}, K: ${(kno3 * kno3ContentK).toFixed(2)})</p>
156
  <p>Ca(NO₃)₂·4H₂O: ${caNO3Total.toFixed(2)} (N: ${(caNO3Total * caContentN).toFixed(2)}, Ca: ${totalCa})</p>
157
- <p>NH₄NO₃: ${nh4no3.toFixed(2)} (N: ${(nh4no3 * nh4no3ContentN).toFixed(2)})</p>
158
  <h3>Итоговые концентрации (мг/л):</h3>
159
  <p>N: ${totalN}, P: ${totalP}, K: ${totalK}, Ca: ${totalCa}, Mg: ${totalMg}, S: ${totalS}</p>
160
  `;
 
108
  }
109
 
110
  // Расчёт массы удобрений (г/1000 л)
111
+ // 1. KHPO₄ от P
112
+ const kh2po4 = p / kh2po4ContentP;
113
+ const kFromKH2PO4 = kh2po4 * kh2po4ContentK;
114
+
115
+ // 2. MgSO₄·7H₂O от Mg
116
  const mgso4 = mg / mgso4ContentMg;
117
  const sFromMgSO4 = mgso4 * mgso4ContentS;
118
 
119
+ // 3. K₂SO₄ от остатка S
120
  const sRemaining = s - sFromMgSO4;
121
  const k2so4 = sRemaining > 0 ? sRemaining / k2so4ContentS : 0;
122
  const kFromK2SO4 = k2so4 * k2so4ContentK;
123
 
124
+ // 4. Ca(NO₃)₂·4HO от Ca
 
 
 
 
 
 
 
 
 
125
  const caNO3FromCa = ca / caContentCa;
126
  const nFromCaNO3Min = caNO3FromCa * caContentN;
127
 
128
+ // 5. NH₄NO₃ от заданного соотношения N
129
+ const nFromNH4NO3 = nitrogen * nRatio;
130
+ const nh4no3 = nFromNH4NO3 / nh4no3ContentN;
131
+
132
+ // 6. Остаток N после NH₄NO₃
133
+ const nRemainingAfterNH4NO3 = nitrogen - nFromNH4NO3 - nFromCaNO3Min;
134
+
135
+ // 7. KNO₃ от остатка K
136
+ const kRemaining = k - kFromKH2PO4 - kFromK2SO4;
137
+ let kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
138
+ let nFromKNO3 = kno3 * kno3ContentN;
139
+
140
+ // 8. Корректировка KNO₃ и Ca(NO₃)₂ для точного N
141
+ const nRemaining = nitrogen - nFromNH4NO3 - nFromCaNO3Min - nFromKNO3;
142
+ let caNO3Extra = 0;
143
+ if (nRemaining > 0) {
144
+ caNO3Extra = nRemaining / caContentN;
145
+ } else if (nRemaining < 0) {
146
+ // Уменьшаем KNO₃, чтобы N не превышал цель
147
+ const nExcess = -nRemaining;
148
+ const kno3Reduction = nExcess / kno3ContentN;
149
+ kno3 = Math.max(0, kno3 - kno3Reduction);
150
+ nFromKNO3 = kno3 * kno3ContentN;
151
+ }
152
  const caNO3Total = caNO3FromCa + caNO3Extra;
153
 
154
  // Итоговые концентрации для проверки
 
167
  <p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
168
  <p>KNO₃: ${kno3.toFixed(2)} (N: ${nFromKNO3.toFixed(2)}, K: ${(kno3 * kno3ContentK).toFixed(2)})</p>
169
  <p>Ca(NO₃)₂·4H₂O: ${caNO3Total.toFixed(2)} (N: ${(caNO3Total * caContentN).toFixed(2)}, Ca: ${totalCa})</p>
170
+ <p>NH₄NO₃: ${nh4no3.toFixed(2)} (N: ${nFromNH4NO3.toFixed(2)})</p>
171
  <h3>Итоговые концентрации (мг/л):</h3>
172
  <p>N: ${totalN}, P: ${totalP}, K: ${totalK}, Ca: ${totalCa}, Mg: ${totalMg}, S: ${totalS}</p>
173
  `;