DmitrMakeev commited on
Commit
2d6fb5c
·
verified ·
1 Parent(s): 8c2742c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -48
app.py CHANGED
@@ -746,54 +746,54 @@ class HydroCalculator:
746
 
747
  return ec / 1000 # Переводим в mS/cm
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
-
784
- ppm = self.calculate_ppm()
785
- ec = 0.0 # мкСм/см
786
-
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()
 
746
 
747
  return ec / 1000 # Переводим в mS/cm
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
+
784
+ ppm = self.calculate_ppm()
785
+ ec = 0.0 # мкСм/см
786
+
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
+ # Для двухзарядных ионов проводимость уже учтена в табличных значениях
793
+ # НЕ умножаем на заряд!
794
+ ec += molarity * ION_CONDUCTIVITY[ion]
795
+
796
+ return ec / 1000 # Переводим в mS/cm
797
 
798
  def print_report(self):
799
  ppm = self.calculate_ppm()