DmitrMakeev commited on
Commit
8d6fcca
·
verified ·
1 Parent(s): 5a49b9e

Update calculate.html

Browse files
Files changed (1) hide show
  1. calculate.html +19 -29
calculate.html CHANGED
@@ -117,54 +117,44 @@ function calculate() {
117
  let nFromNH4NO3 = nitrogen * nRatio;
118
  let nh4no3 = nFromNH4NO3 / nh4no3ContentN;
119
 
120
- let mgso4 = s / mgso4ContentS;
121
- let mgFromMgSO4 = mgso4 * mgso4ContentMg;
122
  let sFromMgSO4 = mgso4 * mgso4ContentS;
123
 
124
- let sRemaining = s - sFromMgSO4;
125
- let k2so4 = sRemaining > 0 ? sRemaining / k2so4ContentS : 0;
126
- let kFromK2SO4 = k2so4 * k2so4ContentK;
127
-
128
- let kRemaining = k - kFromKH2PO4 - kFromK2SO4;
129
  let kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
130
  let nFromKNO3 = kno3 * kno3ContentN;
131
 
132
  let totalN = nFromCaNO3Min + nFromNH4NO3 + nFromKNO3;
133
  let nDelta = nitrogen - totalN;
134
- let caNO3Extra = 0;
135
- if (nDelta > 0) {
136
- caNO3Extra = nDelta / caContentN;
137
- } else if (nDelta < 0) {
138
- let nExcess = -nDelta;
139
- let kno3Reduction = nExcess / kno3ContentN;
140
- kno3 = Math.max(0, kno3 - kno3Reduction);
141
- nFromKNO3 = kno3 * kno3ContentN;
142
- nExcess = nitrogen - (nFromNH4NO3 + nFromKNO3 + nFromCaNO3Min);
143
- if (nExcess > 0) {
144
- caNO3Extra = nExcess / caContentN;
145
- }
146
- }
147
  let caNO3Total = caNO3FromCa + caNO3Extra;
148
 
149
- let totalMg = mgso4 * mgso4ContentMg;
150
- let mgDelta = mg - totalMg;
151
- if (mgDelta > 0) {
152
- mgso4 += mgDelta / mgso4ContentMg;
153
- sFromMgSO4 = mgso4 * mgso4ContentS;
 
 
 
 
 
 
 
154
  }
155
 
156
  totalN = (caNO3Total * caContentN + nh4no3 * nh4no3ContentN + kno3 * kno3ContentN).toFixed(2);
157
  let totalP = (kh2po4 * kh2po4ContentP).toFixed(2);
158
- let totalK = (kh2po4 * kh2po4ContentK + kno3 * kno3ContentK + k2so4 * k2so4ContentK).toFixed(2);
159
  let totalCa = (caNO3Total * caContentCa).toFixed(2);
160
- totalMg = (mgso4 * mgso4ContentMg).toFixed(2);
161
- let totalS = (mgso4 * mgso4ContentS + k2so4 * k2so4ContentS).toFixed(2);
162
 
163
  // Отображение результатов
164
  const result = `
165
  <h3>Результат расчёта (г/1000 л):</h3>
166
  <p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${totalMg}, S: ${sFromMgSO4.toFixed(2)})</p>
167
- <p>K₂SO₄: ${k2so4.toFixed(2)} (K: ${kFromK2SO4.toFixed(2)}, S: ${(k2so4 * k2so4ContentS).toFixed(2)})</p>
168
  <p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
169
  <p>KNO₃: ${kno3.toFixed(2)} (N: ${nFromKNO3.toFixed(2)}, K: ${(kno3 * kno3ContentK).toFixed(2)})</p>
170
  <p>Ca(NO₃)₂·4H₂O: ${caNO3Total.toFixed(2)} (N: ${(caNO3Total * caContentN).toFixed(2)}, Ca: ${totalCa})</p>
 
117
  let nFromNH4NO3 = nitrogen * nRatio;
118
  let nh4no3 = nFromNH4NO3 / nh4no3ContentN;
119
 
120
+ let mgso4 = mg / mgso4ContentMg;
 
121
  let sFromMgSO4 = mgso4 * mgso4ContentS;
122
 
123
+ let kRemaining = k - kFromKH2PO4;
 
 
 
 
124
  let kno3 = kRemaining > 0 ? kRemaining / kno3ContentK : 0;
125
  let nFromKNO3 = kno3 * kno3ContentN;
126
 
127
  let totalN = nFromCaNO3Min + nFromNH4NO3 + nFromKNO3;
128
  let nDelta = nitrogen - totalN;
129
+ let caNO3Extra = nDelta > 0 ? nDelta / caContentN : 0;
 
 
 
 
 
 
 
 
 
 
 
 
130
  let caNO3Total = caNO3FromCa + caNO3Extra;
131
 
132
+ let totalS = sFromMgSO4;
133
+ let sRemaining = s - totalS;
134
+ let k2so4 = sRemaining > 0 ? sRemaining / k2so4ContentS : 0;
135
+ let kFromK2SO4 = k2so4 * k2so4ContentK;
136
+
137
+ // Проверка, не превышает ли K₂SO₄ допустимое количество калия
138
+ let totalK = kFromKH2PO4 + kFromK2SO4 + kno3 * kno3ContentK;
139
+ if (totalK > k) {
140
+ let excessK = totalK - k;
141
+ let k2so4Reduction = excessK / k2so4ContentK;
142
+ k2so4 = Math.max(0, k2so4 - k2so4Reduction);
143
+ totalK = kFromKH2PO4 + (k2so4 * k2so4ContentK) + kno3 * kno3ContentK;
144
  }
145
 
146
  totalN = (caNO3Total * caContentN + nh4no3 * nh4no3ContentN + kno3 * kno3ContentN).toFixed(2);
147
  let totalP = (kh2po4 * kh2po4ContentP).toFixed(2);
148
+ totalK = totalK.toFixed(2);
149
  let totalCa = (caNO3Total * caContentCa).toFixed(2);
150
+ let totalMg = (mgso4 * mgso4ContentMg).toFixed(2);
151
+ totalS = ((mgso4 * mgso4ContentS) + (k2so4 * k2so4ContentS)).toFixed(2);
152
 
153
  // Отображение результатов
154
  const result = `
155
  <h3>Результат расчёта (г/1000 л):</h3>
156
  <p>MgSO₄·7H₂O: ${mgso4.toFixed(2)} (Mg: ${totalMg}, S: ${sFromMgSO4.toFixed(2)})</p>
157
+ <p>K₂SO₄: ${k2so4.toFixed(2)} (K: ${(k2so4 * k2so4ContentK).toFixed(2)}, S: ${(k2so4 * k2so4ContentS).toFixed(2)})</p>
158
  <p>KH₂PO₄: ${kh2po4.toFixed(2)} (P: ${totalP}, K: ${kFromKH2PO4.toFixed(2)})</p>
159
  <p>KNO₃: ${kno3.toFixed(2)} (N: ${nFromKNO3.toFixed(2)}, K: ${(kno3 * kno3ContentK).toFixed(2)})</p>
160
  <p>Ca(NO₃)₂·4H₂O: ${caNO3Total.toFixed(2)} (N: ${(caNO3Total * caContentN).toFixed(2)}, Ca: ${totalCa})</p>