static void TestTet() { //new Validation.Case_03.Validator().Validate(); var tet = new TetrahedronElement(); //new Tetrahedral(); tet.Nodes[0] = new Node(-1, -1, 0); tet.Nodes[1] = new Node(1, -1, 0); tet.Nodes[2] = new Node(1, 1, 0); tet.Nodes[3] = new Node(0, 0, 5); tet.Material = UniformIsotropicMaterial.CreateFromYoungPoisson(210e9, 0.3); //tet.E = 1000;tet.Nu = 0.3; var stf = tet.GetGlobalStifnessMatrix(); var ctrl = new MatrixVisualizerControl(); ctrl.VisualizeMatrix(stf); new Window() { Content = ctrl, Title = "epsi1on Matrix Visualizer!", Width = 24 * 50, Height = 24 * 50 } .ShowDialog(); }
/// <summary> /// Reads an element from an Abaqus input file /// </summary> /// <param name="elementline">A line with the element props</param> /// <param name="delimiter">The separator char</param> /// <param name="nodes">A list of nodes - starts at 0 -> = node-1</param> /// <returns>An element</returns> private static TetrahedronElement ReadTetraElement(string elementline, char delimiter, NodeCollection nodes) { TetrahedronElement elm = new TetrahedronElement(); string[] split; int elementNr, nodeNr1, nodeNr2, nodeNr3, nodeNr4; try { split = elementline.Split(delimiter); elementNr = Convert.ToInt32(split[0]); //subtract 1. The nodes are numbered from 1-> end and are stored as 0-> end-1 elm.Nodes[0] = nodes[Convert.ToInt32(split[1]) - 1]; elm.Nodes[1] = nodes[Convert.ToInt32(split[2]) - 1]; elm.Nodes[2] = nodes[Convert.ToInt32(split[3]) - 1]; elm.Nodes[3] = nodes[Convert.ToInt32(split[4]) - 1]; elm.label = elementNr.ToString(); } catch (Exception) { throw new Exception("Something went wrong with reading the nodes! Error with line: " + elementline); } return(elm); }
public static Model Generate3DTetrahedralElementGrid(int m, int n, int l) { var buf = new Model(); var dx = 1.0; var dy = 1.0; var dz = 1.0; var nodes = new Node[m, n, l]; for (int k = 0; k < l; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { var pos = new Point(i * dx, j * dy, k * dz); var nde = new Node() { Location = pos }; buf.Nodes.Add(nde); nde.Constraints = Constraints.RotationFixed; nodes[j, i, k] = nde; } } } var elm = new Func <Node, Node, Node, Node, TetrahedronElement>((n1, n2, n3, n4) => { var buff = new TetrahedronElement(); buff.Nodes[0] = n1; buff.Nodes[1] = n2; buff.Nodes[2] = n3; buff.Nodes[3] = n4; buff.Material = UniformIsotropicMaterial.CreateFromYoungPoisson(210e9, 0.3); buff.FixNodeOrder(); return(buff); }); var elms = new List <Element>(); for (int i = 0; i < m - 1; i++) { for (int j = 0; j < n - 1; j++) { for (int k = 0; k < l - 1; k++) { var ns = new Node[] { nodes[i, j, k], nodes[i + 1, j, k], nodes[i + 1, j + 1, k], nodes[i, j + 1, k], nodes[i, j, k + 1], nodes[i + 1, j, k + 1], nodes[i + 1, j + 1, k + 1], nodes[i, j + 1, k + 1], }; elms.Add(elm(ns[0], ns[1], ns[3], ns[4])); elms.Add(elm(ns[2], ns[1], ns[3], ns[6])); elms.Add(elm(ns[1], ns[3], ns[4], ns[6])); elms.Add(elm(ns[4], ns[5], ns[6], ns[1])); elms.Add(elm(ns[4], ns[6], ns[7], ns[3])); } } } buf.Elements.Add(elms.ToArray()); for (int i = 0; i < n * m; i++) { buf.Nodes[i].Constraints = Constraints.Fixed; } return(buf); }