Files
StructureHelper/StructureHelperCommon/Models/Forces/StrainTuple.cs
2025-11-29 21:43:00 +05:00

62 lines
1.8 KiB
C#

using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Services.Forces;
using System;
namespace StructureHelperCommon.Models.Forces
{
/// <inheritdoc/>
public class StrainTuple : IForceTuple
{
private readonly IUpdateStrategy<IForceTuple> updateStrategy = new ForceTupleUpdateStrategy();
private static IForceTupleServiceLogic forceTupleServiceLogic;
private static IForceTupleServiceLogic ForceTupleServiceLogic => forceTupleServiceLogic ??= new ForceTupleServiceLogic();
/// <inheritdoc/>
public Guid Id { get; }
/// <inheritdoc/>
public double Mx { get; set; }
/// <inheritdoc/>
public double My { get; set; }
/// <inheritdoc/>
public double Nz { get; set; }
/// <inheritdoc/>
public double Qx { get; set; }
/// <inheritdoc/>
public double Qy { get; set; }
/// <inheritdoc/>
public double Mz { get; set; }
public StrainTuple(Guid id)
{
Id = id;
}
public StrainTuple() : this (Guid.NewGuid())
{
}
public void Clear()
{
Mx = 0d;
My = 0d;
Nz = 0d;
Qx = 0d;
Qy = 0d;
Mz = 0d;
}
/// <inheritdoc/>
public object Clone()
{
var newItem = new StrainTuple();
updateStrategy.Update(newItem, this);
return newItem;
}
public static StrainTuple operator +(StrainTuple first) => first;
public static StrainTuple operator +(StrainTuple first, ForceTuple second)
{
return ForceTupleServiceLogic.SumTuples(first, second) as StrainTuple;
}
}
}