public ContinuumElement3DNonLinearDefGradFactory(IContinuumMaterial3DDefGrad commonMaterial, IDynamicMaterial commonDynamicProperties, double lambdag) { this.commonDynamicProperties = commonDynamicProperties; this.commonMaterial = commonMaterial; this.lambdag = lambdag; }
public Hexa8NonLinearDefGrad(IContinuumMaterial3DDefGrad material, IQuadrature3D quadratureForStiffness) { this.nGaussPoints = quadratureForStiffness.IntegrationPoints.Count; this.QuadratureForStiffness = quadratureForStiffness; this.Interpolation = InterpolationHexa8Reverse.UniqueInstance; materialsAtGaussPoints = new IContinuumMaterial3DDefGrad[nGaussPoints]; for (int i = 0; i < nGaussPoints; i++) { materialsAtGaussPoints[i] = (IContinuumMaterial3DDefGrad)material.Clone(); } }
private ContinuumElement3DNonLinearDefGrad CreateElement(CellType cellType, IReadOnlyList <Node> nodes, IContinuumMaterial3DDefGrad material, IDynamicMaterial commonDynamicProperties) { int numGPs = integrationsForStiffness[cellType].IntegrationPoints.Count; var materialsAtGaussPoints = new IContinuumMaterial3DDefGrad[numGPs]; for (int gp = 0; gp < numGPs; ++gp) { materialsAtGaussPoints[gp] = (IContinuumMaterial3DDefGrad)commonMaterial.Clone(); } return(new ContinuumElement3DNonLinearDefGrad(nodes, interpolations[cellType], integrationsForStiffness[cellType], integrationsForMass[cellType], extrapolations[cellType], material, commonDynamicProperties, lambdag)); }
public Hexa8ThermoHyperElastic(IContinuumMaterial3DDefGrad hyperElasticMaterial, ThermalMaterial thermalMaterial, IQuadrature3D quadratureForStiffness, IQuadrature3D quadratureForMass, IGaussPointExtrapolation3D gaussPointExtrapolation) { this.thermalMaterial = thermalMaterial; this.nGaussPoints = quadratureForStiffness.IntegrationPoints.Count; this.QuadratureForConsistentMass = quadratureForMass; this.QuadratureForStiffness = quadratureForStiffness; this.Interpolation = InterpolationHexa8Reverse.UniqueInstance; materialsAtGaussPoints = new IContinuumMaterial3DDefGrad[nGaussPoints]; for (int i = 0; i < nGaussPoints; i++) { materialsAtGaussPoints[i] = (IContinuumMaterial3DDefGrad)hyperElasticMaterial.Clone(); } }
public ContinuumElement3DNonLinearDefGrad(IReadOnlyList <Node> nodes, IContinuumMaterial3DDefGrad material, IQuadrature3D quadratureForStiffness, IIsoparametricInterpolation3D interpolation) { this.nGaussPoints = quadratureForStiffness.IntegrationPoints.Count; this.QuadratureForStiffness = quadratureForStiffness; this.Interpolation = interpolation; materialsAtGaussPoints = new IContinuumMaterial3DDefGrad[nGaussPoints]; for (int i = 0; i < nGaussPoints; i++) { materialsAtGaussPoints[i] = (IContinuumMaterial3DDefGrad)material.Clone(); } dofTypes = new IDofType[nodes.Count][]; for (int i = 0; i < nodes.Count; i++) { dofTypes[i] = new IDofType[] { StructuralDof.TranslationX, StructuralDof.TranslationY, StructuralDof.TranslationZ }; } }
internal static int DefineContinuumElement3DNonLinearDefGrad(Model model, IContinuumMaterial3DDefGrad 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 ContinuumElement3DNonLinearDefGradFactory(material3D, dynamicMaterial, lambdag); 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); }