Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -702,7 +702,7 @@ BASE_PROFILE = {
|
|
702 |
'N (NH4+)': 0
|
703 |
}
|
704 |
|
705 |
-
# Полная база всех удобрений (
|
706 |
ALL_FERTILIZERS = {
|
707 |
"Кальциевая селитра": {
|
708 |
"N (NO3-)": 0.118, "Ca": 0.169
|
@@ -713,9 +713,6 @@ ALL_FERTILIZERS = {
|
|
713 |
"Калий сернокислый": {
|
714 |
"K": 0.448, "S": 0.184
|
715 |
},
|
716 |
-
"Сульфат калия": {
|
717 |
-
"K": 0.448, "S": 0.184
|
718 |
-
},
|
719 |
"Аммоний азотнокислый": {
|
720 |
"N (NO3-)": 0.175, "N (NH4+)": 0.175
|
721 |
},
|
@@ -733,25 +730,19 @@ class NutrientCalculator:
|
|
733 |
self.results = {}
|
734 |
self.final_profile = BASE_PROFILE.copy()
|
735 |
self.total_ppm = sum(BASE_PROFILE.values()) + TOTAL_NITROGEN
|
736 |
-
self.initial_n_profile = {}
|
737 |
self.fertilizers_db = ALL_FERTILIZERS
|
738 |
|
739 |
def calculate(self, total_n, no3_ratio, nh4_ratio):
|
740 |
-
# 1.
|
741 |
total_parts = no3_ratio + nh4_ratio
|
742 |
no3 = total_n * (no3_ratio / total_parts)
|
743 |
nh4 = total_n * (nh4_ratio / total_parts)
|
744 |
|
745 |
-
self.initial_n_profile = {
|
746 |
-
'N (NO3-)': round(no3, 1),
|
747 |
-
'N (NH4+)': round(nh4, 1)
|
748 |
-
}
|
749 |
-
|
750 |
# Записываем азот в профиль
|
751 |
self.final_profile['N (NO3-)'] = no3
|
752 |
self.final_profile['N (NH4+)'] = nh4
|
753 |
|
754 |
-
# 2. Вносим удобрения в
|
755 |
self._apply_magnesium_sulfate()
|
756 |
self._apply_calcium_nitrate()
|
757 |
self._apply_potassium_phosphate()
|
@@ -759,7 +750,7 @@ class NutrientCalculator:
|
|
759 |
self._apply_potassium_sulfate()
|
760 |
self._apply_potassium_nitrate()
|
761 |
|
762 |
-
# Корректируем отрицательные значения
|
763 |
self._adjust_negative_values()
|
764 |
|
765 |
return self.results
|
@@ -876,10 +867,6 @@ class NutrientCalculator:
|
|
876 |
table = [[el, round(val, 1)] for el, val in self.final_profile.items()]
|
877 |
print(tabulate(table, headers=["Элемент", "Остаток ppm"]))
|
878 |
|
879 |
-
print("\nИсходный расчёт азота:")
|
880 |
-
for form, value in self.initial_n_profile.items():
|
881 |
-
print(f" {form}: {value} ppm")
|
882 |
-
|
883 |
print("\n" + "="*60)
|
884 |
print(f"РАСЧЕТ ДЛЯ {self.volume} ЛИТРОВ РАСТВОРА")
|
885 |
print("="*60)
|
|
|
702 |
'N (NH4+)': 0
|
703 |
}
|
704 |
|
705 |
+
# Полная база всех удобрений (6 удобрений, сульфат калия и калий сернокислый - одно и то же)
|
706 |
ALL_FERTILIZERS = {
|
707 |
"Кальциевая селитра": {
|
708 |
"N (NO3-)": 0.118, "Ca": 0.169
|
|
|
713 |
"Калий сернокислый": {
|
714 |
"K": 0.448, "S": 0.184
|
715 |
},
|
|
|
|
|
|
|
716 |
"Аммоний азотнокислый": {
|
717 |
"N (NO3-)": 0.175, "N (NH4+)": 0.175
|
718 |
},
|
|
|
730 |
self.results = {}
|
731 |
self.final_profile = BASE_PROFILE.copy()
|
732 |
self.total_ppm = sum(BASE_PROFILE.values()) + TOTAL_NITROGEN
|
|
|
733 |
self.fertilizers_db = ALL_FERTILIZERS
|
734 |
|
735 |
def calculate(self, total_n, no3_ratio, nh4_ratio):
|
736 |
+
# 1. Рассчитываем баланс азота
|
737 |
total_parts = no3_ratio + nh4_ratio
|
738 |
no3 = total_n * (no3_ratio / total_parts)
|
739 |
nh4 = total_n * (nh4_ratio / total_parts)
|
740 |
|
|
|
|
|
|
|
|
|
|
|
741 |
# Записываем азот в профиль
|
742 |
self.final_profile['N (NO3-)'] = no3
|
743 |
self.final_profile['N (NH4+)'] = nh4
|
744 |
|
745 |
+
# 2. Вносим удобрения в строгом порядке
|
746 |
self._apply_magnesium_sulfate()
|
747 |
self._apply_calcium_nitrate()
|
748 |
self._apply_potassium_phosphate()
|
|
|
750 |
self._apply_potassium_sulfate()
|
751 |
self._apply_potassium_nitrate()
|
752 |
|
753 |
+
# 3. Корректируем отрицательные значения
|
754 |
self._adjust_negative_values()
|
755 |
|
756 |
return self.results
|
|
|
867 |
table = [[el, round(val, 1)] for el, val in self.final_profile.items()]
|
868 |
print(tabulate(table, headers=["Элемент", "Остаток ppm"]))
|
869 |
|
|
|
|
|
|
|
|
|
870 |
print("\n" + "="*60)
|
871 |
print(f"РАСЧЕТ ДЛЯ {self.volume} ЛИТРОВ РАСТВОРА")
|
872 |
print("="*60)
|