/// <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); }
/// <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); }