Spaces:
Running
Running
Update app.py
Browse files
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":
|
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.
|
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:
|