Skip to content

Commit df82855

Browse files
committed
remove net40 target & bug fix
1 parent 4ff69ff commit df82855

File tree

11 files changed

+254
-20
lines changed

11 files changed

+254
-20
lines changed

BriefFiniteElementNet.Common/BriefFiniteElementNet.Common.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net40;net45;netstandard2.0</TargetFrameworks>
4+
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
55
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
66
<GenerateDocumentationFile>false</GenerateDocumentationFile>
77
<PackageId>BriefFiniteElementNet.Common</PackageId>

BriefFiniteElementNet.CustomElements/BriefFiniteElementNet.CustomElements.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net40;net45;netstandard2.0</TargetFrameworks>
4+
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
55
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
66
<GenerateDocumentationFile>false</GenerateDocumentationFile>
77
<PackageId>BriefFiniteElementNet.CustomElements</PackageId>

BriefFiniteElementNet.Legacy/BriefFiniteElementNet.Legacy.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net40;net45;netstandard2.0</TargetFrameworks>
4+
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
55
</PropertyGroup>
66

77
<ItemGroup>

BriefFiniteElementNet.Solvers/BriefFiniteElementNet.Solvers.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>BriefFiniteElementNet.Solvers</RootNamespace>
1111
<AssemblyName>BriefFiniteElementNet.Solvers</AssemblyName>
12-
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
1414
<Deterministic>true</Deterministic>
15+
<TargetFrameworkProfile />
1516
</PropertyGroup>
1617
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
1718
<DebugSymbols>true</DebugSymbols>
@@ -21,6 +22,7 @@
2122
<DefineConstants>DEBUG;TRACE</DefineConstants>
2223
<ErrorReport>prompt</ErrorReport>
2324
<WarningLevel>4</WarningLevel>
25+
<Prefer32Bit>false</Prefer32Bit>
2426
</PropertyGroup>
2527
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
2628
<DebugType>pdbonly</DebugType>
@@ -29,6 +31,7 @@
2931
<DefineConstants>TRACE</DefineConstants>
3032
<ErrorReport>prompt</ErrorReport>
3133
<WarningLevel>4</WarningLevel>
34+
<Prefer32Bit>false</Prefer32Bit>
3235
</PropertyGroup>
3336
<ItemGroup>
3437
<Reference Include="CSparse, Version=3.4.9.0, Culture=neutral, processorArchitecture=MSIL">

