Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pilotati;
- rule "Rimuovi diametri in base a q"
- dialect "java"
- when
- $p: variabile( nome == "prodotto")
- $tipofluido: variabile (nome=="tipofluido")
- $td: variabile (nome=="td")
- $pumax: variabile (nome=="pumax")
- $pdmin: variabile (nome=="pdmin")
- $pdmax: variabile (nome=="pdmax")
- $pumin: variabile (nome=="pumin")
- $d: variabile (nome=="d")
- $d_fluido: variabile(nome=="d_fluido")
- $q: variabile (nome=="qcliente")
- $perc_riduzione_: variabile_interna (nome=="perc_diminuzione")
- $diametro: diametri( )
- not( accessorio(tipo == "blocco") )
- $conblocco: variabile(nome=="conblocco")
- not variabile(nome=="diametroregolatore")
- //variabile che serve per verificare solo un diametro per la linea di riduzione
- not variabile(nome=="diametroimpostato")
- then
- Double $max_perc_diminuzione_blocco = 0.0;
- //Diminuzione EN334
- Double diminuito = $diametro.getCg()*0.97361;
- stampalog(pfLogger, String.format("Diminuzione Cg per EN334 di %.2f a %.2f \n", $diametro.getCg(), diminuito));
- //Verifichiamo che ha trovato un valore per la percentuale
- if(Math.abs($max_perc_diminuzione_blocco) > 1000) {
- $max_perc_diminuzione_blocco = 0.0;
- }
- //Calcolo riduzione (stimata NON PRECISA nel caso del blocco)
- double riduzione = 0;
- if ($conblocco.getValore()=="true") {
- riduzione = _V_I_ToD($perc_riduzione_) + $max_perc_diminuzione_blocco;
- //stampalog(pfLogger, String.format("$max_perc_diminuzione_blocco: %f \n",$max_perc_diminuzione_blocco));
- } else {
- riduzione = _V_I_ToD($perc_riduzione_);
- }
- //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à)
- //Come ancora non sappiamo se ci sarà il silenziatore, verrà gestito nella domanda dei formatitubi
- //Deciso per FABIO e DIEGO 06/11/2015
- double $cg_diminuito = diminuito * (100.0 - riduzione) / 100.0;
- 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));
- //Aperflux_qmax è la formula per calcolare la q massima di qualsiasi regolatore pilotato
- double qmax = Aperflux_qmax(pfLogger,$tipofluido.getValore(), _VToD($td), _VToD($pumax), _VToD($pdmin),_VToD($pdmax), _VToD($pumin),_VToD($d),
- _VToD($d_fluido), $diametro.getK1(), $cg_diminuito, $diametro.getPerc_carico());
- stampalog(pfLogger, " Portata normale " + qmax);
- //Solo per lo Staflux Mini si deve fare una formula alternativa a quella generale
- if ($p.getValore().equals("Staflux Mini")) {
- double qmax_temp = StafluxMini_Qmax(pfLogger, _VToD($pdmin));
- stampalog(pfLogger, " Portata Staflux Mini con velocità 30 " + qmax_temp);
- if (qmax_temp < qmax) { qmax = qmax_temp; }
- }
- if (qmax <_VToD($q)) {
- retract ($diametro);
- stampalog(pfLogger, " rimuovo il diametro "+ $diametro.getDiametro_mm());
- } else
- {
- //Problema per avere il rapporto CG -> Serve fare la domanda dei blocchi prima per avere la perc_riduzione
- //Cg1
- //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());
- //double $cg1_valoreEN334 = Valore_EN334(pfLogger, $cg1_valore); //Aumento per EN334, solo per Pilotati
- //Questo è stato fatto nella regola "Diminuzione Cg per EN334"
- //Cg DIMINUITO (solo diminuisce per gli accessori) //perc_riduzione e la suma di riduzione di blocco, monitor e silenziatore,
- //ma non abbiamo il tipo di blocco ne se il cliente vuole il silenziatore
- //FABIO HA DECISO: dobbiamo applicare la riduzione del monitor, e prendere la % di riduzione maggiore tra i possibili blocchi (solo il Reval ha
- //blocchi con riduzzioni diverse (7 o 10)
- //double $cg_diminuito = $diametro.getCg() * (100.0 - Double.parseDouble($perc_riduzione_.getValore())) / 100.0;
- //double $cg_diminuitoEN334 = Valore_EN334(pfLogger, $cg_diminuito); //Aumento per EN334, solo per Pilotati
- //RAPPORTO CG/CG1
- //double rapporto_cg = ($cg1_valoreEN334*100)/$cg_diminuitoEN334;
- //stampalog(pfLogger, String.format("rapporto_cg: %f, DN: %d\n", rapporto_cg, $diametro.getDiametro_mm().intValue()));
- //OPZIONE DIAMETRO
- //if (rapporto_cg <= 95) {
- stampalog (pfLogger," creo la opzione diametroregolatore "+ $diametro.getDiametro());
- opzione O = new opzione();
- O.setNome("diametroregolatore");
- O.setValore( String.format("%d",$diametro.getDiametro_mm().intValue()) );
- O.setEtichetta("Diametro del regolatore " + String.format("%d",$diametro.getDiametro_mm().intValue()) );
- insertLogical( O );
- //}
- }
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement