예제 #1
0
        /// <summary>
        /// Calculates surface and volume quadrature rules in one step, which is faster when both rules
        /// are needed. Before calling GetSurfaceRule() or GetVolumeRule() to receive the respective factories, call
        /// CalculateComboQuadRuleSet(...).
        /// </summary>
        /// <param name="ComboRule"></param>
        public SayeGaussComboRuleFactory(ISayeGaussComboRule ComboRule, Mode recalculationMode)
        {
            comboRule = ComboRule;

            rulez = new[] {
                new List <ChunkRulePair <QuadRule> >(),
                new List <ChunkRulePair <QuadRule> >()
            };

            ComboStatus = new Status
            {
                initialized       = false,
                order             = 0,
                RecalculationMode = recalculationMode
            };

            volumeRuleFactory = new ComboFactoryWrapper(
                CalculateComboQuadRuleSet,
                rulez[0],
                comboRule.RefElement,
                ComboStatus,
                ComboFactoryWrapper.QuadratureType.Volume);
            surfaceRuleFactory = new ComboFactoryWrapper(
                CalculateComboQuadRuleSet,
                rulez[1],
                comboRule.RefElement,
                ComboStatus,
                ComboFactoryWrapper.QuadratureType.Surface);
        }
예제 #2
0
        /// <summary>
        /// Calculates surface and volume quadrature rules in one step, which is faster when both rules
        /// are needed. Before calling GetSurfaceRule() or GetVolumeRule() to receive the respective factories, call
        /// CalculateComboQuadRuleSet(...).
        /// </summary>
        /// <param name="ComboRule"></param>
        public SayeGaussComboRuleFactory(ISayeGaussComboRule ComboRule, CellMask maxGrid)
        {
            comboRule = ComboRule;

            rulez = new[] {
                new List <ChunkRulePair <QuadRule> >(),
                new List <ChunkRulePair <QuadRule> >()
            };

            ComboStatus = new Status
            {
                Initialized      = false,
                Order            = -1,
                MaxGrid          = maxGrid,
                ReferenceElement = comboRule.RefElement
            };

            volumeRuleFactory = new SayeFactoryWrapper(
                CalculateComboQuadRuleSet,
                rulez[0],
                ComboStatus);
            surfaceRuleFactory = new SayeFactoryWrapper(
                CalculateComboQuadRuleSet,
                rulez[1],
                ComboStatus);
        }