Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. package pilotati;
  2.  
  3. rule "Rimuovi diametri in base a q"
  4. dialect "java"
  5. when
  6. $p: variabile( nome == "prodotto")
  7. $tipofluido: variabile (nome=="tipofluido")
  8. $td: variabile (nome=="td")
  9. $pumax: variabile (nome=="pumax")
  10. $pdmin: variabile (nome=="pdmin")
  11. $pdmax: variabile (nome=="pdmax")
  12. $pumin: variabile (nome=="pumin")
  13. $d: variabile (nome=="d")
  14. $d_fluido: variabile(nome=="d_fluido")
  15. $q: variabile (nome=="qcliente")
  16. $perc_riduzione_: variabile_interna (nome=="perc_diminuzione")
  17. $diametro: diametri( )
  18. not( accessorio(tipo == "blocco") )
  19. $conblocco: variabile(nome=="conblocco")
  20. not variabile(nome=="diametroregolatore")
  21. //variabile che serve per verificare solo un diametro per la linea di riduzione
  22. not variabile(nome=="diametroimpostato")
  23. then
  24.  
  25. Double $max_perc_diminuzione_blocco = 0.0;
  26.  
  27. //Diminuzione EN334
  28. Double diminuito = $diametro.getCg()*0.97361;
  29. stampalog(pfLogger, String.format("Diminuzione Cg per EN334 di %.2f a %.2f \n", $diametro.getCg(), diminuito));
  30.  
  31. //Verifichiamo che ha trovato un valore per la percentuale
  32. if(Math.abs($max_perc_diminuzione_blocco) > 1000) {
  33. $max_perc_diminuzione_blocco = 0.0;
  34. }
  35.  
  36. //Calcolo riduzione (stimata NON PRECISA nel caso del blocco)
  37. double riduzione = 0;
  38. if ($conblocco.getValore()=="true") {
  39. riduzione = _V_I_ToD($perc_riduzione_) + $max_perc_diminuzione_blocco;
  40. //stampalog(pfLogger, String.format("$max_perc_diminuzione_blocco: %f \n",$max_perc_diminuzione_blocco));
  41. } else {
  42. riduzione = _V_I_ToD($perc_riduzione_);
  43. }
  44.  
  45. //Diminuzione per monitor e blocco: come non sappiamo che tipo di blocco, prendiamo quello con il massimo valore (in realtà solo il reval ha 2 possibilità)
  46. //Come ancora non sappiamo se ci sarà il silenziatore, verrà gestito nella domanda dei formatitubi
  47. //Deciso per FABIO e DIEGO 06/11/2015
  48. double $cg_diminuito = diminuito * (100.0 - riduzione) / 100.0;
  49. stampalog(pfLogger, String.format("getCG: %f, Diminuito: %f Riduzione: %f max_perc_diminuzione_blocco %f \n",$diametro.getCg(), $cg_diminuito, riduzione, $max_perc_diminuzione_blocco));
  50.  
  51. //Aperflux_qmax è la formula per calcolare la q massima di qualsiasi regolatore pilotato
  52. double qmax = Aperflux_qmax(pfLogger,$tipofluido.getValore(), _VToD($td), _VToD($pumax), _VToD($pdmin),_VToD($pdmax), _VToD($pumin),_VToD($d),
  53. _VToD($d_fluido), $diametro.getK1(), $cg_diminuito, $diametro.getPerc_carico());
  54.  
  55. stampalog(pfLogger, " Portata normale " + qmax);
  56.  
  57. //Solo per lo Staflux Mini si deve fare una formula alternativa a quella generale
  58. if ($p.getValore().equals("Staflux Mini")) {
  59. double qmax_temp = StafluxMini_Qmax(pfLogger, _VToD($pdmin));
  60. stampalog(pfLogger, " Portata Staflux Mini con velocità 30 " + qmax_temp);
  61. if (qmax_temp < qmax) { qmax = qmax_temp; }
  62. }
  63.  
  64. if (qmax <_VToD($q)) {
  65. retract ($diametro);
  66. stampalog(pfLogger, " rimuovo il diametro "+ $diametro.getDiametro_mm());
  67. } else
  68. {
  69.  
  70. //Problema per avere il rapporto CG -> Serve fare la domanda dei blocchi prima per avere la perc_riduzione
  71. //Cg1
  72. //double $cg1_valore = Aperflux_cg(pfLogger, $tipofluido.getValore(), _VToD($td), _VToD($q), _VToD($pumax),_VToD($pdmin), _VToD($pdmax), _VToD($pumin), _VToD($d), _VToD($d_fluido), $diametro.getK1());
  73.  
  74. //double $cg1_valoreEN334 = Valore_EN334(pfLogger, $cg1_valore); //Aumento per EN334, solo per Pilotati
  75.  
  76.  
  77. //Questo è stato fatto nella regola "Diminuzione Cg per EN334"
  78. //Cg DIMINUITO (solo diminuisce per gli accessori) //perc_riduzione e la suma di riduzione di blocco, monitor e silenziatore,
  79. //ma non abbiamo il tipo di blocco ne se il cliente vuole il silenziatore
  80. //FABIO HA DECISO: dobbiamo applicare la riduzione del monitor, e prendere la % di riduzione maggiore tra i possibili blocchi (solo il Reval ha
  81. //blocchi con riduzzioni diverse (7 o 10)
  82. //double $cg_diminuito = $diametro.getCg() * (100.0 - Double.parseDouble($perc_riduzione_.getValore())) / 100.0;
  83.  
  84. //double $cg_diminuitoEN334 = Valore_EN334(pfLogger, $cg_diminuito); //Aumento per EN334, solo per Pilotati
  85.  
  86.  
  87. //RAPPORTO CG/CG1
  88. //double rapporto_cg = ($cg1_valoreEN334*100)/$cg_diminuitoEN334;
  89. //stampalog(pfLogger, String.format("rapporto_cg: %f, DN: %d\n", rapporto_cg, $diametro.getDiametro_mm().intValue()));
  90.  
  91. //OPZIONE DIAMETRO
  92. //if (rapporto_cg <= 95) {
  93. stampalog (pfLogger," creo la opzione diametroregolatore "+ $diametro.getDiametro());
  94. opzione O = new opzione();
  95. O.setNome("diametroregolatore");
  96. O.setValore( String.format("%d",$diametro.getDiametro_mm().intValue()) );
  97.  
  98. O.setEtichetta("Diametro del regolatore " + String.format("%d",$diametro.getDiametro_mm().intValue()) );
  99. insertLogical( O );
  100. //}
  101.  
  102. }
  103.  
  104. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement