private LevelDataDictionary <SeismicStoryForce> DetermineStoryForces()
        {
            var storyForces = new LevelDataDictionary <SeismicStoryForce>();

            var calc = new RecordedCalculation("Design Story Forces", CalculationType.SeismicDesign);


            foreach (BuildingLevelLateral2 level in _levels)
            {
                var distributionFactorX = _distributionFactors[level.Level].X;
                var distributionFactorY = _distributionFactors[level.Level].Y;

                Force Fx_i_x = Chapter_12.Section_12_8.Eqn_12_8_11(distributionFactorX, _baseShear, ref calc);
                Force Fx_i_y = Chapter_12.Section_12_8.Eqn_12_8_11(distributionFactorY, _baseShear, ref calc);

                storyForces.Add(new SeismicStoryForce
                {
                    Level = level.Level,
                    X     = Fx_i_x,
                    Y     = Fx_i_y
                });
            }

//            CalcLog.AddCalculation(calc);

            return(storyForces);
        }
        private LevelDataDictionary <SeismicStoryForce> DetermineStoryShears()
        {
            var storyShears = new LevelDataDictionary <SeismicStoryForce>();

            var calc = new RecordedCalculation("Design Story Shears", CalculationType.SeismicDesign);

            List <BuildingLevelLateral2> levelsFromBottomToTop = _levels.OrderBy(l => l.Level.Elevation).ToList();

            for (var i = 0; i < levelsFromBottomToTop.Count; i++)
            {
                List <SeismicStoryForce> orderedForces = _storyForces.DataOrderedFromBottomToTopLevel();

                Force Vx_i_x = Chapter_12.Section_12_8.Eqn_12_8_13(orderedForces.Select(f => f.X).ToList(), i, ref calc);
                Force Vx_i_y = Chapter_12.Section_12_8.Eqn_12_8_13(orderedForces.Select(f => f.Y).ToList(), i, ref calc);

                storyShears.Add(new SeismicStoryForce
                {
                    Level = levelsFromBottomToTop[i].Level,
                    X     = Vx_i_x,
                    Y     = Vx_i_y
                });
            }
            ;

            return(storyShears);
        }
コード例 #3
0
        private LevelDataDictionary <RigidAnalysis> GenerateRigidAnalyses()
        {
            var analyses = new LevelDataDictionary <RigidAnalysis>();

            foreach (BuildingLevelLateral2 level in _lateralLevels)
            {
                IEnumerable <AnalyticalWallLateral> wallsAtLevel = _lateralWallList.Where(w => w.TopLevel.Equals(level.Level));

                List <LateralLevelForce> forcesAtLevel = _elf.AppliedForces[level.Level];

                analyses.Add(new RigidAnalysis(level, wallsAtLevel, forcesAtLevel, CommonResources.ASCE7SeismicELFLoadCases(),
                                               _serializedModel.SeismicParameters.SystemParameters.Cd));
            }

            return(analyses);
        }
        private LevelDataDictionary <VerticalDistributionFactors> DetermineDistributionFactors()
        {
            var distributionFactors = new LevelDataDictionary <VerticalDistributionFactors>();

            var k = 1.0;

            if (_fundamentalPeriod.Value > 0.5 && _fundamentalPeriod.Value < 2.5)
            {
                k = 1.0 + (_fundamentalPeriod.Value - 0.5) / 2d;
            }
            else if (_fundamentalPeriod.Value >= 2.5)
            {
                k = 2.0;
            }

            List <Force>  w = _levels.Select(l => l.SeismicWeight).ToList();
            List <Length> H = _levels.Select(l => l.Height).ToList();

            var n = _levels.Count;

            var calc = new RecordedCalculation("Vertical Distribution Factors", CalculationType.SeismicDesign);

            foreach (BuildingLevelLateral2 level in _levels)
            {
                Force  w_x = level.SeismicWeight;
                Length h_x = level.Height;

                Unitless C_vxi = Chapter_12.Section_12_8.Eqn_12_8_12(w_x, h_x, k, n, w, H, ref calc);

                distributionFactors.Add(new VerticalDistributionFactors
                {
                    Level = level.Level,
                    X     = C_vxi,
                    Y     = C_vxi
                });
            }

//            CalcLog.AddCalculation(calc);

            return(distributionFactors);
        }