コード例 #1
0
        public int Delete(Guid session)
        {
            int num   = 0;
            int count = 0;

            num += Cancel(session);
            num += Terminate(session);

            using (TurbineModelContainer container = new TurbineModelContainer())
            {
                Session obj = container.Sessions.First <Session>(s => s.Id == session);
                count = obj.Jobs.Count <Job>();
                foreach (var job in obj.Jobs)
                {
                    SinterProcess p = job.Process;
                    container.DeleteObject(p);
                    job.Messages.ToList().ForEach(m => container.DeleteObject(m));
                }

                obj.Jobs.ToList().ForEach(j => container.DeleteObject(j));
                container.DeleteObject(obj);
                container.SaveChanges();
            }
            return(count);
        }
コード例 #2
0
 void SetInput(string data)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         entity.Input = data;
         container.SaveChanges();
     }
 }
コード例 #3
0
 //Sets the dir in the function to MyDocs, but doesn't actually chdir
 void SetWorkingDirectory(string path)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         entity.WorkingDir = path;
         container.SaveChanges();
     }
 }
コード例 #4
0
 public void SetStatus(int status)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         entity.Status = status;
         container.SaveChanges();
     }
 }
コード例 #5
0
 public static IProcess Get(Guid id)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         return(new SinterProcessContract()
         {
             id = id
         });
     }
 }
コード例 #6
0
        static int Main(string[] args)
        {
            var options = new Options();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return(4);
            }

            if (options.Args.Count != 3)
            {
                Console.Write(options.GetUsage());
                return(5);
            }

            String sinterconf  = options.Args[0];
            String infilename  = options.Args[1];
            String outfilename = options.Args[2];

            String workingDir      = Path.GetDirectoryName(sinterconf);
            String filenameBase    = Path.GetFileNameWithoutExtension(sinterconf);
            String performanceFile = Path.Combine(workingDir, filenameBase + "._time.txt");

            JArray inputsArray  = parseCSVInputs(infilename);
            JArray outputsArray = new JArray();

            List <sinter_AppError> runStatuses    = null;
            List <List <object> >  ts_byRunNumber = null;

            SinterProcess sp = new SinterProcess();

            sp.runSeries(sinterconf, null, inputsArray, options.Relaunch, options.Timelimit, ref outputsArray, ref runStatuses, ref ts_byRunNumber);

            writeOutCsv(outfilename, outputsArray);

            CsvFileWriter csvWriter    = new CsvFileWriter(performanceFile);
            string        headerString = "Open Time, Sinter Sent Time, Send Time, Run Time, Receive Time, Sinter Recieve Time";

            csvWriter.WriteLine(headerString);

            for (int ii = 0; ii < inputsArray.Count; ++ii)
            {
                csvWriter.WriteRow((List <object>)ts_byRunNumber[ii]);
            }
            csvWriter.Close();

            Console.WriteLine("FINISHED. PRESS ENTER KEY TO EXIT PROGRAM.");
            Console.ReadLine();
            return(0);
        }
コード例 #7
0
ファイル: UnitsTest.cs プロジェクト: ksbeattie/SimSinter
        public void UnitTest1()
        {
            String sinterconf = Properties.Settings.Default.UnitsTestSinter;
            String infilename = Properties.Settings.Default.UnitsTestInputs;
            String workingDir = Properties.Settings.Default.UnitsWorkingDir;

            StreamReader inStream           = new StreamReader(infilename);
            StreamReader sinterConfigStream = new StreamReader(sinterconf);

            string inString           = inStream.ReadToEnd();
            string sinterConfigString = sinterConfigStream.ReadToEnd();

            inStream.Close();
            sinterConfigStream.Close();

            JArray injson  = (JArray)JToken.Parse(inString);
            JArray outjson = new JArray();
            List <sinter_AppError> runStatuses    = null;
            List <List <object> >  ts_byRunNumber = null;
            SinterProcess          sp             = new SinterProcess();

            sp.runSeries(sinterconf, null, injson, false, -1, ref outjson, ref runStatuses, ref ts_byRunNumber);

            Assert.IsTrue(runStatuses[0] == sinter_AppError.si_OKAY);

            //Verify the inputs
            Assert.IsTrue(212.0 == (double)outjson[0]["inputs"]["in.boil.celsius"]["value"]);
            Assert.IsTrue("degF" == (string)outjson[0]["inputs"]["in.boil.celsius"]["units"]);
            Assert.IsTrue(100.0 == (double)outjson[0]["inputs"]["in.boil.fahrenheit"]["value"]);
            Assert.IsTrue("degC" == (string)outjson[0]["inputs"]["in.boil.fahrenheit"]["units"]);
            Assert.IsTrue(-273.15 == (double)outjson[0]["inputs"]["in.misc.kelvin"]["value"][0]);
            Assert.IsTrue("degC" == (string)outjson[0]["inputs"]["in.misc.kelvin"]["units"]);

            //Verify the outputs
            Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(100.0, (double)outjson[0]["outputs"]["out.boil.celsius"]["value"], .00001));
            Assert.IsTrue("degC" == (string)outjson[0]["outputs"]["out.boil.celsius"]["units"]);
            Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(212.0, (double)outjson[0]["outputs"]["out.boil.fahrenheit"]["value"], .00001));
            Assert.IsTrue("degF" == (string)outjson[0]["outputs"]["out.boil.fahrenheit"]["units"]);
            Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(0, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][0], .00001));
            Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(273.15, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][1], .00001));
            Assert.IsTrue(sinter_HelperFunctions.fuzzyEquals(373.15, (double)outjson[0]["outputs"]["out.misc.kelvin"]["value"][2], .00001));
            Assert.IsTrue("K" == (string)outjson[0]["outputs"]["out.misc.kelvin"]["units"]);
        }
コード例 #8
0
 public void AddStderr(string data)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         byte[]        stdout = entity.Stderr;
         if (stdout == null)
         {
             entity.Stderr = System.Text.Encoding.ASCII.GetBytes(data);
         }
         else
         {
             List <byte> list = new List <byte>(entity.Stderr);
             list.AddRange(System.Text.Encoding.ASCII.GetBytes(data));
             entity.Stderr = list.ToArray <byte>();
         }
         container.SaveChanges();
     }
 }
コード例 #9
0
        public static IProcess New(int jobid)
        {
            Guid id = Guid.Empty;

            using (TurbineModelContainer container = new TurbineModelContainer())
            {
                SinterProcess entity = new SinterProcess()
                {
                };
                entity.Job = container.Jobs.Single <Job>(s => s.Id == jobid);
                container.SinterProcesses.AddObject(entity);
                id = entity.Id;
                container.SaveChanges();
            }
            return(new SinterProcessContract()
            {
                id = id
            });
        }
コード例 #10
0
 public void AddStreamError(Dictionary <string, List <string> > dictionary)
 {
     using (TurbineModelContainer container = new TurbineModelContainer())
     {
         SinterProcess entity = container.SinterProcesses.Single <SinterProcess>(s => s.Id == id);
         ProcessError  error;
         foreach (KeyValuePair <String, List <String> > entry in dictionary)
         {
             foreach (String msg in entry.Value)
             {
                 error       = new ProcessError();
                 error.Type  = "stream";
                 error.Name  = entry.Key;
                 error.Error = msg;
                 entity.Errors.Add(error);
             }
         }
         container.SaveChanges();
     }
 }
コード例 #11
0
        public static IProcess New(int jobid)
        {
            using (NHibernate.ISession session = SessionFactory.OpenSession())
            {
                using (NHibernate.ITransaction trans = session.BeginTransaction())
                {
                    var job = session
                              .CreateCriteria <Job>().Add(Restrictions.Eq("Id", jobid))
                              .UniqueResult <Job>();

                    var process = new SinterProcess()
                    {
                        job = job
                    };
                    session.Save(process);
                    trans.Commit();
                    return(new SinterProcessContract()
                    {
                        id = process.Id
                    });
                }
            }
        }
