Пример #1
0
        public bool renameTransientAnalysis(String name, String newname)
        {
            if (TransAnalysisGroup.ContainsKey(newname))
            {
                log.Error(newname + " already exists");
                return(false);
            }

            if (TransAnalysisGroup.ContainsKey(name))
            {
                AbstractTransientAnalyser ta = TransAnalysisGroup[name];
                TransAnalysisGroup.Remove(name);
                ta.renameMe(newname);
                TransAnalysisGroup.Add(newname, ta);

                // refresh components
                RefreshComponents();
                ComponentsToNewParams();
                refreshAnalysisResults();
                OnMotorAnalysisResultsUpdate(this, null);//changed results (transient list)
                return(true);
            }

            return(false);
        }
Пример #2
0
        //public event EventHandler<TransientResults> OnFinishTransientAnalysis = new EventHandler<TransientResults>(delegate(object sender, TransientResults r) { });

        public bool addTransientAnalysis(String name = "Transient\\sample")
        {
            //rename until no more collision
            String origin = name;
            int    k      = 1;

            while (TransAnalysisGroup.ContainsKey(name))
            {
                name = String.Format("{0}({1})", origin, k);
                k++;
            }

            // add new one
            AbstractTransientAnalyser ta = GetDefaultTransientAnalyser();

            ta.Motor        = Motor;
            ta.AnalysisName = name;
            TransAnalysisGroup.Add(name, ta);

            // refresh components
            RefreshComponents();
            ComponentsToNewParams();
            refreshAnalysisResults();
            OnMotorAnalysisResultsUpdate(this, null);//changed results (transient list)
            return(true);
        }
Пример #3
0
        /// <summary>
        /// create a sample motor
        /// </summary>
        private void createNewSampleProject(Type motorType)
        {
            // sample motor
            Motor = GetSampleMotor(motorType);
            // get analyser attached to motor
            staticAnalyser     = Motor.GetStaticAnalyser();
            analyticalAnalyser = Motor.GetAnalyticalAnalyser();
            // sample analysis config
            TransAnalysisGroup = new Dictionary <String, AbstractTransientAnalyser>();
            AbstractTransientAnalyser ta_sample = GetDefaultTransientAnalyser();

            TransAnalysisGroup.Add(ta_sample.AnalysisName, ta_sample);

            mmAnalyser        = GetDefaultMMAnalyser();
            dqcurrentAnalyser = GetDefaultDQCurrentAnalyser();

            pSweeper = new ParamSweeper();
        }
Пример #4
0
        public bool removeTransientAnalysis(String name)
        {
            if (TransAnalysisGroup.ContainsKey(name))
            {
                AbstractTransientAnalyser ta = TransAnalysisGroup[name];
                ta.removeMe();
                TransAnalysisGroup.Remove(name);

                // refresh components
                RefreshComponents();
                ComponentsToNewParams();
                refreshAnalysisResults();
                OnMotorAnalysisResultsUpdate(this, null);//changed results (transient list)
                return(true);
            }

            return(false);
        }
Пример #5
0
        public AbstractTransientAnalyser GetDefaultTransientAnalyser()
        {
            // let it throw exception if not existed key
            Type transType = TypeForTransientAnalyser[CurrentMotorType];

            MethodInfo mi = transType.GetMethod("GetSampleMe");

            if (mi == null)
            {
                throw new NotImplementedException("public static AbstractTransientAnalyser GetSampleMe() method is not implemented in " + transType.Name);
            }

            AbstractTransientAnalyser ta = mi.Invoke(null, new object[] { Motor }) as AbstractTransientAnalyser;

            if (ta == null)
            {
                throw new NotImplementedException("public static AbstractTransientAnalyser GetSampleMe() method returns wrong type (" + transType.Name + ")");
            }

            return(ta);
        }
 public PMTransientResults(AbstractTransientAnalyser analyser)
     : base(analyser)
 {
 }
