Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -748,36 +748,36 @@ class HydroCalculator:
|
|
748 |
|
749 |
def calculate_ec_exact(self):
|
750 |
"""Точный расчёт EC по молярной проводимости"""
|
751 |
-
# Молярные массы (г/моль)
|
752 |
MOLAR_MASSES = {
|
753 |
'NO3-': 62.0,
|
754 |
'NH4+': 18.0,
|
755 |
-
'K': 39.1,
|
756 |
-
'Ca': 40.1,
|
757 |
-
'Mg': 24.3,
|
758 |
-
'SO4
|
759 |
'H2PO4-': 97.0,
|
760 |
}
|
761 |
|
762 |
-
# Молярная проводимость (
|
763 |
ION_CONDUCTIVITY = {
|
764 |
'NO3-': 71.4,
|
765 |
'NH4+': 73.5,
|
766 |
-
'K': 73.5,
|
767 |
-
'Ca': 119.0,
|
768 |
-
'Mg': 106.0,
|
769 |
-
'SO4
|
770 |
'H2PO4-': 33.0,
|
771 |
}
|
772 |
|
773 |
-
# Соответствие
|
774 |
ELEMENT_TO_ION = {
|
775 |
'N (NO3-)': 'NO3-',
|
776 |
'N (NH4+)': 'NH4+',
|
777 |
-
'K': 'K',
|
778 |
-
'Ca': 'Ca',
|
779 |
-
'Mg': 'Mg',
|
780 |
-
'S': 'SO4
|
781 |
'P': 'H2PO4-',
|
782 |
}
|
783 |
|
@@ -787,10 +787,13 @@ class HydroCalculator:
|
|
787 |
for element, value in ppm.items():
|
788 |
if element in ELEMENT_TO_ION:
|
789 |
ion = ELEMENT_TO_ION[element]
|
790 |
-
|
791 |
-
|
|
|
|
|
|
|
792 |
|
793 |
-
return ec
|
794 |
|
795 |
def print_report(self):
|
796 |
ppm = self.calculate_ppm()
|
|
|
748 |
|
749 |
def calculate_ec_exact(self):
|
750 |
"""Точный расчёт EC по молярной проводимости"""
|
751 |
+
# Молярные массы ионов (г/моль)
|
752 |
MOLAR_MASSES = {
|
753 |
'NO3-': 62.0,
|
754 |
'NH4+': 18.0,
|
755 |
+
'K+': 39.1,
|
756 |
+
'Ca+2': 40.1,
|
757 |
+
'Mg+2': 24.3,
|
758 |
+
'SO4-2': 96.1,
|
759 |
'H2PO4-': 97.0,
|
760 |
}
|
761 |
|
762 |
+
# Молярная проводимость ионов (мкСм·см²/моль) при 25°C
|
763 |
ION_CONDUCTIVITY = {
|
764 |
'NO3-': 71.4,
|
765 |
'NH4+': 73.5,
|
766 |
+
'K+': 73.5,
|
767 |
+
'Ca+2': 119.0,
|
768 |
+
'Mg+2': 106.0,
|
769 |
+
'SO4-2': 160.0,
|
770 |
'H2PO4-': 33.0,
|
771 |
}
|
772 |
|
773 |
+
# Соответствие элементов удобрения ионам
|
774 |
ELEMENT_TO_ION = {
|
775 |
'N (NO3-)': 'NO3-',
|
776 |
'N (NH4+)': 'NH4+',
|
777 |
+
'K': 'K+',
|
778 |
+
'Ca': 'Ca+2',
|
779 |
+
'Mg': 'Mg+2',
|
780 |
+
'S': 'SO4-2',
|
781 |
'P': 'H2PO4-',
|
782 |
}
|
783 |
|
|
|
787 |
for element, value in ppm.items():
|
788 |
if element in ELEMENT_TO_ION:
|
789 |
ion = ELEMENT_TO_ION[element]
|
790 |
+
# Конвертируем ppm (мг/л) в моль/л
|
791 |
+
molarity = (value / 1000) / MOLAR_MASSES[ion] # мг/л → г/л → моль/л
|
792 |
+
# Учитываем заряд иона (для Ca+2 и Mg+2 умножаем на 2)
|
793 |
+
charge_factor = 2 if '+2' in ion or '-2' in ion else 1
|
794 |
+
ec += molarity * ION_CONDUCTIVITY[ion] * charge_factor
|
795 |
|
796 |
+
return ec
|
797 |
|
798 |
def print_report(self):
|
799 |
ppm = self.calculate_ppm()
|