DmitrMakeev commited on
Commit
01f316b
·
verified ·
1 Parent(s): 0c2dda4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -66
app.py CHANGED
@@ -793,69 +793,7 @@ NUTRIENT_CONTENT_IN_FERTILIZERS = {
793
 
794
 
795
 
796
- from tabulate import tabulate
797
-
798
- # Константы
799
- TOTAL_NITROGEN = 125.000
800
- NO3_RATIO = 8.25
801
- NH4_RATIO = 1.00
802
- VOLUME_LITERS = 100
803
-
804
- # Коэффициенты электропроводности
805
- EC_COEFFICIENTS = {
806
- 'P': 0.0012, 'K': 0.0018, 'Mg': 0.0015,
807
- 'Ca': 0.0016, 'S': 0.0014,
808
- 'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
809
- }
810
-
811
- # Целевые значения
812
- BASE_PROFILE = {
813
- 'P': 31.000, 'K': 210.000, 'Mg': 24.000,
814
- 'Ca': 84.000, 'S': 56.439,
815
- 'N (NO3-)': 0, 'N (NH4+)': 0
816
- }
817
-
818
- NUTRIENT_CONTENT_IN_FERTILIZERS = {
819
- "Кальциевая селитра": {"N (NO3-)": 0.11863, "Ca": 0.16972},
820
- "Калий азотнокислый": {"N (NO3-)": 0.136, "K": 0.382},
821
- "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
822
- "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
823
- "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
824
- "Монофосфат калия": {"P": 0.218, "K": 0.275}
825
- }
826
-
827
-
828
-
829
- from tabulate import tabulate
830
-
831
- # Константы
832
- TOTAL_NITROGEN = 125.000
833
- NO3_RATIO = 8.25
834
- NH4_RATIO = 1.00
835
- VOLUME_LITERS = 100
836
-
837
- # Коэффициенты электропроводности
838
- EC_COEFFICIENTS = {
839
- 'P': 0.0012, 'K': 0.0018, 'Mg': 0.0015,
840
- 'Ca': 0.0016, 'S': 0.0014,
841
- 'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
842
- }
843
 
844
- # Целевые значения
845
- BASE_PROFILE = {
846
- 'P': 31.000, 'K': 210.000, 'Mg': 24.000,
847
- 'Ca': 84.000, 'S': 56.439,
848
- 'N (NO3-)': 0, 'N (NH4+)': 0
849
- }
850
-
851
- NUTRIENT_CONTENT_IN_FERTILIZERS = {
852
- "Кальциевая селитра": {"N (NO3-)": 0.11863, "Ca": 0.16972},
853
- "Калий азотнокислый": {"N (NO3-)": 0.136, "K": 0.382},
854
- "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
855
- "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
856
- "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
857
- "Монофосфат калия": {"P": 0.218, "K": 0.275}
858
- }
859
 
860
 
861
  from tabulate import tabulate
@@ -887,7 +825,9 @@ NUTRIENT_CONTENT_IN_FERTILIZERS = {
887
  "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
888
  "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
889
  "Монофосфат калия": {"P": 0.218, "K": 0.275},
890
- "Калий сернокислый": {"K": 0.44874, "S": 0.18401}
 
 
891
  }
892
 
893
  class NutrientCalculator:
@@ -903,14 +843,16 @@ class NutrientCalculator:
903
  # Веса компенсации для элементов
904
  self.element_compensation_weights = {
905
  "POTASSIUM_SULFATE": {"weight": 0.18, "fert": "Калий сернокислый", "main_element": "K"},
906
- "MAGNESIUM_SULFATE": {"weight": -0.08, "fert": "Сульфат магния", "main_element": "Mg"},
907
- "MONOPOTASSIUM_PHOSPHATE": {"weight": 0.14, "fert": "Монофосфат калия", "main_element": "P"}
 
 
908
  }
909
 
910
  # Коэффициенты распределения для кальциевой селитры
911
  self.calcium_nitrate_ratios = {
912
  "Ca": 0.7, # 70% дефицита кальция покрываем кальциевой селитрой
913
- "NO3": 0.2 # 30% дефицита NO3 покрываем кальциевой селитрой
914
  }
915
 
916
  # Расчёт соотношений азотов
@@ -943,6 +885,7 @@ class NutrientCalculator:
943
  self._compensate_element("P")
944
  self._compensate_element("S")
945
  self._compensate_element("K")
 
946
 
947
  return self.results
948
  except Exception as e:
@@ -1079,6 +1022,32 @@ class NutrientCalculator:
1079
  print(f"Ошибка при выводе отчёта: {str(e)}")
1080
  raise
1081
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1082
  @app.route('/calculation', methods=['POST'])
1083
  def handle_calculation():
1084
  try:
 
793
 
794
 
795
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
796
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
797
 
798
 
799
  from tabulate import tabulate
 
825
  "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
826
  "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
827
  "Монофосфат калия": {"P": 0.218, "K": 0.275},
828
+ "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
829
+ "Сульфат кальция": {"Ca": 0.23, "S": 0.186}, # Новый моноэлемент
830
+ "Нитрат магния": {"Mg": 0.09, "N (NO3-)": 0.11} # Новый моноэлемент
831
  }
832
 
833
  class NutrientCalculator:
 
843
  # Веса компенсации для элементов
844
  self.element_compensation_weights = {
845
  "POTASSIUM_SULFATE": {"weight": 0.18, "fert": "Калий сернокислый", "main_element": "K"},
846
+ "MAGNESIUM_SULFATE": {"weight": 0.1, "fert": "Сульфат магния", "main_element": "Mg"},
847
+ "MONOPOTASSIUM_PHOSPHATE": {"weight": 0.14, "fert": "Монофосфат калия", "main_element": "P"},
848
+ "CALCIUM_SULFATE": {"weight": 0.25, "fert": "Сульфат кальция", "main_element": "Ca"}, # Новый вес
849
+ "MAGNESIUM_NITRATE": {"weight": 0.15, "fert": "Нитрат магния", "main_element": "Mg"} # Новый вес
850
  }
851
 
852
  # Коэффициенты распределения для кальциевой селитры
853
  self.calcium_nitrate_ratios = {
854
  "Ca": 0.7, # 70% дефицита кальция покрываем кальциевой селитрой
855
+ "NO3": 0.3 # 30% дефицита NO3 покрываем кальциевой селитрой
856
  }
857
 
858
  # Расчёт соотношений азотов
 
885
  self._compensate_element("P")
886
  self._compensate_element("S")
887
  self._compensate_element("K")
888
+ self._compensate_element("Ca") # Добавляем компенсацию кальция через сульфат кальция
889
 
890
  return self.results
891
  except Exception as e:
 
1022
  print(f"Ошибка при выводе отчёта: {str(e)}")
1023
  raise
1024
 
1025
+
1026
+
1027
+ if __name__ == "__main__":
1028
+ try:
1029
+ calculator = NutrientCalculator(volume_liters=VOLUME_LITERS)
1030
+ calculator.calculate()
1031
+ calculator.print_report() # Правильный вызов метода класса
1032
+ except Exception as e:
1033
+ print(f"Критическая ошибка: {str(e)}")
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
  @app.route('/calculation', methods=['POST'])
1052
  def handle_calculation():
1053
  try: