DmitrMakeev commited on
Commit
96d01e1
·
verified ·
1 Parent(s): 1c9024f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -725,7 +725,8 @@ NUTRIENT_CONTENT_IN_FERTILIZERS = {
725
  "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
726
  "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
727
  "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
728
- "Монофосфат калия": {"P": 0.218, "K": 0.275}
 
729
  }
730
 
731
  class NutrientCalculator:
@@ -756,33 +757,37 @@ class NutrientCalculator:
756
 
757
  def calculate(self):
758
  try:
759
- # 1. Вносим основные элементы
 
 
 
 
 
 
 
 
 
 
760
  self._apply("Сульфат магния", "Mg", self.target_profile['Mg'])
761
- self._apply("Кальциевая селитра", "Ca", self.target_profile['Ca'])
762
  self._apply("Монофосфат калия", "P", self.target_profile['P'])
763
  self._apply("Аммоний азотнокислый", "N (NH4+)", self.target_profile['N (NH4+)'])
764
 
765
- # 2. Компенсируем NO3
766
  current_no3 = self.actual_profile['N (NO3-)']
767
  no3_needed = self.target_profile['N (NO3-)'] - current_no3
768
 
769
  if no3_needed > 0.1:
770
- # Ограничиваем внесение NO3, чтобы не превысить общее количество азота
771
- max_nitrogen = self.target_profile['N (NO3-)'] + self.target_profile['N (NH4+)']
772
- actual_nitrogen = self.actual_profile['N (NO3-)'] + self.actual_profile['N (NH4+)']
773
- if actual_nitrogen + no3_needed > max_nitrogen:
774
- no3_needed = max_nitrogen - actual_nitrogen
775
  self._apply("Калий азотнокислый", "N (NO3-)", no3_needed)
776
 
777
- # 3. Компенсируем K и S через сульфат калия
778
  self._apply_k_sulfate()
779
 
780
- # 4. Дополнительная компенсация K, если необходимо
781
  k_deficit = self.target_profile['K'] - self.actual_profile['K']
782
  if k_deficit > 0.1:
783
  self._apply("Калий азотнокислый", "K", k_deficit)
784
 
785
- # 5. Проверяем соотношение NH4:NO3
786
  self._adjust_nh4_no3_ratio()
787
 
788
  return self.results
 
725
  "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
726
  "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
727
  "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
728
+ "Монофосфат калия": {"P": 0.218, "K": 0.275},
729
+ "Сульфат кальция": {"Ca": 0.23, "S": 0.186} # Новый элемент
730
  }
731
 
732
  class NutrientCalculator:
 
757
 
758
  def calculate(self):
759
  try:
760
+ # 1. Вносим сульфат кальция для Ca
761
+ ca_needed = self.target_profile['Ca'] - self.actual_profile['Ca']
762
+ if ca_needed > 0.1:
763
+ self._apply("Сульфат кальция", "Ca", ca_needed)
764
+
765
+ # 2. Вносим кальциевую селитру для Ca и NO3
766
+ ca_needed_after_sulfate = self.target_profile['Ca'] - self.actual_profile['Ca']
767
+ if ca_needed_after_sulfate > 0.1:
768
+ self._apply("Кальциевая селитра", "Ca", ca_needed_after_sulfate)
769
+
770
+ # 3. Вносим остальные элементы
771
  self._apply("Сульфат магния", "Mg", self.target_profile['Mg'])
 
772
  self._apply("Монофосфат калия", "P", self.target_profile['P'])
773
  self._apply("Аммоний азотнокислый", "N (NH4+)", self.target_profile['N (NH4+)'])
774
 
775
+ # 4. Компенсируем NO3
776
  current_no3 = self.actual_profile['N (NO3-)']
777
  no3_needed = self.target_profile['N (NO3-)'] - current_no3
778
 
779
  if no3_needed > 0.1:
 
 
 
 
 
780
  self._apply("Калий азотнокислый", "N (NO3-)", no3_needed)
781
 
782
+ # 5. Компенсируем K и S через сульфат калия
783
  self._apply_k_sulfate()
784
 
785
+ # 6. Дополнительная компенсация K, если необходимо
786
  k_deficit = self.target_profile['K'] - self.actual_profile['K']
787
  if k_deficit > 0.1:
788
  self._apply("Калий азотнокислый", "K", k_deficit)
789
 
790
+ # 7. Проверяем соотношение NH4:NO3
791
  self._adjust_nh4_no3_ratio()
792
 
793
  return self.results