Long Progress Logics were added
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user