Beispiel #1
0
 public Hexa8u8p(IIsotropicContinuumMaterial3D material)
 {
     throw new NotImplementedException();
     //materialsAtGaussPoints = new IIsotropicContinuumMaterial3D[Hexa8u8p.iInt3];
     //for (int i = 0; i < Hexa8u8p.iInt3; i++)
     //    materialsAtGaussPoints[i] = (IIsotropicContinuumMaterial3D)material.Clone();
 }
 protected Beam3DCorotationalAbstract(IList <Node> nodes, IIsotropicContinuumMaterial3D material, double density,
                                      BeamSection3D beamSection)
 {
     this.nodes         = nodes;
     this.material      = material;
     this.density       = density;
     this.beamSection   = beamSection;
     this.initialLength = Math.Sqrt(Math.Pow(nodes[0].X - nodes[1].X, 2) + Math.Pow(nodes[0].Y - nodes[1].Y, 2)
                                    + Math.Pow(nodes[0].Z - nodes[1].Z, 2));
     this.currentLength         = this.initialLength;
     this.currentRotationMatrix = Matrix.CreateZero(AXIS_COUNT, AXIS_COUNT);
     this.naturalDeformations   = new double[NATURAL_DEFORMATION_COUNT];
     this.beamAxisX             = new double[AXIS_COUNT];
     this.beamAxisY             = new double[AXIS_COUNT];
     this.beamAxisZ             = new double[AXIS_COUNT];
 }
Beispiel #3
0
 /**
  * Creates a new instance of {@link Beam3DCorotationalIncremental} class.
  *
  * @param nodes
  *            The element nodes
  * @param material
  *            The element material
  * @param density
  *            The element density
  * @param beamSection
  *            The beam section.
  */
 public Beam3DCorotationalQuaternion(IList <Node> nodes, IIsotropicContinuumMaterial3D material, double density,
                                     BeamSection3D beamSection)
     : base(nodes, material, density, beamSection)
 {
     this.displacementsOfCurrentIncrement = new double[FREEDOM_DEGREE_COUNT];
     this.lastDisplacements      = new double[FREEDOM_DEGREE_COUNT];
     this.currentDisplacements   = new double[FREEDOM_DEGREE_COUNT];
     this.quaternionLastNodeA    = Quaternion.OfZeroAngle();
     this.quaternionLastNodeB    = Quaternion.OfZeroAngle();
     this.quaternionCurrentNodeA = Quaternion.OfZeroAngle();
     this.quaternionCurrentNodeB = Quaternion.OfZeroAngle();
     this.initialAxisX           = new double[AXIS_COUNT];
     this.initialAxisY           = new double[AXIS_COUNT];
     this.initialAxisZ           = new double[AXIS_COUNT];
     this.currentBeamAxis        = new double[AXIS_COUNT];
     this.InitializeElementAxes();
 }
Beispiel #4
0
        internal static int DefineContinuumElement3DNonLinear(Model model, IIsotropicContinuumMaterial3D material3D, IDynamicMaterial dynamicMaterial)
        {
            // Node creation
            var node1 = new Node(id: 1, x: 0.0, y: 0.0, z: 0.0);
            var node2 = new Node(id: 2, x: 100.0, y: 0.0, z: 0.0);
            var node3 = new Node(id: 3, x: 0.0, y: 100.0, z: 0.0);
            var node4 = new Node(id: 4, x: 100.0, y: 100.0, z: 0.0);
            var node5 = new Node(id: 5, x: 0.0, y: 0.0, z: 100.0);
            var node6 = new Node(id: 6, x: 100.0, y: 0.0, z: 100.0);
            var node7 = new Node(id: 7, x: 0.0, y: 100.0, z: 100.0);
            var node8 = new Node(id: 8, x: 100.0, y: 100.0, z: 100.0);

            // Create List of nodes
            IList <Node> nodes = new List <Node>();

            nodes.Add(node1);
            nodes.Add(node2);
            nodes.Add(node3);
            nodes.Add(node4);
            nodes.Add(node5);
            nodes.Add(node6);
            nodes.Add(node7);
            nodes.Add(node8);

            numberOfNodes = nodes.Count;

            // Add nodes to the nodes dictonary of the model
            for (int i = 0; i < numberOfNodes; ++i)
            {
                model.NodesDictionary.Add(i, nodes[i]);
            }

            int[][] connectivityMatrix = new int[8][];
            connectivityMatrix[0] = new int[] { 1, 1, 2, 4, 3, 5, 6, 8, 7 };

            var factory = new ContinuumElement3DNonLinearFactory(material3D, dynamicMaterial);

            for (int i = 0; i < 1; i++)
            {
                List <Node> elementNodeSet = new List <Node>(8);
                for (int j = 1; j < 9; j++)
                {
                    elementNodeSet.Add((Node)model.NodesDictionary[connectivityMatrix[i][j] - 1]);
                }

                var hexa8element = new Element()
                {
                    ID          = connectivityMatrix[i][0],
                    ElementType = factory.CreateElement(CellType.Hexa8, elementNodeSet),
                };

                for (int j = 1; j < 9; j++)
                {
                    hexa8element.AddNode(model.NodesDictionary[connectivityMatrix[i][j] - 1]);
                }

                model.ElementsDictionary.Add(hexa8element.ID, hexa8element);
                model.SubdomainsDictionary[0].Elements.Add(hexa8element);
            }

            return(numberOfNodes);
        }
Beispiel #5
0
 public Hexa8u8p(IIsotropicContinuumMaterial3D material, IElementDofEnumerator dofEnumerator) : this(material)
 {
     this.dofEnumerator = dofEnumerator;
 }