Esempio n. 1
0
        public bool ApliciratiJednacinuStanja()
        {
            if (MozeApliciratiJednacinuStanja)
            {
                var jednacine = GetJednacineStanja();

                var trebaNaci = Stanje.First(x => !x.Value.HasValue);

                var konkretnaJednacina = new Expression(jednacine[trebaNaci.Key]);

                Stanje.Where(x => x.Value != null).ToList().ForEach(s =>
                {
                    konkretnaJednacina.addConstants(new Constant(s.Key, s.Value.Value));
                });

                konkretnaJednacina.addConstants(new Constant("R", this.R));

                var rezultat = konkretnaJednacina.calculate();

                if (!double.IsNaN(rezultat))
                {
                    this.Stanje[trebaNaci.Key] = rezultat;
                }

                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        public bool ProveriSledeceStanje()
        {
            if (this.ProcesKojiVodiDalje == TipProcesa.Izoenotropski)
            {
                var sveJednacine = GetIzenotropskeJednacine();

                foreach (var jednacine in sveJednacine)
                {
                    var vrednostiKojeTrebaNaci =
                        Stanje.Where(x => !x.Value.HasValue || double.IsNaN(x.Value.Value)).ToList();

                    foreach (var vrednostKojuTrebaNaci in vrednostiKojeTrebaNaci)
                    {
                        if (!jednacine.Keys.Contains(vrednostKojuTrebaNaci.Key + "1"))
                        {
                            continue;
                        }

                        var konkretnaJednacina = new Expression(jednacine[vrednostKojuTrebaNaci.Key + "1"]);

                        Stanje.Where(x => x.Value != null).ToList().ForEach(s =>
                        {
                            konkretnaJednacina.addConstants(new Constant(s.Key + "1", s.Value.Value));
                        });

                        Sledeca.Stanje.Where(x => x.Value != null).ToList().ForEach(s =>
                        {
                            konkretnaJednacina.addConstants(new Constant(s.Key + "2", s.Value.Value));
                        });

                        DodajKonstante(konkretnaJednacina);

                        var rezultat = konkretnaJednacina.calculate();

                        if (!double.IsNaN(rezultat))
                        {
                            this.Stanje[vrednostKojuTrebaNaci.Key] = rezultat;
                        }
                    }
                }
            }

            if (this.ProcesKojiVodiDalje == TipProcesa.Izotermski)
            {
                var vrednostiKojeTrebaNaci = Stanje.Where(x => !x.Value.HasValue).ToList();

                foreach (var trebaNaci in vrednostiKojeTrebaNaci)
                {
                    if ((new string[] { "p", "v" }).Contains(trebaNaci.Key))
                    {
                        var jednacine = GetIzotermskeJednacine();

                        var konkretnaJednacina = new Expression(jednacine[trebaNaci.Key]);

                        Stanje.Where(x => x.Value != null).ToList().ForEach(s =>
                        {
                            konkretnaJednacina.addConstants(new Constant(s.Key + "1", s.Value.Value));
                        });

                        Sledeca.Stanje.Where(x => x.Value != null).ToList().ForEach(s =>
                        {
                            konkretnaJednacina.addConstants(new Constant(s.Key + "2", s.Value.Value));
                        });

                        DodajKonstante(konkretnaJednacina);

                        var rezultat = konkretnaJednacina.calculate();

                        if (!double.IsNaN(rezultat))
                        {
                            this.Stanje[trebaNaci.Key] = rezultat;
                        }
                    }
                }
            }

            return(false);
        }