DmitrMakeev commited on
Commit
f74215d
·
verified ·
1 Parent(s): 21a0cbc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -18
app.py CHANGED
@@ -703,7 +703,6 @@ def nutri_call():
703
 
704
 
705
 
706
-
707
 
708
  from tabulate import tabulate
709
 
@@ -745,28 +744,25 @@ class NutrientCalculator:
745
  self.results = {}
746
 
747
  def calculate(self):
748
- # 1. Вносим кальциевую селитру (Ca + NO3)
749
- self._apply_fertilizer("Кальциевая селитра", "Ca", self.target["Ca"])
750
-
751
- # 2. Вносим аммонийный азот
752
  self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
753
 
754
- # 3. Компенсируем NO3 калийной селитрой
755
- no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
756
- if no3_needed > 0:
757
- self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
758
-
759
- # 4. Вносим фосфор
760
  self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
761
 
762
- # 5. Вносим магний
763
  self._apply_fertilizer("Сульфат магния", "Mg", self.target["Mg"])
764
 
765
- # 6. Балансируем калий и серу
766
  self._balance_k_s()
767
 
768
- # 7. Заменяем часть кальция из селитры на кальций из CaCl2
769
- self._replace_calcium_with_calcium_chloride()
 
 
 
 
 
770
 
771
  return self._verify_results()
772
 
@@ -795,9 +791,9 @@ class NutrientCalculator:
795
  if remaining_k > 0:
796
  self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
797
 
798
- def _replace_calcium_with_calcium_chloride(self):
799
- """Заменяем часть кальция из селитры на кальций из CaCl2"""
800
- if self.profile["NO3_RAT"] < 8: # Если соотношение NO3:NH4 ниже порога
801
  # Считаем, сколько кальция нужно заменить
802
  ca_to_replace = max(0, self.actual["Ca"] - self.target["Ca"])
803
 
@@ -806,6 +802,9 @@ class NutrientCalculator:
806
 
807
  # Добавляем кальций из CaCl2
808
  self._apply_fertilizer("Кальций хлорид", "Ca", ca_to_replace)
 
 
 
809
 
810
  def _verify_results(self):
811
  deficits = {}
 
703
 
704
 
705
 
 
706
 
707
  from tabulate import tabulate
708
 
 
744
  self.results = {}
745
 
746
  def calculate(self):
747
+ # 1. Вносим аммонийный азот
 
 
 
748
  self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
749
 
750
+ # 2. Вносим фосфор
 
 
 
 
 
751
  self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
752
 
753
+ # 3. Вносим магний
754
  self._apply_fertilizer("Сульфат магния", "Mg", self.target["Mg"])
755
 
756
+ # 4. Балансируем калий и серу
757
  self._balance_k_s()
758
 
759
+ # 5. Распределяем кальций между селитрой и хлоридом
760
+ self._distribute_calcium()
761
+
762
+ # 6. Компенсируем NO3 калийной селитрой
763
+ no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
764
+ if no3_needed > 0:
765
+ self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
766
 
767
  return self._verify_results()
768
 
 
791
  if remaining_k > 0:
792
  self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
793
 
794
+ def _distribute_calcium(self):
795
+ """Распределение кальция между селитрой и хлоридом"""
796
+ if self.profile["NO3_RAT"] <= 2: # При соотношении NO3:NH4 <= 2
797
  # Считаем, сколько кальция нужно заменить
798
  ca_to_replace = max(0, self.actual["Ca"] - self.target["Ca"])
799
 
 
802
 
803
  # Добавляем кальций из CaCl2
804
  self._apply_fertilizer("Кальций хлорид", "Ca", ca_to_replace)
805
+ else:
806
+ # Иначе используем только кальциевую селитру
807
+ self._apply_fertilizer("Кальциевая селитра", "Ca", self.target["Ca"])
808
 
809
  def _verify_results(self):
810
  deficits = {}