Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -681,19 +681,19 @@ def view_image():
|
|
681 |
|
682 |
|
683 |
|
684 |
-
#
|
685 |
fertilizers_db = {
|
686 |
"Кальциевая селитра": {
|
687 |
-
"N (NO3-)": 0.17,
|
688 |
-
"Ca": 0.24,
|
689 |
},
|
690 |
"Сульфат магния": {
|
691 |
-
"Mg": 0.098,
|
692 |
-
"S": 0.13,
|
693 |
},
|
694 |
"Монофосфат калия": {
|
695 |
-
"P": 0.22,
|
696 |
-
"K": 0.28,
|
697 |
},
|
698 |
}
|
699 |
|
@@ -715,7 +715,6 @@ class HydroCalculator:
|
|
715 |
return ppm
|
716 |
|
717 |
def calculate_ec(self):
|
718 |
-
"""Упрощённый расчёт EC на основе эмпирических коэффициентов"""
|
719 |
ppm = self.calculate_ppm()
|
720 |
ec = 0.0
|
721 |
EC_COEFFICIENTS = {
|
@@ -730,11 +729,9 @@ class HydroCalculator:
|
|
730 |
for element, value in ppm.items():
|
731 |
if element in EC_COEFFICIENTS:
|
732 |
ec += value * EC_COEFFICIENTS[element]
|
733 |
-
return ec / 1000
|
734 |
|
735 |
def calculate_ec_exact(self):
|
736 |
-
"""Точный расчёт EC на основе молярной проводимости и молярной концентрации"""
|
737 |
-
# Молярные массы (г/моль)
|
738 |
MOLAR_MASSES = {
|
739 |
'NO3-': 62.0,
|
740 |
'NH4+': 18.0,
|
@@ -744,7 +741,6 @@ class HydroCalculator:
|
|
744 |
'SO4-2': 96.1,
|
745 |
'H2PO4-': 97.0,
|
746 |
}
|
747 |
-
# Молярная проводимость ионов (мкСм·см²/моль)
|
748 |
ION_CONDUCTIVITY = {
|
749 |
'NO3-': 71.4,
|
750 |
'NH4+': 73.5,
|
@@ -754,7 +750,6 @@ class HydroCalculator:
|
|
754 |
'SO4-2': 160.0,
|
755 |
'H2PO4-': 33.0,
|
756 |
}
|
757 |
-
# Соответствие элементов ионам
|
758 |
ELEMENT_TO_ION = {
|
759 |
'N (NO3-)': 'NO3-',
|
760 |
'N (NH4+)': 'NH4+',
|
@@ -764,16 +759,21 @@ class HydroCalculator:
|
|
764 |
'S': 'SO4-2',
|
765 |
'P': 'H2PO4-',
|
766 |
}
|
|
|
767 |
ppm = self.calculate_ppm()
|
768 |
-
ec = 0.0
|
769 |
-
|
|
|
770 |
if element in ELEMENT_TO_ION:
|
771 |
ion = ELEMENT_TO_ION[element]
|
772 |
molar_mass = MOLAR_MASSES[ion]
|
773 |
conductivity = ION_CONDUCTIVITY[ion]
|
774 |
-
|
775 |
-
|
776 |
-
|
|
|
|
|
|
|
777 |
|
778 |
def print_report(self):
|
779 |
ppm = self.calculate_ppm()
|
@@ -794,12 +794,13 @@ class HydroCalculator:
|
|
794 |
|
795 |
|
796 |
# Пример использования
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
|
|
803 |
|
804 |
|
805 |
|
|
|
681 |
|
682 |
|
683 |
|
684 |
+
# Формат: {"Удобрение": {"Элемент1": доля, "Элемент2": доля, ...}}
|
685 |
fertilizers_db = {
|
686 |
"Кальциевая селитра": {
|
687 |
+
"N (NO3-)": 0.17,
|
688 |
+
"Ca": 0.24,
|
689 |
},
|
690 |
"Сульфат магния": {
|
691 |
+
"Mg": 0.098,
|
692 |
+
"S": 0.13,
|
693 |
},
|
694 |
"Монофосфат калия": {
|
695 |
+
"P": 0.22,
|
696 |
+
"K": 0.28,
|
697 |
},
|
698 |
}
|
699 |
|
|
|
715 |
return ppm
|
716 |
|
717 |
def calculate_ec(self):
|
|
|
718 |
ppm = self.calculate_ppm()
|
719 |
ec = 0.0
|
720 |
EC_COEFFICIENTS = {
|
|
|
729 |
for element, value in ppm.items():
|
730 |
if element in EC_COEFFICIENTS:
|
731 |
ec += value * EC_COEFFICIENTS[element]
|
732 |
+
return ec / 1000
|
733 |
|
734 |
def calculate_ec_exact(self):
|
|
|
|
|
735 |
MOLAR_MASSES = {
|
736 |
'NO3-': 62.0,
|
737 |
'NH4+': 18.0,
|
|
|
741 |
'SO4-2': 96.1,
|
742 |
'H2PO4-': 97.0,
|
743 |
}
|
|
|
744 |
ION_CONDUCTIVITY = {
|
745 |
'NO3-': 71.4,
|
746 |
'NH4+': 73.5,
|
|
|
750 |
'SO4-2': 160.0,
|
751 |
'H2PO4-': 33.0,
|
752 |
}
|
|
|
753 |
ELEMENT_TO_ION = {
|
754 |
'N (NO3-)': 'NO3-',
|
755 |
'N (NH4+)': 'NH4+',
|
|
|
759 |
'S': 'SO4-2',
|
760 |
'P': 'H2PO4-',
|
761 |
}
|
762 |
+
|
763 |
ppm = self.calculate_ppm()
|
764 |
+
ec = 0.0 # µS/cm
|
765 |
+
|
766 |
+
for element, value in ppm.items():
|
767 |
if element in ELEMENT_TO_ION:
|
768 |
ion = ELEMENT_TO_ION[element]
|
769 |
molar_mass = MOLAR_MASSES[ion]
|
770 |
conductivity = ION_CONDUCTIVITY[ion]
|
771 |
+
# ppm = mg/L → mmol/L = (ppm / molar_mass)
|
772 |
+
mmol_per_liter = value / molar_mass
|
773 |
+
# µS/cm = mmol/L * µS·cm²/mmol
|
774 |
+
ec += mmol_per_liter * conductivity
|
775 |
+
|
776 |
+
return ec / 1000 # переводим в mS/cm
|
777 |
|
778 |
def print_report(self):
|
779 |
ppm = self.calculate_ppm()
|
|
|
794 |
|
795 |
|
796 |
# Пример использования
|
797 |
+
calc = HydroCalculator(10) # 10 литров раствора
|
798 |
+
calc.add_fertilizer("Кальциевая селитра", 100)
|
799 |
+
calc.add_fertilizer("Сульфат магния", 50)
|
800 |
+
calc.add_fertilizer("Монофосфат калия", 30)
|
801 |
+
|
802 |
+
calc.print_report()
|
803 |
+
|
804 |
|
805 |
|
806 |
|