Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -806,36 +806,68 @@ calc.print_report()
|
|
806 |
|
807 |
|
808 |
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
'
|
817 |
-
'
|
818 |
-
|
|
|
|
|
|
|
|
|
819 |
}
|
820 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
821 |
|
822 |
|
823 |
-
|
|
|
|
|
824 |
ppm = self.calculate_ppm()
|
825 |
-
ec = 0.0
|
|
|
826 |
for element, value in ppm.items():
|
827 |
-
|
828 |
-
|
|
|
|
|
829 |
return ec / 1000 # Переводим в mS/cm
|
830 |
|
|
|
|
|
|
|
|
|
831 |
calc = HydroCalculator(10)
|
832 |
-
calc.add_fertilizer("Кальциевая селитра", 100)
|
833 |
-
calc.add_fertilizer("Сульфат магния", 50)
|
834 |
|
835 |
ppm = calc.calculate_ppm()
|
836 |
-
ec = calc.
|
|
|
|
|
837 |
|
838 |
-
print(f"EC раствора: {ec:.2f} mS/cm")
|
839 |
|
840 |
|
841 |
|
|
|
806 |
|
807 |
|
808 |
|
809 |
+
|
810 |
+
|
811 |
+
|
812 |
+
|
813 |
+
|
814 |
+
# Молярные массы (г/моль)
|
815 |
+
MOLAR_MASSES = {
|
816 |
+
'N (NO3-)': 62.0, # NO3⁻
|
817 |
+
'N (NH4+)': 18.0, # NH4⁺
|
818 |
+
'K': 39.1,
|
819 |
+
'Ca': 40.1,
|
820 |
+
'Mg': 24.3,
|
821 |
+
'S': 96.1, # SO4²⁻
|
822 |
+
'P': 95.0, # H2PO4⁻
|
823 |
}
|
824 |
|
825 |
+
# Молярная проводимость (λ₀) в мкСм·см²/моль
|
826 |
+
ION_CONDUCTIVITY = {
|
827 |
+
'N (NO3-)': 71.4,
|
828 |
+
'N (NH4+)': 73.5,
|
829 |
+
'K': 73.5,
|
830 |
+
'Ca': 119.0,
|
831 |
+
'Mg': 106.0,
|
832 |
+
'S': 160.0, # Вклад SO4²⁻
|
833 |
+
'P': 33.0, # Вклад H2PO4⁻
|
834 |
+
}
|
835 |
+
|
836 |
+
|
837 |
+
|
838 |
+
def _ppm_to_molarity(self, ppm, element):
|
839 |
+
"""Конвертирует ppm в моль/л."""
|
840 |
+
if element not in MOLAR_MASSES:
|
841 |
+
return 0.0
|
842 |
+
return ppm / (MOLAR_MASSES[element] * 1000) # ppm = мг/л → моль/л
|
843 |
|
844 |
|
845 |
+
|
846 |
+
|
847 |
+
def calculate_ec_exact(self):
|
848 |
ppm = self.calculate_ppm()
|
849 |
+
ec = 0.0 # мкСм/см
|
850 |
+
|
851 |
for element, value in ppm.items():
|
852 |
+
molarity = self._ppm_to_molarity(value, element)
|
853 |
+
if element in ION_CONDUCTIVITY:
|
854 |
+
ec += molarity * ION_CONDUCTIVITY[element]
|
855 |
+
|
856 |
return ec / 1000 # Переводим в mS/cm
|
857 |
|
858 |
+
|
859 |
+
|
860 |
+
|
861 |
+
|
862 |
calc = HydroCalculator(10)
|
863 |
+
calc.add_fertilizer("Кальциевая селитра", 100) # Ca(NO3)2
|
864 |
+
calc.add_fertilizer("Сульфат магния", 50) # MgSO4
|
865 |
|
866 |
ppm = calc.calculate_ppm()
|
867 |
+
ec = calc.calculate_ec_exact()
|
868 |
+
|
869 |
+
print(f"Точный EC: {ec:.2f} mS/cm")
|
870 |
|
|
|
871 |
|
872 |
|
873 |
|