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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -35
app.py CHANGED
@@ -786,47 +786,47 @@ class NutrientCalculator:
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
@@ -834,7 +834,7 @@ def _apply(self, fert_name: str, main_element: str, required_ppm: float):
834
  'KNO3': kno3_weight / total,
835
  'CaNO3': cano3_weight / total,
836
  'K2SO4': k2so4_weight / total
837
- }
838
 
839
  def calculate(self) -> Dict[str, Any]:
840
  """Основной метод расчета с новой логикой"""
 
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
 
834
  'KNO3': kno3_weight / total,
835
  'CaNO3': cano3_weight / total,
836
  'K2SO4': k2so4_weight / total
837
+ }
838
 
839
  def calculate(self) -> Dict[str, Any]:
840
  """Основной метод расчета с новой логикой"""