DmitrMakeev commited on
Commit
8c2742c
·
verified ·
1 Parent(s): 7f442ce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -18
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--': 96.1,
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--': 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',
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
- molarity = value / (MOLAR_MASSES[ion] * 1000) # ppm моль/л
791
- ec += molarity * ION_CONDUCTIVITY[ion]
 
 
 
792
 
793
- return ec / 1000 # Переводим в mS/cm
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()