Long Progress Logics were added

This commit is contained in:
Evgeny Redikultsev
2023-11-12 20:38:11 +05:00
parent 36cb0878e9
commit ba797e7aaa
16 changed files with 513 additions and 242 deletions

View File

@@ -0,0 +1,59 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.Services.NdmCalculations;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics
{
public class InterpolationProgressLogic : ILongProcessLogic
{
private ForceCalculator forceCalculator;
private InterpolateTuplesResult interpolateTuplesResult;
public Action<int> SetProgress { get; set; }
public ForceCalculator InterpolateCalculator { get; private set; }
public bool Result { get; set; }
public int StepCount => interpolateTuplesResult.StepCount + 1;
public void WorkerDoWork(object sender, DoWorkEventArgs e)
{
InterpolateCalculator = InterpolateService.InterpolateForceCalculator(forceCalculator, interpolateTuplesResult);
InterpolateCalculator.ActionToOutputResults = ShowProgressResult;
InterpolateCalculator.Run();
}
public void WorkerProgressChanged(object sender, ProgressChangedEventArgs e)
{
//nothing to do
}
public void WorkerRunWorkCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//nothing to do
}
public InterpolationProgressLogic(ForceCalculator forceCalculator, InterpolateTuplesResult interpolateTuplesResult)
{
this.forceCalculator = forceCalculator;
this.interpolateTuplesResult = interpolateTuplesResult;
}
private void ShowProgressResult(IResult result)
{
if (result is ForcesResults)
{
var forceResult = result as ForcesResults;
SetProgress?.Invoke(forceResult.ForcesResultList.Count());
Result = forceResult.IsValid;
}
}
}
}

View File

@@ -8,18 +8,18 @@ namespace StructureHelperLogics.Services.NdmCalculations
public static class InterpolateService
{
static readonly CompressedMemberUpdateStrategy compressedMemberUpdateStrategy = new();
public static IForceCalculator InterpolateForceCalculator(IForceCalculator source, IDesignForceTuple finishDesignForce,IDesignForceTuple startDesignForce, int stepCount)
public static ForceCalculator InterpolateForceCalculator(IForceCalculator source, InterpolateTuplesResult interpolateTuplesResult)
{
IForceCalculator calculator = new ForceCalculator();
ForceCalculator calculator = new ForceCalculator();
calculator.LimitStatesList.Clear();
calculator.LimitStatesList.Add(finishDesignForce.LimitState);
calculator.LimitStatesList.Add(interpolateTuplesResult.StartTuple.LimitState);
calculator.CalcTermsList.Clear();
calculator.CalcTermsList.Add(finishDesignForce.CalcTerm);
calculator.CalcTermsList.Add(interpolateTuplesResult.FinishTuple.CalcTerm);
compressedMemberUpdateStrategy.Update(calculator.CompressedMember, source.CompressedMember);
calculator.Accuracy = source.Accuracy;
calculator.Primitives.AddRange(source.Primitives);
calculator.ForceActions.Clear();
var forceTuples = ForceTupleService.InterpolateDesignTuple(finishDesignForce, startDesignForce, stepCount);
var forceTuples = ForceTupleService.InterpolateDesignTuple(interpolateTuplesResult.FinishTuple, interpolateTuplesResult.StartTuple, interpolateTuplesResult.StepCount);
foreach (var forceTuple in forceTuples)
{
var combination = new ForceCombinationList()