/* #region fields for using in serialization - deserialization * * private List<double[]> DisplacementsValues; * private LoadCase[] DisplacementsCases; * * private LoadCase[] ForcesCases; * private List<double[]> ForcesValues; * #endregion * * * /// <summary> * /// Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo" /> with the data needed to serialize the target object. * /// </summary> * /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> to populate with data.</param> * /// <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext" />) for this serialization.</param> * /// <exception cref="System.NotImplementedException"></exception> * public virtual void GetObjectData(SerializationInfo info, StreamingContext context) * { * info.AddValue("ReleasedMap",ReleasedMap); * info.AddValue("FixedMap",FixedMap); * info.AddValue("ReversedReleasedMap",ReversedReleasedMap); * info.AddValue("ReversedFixedMap",ReversedFixedMap); * info.AddValue("settlementsLoadCase",settlementsLoadCase); * * FillArraysFromDictionary(); * * info.AddValue("DisplacementsCases", DisplacementsCases); * info.AddValue("DisplacementsValues", DisplacementsValues); * info.AddValue("ForcesCases", ForcesCases); * info.AddValue("ForcesValues", ForcesValues); * * //info.AddValue("KffCholesky", ); * //info.AddValue("KffLdl", KffLdl); * info.AddValue("Kss", Kss); * info.AddValue("Kfs", Kfs); * } * * private void FillArraysFromDictionary() * { * DisplacementsCases = new LoadCase[displacements.Count]; * DisplacementsValues = new List<double[]>(); * * var cnt = 0; * * foreach (var pair in displacements) * { * DisplacementsCases[cnt++] = pair.Key; * DisplacementsValues.Add(pair.Value); * } * * ForcesCases = new LoadCase[displacements.Count]; * ForcesValues = new List<double[]>(); * * cnt = 0; * * foreach (var pair in forces) * { * ForcesCases[cnt++] = pair.Key; * ForcesValues.Add(pair.Value); * } * } * * protected StaticLinearAnalysisResult(SerializationInfo info, StreamingContext context) * { * ReleasedMap = info.GetValue<int[]>("ReleasedMap"); * FixedMap = info.GetValue<int[]>("FixedMap"); * ReversedReleasedMap = info.GetValue<int[]>("ReversedReleasedMap"); * ReversedFixedMap = info.GetValue<int[]>("ReversedFixedMap"); * settlementsLoadCase = info.GetValue<LoadCase>("settlementsLoadCase"); * * DisplacementsCases = info.GetValue<LoadCase[]>("DisplacementsCases"); * DisplacementsValues = info.GetValue<List<double[]>>("DisplacementsValues"); * ForcesCases = info.GetValue<LoadCase[]>("ForcesCases"); * ForcesValues = info.GetValue<List<double[]>>("ForcesValues"); * * KffCholesky = info.GetValue<CSparse.Double.Factorization.SparseCholesky>("KffCholesky"); * //KffLdl = info.GetValue<CSparse.Double.Factorization.SparseLDL>("KffLdl"); * * Kss = info.GetValue<CSparse.Double.CompressedColumnStorage>("Kss"); * Kfs = info.GetValue<CSparse.Double.CompressedColumnStorage>("Kfs"); * } * * [OnDeserialized] * private void FillDictionaryFromArray(StreamingContext context) * { * displacements.Clear(); * forces.Clear(); * * for (var i = 0; i < DisplacementsValues.Count; i++) * { * displacements[DisplacementsCases[i]] = DisplacementsValues[i]; * } * * for (var i = 0; i < ForcesValues.Count; i++) * { * forces[ForcesCases[i]] = ForcesValues[i]; * } * } */ #endregion public void Clear() { Displacements.Clear(); Forces.Clear(); ElementForces.Clear(); ConcentratedForces.Clear(); SupportReactions.Clear(); }
private void LoadForces(IEAElement element) { Forces.Clear(); IEnumerable <IForceEvaluation> forces = element.TaggedValues.Where(tv => tv.Name.StartsWith(EATaggedValueKeys.ForceEvaluation)) .Select(tv => { try { return((IForceEvaluation) new ForceEvaluation(this, tv)); } catch (ForceNotInModelException) { return(null); } }).Where(tv => tv != null); foreach (IForceEvaluation force in forces) { Forces.Add(force); } }
public virtual void Update() { Vector2D displacement = N2.Position.Subtract(N1.Position); Vector2D center = N1.Position.AddScaled(displacement, 0.5); Vector2D velocity = N1.Velocity.Subtract(N2.Velocity); double projectedVelocity = velocity.Dot(displacement.Normalize()); // Follows the linear muscle model double normalizedLength = displacement.Norm / InitialLength; double forceMag = 0; if (normalizedLength > constants.MuscleNormalizedMinLength) { forceMag = (ActiveConstant * action + PassiveConstant) * (normalizedLength - constants.MuscleNormalizedMinLength); } forceMag += projectedVelocity * DampingConstant; Forces.Clear(); foreach (Node n in new Node[] { N1, N2 }) { Forces.Add(n, center.Subtract(n.Position).ScaleTo(forceMag)); } }
public override void ResetGra() { Gra = Vector2.Zero; Forces.Clear(); Speed = Vector2.Zero; }
protected override void SetGra(Vector2 value) { Forces.Clear(); Speed = Vector2.Zero; gra = ElementTools.FormatFourGra(value); }
/// <summary> /// Empties the results. /// </summary> public override void EmptyResults() { Forces?.Clear(); }
/// <summary> /// Empties the results. /// </summary> public override void EmptyResults() { Forces?.Clear(); Deformations?.Clear(); }