Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -682,10 +682,6 @@ def view_image():
|
|
682 |
|
683 |
|
684 |
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
# Формат: {"Удобрение": {"Элемент1": доля, "Элемент2": доля, ...}}
|
690 |
fertilizers_db = {
|
691 |
"Кальциевая селитра": {
|
@@ -702,12 +698,6 @@ fertilizers_db = {
|
|
702 |
},
|
703 |
}
|
704 |
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
class HydroCalculator:
|
712 |
def __init__(self, volume_liters=1.0):
|
713 |
self.volume = volume_liters
|
@@ -746,54 +736,54 @@ class HydroCalculator:
|
|
746 |
|
747 |
return ec / 1000 # Переводим в mS/cm
|
748 |
|
749 |
-
def calculate_ec_exact(self):
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
|
798 |
def print_report(self):
|
799 |
ppm = self.calculate_ppm()
|
@@ -812,10 +802,7 @@ def calculate_ec_exact(self):
|
|
812 |
print(f"Точный метод: {ec_exact:.2f} mS/cm")
|
813 |
print("-" * 50)
|
814 |
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
calc = HydroCalculator(10) # 10 литров раствора
|
820 |
calc.add_fertilizer("Кальциевая селитра", 100) # 100 г
|
821 |
calc.add_fertilizer("Сульфат магния", 50) # 50 г
|
@@ -840,8 +827,6 @@ calc.print_report()
|
|
840 |
|
841 |
|
842 |
|
843 |
-
|
844 |
-
|
845 |
|
846 |
|
847 |
if __name__ == '__main__':
|
|
|
682 |
|
683 |
|
684 |
|
|
|
|
|
|
|
|
|
685 |
# Формат: {"Удобрение": {"Элемент1": доля, "Элемент2": доля, ...}}
|
686 |
fertilizers_db = {
|
687 |
"Кальциевая селитра": {
|
|
|
698 |
},
|
699 |
}
|
700 |
|
|
|
|
|
|
|
|
|
|
|
|
|
701 |
class HydroCalculator:
|
702 |
def __init__(self, volume_liters=1.0):
|
703 |
self.volume = volume_liters
|
|
|
736 |
|
737 |
return ec / 1000 # Переводим в mS/cm
|
738 |
|
739 |
+
def calculate_ec_exact(self):
|
740 |
+
"""Точный расчёт EC по молярной проводимости с правильным учётом заряда"""
|
741 |
+
# Молярные массы ионов (г/моль)
|
742 |
+
MOLAR_MASSES = {
|
743 |
+
'NO3-': 62.0,
|
744 |
+
'NH4+': 18.0,
|
745 |
+
'K+': 39.1,
|
746 |
+
'Ca+2': 40.1,
|
747 |
+
'Mg+2': 24.3,
|
748 |
+
'SO4-2': 96.1,
|
749 |
+
'H2PO4-': 97.0,
|
750 |
+
}
|
751 |
+
|
752 |
+
# Молярная проводимость ионов (мкСм·см²/моль) при 25°C
|
753 |
+
ION_CONDUCTIVITY = {
|
754 |
+
'NO3-': 71.4,
|
755 |
+
'NH4+': 73.5,
|
756 |
+
'K+': 73.5,
|
757 |
+
'Ca+2': 119.0,
|
758 |
+
'Mg+2': 106.0,
|
759 |
+
'SO4-2': 160.0,
|
760 |
+
'H2PO4-': 33.0,
|
761 |
+
}
|
762 |
+
|
763 |
+
# Соответствие элементов удобрения ионам
|
764 |
+
ELEMENT_TO_ION = {
|
765 |
+
'N (NO3-)': 'NO3-',
|
766 |
+
'N (NH4+)': 'NH4+',
|
767 |
+
'K': 'K+',
|
768 |
+
'Ca': 'Ca+2',
|
769 |
+
'Mg': 'Mg+2',
|
770 |
+
'S': 'SO4-2',
|
771 |
+
'P': 'H2PO4-',
|
772 |
+
}
|
773 |
+
|
774 |
+
ppm = self.calculate_ppm()
|
775 |
+
ec = 0.0 # мкСм/см
|
776 |
+
|
777 |
+
for element, value in ppm.items():
|
778 |
+
if element in ELEMENT_TO_ION:
|
779 |
+
ion = ELEMENT_TO_ION[element]
|
780 |
+
# Конвертируем ppm (мг/л) в моль/л
|
781 |
+
molarity = (value / 1000) / MOLAR_MASSES[ion]
|
782 |
+
# Для двухзарядных ионов проводимость уже учтена в табличных значениях
|
783 |
+
# НЕ умножаем на заряд!
|
784 |
+
ec += molarity * ION_CONDUCTIVITY[ion]
|
785 |
+
|
786 |
+
return ec / 1000 # Переводим в mS/cm
|
787 |
|
788 |
def print_report(self):
|
789 |
ppm = self.calculate_ppm()
|
|
|
802 |
print(f"Точный метод: {ec_exact:.2f} mS/cm")
|
803 |
print("-" * 50)
|
804 |
|
805 |
+
# Пример использования
|
|
|
|
|
|
|
806 |
calc = HydroCalculator(10) # 10 литров раствора
|
807 |
calc.add_fertilizer("Кальциевая селитра", 100) # 100 г
|
808 |
calc.add_fertilizer("Сульфат магния", 50) # 50 г
|
|
|
827 |
|
828 |
|
829 |
|
|
|
|
|
830 |
|
831 |
|
832 |
if __name__ == '__main__':
|