DmitrMakeev commited on
Commit
dc2e38d
·
verified ·
1 Parent(s): 054f0f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -4
app.py CHANGED
@@ -784,9 +784,71 @@ class NutrientCalculator:
784
  )
785
  self.final_profile['Mg'] = 0
786
 
787
- # Остальные методы _apply_* остаются без изменений
788
- # (_apply_calcium_nitrate, _apply_mkp, _apply_potassium_fertilizers, _apply_ammonium_nitrate)
789
- # ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
 
791
  def calculate_ec(self):
792
  """Расчёт электропроводимости"""
@@ -854,6 +916,5 @@ if __name__ == "__main__":
854
 
855
 
856
 
857
-
858
  if __name__ == '__main__':
859
  app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
 
784
  )
785
  self.final_profile['Mg'] = 0
786
 
787
+ def _apply_calcium_nitrate(self):
788
+ ca_need = self.final_profile['Ca']
789
+ ca_content = fertilizers_db["Кальциевая селитра"]["Ca"]
790
+ grams = (ca_need * self.volume) / (ca_content * 1000)
791
+ added_n = grams * fertilizers_db["Кальциевая селитра"]["N (NO3-)"] * 1000 / self.volume
792
+
793
+ self.final_profile['N (NO3-)'] -= added_n
794
+ self._apply_fertilizer("Кальциевая селитра", grams, {'внесет NO3': round(added_n, 1)})
795
+ self.final_profile['Ca'] = 0
796
+
797
+ def _apply_mkp(self):
798
+ p_need = self.final_profile['P']
799
+ p_content = fertilizers_db["Монофосфат калия"]["P"]
800
+ grams = (p_need * self.volume) / (p_content * 1000)
801
+ added_k = grams * fertilizers_db["Монофосфат калия"]["K"] * 1000 / self.volume
802
+
803
+ self.final_profile['K'] -= added_k
804
+ self._apply_fertilizer("Монофосфат калия", grams, {'внесет K': round(added_k, 1)})
805
+ self.final_profile['P'] = 0
806
+
807
+ def _apply_potassium_fertilizers(self):
808
+ k_need = self.final_profile['K']
809
+ if k_need <= 0:
810
+ return
811
+
812
+ s_deficit = max(0, self.final_profile['S'])
813
+ if s_deficit > 0:
814
+ s_content = fertilizers_db["Калий сернокислый"]["S"]
815
+ k2so4_grams = (s_deficit * self.volume) / (s_content * 1000)
816
+ added_k = k2so4_grams * fertilizers_db["Калий сернокислый"]["K"] * 1000 / self.volume
817
+
818
+ if added_k > k_need:
819
+ k2so4_grams = (k_need * self.volume) / (fertilizers_db["Калий сернокислый"]["K"] * 1000)
820
+ added_k = k_need
821
+ added_s = k2so4_grams * fertilizers_db["Калий сернокислый"]["S"] * 1000 / self.volume
822
+ else:
823
+ added_s = s_deficit
824
+
825
+ self._apply_fertilizer("Калий сернокислый", k2so4_grams, {
826
+ 'внесет K': round(added_k, 1),
827
+ 'внесет S': round(added_s, 1)
828
+ })
829
+ self.final_profile['K'] -= added_k
830
+ self.final_profile['S'] -= added_s
831
+ k_need = self.final_profile['K']
832
+
833
+ if k_need > 0:
834
+ kno3_grams = (k_need * self.volume) / (fertilizers_db["Калий азотнокислый"]["K"] * 1000)
835
+ added_n = kno3_grams * fertilizers_db["Калий азотнокислый"]["N (NO3-)"] * 1000 / self.volume
836
+
837
+ self._apply_fertilizer("Калий азотнокислый", kno3_grams, {'внесет NO3': round(added_n, 1)})
838
+ self.final_profile['K'] = 0
839
+ self.final_profile['N (NO3-)'] -= added_n
840
+
841
+ def _apply_ammonium_nitrate(self):
842
+ nh4_need = self.final_profile['N (NH4+)']
843
+ if nh4_need <= 0:
844
+ return
845
+ nh4_content = fertilizers_db["Аммоний азотнокислый"]["N (NH4+)"]
846
+ grams = (nh4_need * self.volume) / (nh4_content * 1000)
847
+ added_n = grams * fertilizers_db["Аммоний азотнокислый"]["N (NO3-)"] * 1000 / self.volume
848
+
849
+ self.final_profile['N (NO3-)'] -= added_n
850
+ self._apply_fertilizer("Аммоний азотнокислый", grams, {'внесет NO3': round(added_n, 1)})
851
+ self.final_profile['N (NH4+)'] = 0
852
 
853
  def calculate_ec(self):
854
  """Расчёт электропроводимости"""
 
916
 
917
 
918
 
 
919
  if __name__ == '__main__':
920
  app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))