DmitrMakeev commited on
Commit
4d2841c
·
verified ·
1 Parent(s): d2a3e10

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -26
app.py CHANGED
@@ -744,54 +744,35 @@ class NutrientCalculator:
744
  def calculate(self):
745
  # Добавляем аммонийный азот
746
  self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
747
-
748
  # Добавляем фосфор
749
  self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
750
-
751
  # Добавляем магний через "Сульфат магния", если флаг включен
752
  if self.use_magnesium_sulfate == 1:
753
  mg_needed = self.target["Mg"] - self.actual["Mg"]
754
  if mg_needed > 0:
755
  self._apply_fertilizer("Сульфат магния", "Mg", mg_needed * (1 - self.magnesium_nitrate_ratio))
756
-
757
  # Балансируем калий и серу
758
  self._balance_k_s()
759
-
760
  # Добавляем оставшийся магний через "Магний азотнокислый", если коэффициент > 0
761
  if self.magnesium_nitrate_ratio > 0:
762
  mg_remaining = self.target["Mg"] - self.actual["Mg"]
763
  if mg_remaining > 0:
764
  self._apply_fertilizer("Магний азотнокислый", "Mg", mg_remaining)
765
-
766
  # Распределяем кальций
767
  self._distribute_calcium()
768
-
769
  # Балансируем нитратный азот
770
  no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
771
  if no3_needed > 0:
772
  self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
773
-
774
  return self._verify_results()
775
 
776
- def _balance_k_s(self):
777
- k_needed = self.target["K"] - self.actual["K"]
778
- s_needed = self.target["S"] - self.actual["S"]
779
-
780
- # Используем "Калий сернокислый" для баланса K и S
781
- if k_needed > 0 and s_needed > 0:
782
- k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
783
- s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
784
- if k_fraction == 0 or s_fraction == 0:
785
- print("ПРЕДУПРЕЖДЕНИЕ: Удобрение 'Калий сернокислый' содержит нулевые значения!")
786
- return
787
- k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
788
- self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
789
-
790
- # Оставшийся калий добавляем через "Калий азотнокислый"
791
- remaining_k = self.target["K"] - self.actual["K"]
792
- if remaining_k > 0:
793
- self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
794
-
795
  def _apply_fertilizer(self, name, element, target_ppm):
796
  if name not in self.fertilizers:
797
  raise KeyError(f"Удобрение '{name}' не найдено!")
@@ -809,6 +790,8 @@ def _balance_k_s(self):
809
  def _balance_k_s(self):
810
  k_needed = self.target["K"] - self.actual["K"]
811
  s_needed = self.target["S"] - self.actual["S"]
 
 
812
  if k_needed > 0 and s_needed > 0:
813
  k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
814
  s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
@@ -817,6 +800,8 @@ def _balance_k_s(self):
817
  return
818
  k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
819
  self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
 
 
820
  remaining_k = self.target["K"] - self.actual["K"]
821
  if remaining_k > 0:
822
  self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
@@ -858,6 +843,7 @@ def _balance_k_s(self):
858
  'total_ppm': round(sum(self.actual.values()), self.rounding_precision)
859
  }
860
 
 
861
  def generate_report(self, results):
862
  fert_table = []
863
  for name, data in results['fertilizers'].items():
 
744
  def calculate(self):
745
  # Добавляем аммонийный азот
746
  self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
747
+
748
  # Добавляем фосфор
749
  self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
750
+
751
  # Добавляем магний через "Сульфат магния", если флаг включен
752
  if self.use_magnesium_sulfate == 1:
753
  mg_needed = self.target["Mg"] - self.actual["Mg"]
754
  if mg_needed > 0:
755
  self._apply_fertilizer("Сульфат магния", "Mg", mg_needed * (1 - self.magnesium_nitrate_ratio))
756
+
757
  # Балансируем калий и серу
758
  self._balance_k_s()
759
+
760
  # Добавляем оставшийся магний через "Магний азотнокислый", если коэффициент > 0
761
  if self.magnesium_nitrate_ratio > 0:
762
  mg_remaining = self.target["Mg"] - self.actual["Mg"]
763
  if mg_remaining > 0:
764
  self._apply_fertilizer("Магний азотнокислый", "Mg", mg_remaining)
765
+
766
  # Распределяем кальций
767
  self._distribute_calcium()
768
+
769
  # Балансируем нитратный азот
770
  no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
771
  if no3_needed > 0:
772
  self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
773
+
774
  return self._verify_results()
775
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
776
  def _apply_fertilizer(self, name, element, target_ppm):
777
  if name not in self.fertilizers:
778
  raise KeyError(f"Удобрение '{name}' не найдено!")
 
790
  def _balance_k_s(self):
791
  k_needed = self.target["K"] - self.actual["K"]
792
  s_needed = self.target["S"] - self.actual["S"]
793
+
794
+ # Используем "Калий сернокислый" для баланса K и S
795
  if k_needed > 0 and s_needed > 0:
796
  k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
797
  s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
 
800
  return
801
  k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
802
  self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
803
+
804
+ # Оставшийся калий добавляем через "Калий азотнокислый"
805
  remaining_k = self.target["K"] - self.actual["K"]
806
  if remaining_k > 0:
807
  self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
 
843
  'total_ppm': round(sum(self.actual.values()), self.rounding_precision)
844
  }
845
 
846
+
847
  def generate_report(self, results):
848
  fert_table = []
849
  for name, data in results['fertilizers'].items():