Example #1
0
        public Frame(FrameSection section, Node nodei, Node nodej)
            : base(nodei, nodej)
        {
            Section = section;

            Loads = new List<FrameLoad>();
        }
Example #2
0
 /// <summary>
 /// Adds a new frame to the model.
 /// </summary>
 public Frame AddFrame(FrameSection section, Node n1, Node n2)
 {
     Frame n = new Frame(section, n1, n2);
     Frames.Add(n);
     return n;
 }
Example #3
0
        /// <summary>
        /// Divides the given frame into given number of pieces.
        /// </summary>
        public void DivideFrame(Frame f, int n)
        {
            Node n1 = f.NodeI;
            Node n2 = f.NodeJ;

            double xStep = (n2.X - n1.X) / (double)n;
            double zStep = (n2.Z - n1.Z) / (double)n;

            Node[] nodes = new Node[n + 1];
            nodes[0] = n1;
            nodes[nodes.Length - 1] = n2;

            double x = n1.X + xStep;
            double z = n1.Z + zStep;
            for (int i = 0; i < n - 1; i++)
            {
                nodes[i + 1] = AddNode(x, z);
                x += xStep;
                z += zStep;
            }

            Frames.Remove(f);
            for (int i = 0; i < n; i++)
            {
                Frame newFrame = AddFrame(f.Section, nodes[i], nodes[i + 1]);
                // Transfer loads
                // Uniform loads
                foreach (FrameLoad masterLoad in f.Loads.FindAll((e) => e is FrameUniformLoad))
                {
                    FrameUniformLoad masterUniformLoad = masterLoad as FrameUniformLoad;
                    newFrame.AddUniformLoad(masterUniformLoad.AnalysisCase, masterUniformLoad.FX, masterUniformLoad.FZ);
                }
                // Trapezoidal loads
                foreach (FrameLoad masterLoad in f.Loads.FindAll((e) => e is FrameTrapezoidalLoad))
                {
                    FrameTrapezoidalLoad masterTrapezoidalLoad = masterLoad as FrameTrapezoidalLoad;
                    double mxi = masterTrapezoidalLoad.FXI;
                    double mzi = masterTrapezoidalLoad.FZI;
                    double mxj = masterTrapezoidalLoad.FXJ;
                    double mzj = masterTrapezoidalLoad.FZJ;
                    double xTotal = f.Length;
                    double xStart = newFrame.NodeI.DistanceTo(f.NodeI);
                    double xEnd = newFrame.NodeJ.DistanceTo(f.NodeI);
                    double fxi = xStart / xTotal * (mxj - mxi) + mxi;
                    double fzi = xStart / xTotal * (mzj - mzi) + mzi;
                    double fxj = xEnd / xTotal * (mxj - mxi) + mxi;
                    double fzj = xEnd / xTotal * (mzj - mzi) + mzi;
                    newFrame.AddTrapezoidalLoad(masterTrapezoidalLoad.AnalysisCase, fxi, fzi, fxj, fzj);
                }
            }
        }
Example #4
0
 /// <summary>
 /// Adds a new spring to the model.
 /// </summary>
 public Spring AddSpring(double stiffness, double shearStiffness, double rotationalStiffness, Node n1, Node n2)
 {
     Spring n = new Spring(stiffness, shearStiffness, rotationalStiffness, n1, n2);
     Springs.Add(n);
     return n;
 }
Example #5
0
 /// <summary>
 /// Adds a new node point load.
 /// </summary>
 public void AddNodePointLoad(AnalysisCase analysisCase, Node node, double fx, double fz, double my)
 {
     node.AddPointLoad(analysisCase, fx, fz, my);
 }
Example #6
0
 /// <summary>
 /// Adds a new node to the model.
 /// </summary>
 public Node AddNode(double x, double z)
 {
     Node n = new Node(x, z);
     Nodes.Add(n);
     return n;
 }
Example #7
0
 public TwoNodeElement(Node nodei, Node nodej)
 {
     NodeI = nodei;
     NodeJ = nodej;
 }
Example #8
0
 public double DistanceTo(Node n)
 {
     return (float)Math.Sqrt((X - n.X) * (X - n.X) + (Z - n.Z) * (Z - n.Z));
 }
Example #9
0
 public static double Distance(Node n1, Node n2)
 {
     return n1.DistanceTo(n2);
 }
Example #10
0
 public Spring(double axialStiffness, double shearStiffness, double rotationalStiffness, Node nodei, Node nodej)
     : base(nodei, nodej)
 {
     AxialStiffness = axialStiffness;
     RotationalStiffness = rotationalStiffness;
 }