DmitrMakeev commited on
Commit
127fc0a
·
verified ·
1 Parent(s): 5048b61

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -99
app.py CHANGED
@@ -680,34 +680,25 @@ def view_image():
680
 
681
 
682
  fertilizers_db = {
683
- # Кальциевая селитра (Ca(NO3)2 · 4H2O - тетрагидрат)
684
  "Кальциевая селитра": {
685
- "N (NO3-)": 0.118, # 11.8% азота (правильно)
686
- "Ca": 0.169 # 16.9% кальция (правильно)
687
  },
688
-
689
- # Калий азотнокислый (KNO3)
690
  "Калий азотнокислый": {
691
- "N (NO3-)": 0.138, # 13.8% азота (правильно)
692
- "K": 0.387 # 38.7% калия (правильно)
693
  },
694
-
695
- # Аммоний азотнокислый (NH4NO3)
696
  "Аммоний азотнокислый": {
697
  "N (NO3-)": 0.175, # 17.5% нитратного азота
698
  "N (NH4+)": 0.175 # 17.5% аммонийного азота
699
  },
700
-
701
- # Сульфат магния (MgSO4 · 7H2O - гептагидрат)
702
  "Сульфат магния": {
703
- "Mg": 0.098, # 9.8% магния (правильно)
704
- "S": 0.13 # 13% серы (правильно)
705
  },
706
-
707
- # Монофосфат калия (KH2PO4)
708
  "Монофосфат калия": {
709
- "P": 0.227, # 22.7% фосфора (правильно)
710
- "K": 0.287 # 28.7% калия (правильно)
711
  }
712
  }
713
 
@@ -728,72 +719,9 @@ class HydroCalculator:
728
  ppm[element] = ppm.get(element, 0) + (grams * ratio * 1000) / self.volume
729
  return ppm
730
 
731
- def calculate_ec(self):
732
- ppm = self.calculate_ppm()
733
- ec = 0.0
734
- EC_COEFFICIENTS = {
735
- 'N (NO3-)': 0.6,
736
- 'N (NH4+)': 0.4,
737
- 'K': 0.7,
738
- 'Ca': 0.75,
739
- 'Mg': 0.6,
740
- 'S': 0.3,
741
- 'P': 0.1,
742
- }
743
- for element, value in ppm.items():
744
- if element in EC_COEFFICIENTS:
745
- ec += value * EC_COEFFICIENTS[element]
746
- return ec / 1000
747
-
748
- def calculate_ec_exact(self):
749
- MOLAR_MASSES = {
750
- 'NO3-': 62.0,
751
- 'NH4+': 18.0,
752
- 'K+': 39.1,
753
- 'Ca+2': 40.1,
754
- 'Mg+2': 24.3,
755
- 'SO4-2': 96.1,
756
- 'H2PO4-': 97.0,
757
- }
758
- ION_CONDUCTIVITY = {
759
- 'NO3-': 71.4,
760
- 'NH4+': 73.5,
761
- 'K+': 73.5,
762
- 'Ca+2': 119.0,
763
- 'Mg+2': 106.0,
764
- 'SO4-2': 160.0,
765
- 'H2PO4-': 33.0,
766
- }
767
- ELEMENT_TO_ION = {
768
- 'N (NO3-)': 'NO3-',
769
- 'N (NH4+)': 'NH4+',
770
- 'K': 'K+',
771
- 'Ca': 'Ca+2',
772
- 'Mg': 'Mg+2',
773
- 'S': 'SO4-2',
774
- 'P': 'H2PO4-',
775
- }
776
-
777
- ppm = self.calculate_ppm()
778
- ec = 0.0 # µS/cm
779
-
780
- for element, value in ppm.items():
781
- if element in ELEMENT_TO_ION:
782
- ion = ELEMENT_TO_ION[element]
783
- molar_mass = MOLAR_MASSES[ion]
784
- conductivity = ION_CONDUCTIVITY[ion]
785
- # ppm = mg/L → mmol/L = (ppm / molar_mass)
786
- mmol_per_liter = value / molar_mass
787
- # µS/cm = mmol/L * µS·cm²/mmol
788
- ec += mmol_per_liter * conductivity
789
-
790
- return ec / 1000 # переводим в mS/cm
791
-
792
  def print_report(self):
793
  ppm = self.calculate_ppm()
