public void Analyze_Breyer6thEd_16_11_Succeeds() { var sB = new StringBuilder(); var level = new BuildingLevel("Level 2", 100); var lateralWalls = new List <AnalyticalWallLateral>(); lateralWalls.Add(new AnalyticalWallLateral("Wall A", new Point2D(0, 0), new Point2D(0, 240), level)); lateralWalls.Add(new AnalyticalWallLateral("Wall B", new Point2D(360, 0), new Point2D(360, 240), level)); lateralWalls.Add(new AnalyticalWallLateral("Wall C-1", new Point2D(0, 0), new Point2D(60, 0), level)); lateralWalls.Add(new AnalyticalWallLateral("Wall C-2", new Point2D(300, 0), new Point2D(360, 0), level)); lateralWalls.Add(new AnalyticalWallLateral("Wall D", new Point2D(0, 240), new Point2D(360, 240), level)); var deck = new OneWayDeck { Level = level, Boundary = new Polygon2D(new List <Point2D> { new Point2D(0, 0), new Point2D(0, 240), new Point2D(360, 240), new Point2D(360, 0) }), WeightPerArea = new Stress(40, StressUnit.psf) }; var lateralLevel = new BuildingLevelLateral2(deck); var forces = new List <LateralLevelForce> { new LateralLevelForce { DirectX = new Force(-6000, ForceUnit.Pound), LoadPattern = LoadPattern.Seismic_West, CenterOfForce = new Point2D(180, 120) }, new LateralLevelForce { AccidentalT = new Moment(6, MomentUnit.KipFoot), LoadPattern = LoadPattern.SeismicTorsion_XLoading, CenterOfForce = new Point2D(180, 120) } }; var loadCases = new List <LoadCase> { CommonResources.ASCE7LoadCases["-X - TX"], }; var analysis = new RigidAnalysis(lateralLevel, lateralWalls, forces, loadCases, 1); analysis.Analyze(); var table = RigidAnalysisTabularReport.GenerateShearWallForceStiffnessTable(analysis); sB.Append(table.PrintToMarkdown()); }
private WallCostCharacterization CharacterizeAllWallCosts() { double totalStructuralShearWallCost = 0; bool allWallsMeetShearLimit = true; foreach (BuildingLevelLateral2 level in _lateralLevels) { RigidAnalysis analysis = RigidAnalyses[level.Level]; foreach (AnalyticalWallLateral wall in analysis.Walls) { Force maxShear = analysis.Responses.WallLoadCaseResults[wall.UniqueId] .EnvelopeResponsesAbsolute(_loadCases).TotalShear; Length wallLength = new Length(wall.WallLine.Length, LengthUnit.Inch); var shearUtilization = new WallShearUtilization((ForcePerLength)(maxShear / wallLength)); totalStructuralShearWallCost += shearUtilization.GetNormalizedCost(); if (allWallsMeetShearLimit && shearUtilization.ExceedsLimit) { allWallsMeetShearLimit = false; } } } // geometry at lowest level var lowestLevel = _lateralLevels.OrderBy(l => l.Level.Elevation).First(); var geometry = new Geometry { BoundaryVertices = lowestLevel.Boundary.Vertices.ToList() }; foreach (AnalyticalWallLateral wall in RigidAnalyses[lowestLevel.Level].Walls) { geometry.Wall.Add(new WallGeometry { EndI = wall.WallLine.StartPoint, EndJ = wall.WallLine.EndPoint }); } return(new WallCostCharacterization { RandomizedBuilding = _serializedModel.RandomizedBuilding, TotalStructuralShearWallCost = totalStructuralShearWallCost, GrossSquareFeet = new Area(_lateralLevels.First().Boundary.GetArea(), AreaUnit.SquareInch).ConvertTo(AreaUnit.SquareFoot), Geometry = geometry, MeetsDriftLimit = true, MeetsWallDesignLimit = allWallsMeetShearLimit }); }