Canguro.Analysis.LineDeformationCalculator.getCurvedAxis C# (CSharp) Method

getCurvedAxis() private method

private getCurvedAxis ( LineElement l, AbstractCase ac, DeformationAxis component, float controlPoints ) : void
l Canguro.Model.LineElement
ac Canguro.Model.Load.AbstractCase
component DeformationAxis
controlPoints float
return void
        private void getCurvedAxis(LineElement l, AbstractCase ac, DeformationAxis component, float[,] controlPoints)
        {
            Vector3 vI, vJ, mI, mJ, dI, dJ;

            vI = new Vector3(model.Results.ElementJointForces[l.Id, 0, 0],
                             model.Results.ElementJointForces[l.Id, 0, 1],
                             model.Results.ElementJointForces[l.Id, 0, 2]);

            vJ = new Vector3(model.Results.ElementJointForces[l.Id, 1, 0],
                             model.Results.ElementJointForces[l.Id, 1, 1],
                             model.Results.ElementJointForces[l.Id, 1, 2]);

            mI = new Vector3(model.Results.ElementJointForces[l.Id, 0, 3],
                             model.Results.ElementJointForces[l.Id, 0, 4],
                             model.Results.ElementJointForces[l.Id, 0, 5]);

            mJ = new Vector3(model.Results.ElementJointForces[l.Id, 1, 3],
                             model.Results.ElementJointForces[l.Id, 1, 4],
                             model.Results.ElementJointForces[l.Id, 1, 5]);

            dI = l.I.Position + new Vector3(model.Results.JointDisplacements[l.I.Id, 0],
                                            model.Results.JointDisplacements[l.I.Id, 1],
                                            model.Results.JointDisplacements[l.I.Id, 2]);

            dJ = l.J.Position + new Vector3(model.Results.JointDisplacements[l.J.Id, 0],
                                            model.Results.JointDisplacements[l.J.Id, 1],
                                            model.Results.JointDisplacements[l.J.Id, 2]);

            // Transform to the line's local coordinate system
            // From the global system
            // (WARNING: This is supposed to come in the joint's local coordinate system)
            vI = toLocal(l, vI);
            vJ = toLocal(l, vJ);

            mI = toLocal(l, mI);
            mJ = toLocal(l, mJ);

            dI = toLocal(l, dI);
            dJ = toLocal(l, dJ);

            float fI = 0f, fJ = 0f, fmI = 0f, fmJ = 0f, fdI = 0f, fdJ = 0f;
            float EI = ((StraightFrameProps)l.Properties).Section.Material.TypeProperties.E;
            float lineLength = l.Length;

            switch (component)
            {
                case DeformationAxis.Local2:
                    fI = vI.Y; fmI = -mI.Z; fdI = dI.Y;
                    fJ = vJ.Y; fmJ = -mJ.Z; fdJ = dJ.Y;

                    EI *= ((StraightFrameProps)l.Properties).Section.I33;
                    break;
                case DeformationAxis.Local3:
                    fI = vI.Z; fmI = mI.Y; fdI = dI.Z;
                    fJ = vJ.Z; fmJ = mJ.Y; fdJ = dJ.Z;

                    EI *= ((StraightFrameProps)l.Properties).Section.I22;
                    break;
            }

            addLoadDeflection(ac, l, lineLength, controlPoints, component, 1.0f, EI);
            addMomentDeflection(fmI, lineLength, controlPoints, EI, -1);
            addMomentDeflection(fmJ, lineLength, controlPoints, EI, 1);
        }