Add beam shear classes
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using StructureHelperCommon.Models;
|
||||
using StructureHelperCommon.Models.Loggers;
|
||||
using StructureHelperCommon.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
|
||||
//All rights reserved.
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class BeamSheaStrengthByStirrupDensity : IBeamShearStrenghLogic
|
||||
{
|
||||
private readonly IStirrupEffectiveness stirrupEffectiveness;
|
||||
private readonly IStirrupByDensity stirrupByDensity;
|
||||
private readonly IInclinedSection inclinedSection;
|
||||
|
||||
|
||||
public BeamSheaStrengthByStirrupDensity(
|
||||
IStirrupEffectiveness stirrupEffectiveness,
|
||||
IStirrupByDensity stirrupByDensity,
|
||||
IInclinedSection inclinedSection,
|
||||
IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
this.stirrupEffectiveness = stirrupEffectiveness;
|
||||
this.stirrupByDensity = stirrupByDensity;
|
||||
this.inclinedSection = inclinedSection;
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public double GetShearStrength()
|
||||
{
|
||||
Check();
|
||||
TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Service);
|
||||
TraceLogger?.AddMessage("Calculation has been started", TraceLogStatuses.Debug);
|
||||
double crackLength = inclinedSection.EndCoord - inclinedSection.StartCoord;
|
||||
TraceLogger?.AddMessage($"Length of crack = {inclinedSection.EndCoord} - {inclinedSection.StartCoord} = {crackLength}(m)");
|
||||
double maxCrackLength = stirrupEffectiveness.MaxCrackLengthFactor * inclinedSection.EffectiveDepth;
|
||||
TraceLogger?.AddMessage($"Max length of crack = {stirrupEffectiveness.MaxCrackLengthFactor} * {inclinedSection.EffectiveDepth} = {maxCrackLength}(m)");
|
||||
double finalCrackLength = Math.Min(crackLength, maxCrackLength);
|
||||
TraceLogger?.AddMessage($"Length of crack = Min({crackLength}, {maxCrackLength}) = {finalCrackLength}(m)");
|
||||
double strength = stirrupEffectiveness.StirrupShapeFactor * stirrupEffectiveness.StirrupPlacementFactor * finalCrackLength * stirrupByDensity.StirrupDensity;
|
||||
TraceLogger?.AddMessage($"Bearing capacity of stirrups V = {stirrupEffectiveness.StirrupShapeFactor} * {stirrupEffectiveness.StirrupPlacementFactor} * {finalCrackLength} * {stirrupByDensity.StirrupDensity} = {strength}(N)");
|
||||
TraceLogger?.AddMessage("Calculation has been finished successfully", TraceLogStatuses.Debug);
|
||||
return strength;
|
||||
}
|
||||
|
||||
private void Check()
|
||||
{
|
||||
CheckObject.IsNull(stirrupByDensity);
|
||||
CheckObject.IsNull(inclinedSection);
|
||||
}
|
||||
}
|
||||
}
|
||||
24
StructureHelperLogics/Models/BeamShears/BeamShear.cs
Normal file
24
StructureHelperLogics/Models/BeamShears/BeamShear.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class BeamShear : IBeamShear
|
||||
{
|
||||
|
||||
public Guid Id { get; }
|
||||
public IBeamShearRepository Repository { get; } = new BeamShearRepository(Guid.NewGuid());
|
||||
public BeamShear(Guid id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using StructureHelperCommon.Models.Calculators;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class BeamShearRepository : IBeamShearRepository
|
||||
{
|
||||
|
||||
public Guid Id { get; }
|
||||
|
||||
public List<IBeamShearAction> BeamShearActions { get; }
|
||||
|
||||
public List<ICalculator> Calculators { get; }
|
||||
|
||||
public BeamShearRepository(Guid id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class BeamShearUpdateStrategy : IUpdateStrategy<IBeamShear>
|
||||
{
|
||||
public void Update(IBeamShear targetObject, IBeamShear sourceObject)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
14
StructureHelperLogics/Models/BeamShears/IBeamShear.cs
Normal file
14
StructureHelperLogics/Models/BeamShears/IBeamShear.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IBeamShear : ISaveable, ICloneable
|
||||
{
|
||||
IBeamShearRepository Repository { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Calculators;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IBeamShearRepository : ISaveable, IHasBeamShearActions, IHasCalculators, ICloneable
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement logic for calculation of bearing capacity of inclined section for shear
|
||||
/// </summary>
|
||||
public interface IBeamShearStrenghLogic : ILogic
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns Bearing capacity of inclined section for shear
|
||||
/// </summary>
|
||||
/// <returns>Bearing capacity of inclined section for shear, N</returns>
|
||||
double GetShearStrength();
|
||||
}
|
||||
}
|
||||
15
StructureHelperLogics/Models/BeamShears/IInclinedSection.cs
Normal file
15
StructureHelperLogics/Models/BeamShears/IInclinedSection.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IInclinedSection : IEffectiveDepth
|
||||
{
|
||||
double StartCoord { get; set; }
|
||||
double EndCoord { get; set; }
|
||||
}
|
||||
}
|
||||
17
StructureHelperLogics/Models/BeamShears/IStirrup.cs
Normal file
17
StructureHelperLogics/Models/BeamShears/IStirrup.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement properties of stirrups
|
||||
/// </summary>
|
||||
public interface IStirrup : ISaveable, ICloneable
|
||||
{
|
||||
string Name { get; set; }
|
||||
}
|
||||
}
|
||||
19
StructureHelperLogics/Models/BeamShears/IStirrupByDensity.cs
Normal file
19
StructureHelperLogics/Models/BeamShears/IStirrupByDensity.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement logic for calculation of bearing capacity of stirrups by value of their density
|
||||
/// </summary>
|
||||
public interface IStirrupByDensity : IStirrup
|
||||
{
|
||||
/// <summary>
|
||||
/// Direct density of stirrups, N/m
|
||||
/// </summary>
|
||||
double StirrupDensity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
/// <summary>
|
||||
/// Implement logic for stirrup bearing capacity which does not depend on specific inclined section
|
||||
/// </summary>
|
||||
public interface IStirrupByDirectValue : IStirrup
|
||||
{
|
||||
/// <summary>
|
||||
/// Direct value of bearing capacity which is applied for any inclined section, N
|
||||
/// </summary>
|
||||
double BearingCapacityValue { get; set; }
|
||||
}
|
||||
}
|
||||
17
StructureHelperLogics/Models/BeamShears/IStirrupByRebar.cs
Normal file
17
StructureHelperLogics/Models/BeamShears/IStirrupByRebar.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IStirrupByRebar : IStirrup
|
||||
{
|
||||
IReinforcementLibMaterial ReinforcementMaterial { get; set; }
|
||||
double LegCount { get; set; }
|
||||
double Diameter { get; set; }
|
||||
double Step { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IStirrupEffectiveness
|
||||
{
|
||||
double MaxCrackLengthFactor { get; set; }
|
||||
double StirrupShapeFactor { get; set; }
|
||||
double StirrupPlacementFactor { get; set; }
|
||||
}
|
||||
}
|
||||
13
StructureHelperLogics/Models/BeamShears/IStirrupGroup.cs
Normal file
13
StructureHelperLogics/Models/BeamShears/IStirrupGroup.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public interface IStirrupGroup : IStirrup
|
||||
{
|
||||
List<IStirrup> Stirrups { get; }
|
||||
}
|
||||
}
|
||||
15
StructureHelperLogics/Models/BeamShears/InclinedSection.cs
Normal file
15
StructureHelperLogics/Models/BeamShears/InclinedSection.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class InclinedSection : IInclinedSection
|
||||
{
|
||||
public double StartCoord { get; set; }
|
||||
public double EndCoord { get; set; }
|
||||
public double EffectiveDepth { get; set; }
|
||||
}
|
||||
}
|
||||
25
StructureHelperLogics/Models/BeamShears/StirrupByDensity.cs
Normal file
25
StructureHelperLogics/Models/BeamShears/StirrupByDensity.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupByDensity : IStirrupByDensity
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public double StirrupDensity { get; set; }
|
||||
|
||||
public StirrupByDensity(Guid id)
|
||||
{
|
||||
Id = id;
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupByDirectValue : IStirrupByDirectValue
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string Name { get; set; }
|
||||
public double BearingCapacityValue { get; set; }
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
26
StructureHelperLogics/Models/BeamShears/StirrupGroup.cs
Normal file
26
StructureHelperLogics/Models/BeamShears/StirrupGroup.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupGroup : IStirrupGroup
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string Name { get; set; }
|
||||
public List<IStirrup> Stirrups { get; } = new();
|
||||
|
||||
public double GetShearBearingCapacity(IInclinedSection inclinedSection)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user