DmitrMakeev commited on
Commit
47c5562
·
verified ·
1 Parent(s): 2d6fb5c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -64
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
- """Точный расчёт 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()
@@ -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__':