コード例 #12
0
ファイル: ConsoleSinter.cs プロジェクト: ksbeattie/SimSinter
        /// <summary>
        /// Main
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        static int Main(string[] args)
        {
            var options = new Options();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return(4);
            }

            if (options.Args.Count != 3)
            {
                Console.Write(options.GetUsage());
                return(5);
            }

            String sinterconf  = options.Args[0];
            String infilename  = options.Args[1];
            String outfilename = options.Args[2];

            String workingDir      = Path.GetDirectoryName(sinterconf);
            String filenameBase    = Path.GetFileNameWithoutExtension(sinterconf);
            String performanceFile = Path.Combine(workingDir, filenameBase + "._time.txt");

            StreamReader inStream = new StreamReader(infilename);

            //So, at the end of this we should have 1 or more input sets in the JArray inputsArray
            //The console version reads in json, the actual version just pulls the dictionary from the database
            string injson       = "";
            JToken inputJToken  = null;
            JArray inputsArray  = null; //Will be set if the input file is a set of runs
            JArray outputsArray = new JArray();

            try
            {
                injson      = inStream.ReadToEnd();
                inputJToken = JToken.Parse(injson);
                if (inputJToken is JArray)
                {
                    inputsArray = (JArray)inputJToken;
                }
                else if (inputJToken is JObject)
                {   //Console Sinter is expecting a JArray in the same format as the Gateway takes.  [ { Input = {...} }, { { Inputs = {...} } ]
                    inputsArray = new JArray();
                    JObject singleInputDict = (JObject)inputJToken;
                    JObject outterDict      = new JObject();
                    outterDict.Add("inputs", singleInputDict);
                    inputsArray.Add(outterDict);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception while running simulation: " + ex.Message);
            }
            finally
            {
                inStream.Close();
            }


            List <sinter_AppError> runStatuses    = null;
            List <List <object> >  ts_byRunNumber = null;

            //
            // NOTE: Implementation Detail WORKING DIRECTORY MUST CONTAIN SinterConfig File
            //
            SinterProcess sp = new SinterProcess();

            sp.runSeries(sinterconf, null, inputsArray,
                         options.Relaunch, options.Timelimit, ref outputsArray, ref runStatuses, ref ts_byRunNumber);

            JsonSerializerSettings jss = new JsonSerializerSettings();

            jss.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            string       jsonOutput = JsonConvert.SerializeObject(outputsArray, Formatting.Indented, jss);
            StreamWriter outStream  = new StreamWriter(outfilename);

            outStream.WriteLine(jsonOutput);
            outStream.Close();

            CsvFileWriter csvWriter    = new CsvFileWriter(performanceFile);
            string        headerString = "Open Time, Sinter Sent Time, Send Time, Run Time, Receive Time, Sinter Recieve Time";

            csvWriter.WriteLine(headerString);

            for (int ii = 0; ii < inputsArray.Count; ++ii)
            {
                csvWriter.WriteRow((List <object>)ts_byRunNumber[ii]);
            }
            csvWriter.Close();

            Console.WriteLine("FINISHED. PRESS ENTER KEY TO EXIT PROGRAM.");
            Console.ReadLine();
            return(0);
        }
