コード例 #1
0
        /*
         #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();
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
 public override void ResetGra()
 {
     Gra = Vector2.Zero;
     Forces.Clear();
     Speed = Vector2.Zero;
 }
コード例 #5
0
 protected override void SetGra(Vector2 value)
 {
     Forces.Clear();
     Speed = Vector2.Zero;
     gra   = ElementTools.FormatFourGra(value);
 }
コード例 #6
0
 /// <summary>
 /// Empties the results.
 /// </summary>
 public override void EmptyResults()
 {
     Forces?.Clear();
 }
コード例 #7
0
 /// <summary>
 /// Empties the results.
 /// </summary>
 public override void EmptyResults()
 {
     Forces?.Clear();
     Deformations?.Clear();
 }