Пример #7
0
        /// <summary>
        /// Open existed project
        /// </summary>
        /// <param name="fn"></param>
        /// <returns></returns>
        public bool openProject(String fn)
        {
            // read params from file
            using (StreamReader sr = new StreamReader(fn))
            {
                //String str = sr.ReadToEnd();
                var        dict    = JSON.Parse(sr.ReadToEnd()) as Dictionary <string, object>;
                JsonObject jsonAll = dict;

                JsonObject joDatatype = (JsonObject)jsonAll[JSONNAME_DATATYPE];
                JsonObject joData     = (JsonObject)jsonAll[JSONNAME_DATA];

                // motor
                Type motortype = Type.GetType(joDatatype[JSONNAME_MOTOR].ToString());
                if (motortype != null)
                {
                    string str = JSON.ToJSON(joData[JSONNAME_MOTOR]);
                    Motor = JSON.ToObject(str, motortype) as AbstractMotor;
                }
                else
                {
                    log.Error("Cannot load motor as " + joDatatype[JSONNAME_MOTOR].ToString());
                    Motor = GetSampleMotor(DefaultMotorType);
                }

                // transient
                TransAnalysisGroup = new Dictionary <String, AbstractTransientAnalyser>();
                Type taType = Type.GetType(joDatatype[JSONNAME_TRANSIENTANALYSERS].ToString());
                if (taType != null)
                {
                    var TransAnalysers = JSON.Parse(JSON.ToJSON(joData[JSONNAME_TRANSIENTANALYSERS])) as IDictionary <string, object>;
                    foreach (string ta_name in TransAnalysers.Keys)
                    {
                        var ta_value = TransAnalysers[ta_name];
                        AbstractTransientAnalyser ta = (AbstractTransientAnalyser)JSON.ToObject(JSON.ToJSON(ta_value), taType);
                        TransAnalysisGroup.Add(ta_name.ToString(), ta);
                    }
                }
                else //type not match, just get a default one
                {
                    log.Error("Cannot load transient analyser as " + joDatatype[JSONNAME_TRANSIENTANALYSERS].ToString());
                    AbstractTransientAnalyser ta_sample = GetDefaultTransientAnalyser();
                    TransAnalysisGroup.Add(ta_sample.AnalysisName, ta_sample);
                }

                // mm
                Type mmatype = Type.GetType(joDatatype[JSONNAME_MMANALYSERS].ToString());
                if (mmatype != null)
                {
                    mmAnalyser = (AbstractMMAnalyser)JSON.ToObject(JSON.ToJSON(joData[JSONNAME_MMANALYSERS]), mmatype);
                }
                else
                {
                    log.Error("Cannot load mm analyser as " + joDatatype[JSONNAME_MMANALYSERS].ToString());
                    mmAnalyser = GetDefaultMMAnalyser();
                }

                // dqa
                Type dqatype = joDatatype.ContainsKey(JSONNAME_DQCURRENTANALYSER) ? Type.GetType(joDatatype[JSONNAME_DQCURRENTANALYSER].ToString()) : null;
                if (dqatype != null)
                {
                    dqcurrentAnalyser = (PM_DQCurrentAnalyser)JSON.ToObject(JSON.ToJSON(joData[JSONNAME_DQCURRENTANALYSER]), dqatype);
                }
                else
                {
                    log.Error("Cannot load dq current analyser");
                    dqcurrentAnalyser = GetDefaultDQCurrentAnalyser();
                }

                // finished load params to a parameterscollection
                log.Info("Loaded params from " + fn + ".");

                // assign new name
                CurrentProjectFile = fn;
            }

            // refresh components since references to those before open new file are expired
            RefreshComponents();

            // from components make params (save/load with components)
            ComponentsToNewParams();

            // calculate gmc, show error
            validateMotor();

            // new sweeper
            pSweeper = new ParamSweeper();

            // try load analysis results from disk
            loadResultsFromDisk();

            // update UI
            refreshAnalysisResults();
            OnMotorAnalysisResultsUpdate(this, null);

            return(true);
        }