示例#1
0
 public RigidAnalysis(BuildingLevelLateral2 lateralLevel, IEnumerable <AnalyticalWallLateral> walls,
                      IEnumerable <LateralLevelForce> forces, IEnumerable <LoadCase> loadCases, double Cd)
 {
     LateralLevel = lateralLevel;
     Walls        = walls.ToList();
     Forces       = forces.ToList();
     LoadCases    = loadCases.ToList();
     this.Cd      = Cd;
 }
        // Assumes that the centers of mass stack vertically, so we can apply the design story shear directly
        public List <LateralLevelForce> GenerateAppliedLoadingAtLevel(BuildingLevelLateral2 lateralLevel)
        {
            var loads = new List <LateralLevelForce>();

            BuildingLevel level        = lateralLevel.Level;
            Point2D       CenterOfMass = lateralLevel.CenterOfMass;

            SeismicStoryForce storyShears = _storyShears[level];

            // Calculate direct seismic forces
            loads.Add(new LateralLevelForce
            {
                Level         = level,
                DirectX       = storyShears.X,
                LoadPattern   = LoadPattern.Seismic_East,
                CenterOfForce = CenterOfMass
            });

            loads.Add(new LateralLevelForce
            {
                Level         = level,
                DirectX       = (Force)(-storyShears.X),
                LoadPattern   = LoadPattern.Seismic_West,
                CenterOfForce = CenterOfMass
            });

            loads.Add(new LateralLevelForce
            {
                Level         = level,
                DirectY       = storyShears.Y,
                LoadPattern   = LoadPattern.Seismic_North,
                CenterOfForce = CenterOfMass
            });

            loads.Add(new LateralLevelForce
            {
                Level         = level,
                DirectY       = (Force)(-storyShears.Y),
                LoadPattern   = LoadPattern.Seismic_South,
                CenterOfForce = CenterOfMass
            });

            // Calculate accidental seismic forces
            Length lengthX = lateralLevel.LengthX;
            Length lengthY = lateralLevel.LengthY;
            AccidentalEccentricities eccentricities = lateralLevel.Eccentricities;

            loads.Add(new LateralLevelForce
            {
                Level         = level,
                AccidentalT   = (Moment)Result.Abs(eccentricities.SeismicX * lengthY * storyShears.X),
                LoadPattern   = LoadPattern.SeismicTorsion_XLoading,
                CenterOfForce = CenterOfMass
            });

            loads.Add(new LateralLevelForce
            {
                Level         = level,
                AccidentalT   = (Moment)Result.Abs(eccentricities.SeismicY * lengthX * storyShears.Y),
                LoadPattern   = LoadPattern.SeismicTorsion_YLoading,
                CenterOfForce = CenterOfMass
            });

            return(loads);
        }