Add circle shape calculation for shear
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Models;
|
||||
using StructureHelperCommon.Models.Shapes;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
@@ -11,6 +12,7 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
private IBeamShearStrenghLogic stirrupByDensityStrengthLogic;
|
||||
private IBeamShearStrenghLogic stirrupGroupStrengthLogic;
|
||||
private IBeamShearStrenghLogic stirrupByInclinedRebarStrengthLogic;
|
||||
private IStirrupEffectiveness stirrupEffectiveness;
|
||||
|
||||
public StirrupStrengthLogic(IBeamShearSectionLogicInputData inputData, IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
@@ -22,28 +24,28 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
|
||||
public double GetShearStrength()
|
||||
{
|
||||
var stirrupEffectiveness = StirrupEffectivenessFactory.GetEffectiveness(BeamShearSectionType.Rectangle);
|
||||
GetStirrupEffectiveness();
|
||||
if (stirrup is IStirrupByRebar stirrupByRebar)
|
||||
{
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrup by rebar {stirrupByRebar.Name}");
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrup by rebar Name = {stirrupByRebar.Name}");
|
||||
stirrupByDensityStrengthLogic = new StirrupByRebarStrengthLogic(stirrupEffectiveness, stirrupByRebar, inclinedSection, inputData.ForceTuple, TraceLogger);
|
||||
return stirrupByDensityStrengthLogic.GetShearStrength();
|
||||
}
|
||||
else if (stirrup is IStirrupGroup stirrupGroup)
|
||||
{
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrupGroup {stirrupGroup.Name}");
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrup group Name = {stirrupGroup.Name}");
|
||||
stirrupGroupStrengthLogic ??= new StirrupGroupStrengthLogic(inputData, stirrupGroup, TraceLogger);
|
||||
return stirrupGroupStrengthLogic.GetShearStrength();
|
||||
}
|
||||
else if (stirrup is IStirrupByDensity stirrupByDensity)
|
||||
{
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrup by density {stirrupByDensity.Name}");
|
||||
stirrupByDensityStrengthLogic = new StirrupByDensityStrengthLogic(stirrupEffectiveness, stirrupByDensity, inclinedSection,TraceLogger);
|
||||
TraceLogger?.AddMessage($"Stirrups type is stirrup by density Name = {stirrupByDensity.Name}");
|
||||
stirrupByDensityStrengthLogic = new StirrupByDensityStrengthLogic(stirrupEffectiveness, stirrupByDensity, inclinedSection, TraceLogger);
|
||||
return stirrupByDensityStrengthLogic.GetShearStrength();
|
||||
}
|
||||
else if (stirrup is IStirrupByInclinedRebar inclinedRebar)
|
||||
{
|
||||
TraceLogger?.AddMessage($"Stirrups type is inclined rebar {inclinedRebar.Name}");
|
||||
TraceLogger?.AddMessage($"Stirrups type is inclined rebar Name = {inclinedRebar.Name}");
|
||||
stirrupByInclinedRebarStrengthLogic ??= new StirrupByInclinedRebarStrengthLogic(inclinedSection, inclinedRebar, TraceLogger);
|
||||
return stirrupByInclinedRebarStrengthLogic.GetShearStrength();
|
||||
}
|
||||
@@ -53,5 +55,18 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void GetStirrupEffectiveness()
|
||||
{
|
||||
if (inclinedSection.BeamShearSection.Shape is IRectangleShape)
|
||||
{
|
||||
stirrupEffectiveness = StirrupEffectivenessFactory.GetEffectiveness(BeamShearSectionType.Rectangle);
|
||||
}
|
||||
else if (inclinedSection.BeamShearSection.Shape is ICircleShape)
|
||||
{
|
||||
stirrupEffectiveness = StirrupEffectivenessFactory.GetEffectiveness(BeamShearSectionType.Circle);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user