예제 #1
0
        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();
            }
        }
예제 #2
0
        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));
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
        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
                };
            }
        }