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); }
/// <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; } }