BriefFiniteElementNet.TestConsole/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ static void Main(string[] args)
3636
{
3737
Console.Title = "BFE tests & temporary codes";
3838

39-
Validation.GithubIssues.Issue96.Run1();
39+
Validation.GithubIssues.Issue101.Run1();
4040

4141
return;
4242
TestTet();

BriefFiniteElementNet.Tests/BarElementConcentratedLoadTests.cs

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -147,23 +147,29 @@ public void LoadEquivalentNodalLoads_ConcentratedLod_eulerbernoullybeam_dirY_My(
147147
//https://www.amesweb.info/Beam/Fixed-Fixed-Beam-Bending-Moment.aspx
148148

149149
// ^
150-
// ^m m0 ^
151-
// | /z |
152-
// | / |
150+
// ^y m0 ^
151+
// | |
152+
// | |
153153
// ====================================== --> x
154-
//
154+
// /z
155155

156156
var w = 2.0;
157-
var a = 0.0001;
157+
158+
var l = 4.0;
159+
var a = l/3;
158160

159161
var nodes = new Node[2];
160162

161163
nodes[0] = (new Node(0, 0, 0) { Label = "n0" });
162-
nodes[1] = (new Node(4, 0, 0) { Label = "n1" });
164+
nodes[1] = (new Node(l, 0, 0) { Label = "n1" });
163165

164166
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
165167

166-
var u1 = new Loads.ConcentratedLoad(new Force(0, 0, 0, 0, w, 0), new IsoPoint(elm.LocalCoordsToIsoCoords(a)[0]), CoordinationSystem.Global);
168+
var isoLoc = elm.LocalCoordsToIsoCoords(a);
169+
170+
var u1 = new Loads.ConcentratedLoad(new Force(0, 0, 0, 0, w, 0),
171+
new IsoPoint(isoLoc[0]),
172+
CoordinationSystem.Global);
167173

168174
var hlpr = new ElementHelpers.EulerBernoulliBeamHelper(ElementHelpers.BeamDirection.Y, elm);
169175

@@ -176,8 +182,8 @@ public void LoadEquivalentNodalLoads_ConcentratedLod_eulerbernoullybeam_dirY_My(
176182
var ma = w / (L * L) * (L * L - 4 * a * L + 3 * a * a);
177183
var mb = w / (L * L) * (3 * a * a - 2 * a * L);
178184

179-
var ra = -6 * w * a / (L * L * L) * (L - a);//R1
180-
var rb = 6 * w * a / (L * L * L) * (L - a);//R1
185+
var ra = 6 * w * a / (L * L * L) * (L - a);//R1
186+
var rb = -6 * w * a / (L * L * L) * (L - a);//R1
181187

182188
/*
183189
var m1 = -w * L * L / 12;
@@ -204,6 +210,8 @@ public void LoadEquivalentNodalLoads_ConcentratedLod_eulerbernoullybeam_dirY_My(
204210
[Test]
205211
public void LoadEquivalentNodalLoads_ConcentratedLod_eulerbernoullybeam_dirY_My_Start()
206212
{
213+
//equivalent nodal load of a concentrated load applied at start point is same as load itself!
214+
207215
var w = 2.0;
208216
var a = 0;
209217

@@ -245,14 +253,18 @@ public void LoadEquivalentNodalLoads_ConcentratedLod_eulerbernoullybeam_dirY_My_
245253

246254
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
247255

248-
var u1 = new Loads.ConcentratedLoad(new Force(0, 0, 0, 0, w, 0), new IsoPoint(elm.LocalCoordsToIsoCoords(a)[0]), CoordinationSystem.Global);
256+
var f = new Force(0, 0, 0, 0, w, 0);
257+
258+
var loc = new IsoPoint(elm.LocalCoordsToIsoCoords(a)[0]);
259+
260+
var u1 = new Loads.ConcentratedLoad(f, loc, CoordinationSystem.Global);
249261

250262
var hlpr = new ElementHelpers.EulerBernoulliBeamHelper(ElementHelpers.BeamDirection.Y, elm);
251263

252264
var loads = hlpr.GetLocalEquivalentNodalLoads(elm, u1);
253265

254266
var d0 = Force.Zero;
255-
var d1 = loads[1] - u1.Force;
267+
var d1 = loads[1] - f;
256268

257269

258270
Assert.IsTrue(Math.Abs(d0.Forces.Length) < 1e-5, "invalid value");
@@ -885,8 +897,8 @@ public void LoadInternalForce_concentratedLLoad_eulerbernoullybeam_dirY_My()
885897
var ma = w / (L * L) * (L * L - 4 * a * L + 3 * a * a);
886898
var mb = w / (L * L) * (3 * a * a - 2 * a * L);
887899

888-
var ra = -6 * w * a / (L * L * L) * (L - a);//R1
889-
var rb = 6 * w * a / (L * L * L) * (L - a);//R1
900+
var ra = 6 * w * a / (L * L * L) * (L - a);//R1
901+
var rb = -6 * w * a / (L * L * L) * (L - a);//R1
890902

891903

892904
mi = ma + ra * x - ((x > forceLocation) ? w : 0.0);
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using BriefFiniteElementNet.ElementHelpers;
5+
using BriefFiniteElementNet.Elements;
6+
using NUnit.Framework;
7+
8+
namespace BriefFiniteElementNet.Tests
9+
{
10+
public class BarElementShapeFunctions
11+
{
12+
[Test]
13+
public void eulerbernoullybeam_dirZ()
14+
{
15+
var w = 2.0;
16+
var a = 4;
17+
18+
var nodes = new Node[2];
19+
20+
nodes[0] = (new Node(0, 0, 0) { Label = "n0" });
21+
nodes[1] = (new Node(4, 0, 0) { Label = "n1" });
22+
23+
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
24+
25+
var L = (elm.Nodes[1].Location - elm.Nodes[0].Location).Length;
26+
27+
var b = L - a;
28+
29+
var hlpr = new EulerBernoulliBeamHelper(BeamDirection.Z, elm);
30+
31+
for (var i = 0.0; i <= 1; i += 0.01)
32+
{
33+
var x = i * L;
34+
35+
var iso = elm.LocalCoordsToIsoCoords(x);
36+
37+
var n = hlpr.GetNMatrixAt(elm, iso);
38+
39+
var n1 = n[0, 0];
40+
var m1 = n[0, 1];
41+
var n2 = n[0, 2];
42+
var m2 = n[0, 3];
43+
44+
var n1p = n[1, 0];
45+
var m1p = n[1, 1];
46+
var n2p = n[1, 2];
47+
var m2p = n[1, 3];
48+
49+
50+
var xi = iso[0];
51+
52+
var n1e = 0.25 * (2 - 3 * xi + xi * xi * xi);
53+
var m1e = 0.125 * L * (1 - xi - xi * xi + xi * xi * xi);
54+
var n2e = 0.25 * (2 + 3 * xi - xi * xi * xi);
55+
var m2e = 0.125 * L * (-1 - xi + xi * xi + xi * xi * xi);
56+
57+
var epsilon = 1e-5;
58+
59+
Assert.IsTrue(Math.Abs(n1 - n1e) < epsilon, "invalid value");
60+
Assert.IsTrue(Math.Abs(n2 - n2e) < epsilon, "invalid value");
61+
Assert.IsTrue(Math.Abs(m1 - m1e) < epsilon, "invalid value");
62+
Assert.IsTrue(Math.Abs(m2 - m2e) < epsilon, "invalid value");
63+
}
64+
}
65+
66+
[Test]
67+
public void eulerbernoullybeam_dirZ_diff()
68+
{
69+
var w = 2.0;
70+
var a = 4;
71+
72+
var nodes = new Node[2];
73+
74+
nodes[0] = (new Node(0, 0, 0) { Label = "n0" });
75+
nodes[1] = (new Node(5.2355, 0, 0) { Label = "n1" });
76+
77+
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
78+
79+
var L = (elm.Nodes[1].Location - elm.Nodes[0].Location).Length;
80+
81+
var b = L - a;
82+
83+
var hlpr = new EulerBernoulliBeamHelper(BeamDirection.Z, elm);
84+
85+
86+
var n0 = hlpr.GetNMatrixAt(elm ,- 1 );
87+
var n1 = hlpr.GetNMatrixAt(elm,1 );
88+
89+
var epsilon = 1e-5;
90+
91+
Assert.IsTrue(Math.Abs(n0[1, 1] - L/2) < epsilon, "invalid value");
92+
}
93+
94+
[Test]
95+
public void eulerbernoullybeam_dirY()
96+
{
97+
var w = 2.0;
98+
var a = 4;
99+
100+
var nodes = new Node[2];
101+
102+
nodes[0] = (new Node(0, 0, 0) { Label = "n0" });
103+
nodes[1] = (new Node(4, 0, 0) { Label = "n1" });
104+
105+
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
106+
107+
var L = (elm.Nodes[1].Location - elm.Nodes[0].Location).Length;
108+
109+
var b = L - a;
110+
111+
var hlpr = new EulerBernoulliBeamHelper(BeamDirection.Y, elm);
112+
113+
for (var i = 0.0; i <= 1; i += 0.01)
114+
{
115+
var x = i * L;
116+
117+
var iso = elm.LocalCoordsToIsoCoords(x);
118+
119+
var n = hlpr.GetNMatrixAt(elm, iso);
120+
121+
var n1 = n[0, 0];
122+
var m1 = n[0, 1];
123+
var n2 = n[0, 2];
124+
var m2 = n[0, 3];
125+
126+
var n1p = n[1, 0];
127+
var m1p = n[1, 1];
128+
var n2p = n[1, 2];
129+
var m2p = n[1, 3];
130+
131+
132+
var xi = iso[0];
133+
134+
var n1e = 0.25 * (2 - 3 * xi + xi * xi * xi);
135+
var m1e = -0.125 * L * (1 - xi - xi * xi + xi * xi * xi);
136+
var n2e = 0.25 * (2 + 3 * xi - xi * xi * xi);
137+
var m2e = -0.125 * L * (-1 - xi + xi * xi + xi * xi * xi);
138+
139+
var epsilon = 1e-5;
140+
141+
Assert.IsTrue(Math.Abs(n1 - n1e) < epsilon, "invalid value");
142+
Assert.IsTrue(Math.Abs(n2 - n2e) < epsilon, "invalid value");
143+
Assert.IsTrue(Math.Abs(m1 - m1e) < epsilon, "invalid value");
144+
Assert.IsTrue(Math.Abs(m2 - m2e) < epsilon, "invalid value");
145+
}
146+
}
147+
148+
149+
150+
[Test]
151+
public void eulerbernoullybeam_dirY_diff()
152+
{
153+
var w = 2.0;
154+
var a = 4;
155+
156+
var nodes = new Node[2];
157+
158+
nodes[0] = (new Node(0, 0, 0) { Label = "n0" });
159+
nodes[1] = (new Node(5.236568, 0, 0) { Label = "n1" });
160+
161+
var elm = new BarElement(nodes[0], nodes[1]) { Label = "e0" };
162+
163+
var L = (elm.Nodes[1].Location - elm.Nodes[0].Location).Length;
164+
165+
var b = L - a;
166+
167+
var hlpr = new EulerBernoulliBeamHelper(BeamDirection.Y, elm);
168+
169+
170+
var n1 = hlpr.GetNMatrixAt(elm, 1);
171+
172+
var epsilon = 1e-5;
173+
174+
Assert.IsTrue(Math.Abs(n1[1, 3] + L / 2) < epsilon, "invalid value");
175+
}
176+
177+
178+
}
179+
}

BriefFiniteElementNet.Validation/BriefFiniteElementNet.Validation.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<Compile Include="Case_04\Validator.cs" />
6767
<Compile Include="Case_05\Validator.cs" />
6868
<Compile Include="EqualDofValidator.cs" />
69+
<Compile Include="GithubIssues\Issue101.cs" />
6970
<Compile Include="GithubIssues\Issue23.cs" />
7071
<Compile Include="GithubIssues\Issue24.cs" />
7172
<Compile Include="GithubIssues\Issue25.cs" />
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using BriefFiniteElementNet.Elements;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace BriefFiniteElementNet.Validation.GithubIssues
9+
{
10+
public class Issue101
11+
{
12+
public static void Run1()
13+
{
14+
var m1 = new Model();
15+
m1.Nodes.Add(new Node(0, 0, 0) { Label = "n1" });
16+
m1.Nodes.Add(new Node(0, 0, 6) { Label = "n2" });
17+
m1.Nodes["n1"].Constraints = new Constraint(dx: DofConstraint.Fixed, dy: DofConstraint.Fixed, dz: DofConstraint.Fixed, rx: DofConstraint.Fixed, ry: DofConstraint.Fixed, rz: DofConstraint.Fixed);
18+
m1.Elements.Add(new BarElement(m1.Nodes["n1"], m1.Nodes["n2"]) { Label = "r1" });
19+
20+
var bar = (m1.Elements["r1"] as BarElement);
21+
(m1.Elements["r1"] as BarElement).Behavior = BarElementBehaviours.FullFrame;
22+
(m1.Elements["r1"] as BarElement).Section = new BriefFiniteElementNet.Sections.UniformParametric1DSection(16.43 / 10000, 541.22 / 100000000, 44.92 / 100000000, 541.22 / 100000000 + 44.92 / 100000000);
23+
(m1.Elements["r1"] as BarElement).Material = BriefFiniteElementNet.Materials.UniformIsotropicMaterial.CreateFromYoungPoisson(210 * Math.Pow(10, 9), 0.3);
24+
25+
m1.Elements["r1"].Loads.Add(new BriefFiniteElementNet.Loads.ConcentratedLoad(new Force(0, 0, 0, 0, 2000, 0),
26+
new IsoPoint(0.0), CoordinationSystem.Global)); //The moment is applied to the center point of the element
27+
28+
var l = bar.GetGlobalEquivalentNodalLoads(bar.Loads[0]);
29+
30+
31+
m1.Solve();
32+
var r11 = m1.Nodes[0].GetSupportReaction();
33+
var r12 = m1.Nodes[1].GetSupportReaction();
34+
Console.WriteLine("n0 reaction: {0}", r11);
35+
Console.WriteLine("n1 reaction: {0}", r12);
36+
Console.ReadKey();
37+
}
38+
}
39+
}

BriefFiniteElementNet/BriefFiniteElementNet.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net40;net45;netstandard2.0</TargetFrameworks>
4+
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
55
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
66
<GenerateDocumentationFile>false</GenerateDocumentationFile>
77
<PackageId>BriefFiniteElement.Net</PackageId>

0 commit comments

Comments
 (0)