Example #1
0
        private MechanicalAggregateEquation GetEquation(AggregableWrapper agg)
        {
            if (mechanicalEquationsNew.ContainsKey(agg))
            {
                MechanicalAggregateEquation equ = mechanicalEquationsNew[agg];
                return(equ);
            }
            if (mechanicalEquationsOld.ContainsKey(agg))
            {
                MechanicalAggregateEquation equ = mechanicalEquationsOld[agg];
                mechanicalEquationsNew[agg] = equ;
                return(equ);
            }
            MechanicalAggregateEquation eq = MechanicalAggregateEquation.CreateAggregateEquation(agg);

            mechanicalEquationsNew[agg] = eq;
            return(eq);
        }
Example #2
0
        /// <summary>
        /// Prepares itself
        /// </summary>
        protected override void Prepare()
        {
            base.Prepare();
            mechanicalEquationsNew = new Dictionary <AggregableWrapper, MechanicalAggregateEquation>();
            IDifferentialEquationProcessor p =
                DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor.Processor;
            List <IDifferentialEquationSolver> lds = new List <IDifferentialEquationSolver>();
            IEnumerable <object> oll = collection.AllComponents;

            if (p != null)
            {
                MechanicalAggregateEquation.GetSolvers(mechanicalEquationsNew, oll);
                List <IDifferentialEquationSolver> ss =
                    new List <IDifferentialEquationSolver>();
                foreach (MechanicalAggregateEquation wr in mechanicalEquationsNew.Values)
                {
                    ss.Add(wr);
                }
                lds.AddRange(ss);
            }
            foreach (MechanicalAggregateEquation eq in lds)
            {
                eq.Reset();
            }
            base.Prepare();
            if (p != null)
            {
                p.AddRange(lds);
            }
            mechanicalEquationsOld = mechanicalEquationsNew;
            p.UpdateDimension();
            IDesktop d = collection.Desktop;

            frames = ReferenceFrameArrow.Prepare(d);
            if (frames.Count == 0)
            {
                updateInternal = base.UpdateAll;
            }
            else
            {
                updateInternal = UpdateWithFrames;
            }
        }