Beispiel #1
0
 /// <summary>
 /// adds a standard (Gaussian) quadrature rule to the quadrature scheme <paramref name="scheme"/>;
 /// the actual order of the quadrature rule will be determined by the order which is passed
 /// at the scheme compilation (see <see cref="QuadratureScheme{A,B}.Compile"/>);
 /// </summary>
 public static R AddStandardRule <R, TDomain>(this R scheme, Grid.RefElements.RefElement s, TDomain domain)
     where R : QuadratureScheme <QuadRule, TDomain>
     where TDomain : ExecutionMask
 {
     scheme.AddFactoryDomainPair(new StandardQuadRuleFactory(s), domain);
     //    throw new NotImplementedException();
     return(scheme);
 }
Beispiel #2
0
        /// <summary>
        /// Constructs the <see cref="ExecutionMask"/> of the appropriate type
        /// containing all cells/edges with reference element <paramref name="E"/>
        /// </summary>
        /// <param name="E"></param>
        /// <param name="g"></param>
        /// <returns></returns>
        TDomain GetDomainForRefElement(Grid.RefElements.RefElement E, IGridData g)
        {
            ExecutionMask em = null;

            if (typeof(TDomain) == typeof(EdgeMask) || typeof(TDomain).IsSubclassOf(typeof(EdgeMask)))
            {
                em = g.iLogicalEdges.GetEdges4RefElement(E);
            }
            else if (typeof(TDomain) == typeof(CellMask) || typeof(TDomain).IsSubclassOf(typeof(CellMask)))
            {
                em = g.iLogicalCells.GetCells4Refelement(E);
            }
            else
            {
                throw new NotImplementedException();
            }


            return((TDomain)(em));
        }
Beispiel #3
0
 /// <summary>
 /// adds a standard(Gaussian) quadrature rule to the quadrature scheme <paramref name="scheme"/>.
 /// </summary>
 public static EdgeQuadratureScheme AddStandardRule(this EdgeQuadratureScheme scheme, Grid.RefElements.RefElement s)
 {
     scheme.AddFactoryDomainPair(new StandardQuadRuleFactory(s), null);
     return(scheme);
 }