ISAAR.MSolve.FEM/Elements/ContinuumElement2D.cs
/// <summary>
/// Calculate strains (exx, eyy, 2exy) and stresses (sxx, syy, sxy) at integration points, store them in the materials 
/// and return them (e.g. for postprocessing). The order of the tensors is the same as the order of the integration 
/// points defined by <see cref="QuadratureForStiffness"/>.
/// </summary>
/// <param name="localDisplacements"></param>
/// <returns></returns>
Calculate strains (exx, eyy, 2exy) and stresses (sxx, syy, sxy) at integration points, store them in the materials
and return them . The order of the tensors is the same as the order of the integration
points defined by .
Calculate strains ( exx eyy 2exy ) and stresses ( sxx syy sxy ) at integration points store them in the materials and return them . The order of the tensors is the same as the order of the integration points defined by .
public (IReadOnlyList<double[]> strains, IReadOnlyList<double[]> stresses) UpdateStrainsStressesAtGaussPoints(
            double[] localDisplacements)
        {
            int numGPs = QuadratureForStiffness.IntegrationPoints.Count;
            var strains = new double[numGPs][];
            var stresses = new double[numGPs][];
            IReadOnlyList<Matrix> shapeGradientsNatural =
                Interpolation.EvaluateNaturalGradientsAtGaussPoints(QuadratureForStiffness);
            for (int gp = 0; gp < numGPs; ++gp)
            {
                IMatrixView constitutive = materialsAtGaussPoints[gp].ConstitutiveMatrix;
                var jacobian = new IsoparametricJacobian2D(Nodes, shapeGradientsNatural[gp]);
                Matrix shapeGrandientsCartesian =
                    jacobian.TransformNaturalDerivativesToCartesian(shapeGradientsNatural[gp]);
                Matrix deformation = BuildDeformationMatrix(shapeGrandientsCartesian);
                strains[gp] = deformation.Multiply(localDisplacements);
                stresses[gp] = constitutive.Multiply(strains[gp]);
            }
            return (strains, stresses);
        }
public ( IReadOnlyList < double [ ] > strains , IReadOnlyList < double [ ] > stresses ) UpdateStrainsStressesAtGaussPoints ( double [ ] localDisplacements ) { int numGPs = QuadratureForStiffness . IntegrationPoints . Count ; var strains = new double [ numGPs ] [ ] ; var stresses = new double [ numGPs ] [ ] ; IReadOnlyList < Matrix > shapeGradientsNatural = Interpolation . EvaluateNaturalGradientsAtGaussPoints ( QuadratureForStiffness ) ; for ( int gp = 0 ; gp < numGPs ; ++ gp ) { IMatrixView constitutive = materialsAtGaussPoints [ gp ] . ConstitutiveMatrix ; var jacobian = new IsoparametricJacobian2D ( Nodes , shapeGradientsNatural [ gp ] ) ; Matrix shapeGrandientsCartesian = jacobian . TransformNaturalDerivativesToCartesian ( shapeGradientsNatural [ gp ] ) ; Matrix deformation = BuildDeformationMatrix ( shapeGrandientsCartesian ) ; strains [ gp ] = deformation . Multiply ( localDisplacements ) ; stresses [ gp ] = constitutive . Multiply ( strains [ gp ] ) ; } return ( strains , stresses ) ; }
Calculate strains (exx, eyy, 2exy) and stresses (sxx, syy, sxy) at integration points, store them in the materials
and return them (e.g.
Calculate strains ( exx eyy 2exy ) and stresses ( sxx syy sxy ) at integration points store them in the materials and return them ( e . g .
None
localDisplacements
double[]
None