public IShapeMember(ISteelSection Section, bool IsRolledShape,
                                FlexuralCompressionFiberPosition compressionFiberPosition)
            {
                double b;
                double tf;


                if (Section.Shape is ISectionI)
                {
                    ISectionI sectI = Section.Shape as ISectionI;

                    switch (compressionFiberPosition)
                    {
                    case FlexuralCompressionFiberPosition.Top:
                        b  = sectI.b_fTop;
                        tf = sectI.t_fTop;
                        break;

                    case FlexuralCompressionFiberPosition.Bottom:
                        b  = sectI.b_fBot;
                        tf = sectI.t_fBot;
                        break;

                    default:
                        throw new CompressionFiberPositionException();
                    }


                    //flange compactness
                    if (IsRolledShape == true)
                    {
                        this.FlangeCompactness = new FlangeOfRolledIShape(Section.Material, b / 2.0, tf);
                    }
                    else
                    {
                        this.FlangeCompactness = new FlangeOfBuiltUpI(Section.Material, sectI, compressionFiberPosition);
                    }

                    //web compactness

                    bool isDoublySymmetric = ShapeISymmetry.IsDoublySymmetric(Section.Shape);


                    if (isDoublySymmetric == true)
                    {
                        WebCompactness = new WebOfDoublySymI(Section.Material, sectI);
                    }
                    else
                    {
                        WebCompactness = new WebOfSinglySymI(Section.Material, sectI, compressionFiberPosition);
                    }
                }
            }
            public IShapeMember(ISteelSection Section, bool IsRolledShape, 
                FlexuralCompressionFiberPosition compressionFiberPosition)
            {

                double b;
                double tf;


                if (Section.Shape is ISectionI)
	            {
                ISectionI sectI = Section.Shape as ISectionI;

                switch (compressionFiberPosition)
                {
                    case FlexuralCompressionFiberPosition.Top:
                        b = sectI.b_fTop;
                        tf = sectI.t_fTop;
                        break;
                    case FlexuralCompressionFiberPosition.Bottom:
                        b = sectI.b_fBot;
                        tf = sectI.t_fBot;
                        break;
                    default:
                        throw new CompressionFiberPositionException();
                }


                //flange compactness
                if (IsRolledShape == true)
                {
                    this.FlangeCompactness = new FlangeOfRolledIShape(Section.Material, b / 2.0, tf);
                }
                else
                {
                    this.FlangeCompactness = new FlangeOfBuiltUpI(Section.Material, sectI, compressionFiberPosition);
                }

                //web compactness

                bool isDoublySymmetric = ShapeISymmetry.IsDoublySymmetric(Section.Shape);


                if (isDoublySymmetric == true)
                {
                    WebCompactness = new WebOfDoublySymI(Section.Material, sectI);
                }
                else
                {
                    WebCompactness = new WebOfSinglySymI(Section.Material, sectI, compressionFiberPosition);
                } 
	            }
            }