794
- ec_simple = self.calculate_ec()
795
- ec_exact = self.calculate_ec_exact()
796
-
797
  print("\nРезультаты расчёта:")
798
  print("-" * 50)
799
  print("{:<15} {:>10} {:>15}".format("Элемент", "ppm", "мг/л"))
@@ -801,31 +729,25 @@ class HydroCalculator:
801
  for element, value in sorted(ppm.items()):
802
  print("{:<15} {:>10.2f} {:>15.2f}".format(element, value, value))
803
  print("-" * 50)
804
- print("Электропроводность (EC):")
805
- print(f"Упрощённый метод: {ec_simple:.2f} mS/cm")
 
 
 
 
806
  print("-" * 50)
807
 
808
-
809
-
810
-
811
- # Пример использования с правильными названиями удобрений
812
  calc = HydroCalculator(10) # 10 литров раствора
813
 
814
- # Добавляем удобрения с правильными названиями и адекватными количествами
815
- calc.add_fertilizer("Кальциевая селитра", 10) # 10 г
816
- calc.add_fertilizer("Калий азотнокислый", 5) # 5 г
817
- calc.add_fertilizer("Аммоний азотнокислый", 3) # 3 г
818
 
819
- # Выводим полный отчёт
820
  calc.print_report()
821
 
822
- # Дополнительный вывод только NO3 и NH4
823
- ppm = calc.calculate_ppm()
824
- print("\nСодержание азота:")
825
- print(f"NO3-: {ppm.get('N (NO3-)', 0):.2f} ppm")
826
- print(f"NH4+: {ppm.get('N (NH4+)', 0):.2f} ppm")
827
-
828
-
829
 
830
 
831
 
 
680
 
681
 
682
  fertilizers_db = {
 
683
  "Кальциевая селитра": {
684
+ "N (NO3-)": 0.118, # 11.8% азота
685
+ "Ca": 0.169 # 16.9% кальция
686
  },
 
 
687
  "Калий азотнокислый": {
688
+ "N (NO3-)": 0.138, # 13.8% азота
689
+ "K": 0.387 # 38.7% калия
690
  },
 
 
691
  "Аммоний азотнокислый": {
692
  "N (NO3-)": 0.175, # 17.5% нитратного азота
693
  "N (NH4+)": 0.175 # 17.5% аммонийного азота
694
  },
 
 
695
  "Сульфат магния": {
696
+ "Mg": 0.098, # 9.8% магния
697
+ "S": 0.13 # 13% серы
698
  },
 
 
699
  "Монофосфат калия": {
700
+ "P": 0.227, # 22.7% фосфора
701
+ "K": 0.287 # 28.7% калия
702
  }
703
  }
704
 
 
719
  ppm[element] = ppm.get(element, 0) + (grams * ratio * 1000) / self.volume
720
  return ppm
721
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
722
  def print_report(self):
723
  ppm = self.calculate_ppm()
724
+
 
 
725
  print("\nРезультаты расчёта:")
726
  print("-" * 50)
727
  print("{:<15} {:>10} {:>15}".format("Элемент", "ppm", "мг/л"))
 
729
  for element, value in sorted(ppm.items()):
730
  print("{:<15} {:>10.2f} {:>15.2f}".format(element, value, value))
731
  print("-" * 50)
732
+
733
+ # Специальный вывод по азоту
734
+ print("\nСодержание азота:")
735
+ print(f"Общий азот (N): {ppm.get('N (NO3-)', 0) + ppm.get('N (NH4+)', 0):.2f} ppm")
736
+ print(f"Нитратный азот (NO3-): {ppm.get('N (NO3-)', 0):.2f} ppm")
737
+ print(f"Аммонийный азот (NH4+): {ppm.get('N (NH4+)', 0):.2f} ppm")
738
  print("-" * 50)
739
 
740
+ # Пример использования
 
 
 
741
  calc = HydroCalculator(10) # 10 литров раствора
742
 
743
+ # Добавляем удобрения (рекомендуемые количества для теста)
744
+ calc.add_fertilizer("Кальциевая селитра", 100) # 100 г
745
+ calc.add_fertilizer("Калий азотнокислый", 50) # 50 г
746
+ calc.add_fertilizer("Аммоний азотнокислый", 30) # 30 г
747
 
748
+ # Выводим отчёт
749
  calc.print_report()
750
 
 
 
 
 
 
 
 
751
 
752
 
753