From 0695dfb9179e0524b9694f99a72d9ba87ca7106d Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 19 Jun 2022 20:57:08 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D0=BE=D1=82=D0=B5=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libraries/LoaderCalculator.dll | Bin 0 -> 46080 bytes StructureHelper.csproj | 4 +- StructureHelper.sln | 11 +- .../Logics/ExpectedProcessor.cs | 15 ++ .../Ndms/RCSections/RCSectionTest.cs | 184 ++++++++++++++++++ .../StructureHelperTests.csproj | 55 ++++-- .../StructureHelperTests.csproj.bak | 64 ++++++ StructureHelperTests/TestExampleClass.cs | 14 -- .../RectangleTriangulationTest.cs | 51 +++++ StructureHelperTests/packages.config | 8 +- 10 files changed, 371 insertions(+), 35 deletions(-) create mode 100644 Libraries/LoaderCalculator.dll create mode 100644 StructureHelperTests/Infrastructures/Logics/ExpectedProcessor.cs create mode 100644 StructureHelperTests/LibrariesTests/Ndms/RCSections/RCSectionTest.cs create mode 100644 StructureHelperTests/StructureHelperTests.csproj.bak delete mode 100644 StructureHelperTests/TestExampleClass.cs create mode 100644 StructureHelperTests/UnitTests/Ndms/Triangulations/RectangleTriangulationTest.cs diff --git a/Libraries/LoaderCalculator.dll b/Libraries/LoaderCalculator.dll new file mode 100644 index 0000000000000000000000000000000000000000..d2054c828102ba9b006b5e5b29bd789a530bc101 GIT binary patch literal 46080 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 literal 0 HcmV?d00001 diff --git a/StructureHelper.csproj b/StructureHelper.csproj index 73e59fd..ccb845b 100644 --- a/StructureHelper.csproj +++ b/StructureHelper.csproj @@ -128,6 +128,8 @@ Designer - + + + \ No newline at end of file diff --git a/StructureHelper.sln b/StructureHelper.sln index 587bc98..f02c1d9 100644 --- a/StructureHelper.sln +++ b/StructureHelper.sln @@ -5,7 +5,12 @@ VisualStudioVersion = 16.0.32002.261 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelper", "StructureHelper.csproj", "{BAD27E27-4444-4300-ADF8-E21042C0781D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperTests", ".\StructureHelperTests\StructureHelperTests.csproj", "{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperTests", "StructureHelperTests\StructureHelperTests.csproj", "{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}" + ProjectSection(ProjectDependencies) = postProject + {23138426-7994-46A7-834D-08AFB9741A86} = {23138426-7994-46A7-834D-08AFB9741A86} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperLogics", "..\StructureHelperLogics\StructureHelperLogics\StructureHelperLogics.csproj", "{23138426-7994-46A7-834D-08AFB9741A86}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -21,6 +26,10 @@ Global {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Debug|Any CPU.Build.0 = Debug|Any CPU {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.ActiveCfg = Release|Any CPU {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.Build.0 = Release|Any CPU + {23138426-7994-46A7-834D-08AFB9741A86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23138426-7994-46A7-834D-08AFB9741A86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23138426-7994-46A7-834D-08AFB9741A86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23138426-7994-46A7-834D-08AFB9741A86}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/StructureHelperTests/Infrastructures/Logics/ExpectedProcessor.cs b/StructureHelperTests/Infrastructures/Logics/ExpectedProcessor.cs new file mode 100644 index 0000000..f729eac --- /dev/null +++ b/StructureHelperTests/Infrastructures/Logics/ExpectedProcessor.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LoaderCalculator.Tests.Infrastructures.Logics +{ + internal static class ExpectedProcessor + { + internal static double GetAccuracyForExpectedValue(double expectedValue, double accuracy = 0.001d) + { + if (expectedValue == 0d) { return 1.0e-15d; } + else return Math.Abs(expectedValue) * accuracy; + } + } +} diff --git a/StructureHelperTests/LibrariesTests/Ndms/RCSections/RCSectionTest.cs b/StructureHelperTests/LibrariesTests/Ndms/RCSections/RCSectionTest.cs new file mode 100644 index 0000000..f50917f --- /dev/null +++ b/StructureHelperTests/LibrariesTests/Ndms/RCSections/RCSectionTest.cs @@ -0,0 +1,184 @@ +using LoaderCalculator.Data.Materials; +using LoaderCalculator.Data.Materials.MaterialBuilders; +using LoaderCalculator.Data.Matrix; +using LoaderCalculator.Data.Ndms; +using LoaderCalculator.Data.Ndms.Transformations; +using LoaderCalculator.Data.Planes; +using LoaderCalculator.Data.SourceData; +using LoaderCalculator.Infrastructure; +using LoaderCalculator.Tests.Infrastructures.Logics; +using LoaderCalculator.Triangulations; +using Moq; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +namespace LoaderCalculator.Tests.FunctionalTests.SectionTests +{ + public class RCSectionTest + { + private IMaterialOptions _reinforcementOptions; + private IMaterialBuilder _reinforcementBuilder; + private IBuilderDirector _reinforcementDirector; + private IMaterialOptions _concreteOptions; + private IMaterialBuilder _concreteBuilder; + private IBuilderDirector _concreteDirector; + [SetUp] + public void Setup() + { + _reinforcementOptions = new ReinforcementOptions(); + _reinforcementBuilder = new ReinforcementBuilder(_reinforcementOptions); + _reinforcementDirector = new BuilderDirector(_reinforcementBuilder); + _concreteOptions = new ConcreteOptions(); + _concreteBuilder = new ConcreteBuilder(_concreteOptions); + _concreteDirector = new BuilderDirector(_concreteBuilder); + } + //Theoretical limit momemt Mx = 43kN*m + [TestCase(0.000113, 0.000494, 10e3, 0d, 0d, 0.00084665917358052976d, 0.0d, 0.00020754144937701132d)] + [TestCase(0.000113, 0.000494, 40e3, 0d, 0d, 0.0033939850380287412d, 0d, 0.00082989880025069202d)] + [TestCase(0.000113, 0.000494, 42e3, 0d, 0d, 0.0056613831873867241d, 0d, 0.0014291081844183839d)] + //Theoretical limit momemt Mx = -187kN*m + [TestCase(0.000113, 0.000494, -50e3, 0d, 0d, -0.0011229555729294297d, 0d, 0.00021353225742956321d)] + [TestCase(0.000113, 0.000494, -180e3, 0d, 0d, -0.0098365950945499738d, 0d, 0.0022035516889170013d)] + [TestCase(0.000113, 0.000494, -183e3, 0d, 0d, -0.021718635290382458d, 0d, 0.0053526701372818789d)] + public void Run_ShouldPass(double topArea, double bottomArea, double mx, double my, double nz, double expectedKx, double expectedKy, double expectedEpsilonZ) + { + //Arrange + double width = 0.4; + double height = 0.6; + ArrangeMaterial(LimitStates.Collapse, true); + List ndmList = new List(); + ndmList.AddRange(GetConcreteNdms(width, height)); + ndmList.AddRange(GetReinforcementNdms(width, height, topArea, bottomArea)); + var loaderData = new LoaderOptions + { + Preconditions = new Preconditions + { + ConditionRate = 0.01, + MaxIterationCount = 100, + StartForceMatrix = new ForceMatrix { Mx = mx, My = my, Nz = nz } + }, + NdmCollection = ndmList + }; + var calculator = new Calculator(); + //Act + calculator.Run(loaderData, new CancellationToken()); + var results = calculator.Result; + //Assert + Assert.NotNull(results); + var strainMatrix = results.StrainMatrix; + Assert.NotNull(strainMatrix); + Assert.AreEqual(expectedKx, strainMatrix.Kx, ExpectedProcessor.GetAccuracyForExpectedValue(expectedKx)); + Assert.AreEqual(expectedKy, strainMatrix.Ky, ExpectedProcessor.GetAccuracyForExpectedValue(expectedKy)); + Assert.AreEqual(expectedEpsilonZ, strainMatrix.EpsZ, ExpectedProcessor.GetAccuracyForExpectedValue(expectedEpsilonZ)); + } + //Longitudenal prestrain only + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0.0d, 0d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, 0.001d, 0d, 0.0d, -4.410e-05d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, 0.0015d, 0d, 0.0d, -6.666e-05d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, 0.002d, 0d, 0.0d, -8.131e-05d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, 0.003d, 0d, 0.0d, -8.131e-05d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, -0.001d, 0d, 0.0d, 0.001d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, 0d, 0d, -0.002d, 0d, 0.0d, 0.002d)] + //Curvature prestrain only + [TestCase(0.000494, 0.000494, 0d, 0d, 0d, -1e-5d, 0d, 0d, 5.4638e-6d, 0.0d, 1.069e-06d)] + //Test shows that prestrain and external forces are neglegiate one by another + [TestCase(0.000494, 0.000494, 0d, 0d, 3.952e5d, 0d, 0d, 0.001d, 0d, 0.0d, 0d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 6.873e5d, 0d, 0d, 0.002d, 0d, 0.0d, -1.703e-8d)] + [TestCase(0.000494, 0.000494, 0d, 0d, 6.873e5d, 0d, 0d, 0.003d, 0d, 0.0d, -3.796e-8d)] + public void Run_ShouldPassPrestrain(double topArea, double bottomArea, double mx, double my, double nz, double prestrainKx, double prestrainKy, double prestrainEpsZ, double expectedKx, double expectedKy, double expectedEpsilonZ) + { + //Arrange + double width = 0.4; + double height = 0.6; + ArrangeMaterial(LimitStates.Collapse, true); + List ndmList = new List(); + IStrainMatrix prestrainMatrix = new StrainMatrix() { Kx = prestrainKx, Ky = prestrainKy, EpsZ = prestrainEpsZ }; + ndmList.AddRange(GetConcreteNdms(width, height)); + var reinforcement = GetReinforcementNdms(width, height, topArea, bottomArea); + NdmTransform.SetPrestrain(reinforcement, prestrainMatrix); + ndmList.AddRange(reinforcement); + var loaderData = new LoaderOptions + { + Preconditions = new Preconditions + { + ConditionRate = 0.001, + MaxIterationCount = 100, + StartForceMatrix = new ForceMatrix { Mx = mx, My = my, Nz = nz } + }, + NdmCollection = ndmList + }; + var calculator = new Calculator(); + //Act + calculator.Run(loaderData, new CancellationToken()); + var results = calculator.Result; + //Assert + Assert.NotNull(results); + var strainMatrix = results.StrainMatrix; + Assert.NotNull(strainMatrix); + Assert.AreEqual(expectedKx, strainMatrix.Kx, ExpectedProcessor.GetAccuracyForExpectedValue(expectedKx)); + Assert.AreEqual(expectedKy, strainMatrix.Ky, ExpectedProcessor.GetAccuracyForExpectedValue(expectedKy)); + Assert.AreEqual(expectedEpsilonZ, strainMatrix.EpsZ, ExpectedProcessor.GetAccuracyForExpectedValue(expectedEpsilonZ)); + } + + private void ArrangeMaterial(LimitStates limitStates, bool isShortTerm) + { + _reinforcementOptions.InitModulus = 2.0e11; + _reinforcementOptions.LimitState = limitStates; + _reinforcementOptions.IsShortTerm = isShortTerm; + _reinforcementOptions.Strength = 400.0e6; + + _concreteOptions.LimitState = limitStates; + _concreteOptions.IsShortTerm = isShortTerm; + _concreteOptions.Strength = 40.0e6; + } + + private IEnumerable GetConcreteNdms(double width, double heigth) + { + IMaterial _material = _concreteDirector.BuildMaterial(); + RectangleTriangulationLogicOptions logicOptions = new RectangleTriangulationLogicOptions(width, heigth, 1, 20); + var logic = Triangulation.GetLogicInstance(logicOptions); + var ndmCollection = logic.GetNdmCollection(new RectangularPlane { Material = _material }); + return ndmCollection; + } + + private IEnumerable GetReinforcementNdms(double width, double heigth, double topArea, double bottomArea) + { + IMaterial _material = _reinforcementDirector.BuildMaterial(); + double gap = 0.05; + var ndmCollection = new INdm[] + { + new Ndm + { + Area = topArea, + CenterX = width / 2 - gap, + CenterY = heigth / 2 - gap, + Material = _material + }, + new Ndm + { + Area = topArea, + CenterX = -(width / 2 - gap), + CenterY = heigth / 2 - gap, + Material = _material + }, + new Ndm + { + Area = bottomArea, + CenterX = width / 2 - gap, + CenterY = -(heigth / 2 - gap), + Material = _material + }, + new Ndm + { + Area = bottomArea, + CenterX = -(width / 2 - gap), + CenterY = -(heigth / 2 - gap), + Material = _material + } + }; + return ndmCollection; + } + } +} diff --git a/StructureHelperTests/StructureHelperTests.csproj b/StructureHelperTests/StructureHelperTests.csproj index 5576498..f2ac88c 100644 --- a/StructureHelperTests/StructureHelperTests.csproj +++ b/StructureHelperTests/StructureHelperTests.csproj @@ -1,7 +1,7 @@  - - + + Debug AnyCPU @@ -39,30 +39,51 @@ 4 - - ..\StructureHelper\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - - - ..\StructureHelper\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - - - - - + + + + + + ..\packages\Castle.Core.5.0.0\lib\net462\Castle.Core.dll + + + ..\Libraries\LoaderCalculator.dll + True + + + ..\packages\Moq.4.18.1\lib\net462\Moq.dll + + + ..\packages\NUnit.3.13.3\lib\net45\nunit.framework.dll + + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + + + + + + + + {23138426-7994-46a7-834d-08afb9741a86} + StructureHelperLogics + + - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + - \ No newline at end of file diff --git a/StructureHelperTests/StructureHelperTests.csproj.bak b/StructureHelperTests/StructureHelperTests.csproj.bak new file mode 100644 index 0000000..8bbe88a --- /dev/null +++ b/StructureHelperTests/StructureHelperTests.csproj.bak @@ -0,0 +1,64 @@ + + + + Debug + AnyCPU + {7AC480BB-8A34-4913-B7AA-C6A5D7F35509} + Library + Properties + StructureHelperTests + StructureHelperTests + v4.7.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/StructureHelperTests/TestExampleClass.cs b/StructureHelperTests/TestExampleClass.cs deleted file mode 100644 index 6c778ba..0000000 --- a/StructureHelperTests/TestExampleClass.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; - -namespace StructureHelperTests -{ - [TestClass] - public class TestExampleClass - { - [TestMethod] - public void TestMethod() - { - } - } -} diff --git a/StructureHelperTests/UnitTests/Ndms/Triangulations/RectangleTriangulationTest.cs b/StructureHelperTests/UnitTests/Ndms/Triangulations/RectangleTriangulationTest.cs new file mode 100644 index 0000000..d3b14ec --- /dev/null +++ b/StructureHelperTests/UnitTests/Ndms/Triangulations/RectangleTriangulationTest.cs @@ -0,0 +1,51 @@ +using LoaderCalculator.Data.Materials; +using LoaderCalculator.Data.Materials.MaterialBuilders; +using LoaderCalculator.Data.Matrix; +using LoaderCalculator.Data.Ndms; +using LoaderCalculator.Data.Ndms.Transformations; +using LoaderCalculator.Data.Planes; +using LoaderCalculator.Data.SourceData; +using LoaderCalculator.Infrastructure; +using LoaderCalculator.Tests.Infrastructures.Logics; +using LoaderCalculator.Triangulations; +using Moq; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using StructureHelperLogics.NdmCalculations.Triangulations; +using StructureHelperLogics.Data.Shapes; + +namespace StructureHelperTests.UnitTests.Ndms.Triangulations +{ + public class RectangleTriangulationTest + { + //Участок по центру + [TestCase(0d, 0d, 1.0d, 1.0d, 0d, 0.02d, 1, 50 * 50, -0.49d, -0.49d)] + //Участок со смещением от центра + [TestCase(2d, 2d, 1.0d, 1.0d, 0d, 0.02d, 1, 50 * 50, 1.51d, 1.51d)] + [TestCase(2d, 1d, 1.0d, 1.0d, 0d, 0.02d, 1, 50 * 50, 1.51d, 0.51d)] + //Участок с поворотом на 1 радиан + [TestCase(0d, 0d, 1.0d, 1.0d, 1d, 0.02d, 1, 50 * 50, 0.14757265268048089d, -0.67706891243125777d)] + //Участок со смещением и поворотом на 1 радиан + [TestCase(2d, 2d, 1.0d, 1.0d, 1d, 0.02d, 1, 50 * 50, -0.45476470519903267d, 2.0864776689208147d)] + public void Run_ShouldPass (double centerX, double centerY, double width, double height, double angle, double ndmMaxSize, int ndmMinDivision, int expectedCount, double expectedFirstCenterX, double expectedFirstCenterY) + { + //Arrange + IMaterial material = new Material(); + ICenter center = new Center() { CenterX = centerX, CenterY = centerY }; + IRectangle rectangle = new Rectangle() { Width = width, Height = height, Angle = angle }; + IRectangleTriangulationOptions options = new RectangleTriangulationOptions(center, rectangle, ndmMaxSize, ndmMinDivision); + IRectangleTriangulationLogic logic = new StructureHelperLogics.NdmCalculations.Triangulations.RectangleTriangulationLogic(options); + //Act + var result = logic.GetNdmCollection(material); + //Assert + Assert.NotNull(result); + Assert.AreEqual(expectedCount, result.Count()); + var firstNdm = result.First(); + Assert.AreEqual(expectedFirstCenterX, firstNdm.CenterX); + Assert.AreEqual(expectedFirstCenterY, firstNdm.CenterY); + } + } +} diff --git a/StructureHelperTests/packages.config b/StructureHelperTests/packages.config index f84cb10..e3e465e 100644 --- a/StructureHelperTests/packages.config +++ b/StructureHelperTests/packages.config @@ -1,5 +1,9 @@  - - + + + + + + \ No newline at end of file