DmitrMakeev commited on
Commit
8a8cb34
·
verified ·
1 Parent(s): d16658d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -1
app.py CHANGED
@@ -786,7 +786,47 @@ class NutrientCalculator:
786
  'N (NH4+)': 'NH4'
787
  }
788
  return labels.get(element, element)
789
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
  def set_compensation_weights(self, kno3_weight: float, cano3_weight: float, k2so4_weight: float):
791
  """Установка весов для компенсации элементов"""
792
  total = kno3_weight + cano3_weight + k2so4_weight
 
786
  'N (NH4+)': 'NH4'
787
  }
788
  return labels.get(element, element)
789
+ def _apply(self, fert_name: str, main_element: str, required_ppm: float):
790
+ """Применяет удобрение и обновляет профиль"""
791
+ if required_ppm <= 0:
792
+ return
793
+
794
+ try:
795
+ # Получаем содержание элемента в удобрении
796
+ content = self.fertilizers[fert_name][main_element]
797
+
798
+ # Рассчитываем граммы удобрения
799
+ grams = (required_ppm * self.volume) / (content * 1000)
800
+
801
+ # Инициализируем запись, если удобрение применяется впервые
802
+ if fert_name not in self.results:
803
+ self.results[fert_name] = {
804
+ 'граммы': 0.0,
805
+ 'миллиграммы': 0,
806
+ 'вклад в EC': 0.0
807
+ }
808
+ # Добавляем поля для каждого элемента в удобрении
809
+ for element in self.fertilizers[fert_name]:
810
+ self.results[fert_name][f'внесет {self._label(element)}'] = 0.0
811
+
812
+ # Обновляем результаты
813
+ self.results[fert_name]['граммы'] += grams
814
+ self.results[fert_name]['миллиграммы'] = int(grams * 1000)
815
+
816
+ # Рассчитываем вклад в EC и обновляем профиль
817
+ fert_ec = 0.0
818
+ for element, percent in self.fertilizers[fert_name].items():
819
+ added_ppm = (grams * percent * 1000) / self.volume
820
+ self.results[fert_name][f'внесет {self._label(element)}'] += added_ppm
821
+ self.actual_profile[element] += added_ppm
822
+ fert_ec += added_ppm * EC_COEFFICIENTS.get(element, 0.0015)
823
+
824
+ self.results[fert_name]['вклад в EC'] += fert_ec
825
+ self.total_ec += fert_ec
826
+
827
+ except KeyError as e:
828
+ print(f"Ошибка: отсутствует элемент {str(e)} в удобрении {fert_name}")
829
+ raise
830
  def set_compensation_weights(self, kno3_weight: float, cano3_weight: float, k2so4_weight: float):
831
  """Установка весов для компенсации элементов"""
832
  total = kno3_weight + cano3_weight + k2so4_weight