Ejemplo n.º 1
0
        public void InitializeGeometry(CartesianPoint crackMouth, CartesianPoint crackTip)
        {
            CrackMouth = crackMouth;
            var segment = new DirectedSegment2D(crackMouth, crackTip);

            double tangentX     = crackTip.X - crackMouth.X;
            double tangentY     = crackTip.Y - crackMouth.Y;
            double length       = Math.Sqrt(tangentX * tangentX + tangentY * tangentY);
            double tangentSlope = Math.Atan2(tangentY, tangentX);

            this.crackTip = crackTip;
            tipSystem     = new TipCoordinateSystem(crackTip, tangentSlope);

            tangentX /= length;
            tangentY /= length;

            foreach (XNode node in Mesh.Nodes)
            {
                levelSetsBody[node] = segment.SignedDistanceOf(node);
                levelSetsTip[node]  = (node.X - crackTip.X) * tangentX + (node.Y - crackTip.Y) * tangentY;
            }
        }