Ejemplo n.º 1
0
        private BiElasticMaterial2D(double youngModulus1, double equivalentYoungModulus1, double poissonRatio1,
                                    double equivalentPoissonRatio1, double thickness1, double youngModulus2, double equivalentYoungModulus2,
                                    double poissonRatio2, double equivalentPoissonRatio2, double thickness2,
                                    MaterialInterface2D bimaterialInterface)
        {
            MaterialUtilities.CheckYoungModulus(youngModulus1);
            MaterialUtilities.CheckPoissonRatio(poissonRatio1);
            MaterialUtilities.CheckThickness(thickness1);
            MaterialUtilities.CheckYoungModulus(youngModulus2);
            MaterialUtilities.CheckPoissonRatio(poissonRatio2);
            MaterialUtilities.CheckThickness(thickness2);

            this.YoungModulus1           = youngModulus1;
            EquivalentYoungModulus1      = equivalentYoungModulus1;
            this.PoissonRatio1           = poissonRatio1;
            this.EquivalentPoissonRatio1 = equivalentPoissonRatio1;
            this.Thickness1 = thickness1;

            this.YoungModulus2           = youngModulus2;
            EquivalentYoungModulus2      = equivalentYoungModulus2;
            this.PoissonRatio2           = poissonRatio2;
            this.EquivalentPoissonRatio2 = equivalentPoissonRatio2;
            this.Thickness2 = thickness2;

            this.bimaterialInterface = bimaterialInterface;
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Material properties for the "positive" subdomain designed by the interface are denoted as 1.
 /// Material properties for the "negative" subdomain designed by the interface are denoted as 2.
 /// </summary>
 /// <param name="youngModulus1"></param>
 /// <param name="poissonRatio1"></param>
 /// <param name="youngModulus2"></param>
 /// <param name="poissonRatio2"></param>
 /// <param name="bimaterialInterface"></param>
 public static BiElasticMaterial2D CreateMaterialForPlainStress(double youngModulus1, double poissonRatio1,
                                                                double thickness1, double youngModulus2, double poissonRatio2, double thickness2,
                                                                MaterialInterface2D bimaterialInterface)
 {
     return(new BiElasticMaterial2D(youngModulus1, youngModulus1, poissonRatio1, poissonRatio1, thickness1,
                                    youngModulus2, youngModulus2, poissonRatio2, poissonRatio2, thickness2, bimaterialInterface));
 }
        private static XContinuumElement2D CreateMaterialInterfaceElement()
        {
            XNode[] nodes = new XNode[]
            {
                new XNode(0, 20.0, 0.0),
                new XNode(1, 40.0, 0.0),
                new XNode(2, 40.0, 20.0),
                new XNode(3, 20.0, 20.0),
            };

            var                 point1         = new CartesianPoint(30.0, 0.0);
            var                 point2         = new CartesianPoint(30.0, 20.0);
            PolyLine2D          discontinuity  = new PolyLine2D(point1, point2);
            MaterialInterface2D enrichmentItem = new MaterialInterface2D(discontinuity);

            double E1       = 2E6;
            double E2       = 0.5 * E1;
            double v        = 0.3;
            var    material = BiElasticMaterial2D.CreateMaterialForPlainStrain(E1, v, E2, v, enrichmentItem);

            var integrationStrategy = new RectangularSubgridIntegration2D <XContinuumElement2D>(
                2, GaussLegendre2D.GetQuadratureWithOrder(2, 2));

            //var integrationStrategy = new IntegrationForCrackPropagation2D(GaussLegendre2D.Order2x2,
            //    new RectangularSubgridIntegration2D<XContinuumElement2D>(2, GaussLegendre2D.Order2x2));
            var factory = new XContinuumElement2DFactory(integrationStrategy, integrationStrategy, material);
            var element = factory.CreateElement(0, CellType.Quad4, nodes);

            //discontinuity.ElementIntersections.Add(element, new CartesianPoint2D[] { point1, point2 });

            //OBSOLETE: Elements access their enrichments from nodes now.
            //enrichmentItem.EnrichElement(element);
            enrichmentItem.EnrichNode(nodes[0]);
            enrichmentItem.EnrichNode(nodes[1]);
            enrichmentItem.EnrichNode(nodes[2]);
            enrichmentItem.EnrichNode(nodes[3]);

            return(element);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Material properties for the "positive" subdomain designed by the interface are denoted as 1.
        /// Material properties for the "negative" subdomain designed by the interface are denoted as 2.
        /// </summary>
        /// <param name="youngModulus1"></param>
        /// <param name="poissonRatio1"></param>
        /// <param name="youngModulus2"></param>
        /// <param name="poissonRatio2"></param>
        /// <param name="bimaterialInterface"></param>
        /// <returns></returns>
        public static BiElasticMaterial2D CreateMaterialForPlainStrain(double youngModulus1, double poissonRatio1,
                                                                       double youngModulus2, double poissonRatio2, MaterialInterface2D bimaterialInterface)
        {
            double equivalentE1 = youngModulus1 / (1.0 - poissonRatio1 * poissonRatio1);
            double equivalentV1 = poissonRatio1 / (1.0 - poissonRatio1);
            double thickness1   = 1.0;
            double equivalentE2 = youngModulus2 / (1.0 - poissonRatio2 * poissonRatio2);
            double equivalentV2 = poissonRatio2 / (1.0 - poissonRatio2);
            double thickness2   = 1.0;

            return(new BiElasticMaterial2D(youngModulus1, equivalentE1, poissonRatio1, equivalentV1, thickness1,
                                           youngModulus2, equivalentE2, poissonRatio2, equivalentV2, thickness2, bimaterialInterface));
        }