コード例 #1
0
        /// <summary>
        /// Returns a collection of local and global condition numbers in order to assess the operators stability
        /// </summary>
        public IDictionary <string, double> OperatorAnalysis(IEnumerable <int[]> VarGroups = null)
        {
            AssembleMatrixCallback(out BlockMsrMatrix System, out double[] Affine, out BlockMsrMatrix MassMatrix, this.CurrentStateMapping.Fields.ToArray(), true, out var Dummy);


            if (VarGroups == null)
            {
                int NoOfVar = this.CurrentStateMapping.Fields.Count;
                VarGroups = new int[][] { NoOfVar.ForLoop(i => i) };
            }

            var Ret = new Dictionary <string, double>();

            foreach (int[] varGroup in VarGroups)
            {
                var ana = new BoSSS.Solution.AdvancedSolvers.Testing.OpAnalysisBase(this.m_LsTrk, System, Affine, this.CurrentStateMapping, this.m_CurrentAgglomeration, MassMatrix, this.Config_MultigridOperator, this.AbstractOperator);
                ana.VarGroup = varGroup;
                var Table = ana.GetNamedProperties();

                foreach (var kv in Table)
                {
                    if (!Ret.ContainsKey(kv.Key))
                    {
                        Ret.Add(kv.Key, kv.Value);
                    }
                }
            }

            return(Ret);
        }
コード例 #2
0
        /// <summary>
        /// Operator stability analysis
        /// </summary>
        override public IDictionary <string, double> OperatorAnalysis()
        {
            var ana = new BoSSS.Solution.AdvancedSolvers.Testing.OpAnalysisBase(this.LsTrk,
                                                                                this.Op_Matrix, this.Op_Affine,
                                                                                this.u.Mapping, Op_Agglomeration,
                                                                                this.Op_mass.GetMassMatrix(this.u.Mapping, new double[] { 1.0 }, false, this.LsTrk.SpeciesIdS.ToArray()),
                                                                                this.OpConfig, this.Op);

            Tecplot.PlotFields(new DGField[] { ana.StencilCondNumbersV() }, "stencilCn", 0.0, 1);

            return(ana.GetNamedProperties());
        }