Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|