コード例 #13
0
        //[ClassInitialize()]
        public static void ClassInit(TestContext context)
        {
            using (TurbineModelContainer container = new TurbineModelContainer())
            {
                foreach (User obj in container.Users)
                {
                    container.Users.DeleteObject(obj);
                }
                foreach (Simulation obj in container.Simulations)
                {
                    container.Simulations.DeleteObject(obj);
                }
                foreach (Job obj in container.Jobs)
                {
                    container.Jobs.DeleteObject(obj);
                }
                foreach (AspenProcessError obj in container.AspenProcessErrors)
                {
                    container.AspenProcessErrors.DeleteObject(obj);
                }
                foreach (SinterProcess obj in container.SinterProcesses)
                {
                    container.SinterProcesses.DeleteObject(obj);
                }
                foreach (Consumer obj in container.Consumers)
                {
                    container.Consumers.DeleteObject(obj);
                }
                foreach (Session obj in container.Sessions)
                {
                    container.Sessions.DeleteObject(obj);
                }
                foreach (Message obj in container.Messages)
                {
                    container.Messages.DeleteObject(obj);
                }
                container.SaveChanges();

                byte[] bt = System.Text.Encoding.ASCII.GetBytes(
                    File.ReadAllText(simulationBackupFile)
                    );
                byte[] cb = System.Text.Encoding.ASCII.GetBytes(
                    File.ReadAllText(simulationConfigFile)
                    );

                simulationBackupMD5 = GetMd5Hash(bt);
                simulationConfigMD5 = GetMd5Hash(cb);

                var jsonDefaults = @"{""P_abs_top"":15.0,""abs_ht_wash"":5.0,""abs_ht_mid"":10.7,""abs_ic_dT"":-11.3,""P_sol_pump"":30.0,""lean_load"":0.178,""P_regen_top"":21.2,""cond_T_regen"":121.0,""ht_regen"":13.0,""slv_cool_01"":130.0,""lr_rich_T"":207.0,""input_s[0,0]"":134.4,""input_s[0,1]"":16.0,""input_s[0,2]"":959553.0,""input_s[0,3]"":0.071,""input_s[0,4]"":0.0,""input_s[0,5]"":0.0,""input_s[0,6]"":0.211,""input_s[0,7]"":0.0,""input_s[0,8]"":0.0,""input_s[0,9]"":0.0,""input_s[0,10]"":0.0,""input_s[0,11]"":0.0,""input_s[0,12]"":0.0,""input_s[0,13]"":0.0,""input_s[0,14]"":0.0,""input_s[0,15]"":0.718,""input_s[1,0]"":126.0,""input_s[1,1]"":30.0,""input_s[1,2]"":4319500.4116,""input_s[1,3]"":0.66207726067,""input_s[1,4]"":0.28374739743,""input_s[1,5]"":0.0,""input_s[1,6]"":0.0541753419,""input_s[1,7]"":0.0,""input_s[1,8]"":0.0,""input_s[1,9]"":0.0,""input_s[1,10]"":0.0,""input_s[1,11]"":0.0,""input_s[1,12]"":0.0,""input_s[1,13]"":0.0,""input_s[1,14]"":0.0,""input_s[1,15]"":0.0,""input_s[2,0]"":120.0,""input_s[2,1]"":30.0,""input_s[2,2]"":10000.0,""input_s[2,3]"":1.0,""input_s[2,4]"":0.0,""input_s[2,5]"":0.0,""input_s[2,6]"":0.0,""input_s[2,7]"":0.0,""input_s[2,8]"":0.0,""input_s[2,9]"":0.0,""input_s[2,10]"":0.0,""input_s[2,11]"":0.0,""input_s[2,12]"":0.0,""input_s[2,13]"":0.0,""input_s[2,14]"":0.0,""input_s[2,15]"":0.0,""eq_par[0,0]"":0.7996,""eq_par[0,1]"":-8094.81,""eq_par[0,2]"":0.0,""eq_par[0,3]"":-0.007484,""eq_par[1,0]"":98.566,""eq_par[1,1]"":1353.8,""eq_par[1,2]"":-14.3043,""eq_par[1,3]"":0.0,""eq_par[2,0]"":216.049,""eq_par[2,1]"":-12431.7,""eq_par[2,2]"":-35.4819,""eq_par[2,3]"":0.0,""eq_par[3,0]"":1.282562,""eq_par[3,1]"":-3456.179,""eq_par[3,2]"":0.0,""eq_par[3,3]"":0.0,""eq_par[4,0]"":132.899,""eq_par[4,1]"":-13445.9,""eq_par[4,2]"":-22.4773,""eq_par[4,3]"":0.0}";
                System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
                Byte[] defaultBytes = encoding.GetBytes(jsonDefaults);

                User          u       = null;
                Simulation    s       = null;
                Job           job     = null;
                SinterProcess p       = null;
                Session       session = null;

                //var consumer = new JobConsumer();
                //consumer.guid = Guid.NewGuid();
                //consumer.hostname = "test.host";
                //container.Consumers.AddObject(consumer);
                //container.SaveChanges();

                IConsumerRegistrationContract reg = new ConsumerRegistrationContract();
                reg.Register();

                IConsumerContext ctx = AppUtility.GetConsumerContext();

                JobConsumer consumer = (JobConsumer)container.Consumers.First <Consumer>(r => r.guid == ctx.Id);

                for (int i = 1; i < 11; i++)
                {
                    Debug.WriteLine("{0}", i);
                    u = new User()
                    {
                        Name = "test" + i, Token = "qwerty"
                    };
                    container.Users.AddObject(u);
                    s = new Simulation()
                    {
                        Name          = "testSim" + i,
                        Backup        = bt,
                        Configuration = cb,
                        Defaults      = defaultBytes,
                        User          = u
                    };
                    session = new Session();
                    var guid = Guid.NewGuid();
                    Debug.WriteLine("GUID: " + guid);
                    session.guid   = guid;
                    session.Create = DateTime.UtcNow;
                    session.User   = u;
                    container.Sessions.AddObject(session);

                    p   = new SinterProcess();
                    job = new Job()
                    {
                        State       = "create",
                        Create      = DateTime.UtcNow,
                        Simulation  = s,
                        User        = u,
                        Process     = p,
                        Session     = session,
                        JobConsumer = consumer
                    };
                    var msg = new Message();
                    msg.Value = "test harness";
                    job.Messages.Add(msg);

                    for (int j = 1; j < 4; j++)
                    {
                        p.Errors.Add(new AspenProcessError()
                        {
                            Name  = String.Format("Block{0}{1}", i, j),
                            Type  = "block",
                            Error = "TEST" + i
                        });
                    }
                }
                container.SaveChanges();
            }
        }