Add extended force tuple result

This commit is contained in:
Evgeny Redikultsev
2025-11-03 13:58:27 +05:00
parent 871be6cb46
commit b28606003a
24 changed files with 354 additions and 8 deletions

View File

@@ -0,0 +1,14 @@
using StructureHelperCommon.Models.Calculators;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public interface IValueDiagramCalculator : ICalculator
{
}
}

View File

@@ -0,0 +1,20 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.States;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
/// <summary>
/// Implements input data for Value diagram calculator
/// </summary>
public interface IValueDiagramCalculatorInputData : ISaveable, IHasForceActions, IHasPrimitives
{
IStateCalcTermPair StateTermPair { get; set; }
/// <summary>
/// Collection of diagram for calculation
/// </summary>
List<IValueDigram> Digrams { get; }
bool CheckStrainLimit { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public interface IValueDiagramCalculatorResult : IResult
{
IValueDiagramCalculatorInputData? InputData { get; set; }
List<IPoint2D> Points { get; set; }
List<IForcesTupleResult> ForceTupleResults { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public interface IValueDigram : ISaveable
{
IPoint2DRange Point2DRange { get; }
}
}

View File

@@ -0,0 +1,16 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public interface IValueDiagramCalculatorLogic : ILogic
{
IValueDiagramCalculatorInputData InputData { get; set; }
IValueDiagramCalculatorResult GetResult();
}
}

View File

@@ -0,0 +1,74 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using StructureHelperLogics.Services.NdmPrimitives;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public class ValueDiagramCalculatorLogic : IValueDiagramCalculatorLogic
{
private ITriangulatePrimitiveLogic triangulateLogic;
private IValueDiagramCalculatorResult result;
public IValueDiagramCalculatorInputData InputData { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public IValueDiagramCalculatorResult GetResult()
{
PrepareResult();
GetPoints();
CalculateTupleResults();
return result;
}
private void CalculateTupleResults()
{
triangulateLogic = new TriangulatePrimitiveLogic()
{
Primitives = InputData.Primitives,
LimitState = InputData.StateTermPair.LimitState,
CalcTerm = InputData.StateTermPair.CalcTerm,
TraceLogger = TraceLogger
};
var ndms = triangulateLogic.GetNdms();
foreach (var forceAction in InputData.ForceActions)
{
var combination = forceAction.GetCombinations();
List<IForceTuple> forceTuples = [];
foreach (var action in combination)
{
var actionCombination = action
.DesignForces
.Where(x => x.LimitState == InputData.StateTermPair.LimitState && x.CalcTerm == InputData.StateTermPair.CalcTerm);
}
ForceTupleInputData forceTupleInputData = new()
{
NdmCollection = ndms,
Accuracy = new Accuracy(),
CheckStrainLimit = true,
};
}
}
private void GetPoints()
{
throw new NotImplementedException();
}
private void PrepareResult()
{
result = new ValueDiagramCalculatorResult()
{
InputData = InputData,
};
}
}
}

View File

@@ -0,0 +1,38 @@
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Calculators;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public class ValueDiagramCalculator : IValueDiagramCalculator
{
public string Name { get; set; }
public bool ShowTraceData { get; set; }
public IResult Result => throw new NotImplementedException();
public IShiftTraceLogger? TraceLogger { get; set; }
public Guid Id { get; }
public ValueDiagramCalculator(Guid id)
{
Id = id;
}
public object Clone()
{
throw new NotImplementedException();
}
public void Run()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,34 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.States;
using StructureHelperLogics.NdmCalculations.Primitives;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
/// <inheritdoc/>
public class ValueDiagramCalculatorInputData : IValueDiagramCalculatorInputData
{
/// <inheritdoc/>
public Guid Id { get; }
/// <inheritdoc/>
public List<IValueDigram> Digrams { get; } = [];
/// <inheritdoc/>
public List<IForceAction> ForceActions { get; } = [];
/// <inheritdoc/>
public List<INdmPrimitive> Primitives { get; } = [];
public IStateCalcTermPair StateTermPair { get; set; } = new StateCalcTermPair() { LimitState = LimitStates.ULS, CalcTerm = CalcTerms.ShortTerm};
public bool CheckStrainLimit { get; set; } = true;
public ValueDiagramCalculatorInputData(Guid id)
{
Id = id;
}
}
}

View File

@@ -0,0 +1,17 @@
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public class ValueDiagramCalculatorResult : IValueDiagramCalculatorResult
{
public IValueDiagramCalculatorInputData? InputData { get; set; }
public List<IPoint2D> Points { get; set; } = [];
public List<IForcesTupleResult> ForceTupleResults { get; set; } = [];
public bool IsValid { get; set; } = true;
public string? Description { get; set; } = string.Empty;
}
}