public static double MomentOfInertia(Plate botFlange, Plate web, Plate topFlange, Plate bolster, Plate slab, double modRatio, bool composite, bool positiveMoment) { double[] array = CompositeAndPositiveMoment(composite, positiveMoment); double NA = NeutralAxis(botFlange, web, topFlange, bolster, slab, modRatio, composite, positiveMoment); return(botFlange.I_x() + botFlange.Area() * Math.Pow(botFlange.CG - NA, 2) + web.I_x() + web.Area() * Math.Pow(web.CG - NA, 2) + topFlange.I_x() + topFlange.Area() * Math.Pow(topFlange.CG - NA, 2) + (bolster.I_x(modRatio) + bolster.Area(modRatio) * Math.Pow(bolster.CG - NA, 2) // need to add modRatio to bolster.I_x() + slab.I_x(modRatio) + slab.Area(modRatio) * Math.Pow(slab.CG - NA, 2)) * array[0] * array[1]); // need to add modRatio to slab.I_x() }
public static double MomentOfInertia(Plate botFlange, Plate web, Plate topFlange, Plate bolster, Plate slab, List <Reinforcing> reinforcing, double modRatio, bool composite, bool positiveMoment) { double[] array = CompositeAndPositiveMoment(composite, positiveMoment); double NA = NeutralAxis(botFlange, web, topFlange, bolster, slab, reinforcing, modRatio, composite, positiveMoment); double reinf_I = 0; foreach (Reinforcing reinf in reinforcing) { reinf_I += reinf.Area * (1 - array[1] / modRatio) * Math.Pow(reinf.Location - NA, 2); } return(botFlange.I_x() + botFlange.Area() * Math.Pow(botFlange.CG - NA, 2) + web.I_x() + web.Area() * Math.Pow(web.CG - NA, 2) + topFlange.I_x() + topFlange.Area() * Math.Pow(topFlange.CG - NA, 2) + (bolster.I_x(modRatio) + bolster.Area(modRatio) * Math.Pow(bolster.CG - NA, 2) // need to add modRatio to bolster.I_x() + slab.I_x(modRatio) + slab.Area(modRatio) * Math.Pow(slab.CG - NA, 2)) * array[0] * array[1] // need to add modRatio to slab.I_x() + reinf_I * array[0]); }