Esempio n. 1
0
        private Dictionary <string, ShearWallPanelRigidAnalysisParameters> DetermineAllWallStiffnessParametersSansOffset()
        {
            var stiffnesses = new Dictionary <string, ShearWallPanelRigidAnalysisParameters>();

            foreach (AnalyticalWallLateral wall in Walls)
            {
                ShearWallPanelRigidAnalysisParameters stiffnessParameters = DetermineWallStiffnessParametersSansOffset(wall);

                stiffnesses.Add(wall.UniqueId, stiffnessParameters);
            }

            return(stiffnesses);
        }
Esempio n. 2
0
        private ShearWallPanelResponseCollection DetermineWallLoadPatternResponses(AnalyticalWallLateral wall)
        {
            ShearWallPanelRigidAnalysisParameters wallStiffness = WallStiffnesses[wall.UniqueId];

            var responses = new ShearWallPanelResponseCollection(wall.UniqueId, wall.WallLine);

            foreach (LateralLevelForce force in Forces)
            {
                responses.Add(DetermineWallResponse(wall, wallStiffness, force));
            }

            return(responses);
        }
        public static Table GenerateShearWallForceStiffnessTable(RigidAnalysis analysis)
        {
            var table = new Table("Rigid Analysis Wall Force Determination");

            table.AddColumn("level", ColumnDataType.Text);
            table.AddColumn("load_category", ColumnDataType.Text);
            table.AddColumn("load_case", ColumnDataType.Text);
            table.AddColumn("wall_panel", ColumnDataType.Text);
            table.AddColumn("R", ColumnDataType.Number, "R (k/in)", 1);
            table.AddColumn("d", ColumnDataType.Number, "d (in)", 1);
            table.AddColumn("Rd", ColumnDataType.Number, "$R d$ (k-ft/in)", 0);
            table.AddColumn("Rd2", ColumnDataType.Number, "$R d^2$ (k-ft^2/in)", 0);
            table.AddColumn("direct_force", ColumnDataType.Number, "Direct Force $F_v$ (lb)", 0);
            table.AddColumn("torsional_force", ColumnDataType.Number, "Torsional Force $F_t$ (lb)", 0);
            table.AddColumn("total_force", ColumnDataType.Number, "Total Force $F_v + F_t$ (lb)", 0);

            table.SetExpression("Rd", "R * d");
            table.SetExpression("Rd2", "R * d * d");
            table.SetExpression("total_force", "direct_force + torsional_force");

            table.SortByColumns("load_case", SortOrder.Ascending, "level", SortOrder.Descending, "wall_panel",
                                SortOrder.Ascending);

            foreach (AnalyticalWallLateral wall in analysis.Walls)
            {
                ShearWallPanelRigidAnalysisParameters stiffnessAtWall = analysis.WallStiffnesses[wall.UniqueId];
                ShearWallPanelResponseCollection      resultsAtWall   = analysis.Responses.WallLoadCaseResults[wall.UniqueId];

                foreach (ShearWallPanelResponse response in resultsAtWall)
                {
                    DataRow row = table.NewRow();

                    row["level"]           = wall.TopLevel.Name;
                    row["load_category"]   = response.LoadCase.LoadPatternType;
                    row["load_case"]       = response.LoadCase;
                    row["wall_panel"]      = wall.UniqueId;
                    row["R"]               = stiffnessAtWall.K.ConvertTo(ForcePerLengthUnit.KipPerInch);
                    row["d"]               = stiffnessAtWall.SignedOffsetFromCenterOfRigidity.ConvertTo(LengthUnit.Foot);
                    row["direct_force"]    = response.DirectShear.ConvertTo(ForceUnit.Pound);
                    row["torsional_force"] = response.TorsionalShear.ConvertTo(ForceUnit.Pound);

                    table.AddRow(row);
                }
            }

            return(table);
        }
Esempio n. 4
0
        private Point2D DetermineCenterOfRigidity()
        {
            Force SumOfXTimesYCenters = new Force(0, ForceUnit.Kip);
            Force SumOfYTimesXCenters = new Force(0, ForceUnit.Kip);

            foreach (AnalyticalWallLateral wall in Walls)
            {
                ShearWallPanelRigidAnalysisParameters wallStiffness = WallStiffnesses[wall.UniqueId];

                SumOfXTimesYCenters = (Force)(SumOfXTimesYCenters + wallStiffness.Kx * new Length(wall.Centroid.Y, LengthUnit.Inch));
                SumOfYTimesXCenters = (Force)(SumOfYTimesXCenters + wallStiffness.Ky * new Length(wall.Centroid.X, LengthUnit.Inch));
            }

            Length xCenter = (Length)(SumOfYTimesXCenters / LevelStiffness.Y);
            Length yCenter = (Length)(SumOfXTimesYCenters / LevelStiffness.X);

            return(new Point2D(xCenter.ConvertTo(LengthUnit.Inch), yCenter.ConvertTo(LengthUnit.Inch)));
        }
Esempio n. 5
0
        private ShearWallPanelResponse DetermineWallResponse(AnalyticalWallLateral wall,
                                                             ShearWallPanelRigidAnalysisParameters wallStiffness, LateralLevelForce force)
        {
            Force directXShear = (Force)(wallStiffness.Kx * force.DirectX / LevelStiffness.X);
            Force directYShear = (Force)(wallStiffness.Ky * force.DirectY / LevelStiffness.Y);

            Vector2D directVector = new Vector2D(directXShear.Value, directYShear.Value);

            var wallUnitVector = wall.WallLine.ToVector2D().Normalize();

            var response = new ShearWallPanelResponse(wall.UniqueId, force.LoadPattern, wall.WallLine);

            response.DirectShear = directVector.AngleTo(wallUnitVector).Degrees < 90
                ? new Force(directVector.Length, ForceUnit.Kip)
                : new Force(-directVector.Length, ForceUnit.Kip);

            response.TorsionalShear = (Force)(wallStiffness.K * wallStiffness.SignedOffsetFromCenterOfRigidity *
                                              force.TotalT(LateralLevel.CenterOfRigidity) / LevelStiffness.J);

            return(response);
        }