private static void Example1() { Console.WriteLine("Example 1: Simple 3D truss with four members"); // Initiating Model, Nodes and Members var model = new Model(); var n1 = new Node(1, 1, 0); n1.Label = "n1";//Set a unique label for node var n2 = new Node(-1, 1, 0) { Label = "n2" }; //using object initializer for assigning Label var n3 = new Node(1, -1, 0) { Label = "n3" }; var n4 = new Node(-1, -1, 0) { Label = "n4" }; var n5 = new Node(0, 0, 1) { Label = "n5" }; var e1 = new TrussElement2Node(n1, n5) { Label = "e1" }; var e2 = new TrussElement2Node(n2, n5) { Label = "e2" }; var e3 = new TrussElement2Node(n3, n5) { Label = "e3" }; var e4 = new TrussElement2Node(n4, n5) { Label = "e4" }; //Note: labels for all members should be unique, else you will receive InvalidLabelException when adding it to model e1.A = e2.A = e3.A = e4.A = 9e-4; e1.E = e2.E = e3.E = e4.E = 210e9; model.Nodes.Add(n1, n2, n3, n4, n5); model.Elements.Add(e1, e2, e3, e4); //Applying restrains n1.Constraints = n2.Constraints = n3.Constraints = n4.Constraints = Constraint.Fixed; n5.Constraints = Constraint.RotationFixed; //Applying load var force = new Force(0, 1000, -1000, 0, 0, 0); n5.Loads.Add(new NodalLoad(force));//adds a load with LoadCase of DefaultLoadCase to node loads //Adds a NodalLoad with Default LoadCase model.Solve(); var r1 = n1.GetSupportReaction(); var r2 = n2.GetSupportReaction(); var r3 = n3.GetSupportReaction(); var r4 = n4.GetSupportReaction(); var rt = r1 + r2 + r3 + r4;//shows the Fz=1000 and Fx=Fy=Mx=My=Mz=0.0 e1.GetInternalForceAt(0.001); }
public override void UpdateCalc() { // Initiating Model, Nodes and Members model = new Model(); double spt = _spacingTop.Value / 2; double spb = _spacingBottom.Value / 2; double spv = _spacingVertical.Value; var n1a = new BriefFiniteElementNet.Node(-spt, 0, spv) { Label = "1a" }; var n1b = new BriefFiniteElementNet.Node(spt, 0, spv) { Label = "1b" }; var n2a = new BriefFiniteElementNet.Node(0, -spb, 0) { Label = "2a" }; var n2b = new BriefFiniteElementNet.Node(0, spb, 0) { Label = "2b" }; var e1 = new TrussElement2Node(n1a, n2a) { Label = "e1" }; var e2 = new TrussElement2Node(n1a, n2b) { Label = "e2" }; var e3 = new TrussElement2Node(n1b, n2a) { Label = "e3" }; var e4 = new TrussElement2Node(n1b, n2b) { Label = "e4" }; var e5 = new TrussElement2Node(n1a, n1b) { Label = "e5" }; var e6 = new TrussElement2Node(n2a, n2b) { Label = "e6" }; //Note: labels for all members should be unique, //else you will receive InvalidLabelException when adding it to model e1.A = e2.A = e3.A = e4.A = e5.A = e6.A = 0.009; e1.E = e2.E = e3.E = e4.E = e5.E = e6.E = 210e9; model.Nodes.Add(n1a, n1b, n2a, n2b); model.Elements.Add(e1, e2, e3, e4, e5, e6); //Applying restraints n1a.Constraints = Constraint.FromString("100111"); n1b.Constraints = Constraint.FromString("000111"); n2a.Constraints = Constraint.FromString("111111"); n2b.Constraints = Constraint.FromString("101111"); //Applying load var forceA = new Force(0, 0, -_loadA.Value / 2, 0, 0, 0); var forceB = new Force(0, 0, -_loadA.Value / 2, 0, 0, 0); var loadCase = new LoadCase("test", LoadType.Live); n1a.Loads.Add(new NodalLoad(forceA, loadCase)); n1b.Loads.Add(new NodalLoad(forceB, loadCase)); var loadComb = new LoadCombination(); loadComb.Add(loadCase, 1); //Adds a NodalLoad with Default LoadCase try { model.Solve(); var rA = n2a.GetSupportReaction(loadCase); var rB = n2b.GetSupportReaction(loadCase); var T = e6.GetInternalForceAt(0.5, loadComb); var F1 = e1.GetInternalForceAt(0.5, loadComb); var F2 = e3.GetInternalForceAt(0.5, loadComb); var Fresolved = F1 + F2; _reactionA.Value = rA.Forces.Z; _reactionB.Value = rB.Forces.Z; _strutResolvedForce.Value = Fresolved.Forces.Length; _tieForce.Value = T.Forces.Length; } catch (Exception) { _reactionA.Value = double.NaN; _reactionB.Value = double.NaN; } }