private double mrdReinforcement(double x) { var Mrd = 0d; var yOsi = this.section.MaxY - x; Reinforcement barsTemp; for (int i = 0; i <= this.reinforcement.Count - 1; i++) { barsTemp = this.reinforcement[i]; var multiplier = barsTemp.IsCompressed ? 1 : -1; barsTemp.Sigma = StressFunctions.SteelStressDesign(barsTemp.Epsilon, this.steel) * multiplier; barsTemp.Epsilon = barsTemp.Epsilon * multiplier; barsTemp.Force = barsTemp.Bar.As * barsTemp.Sigma; barsTemp.Moment = barsTemp.Force * (reinforcement[i].Bar.Y - this.section.MinY); //if (this.reinforcement[i].Bar.Y > yOsi) //{ Mrd = Mrd + barsTemp.Moment; //} //else //{ // Mrd = Mrd - barsTemp.Moment; //} this.reinforcement[i] = barsTemp; } return(Mrd); }
public CompressionZoneResult Calculate(double x, Section section) { var compressionZoneCoordinates = CompressionZoneCoordinates.CoordinatesOfCompressionZone(section.Coordinates, section.MaxY - x); var compressionZone = new Section(compressionZoneCoordinates); compressionZone.IntegrationPointY = section.IntegrationPointY; Func <double, double> distance = y => section.MaxY - y; Func <double, double> strain = di => this.strainCalculations.StrainInConcrete(x, distance(di)); Func <double, double> stress = e => StressFunctions.ConcreteStressDesign(strain(e), this.concrete); var integration = new Integration(); var result = integration.Integrate(compressionZone, stress); return(result); }
private double forceInAs2(double x) { var resultantForce = 0d; var yNeutralAxis = this.section.MaxY - x; for (int i = 0; i <= this.reinforcement.Count - 1; i++) { if (this.reinforcement[i].Bar.Y > yNeutralAxis) { var di = this.reinforcement[i].D; var e = this.strainCalculations.StrainInAs2(x, di); resultantForce = resultantForce + this.reinforcement[i].Bar.As * StressFunctions.SteelStressDesign(e, this.steel); var barsTemp = this.reinforcement[i]; barsTemp.Epsilon = e; barsTemp.IsCompressed = true; this.reinforcement[i] = barsTemp; } } return(resultantForce); }