DmitrMakeev commited on
Commit
3f72fed
·
verified ·
1 Parent(s): 7369bc4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -43
app.py CHANGED
@@ -693,42 +693,6 @@ def nutri_call():
693
 
694
 
695
  from tabulate import tabulate
696
-
697
- # Глобальные параметры
698
- TOTAL_NITROGEN = 120.0 # Общее количество азота
699
- NO3_RATIO = 8.0 # Соотношение NO3:NH4
700
- NH4_RATIO = 1.00 # Соотношение NH4:NO3
701
- VOLUME_LITERS = 100 # Объем раствора
702
-
703
- BASE_PROFILE = {
704
- "P": 50, # Фосфор
705
- "K": 210, # Калий
706
- "Mg": 120, # Магний (высокий уровень)
707
- "Ca": 150, # Кальций
708
- "S": 50, # Сера
709
- "N (NO3-)": 0, # Рассчитывается автоматически
710
- "N (NH4+)": 0 # Рассчитывается автоматически
711
- }
712
-
713
- NUTRIENT_CONTENT_IN_FERTILIZERS = {
714
- "Кальциевая селитра": {"N (NO3-)": 0.11863, "Ca": 0.16972},
715
- "Калий азотнокислый": {"N (NO3-)": 0.136, "K": 0.382},
716
- "Калий сернокислый": {"K": 0.44874, "S": 0.18401},
717
- "Аммоний азотнокислый": {"N (NO3-)": 0.17499, "N (NH4+)": 0.17499},
718
- "Сульфат магния": {"Mg": 0.09861, "S": 0.13010},
719
- "Монофосфат калия": {"P": 0.218, "K": 0.275},
720
- "Сульфат кальция": {"Ca": 0.23, "S": 0.186},
721
- "Кольцевая селитра": {"N (NO3-)": 0.15, "Ca": 0.20} # Новое удобрение
722
- }
723
-
724
- EC_COEFFICIENTS = {
725
- 'P': 0.0012, 'K': 0.0018, 'Mg': 0.0015,
726
- 'Ca': 0.0016, 'S': 0.0014,
727
- 'N (NO3-)': 0.0017, 'N (NH4+)': 0.0019
728
- }
729
-
730
-
731
-
732
  # Список всех питательных веществ
733
  nutrients_stencil = [
734
  'N (NO3-)', 'N (NH4+)', 'P', 'K', 'Mg', 'Ca', 'S',
@@ -863,6 +827,17 @@ class NutrientCalculator:
863
  # Целевой профиль как объект Composition
864
  self.target_composition = Composition('Target Profile', list(self.target_profile.values()))
865
 
 
 
 
 
 
 
 
 
 
 
 
866
  def calculate(self):
867
  try:
868
  self.actual_profile = {k: 0.0 for k in self.target_profile}
@@ -985,15 +960,48 @@ class NutrientCalculator:
985
  print(f"Ошибка при выводе отчёта: {str(e)}")
986
  raise
987
 
988
- if __name__ == "__main__":
989
- try:
990
- calculator = NutrientCalculator(volume_liters=VOLUME_LITERS)
991
- calculator.calculate()
992
- calculator.print_report() # Правильный вызов метода класса
993
- except Exception as e:
994
- print(f"Критическая ошибка: {str(e)}")
995
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
996
 
 
 
 
 
 
997
 
998
 
999
 
 
693
 
694
 
695
  from tabulate import tabulate
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
696
  # Список всех питательных веществ
697
  nutrients_stencil = [
698
  'N (NO3-)', 'N (NH4+)', 'P', 'K', 'Mg', 'Ca', 'S',
 
827
  # Целевой профиль как объект Composition
828
  self.target_composition = Composition('Target Profile', list(self.target_profile.values()))
829
 
830
+ def _copy_results(self):
831
+ """Создаёт глубокую копию результатов"""
832
+ return {
833
+ fert_name: {
834
+ 'граммы': data['граммы'],
835
+ 'миллиграммы': data['миллиграммы'],
836
+ 'вклад в EC': data['вклад в EC']
837
+ }
838
+ for fert_name, data in self.results.items()
839
+ }
840
+
841
  def calculate(self):
842
  try:
843
  self.actual_profile = {k: 0.0 for k in self.target_profile}
 
960
  print(f"Ошибка при выводе отчёта: {str(e)}")
961
  raise
962
 
 
 
 
 
 
 
 
963
 
964
+ # Пример данных
965
+ BASE_PROFILE = {
966
+ 'N (NO3-)': 106.7,
967
+ 'N (NH4+)': 13.3,
968
+ 'P': 50,
969
+ 'K': 210,
970
+ 'Mg': 120,
971
+ 'Ca': 150,
972
+ 'S': 50
973
+ }
974
+
975
+ NUTRIENT_CONTENT_IN_FERTILIZERS = {
976
+ 'Кальциевая селитра': {
977
+ 'N (NO3-)': 13.0,
978
+ 'Ca': 17.0
979
+ },
980
+ 'Калий сернокислый': {
981
+ 'K': 44.0,
982
+ 'S': 18.0
983
+ },
984
+ 'Магний сернокислый': {
985
+ 'Mg': 9.8,
986
+ 'S': 13.0
987
+ }
988
+ }
989
+
990
+ TOTAL_NITROGEN = 120.0
991
+ NO3_RATIO = 90.0
992
+ NH4_RATIO = 10.0
993
+
994
+ # Создание калькулятора
995
+ calculator = NutrientCalculator(volume_liters=100)
996
+
997
+ # Расчет
998
+ solution = calculator.calculate()
999
 
1000
+ # Генерация отчета
1001
+ if solution:
1002
+ print(calculator.generate_report())
1003
+ else:
1004
+ print("Решение не найдено.")
1005
 
1006
 
1007