Exemplo n.º 1
0
        //public string PlotDirectory { get { return lsmPlotDirectory; } }

        public void Analyze(ISolver solver)
        {
            var problem  = new ProblemStructural(Model, solver);
            var analyzer = new QuasiStaticCrackPropagationAnalyzer(Model, solver, /*problem,*/ crack, fractureToughness,
                                                                   maxIterations);

            // Subdomain plots
            if (subdomainPlotDirectory != null)
            {
                if (solver is FetiDPSolver fetiDP)
                {
                    analyzer.DDLogger = new DomainDecompositionLoggerFetiDP(fetiDP, subdomainPlotDirectory);
                }
                else
                {
                    analyzer.DDLogger = new DomainDecompositionLogger(subdomainPlotDirectory);
                }
            }

            analyzer.Initialize();
            analyzer.Analyze();

            #region crack propagation output
            // Write crack path
            //Console.WriteLine("Crack path:");
            //foreach (var point in crack.CrackPath)
            //{
            //    Console.WriteLine("{0} {1}", point.X, point.Y);
            //}
            //Console.WriteLine();

            // Write growth angles, lengths and SIFs if necessary
            //if (writePropagation)
            //{
            //    using (var writer = new StreamWriter(propagationPath))
            //    {
            //        PropagationLogger logger = crack.CrackTipPropagators[crack.CrackTips[0]].Logger;
            //        int numIterations = logger.GrowthAngles.Count;
            //        writer.WriteLine(numIterations);
            //        for (int i = 0; i < numIterations; ++i)
            //        {
            //            writer.Write(logger.GrowthAngles[i]);
            //            writer.Write(" " + logger.GrowthLengths[i]);
            //            writer.Write(" " + logger.SIFsMode1[i]);
            //            writer.Write(" " + logger.SIFsMode2[i]);
            //            writer.WriteLine();
            //        }
            //    }
            //}
            #endregion
        }
Exemplo n.º 2
0
        //public string PlotDirectory { get { return lsmPlotDirectory; } }


        public void Analyze(ISolver solver)
        {
            var problem  = new ProblemStructural(Model, solver);
            var analyzer = new QuasiStaticCrackPropagationAnalyzer(Model, solver, /*problem,*/ crack, fractureToughness,
                                                                   maxIterations);

            // Subdomain plots
            if (subdomainPlotDirectory != null)
            {
                if (solver is FetiDPSolver fetiDP)
                {
                    analyzer.DDLogger = new DomainDecompositionLoggerFetiDP(fetiDP, subdomainPlotDirectory, true);
                }
                else
                {
                    analyzer.DDLogger = new DomainDecompositionLogger(subdomainPlotDirectory);
                }
            }

            analyzer.Initialize();
            analyzer.Analyze();
        }