FiniteElement Group

  • CheckMesh
  • DiscreteDelta
  • EqvReduce
  • EvalMeshFunc
  • H1SIPMatrix
  • Jacobian
  • L2IPMatrix
  • LoadMesh
  • LoadQuadrature
  • MeanValue
  • MeshFaces
  • MeshInfo
  • MeshStructure
  • NpQpMatrix
  • QRuleGlobal
  • QRuleStructure
  • ReduceMesh
  • RefDerivatives
  • RefineMesh
  • SliceMesh
  • SmoothFunction
  • SpreadRefPts
  • SubdivideSimplex
  • ToAllNodes

  • CheckMesh

    CheckMesh - Check that array sizes match for mesh structure.

    Usage

    CheckMesh(mesh, vector)

    Interactive Documentation

     CheckMesh - Check that array sizes match for mesh structure.
       
       USAGE:
    
       CheckMesh(mesh)
       CheckMesh(mesh, vector)
    
       INPUT:
    
       mesh   is a MeshStructure
       vector is a vector, (optional) 
              a reduced vector of values on the mesh nodal points
    
       OUTPUT: calls `error' if inconsistency is found
    
       NOTES:
    
       This routine checks that the coordinates and equivalence
       array of a mesh are consistent.  If the vector argument
       is given, it checks that it is of the correct length.
       If any array sizes are inconsistent, it prints an error
       message and returns.
    
    

    DiscreteDelta

    DiscreteDelta - Evaluate sum of discrete delta functions.

    Usage

    fun = DiscreteDelta(mesh, l2ip, elem, ecrd, wts)

    Interactive Documentation

     DiscreteDelta - Evaluate sum of discrete delta functions.
       
       USAGE:
    
       fun = DiscreteDelta(mesh, l2ip, elem, ecrd, wts)
    
       INPUT:
    
       mesh is a MeshStructure
       l2ip is n x n, 
            the inner product matrix for the mesh, where
            n is the number of independent degrees of freedom
       elem is an n-vector of integers, 
            the list of elements containing the delta-function points 
       ecrd is m x n, 
            the list of barycentric coordinates of the delta-function points
       wts  is an n-vector,(optional)
            it gives the weights of each point; if not present,
            the weights are set to one
    
       OUTPUT:
    
       fun is an n-vector, 
           the nodal point values of the sum of the discrete
           delta functions associated with the points and weights
    
       NOTES:  
    
       *  The resulting function is not normalized in any way.
    
    

    EqvReduce

    EqvReduce - Reduce matrix columnwise by equivalences.

    Usage

    rmat = EqvReduce(mat, eqv)

    Interactive Documentation

     EqvReduce - Reduce matrix columnwise by equivalences.
       
       USAGE:
    
       rmat = EqvReduce(mat, eqv)
    
       INPUT:
    
       mat is m x n, (usually sparse) a matrix, the columns of which
                     have underlying nodal point equivalences
       eqv is 2 x k, the equivalence array
    
       OUTPUT:
    
       rmat is m x (n-k), the new matrix for the reduced (condensed) 
                     set of nodes formed by adding equivalent columns 
                     to the master column
    
       NOTES:
    
       *  The columns of the unreduced nodes are added to the 
          columns of the master node.
    
       *  This routine only reduces along the column dimension.  To
          reduce along the rows, apply to the transpose.  To reduce
          along both dimensions, call it twice.
    
       *  The equivalence array can be empty, in which case nothing
          is done, and the original matrix is returned.
    
    

    EvalMeshFunc

    EvalMeshFunc - Evaluate mesh function.

    Usage

    values = EvalMeshFunc(mesh, fun, els, ecrds)

    Interactive Documentation

     EvalMeshFunc - Evaluate mesh function.
       
       USAGE:
    
       values = EvalMeshFunc(mesh, fun, els, ecrds)
    
       INPUT:
    
       mesh  is a MeshStructure
       fun   is an n-vector, 
             function values on the set of independent nodal points
       els   is an m-vector of integers, 
             it gives the list of elements containing the points at
             which to evaluate the function
       ecrds is k x m, 
             it is the list of barycentric coordinates of the 
             points at which to evaluate the function
    
       OUTPUT:
    
       values is an n-vector,
              the values of the function at the specified points
    
    

    H1SIPMatrix

    H1SIPMatrix -- H^1 semi-inner product [Documentation out of date!]

    Usage

    h1sip = H1SIPMatrix(mesh, qrule, diff)

    Interactive Documentation

     H1SIPMatrix -- H^1 semi-inner product [Documentation out of date!]
    
       USAGE:
    
       h1sip = H1SIPMatrix(mesh, qrule, diff)
    
       INPUT:
    
       diff is d1 x d2 x n
            the list of tangent vectors at each of n points
       npqp is m x n,
            the matrix which takes nodal point values to
            (global) quadrature points 
    
       OUTPUT:
    
       h1sip is n x n, sparse
           it is the matrix of the H^1 semi-inner product,
    	where n is the number of independent degrees of
    	freedom associated with the mesh
            
    

    Jacobian

    Jacobian - Compute Jacobian of linear mesh mappings.

    Usage

    jac = Jacobian(mesh)

    Interactive Documentation

     Jacobian - Compute Jacobian of linear mesh mappings.
    
       USAGE:
    
       jac = Jacobian(mesh)
    
       INPUT:
    
       mesh is a MeshStructure,
            with simplicial element type
    
       OUTPUT:
    
       jac is 1 x m, 
           the Jacobian of each element
    
       NOTES:
    
       *  The mesh may be embedded in a space of higher 
          dimension than the reference element.  In that
          case, the Jacobian is computed as (sqrt(det(J'*J))
          and is always positive.  When the target space is
          of the same dimension as the reference element,
          the Jacobian is computed as usual and can be
          positive or negative.
    
       *  Only simplicial (linear) element types are allowed.
    
    

    L2IPMatrix

    L2IPMatrix - Form matrix for L2 inner product.

    Usage

    l2ip = L2IPMatrix(gqrule, npqp)

    Interactive Documentation

     L2IPMatrix - Form matrix for L2 inner product.
       
       USAGE:
    
       l2ip = L2IPMatrix(gqrule, npqp)
    
       INPUT:
    
       qrule is a QRuleStructure,
             it is the global quadrature rule associated with
             the underlying mesh
       npqp  is m x n, (sparse) 
             it is the matrix which takes nodal point values
             to quadrature point values
    
       OUTPUT:
    
       l2ip is n x n, (sparse) 
            the inner product matrix associated with the mesh
    
    

    LoadMesh

    LoadMesh - Load mesh from a ascii file.

    Usage

    mesh = LoadMesh(name)

    Interactive Documentation

     LoadMesh - Load mesh from a ascii file.
      
       USAGE:
    
       mesh = LoadMesh(name)
    
       INPUT:
    
       name is a string, 
           the basename of the mesh files
    
       OUTPUT:
    
       mesh is a MeshStructure, 
            for the mesh being loaded
    
       NOTES:
    
       * Expected file suffixes are:
    
            .crd for nodal point coordinates,
            .con for connectivity
            .eqv for equivalences (optional)
       
    

    LoadQuadrature

    LoadQuadrature - Load quadrature data rule.

    Usage

    qrule = LoadQuadrature(qname)

    Interactive Documentation

     LoadQuadrature - Load quadrature data rule.
       
       USAGE:
    
       qrule = LoadQuadrature(qname)
    
       INPUT:
    
       qname is a string, 
             the basename of the quadrature data files
    
       OUTPUT:
    
       qrule is a QRuleStructure, 
             it consists of the quadrature point locations and weights
    
       NOTES:
    
       *  It is expected that the quadrature rules are for simplices,
          and the last barycentric coordinate is appended to the file
          read from the data.
    
       *  Expected suffixes are .qps for the location and .qpw for
          the weights.
    
    

    MeanValue

    MeanValue - Find integral mean value of function.

    Usage

    mv = MeanValue(f, l2ip)

    Interactive Documentation

     MeanValue - Find integral mean value of function.
       
       USAGE:
    
       mv = MeanValue(f, l2ip)
    
       INPUT:
    
       f    is an n-vector, 
            an array of nodal point function values 
       l2ip is n x n, 
            the (L2) inner product matrix for the underlying mesh
    
       OUTPUT:
    
       mv is 1 x 1, 
          the mean value of `f'---the integral of f divided by
          the measure of the region
    
    

    MeshFaces

    MeshFaces - Find lower dimensional faces for a mesh.

    Usage

    [faces, mult] = MeshFaces(con)

    Interactive Documentation

     MeshFaces - Find lower dimensional faces for a mesh.
       
       USAGE:
    
       [faces, (opt) mult] = MeshFaces(con)
    
       INPUT:
    
       con is d x n, 
           the mesh connectivity (tetrahedra or triangles)
    
       OUTPUT:
    
       faces is (d-1) x m, (integer)
             the connectivity of the lower dimensional
                           faces of con
       mult is 1 x m,  (integer, optional)
            the multiplicity of each face; this should
            be either 1 (for a surface face) or 2 (for
            an interior face)
    
    

    MeshInfo

    MeshInfo - Verify and print properties of mesh.

    Usage

    MeshInfo(mesh, sym, tol)

    Interactive Documentation

     MeshInfo - Verify and print properties of mesh.
       
       USAGE:
    
       outinfo = MeshInfo(mesh)
       outinfo = MeshInfo(mesh, sym)
       outinfo = MeshInfo(mesh, sym, tol)
    
       INPUT:
    
       mesh is a MeshStructure
       sym  is 4 x n,  (optional)
            the symmetry group in quaternions; this argument can 
            be omitted if the equivalence array is empty or if you 
            do not desire to verify it
       tol  is a scalar, (optional, default = 1.0e-7)
            the tolerance used in verifying and generating 
            equivalences 
    
       OUTPUT:  none
    
       This function prints various information to the screen.
    
    

    MeshStructure

    MeshStructure - Create mesh structure from mesh data.

    Usage

    mesh = MeshStructure(crd, con, eqv)

    Interactive Documentation

     MeshStructure - Create mesh structure from mesh data.
       
       USAGE:
    
       mesh = MeshStructure
       mesh = MeshStructure(crd, con)
       mesh = MeshStructure(crd, con, eqv)
    
       INPUT:
    
       crd is e x n, 
           the array of nodal point locations
       con is d x m, (integer)
           the mesh connectivity
       eqv is 2 x k, (integer, optional) 
           the equivalence array
    
       OUTPUT:
    
       mesh is a MeshStructure, 
            the basic MeshStructure consists of three fields,
            the nodal point coordinates (.crd), the connectivity
            (.con) and the nodal point equivalence array (.eqv).
            
       NOTES:
     
       *  With no arguments, this function returns and empty mesh
          structure.  With only two arguments, it sets the equivalence 
          array to be empty.
    
    
    

    NpQpMatrix

    NpQpMatrix - Nodal point values to quadrature points.

    Usage

    npqp = NpQpMatrix(mesh, qrule)

    Interactive Documentation

     NpQpMatrix - Nodal point values to quadrature points.
       
       USAGE:
    
       npqp = NpQpMatrix(mesh, qrule)
    
       INPUT:
    
       mesh  is a MeshStructure
       qrule is a QRuleStructure, 
             a quadrature rule on the reference element
    
       OUTPUT:
    
       npqp is m x n, (sparse) 
            it is the matrix which takes the values
            at the independent nodes of the mesh to the values 
            at the quadrature points;  here, n is the number of 
            independent nodal values, and m = q*e, where e is the 
            number of elements in the mesh and q is the number of 
            qudrature points per element
                      
    

    QRuleGlobal

    QRuleGlobal - Construct a global quadrature rule for a mesh.

    Usage

    gqrule = QRuleGlobal(mesh, qrule, MetricFun)

    Interactive Documentation

     QRuleGlobal - Construct a global quadrature rule for a mesh.
       
       USAGE:
    
       gqrule = QRuleGlobal(mesh, qrule)
       gqrule = QRuleGlobal(mesh, qrule, @MetricFun)
    
       INPUT:
    
       mesh  is a MeshStructure
       qrule is a QRuleStructure, 
             the quadrature rule for the reference element 
      
       MetricFun is a function handle, (optional)
                 It returns the volumetric integration factors
                 for the applied mapping.  It is for the case
                 in which the mesh is the parameter space for
                 some manifold and has a subsequent mapping
                 associated with each point.
                
                 met = Metricfun(pts)
    
                 pts is m x n array of points
                 met is 1 x n vector of integration factors
    
       OUTPUT:
    
       NOTES:
    
       *  For spheres, this routine is superceded by `SphGQRule',
          which handles the metric dependency on the mesh.  This
          still is to be used for meshes on Rodrigues parameters,
          for which the metric function is independent of the mesh,
          or for meshes with no further mapping involved.
                 
    

    QRuleStructure

    QRuleStructure - Quadrature rule structure.

    Usage

    qrule = QRuleStructure(pts, wts)

    Interactive Documentation

     QRuleStructure - Quadrature rule structure.
       
       USAGE:
    
       qrule = QRuleStructure
       qrule = QRuleStructure(pts, wts)
    
       INPUT:
    
       pts is m x n, 
           a list of n m-dimensional points 
       wts is an n-vector, 
           the associated weights
    
       OUTPUT:
    
       qrule is a QRuleStructure, 
             it consists of two fields, points (.pts) and
             weights (.wts)
    
       NOTES:
    
       *  With no arguments, this returns an empty structure.
    
    

    ReduceMesh

    ReduceMesh - Find equivalence array for a Rodrigues mesh.

    Usage

    newmesh = ReduceMesh(mesh, sym, tol)

    Interactive Documentation

     ReduceMesh - Find equivalence array for a Rodrigues mesh.
       
       USAGE:
    
       newmesh = ReduceMesh(mesh, sym)
       newmesh = ReduceMesh(mesh, sym, tol)
    
       INPUT:
    
       mesh is a MeshStructure on the fundamental region
            with (possibly) an empty equivalence array
       sym  is 4 x m, 
            the symmetry group in quaternions
       tol  is 1 x 1, (optional, default: 10^-14) 
            the tolerance used for comparing equivalent rotations; 
    
       OUTPUT:
    
       newmesh is a MeshStructure on the fundamental region;
               it has the same  and connectivity, but
               reordered; the equivalence array is created
               and the nodes are numbered so that all 
               the independent nodes precede the dependent nodes.
    
    

    RefDerivatives

    RefDerivatives - Reference shape function derivatives.

    Usage

    der = RefDerivatives(n)

    Interactive Documentation

     RefDerivatives - Reference shape function derivatives.
       
       USAGE:
    
       der = RefDerivatives(n)
    
       INPUT:
    
       n is a positive integer,
         the dimension of the simplex
    
       OUTPUT:
    
       der is n x (n+1),
    	column j contains the gradient of the j'th
           barycentric coordinate with respect to the 
           coordinate directions
    
    

    RefineMesh

    RefineMesh - Refine a simplex-based mesh.

    Usage

    rmesh = RefineMesh(mesh, n, sym)

    Interactive Documentation

     RefineMesh - Refine a simplex-based mesh.
       
       USAGE:
    
       rmesh = RefineMesh(mesh, n)
       rmesh = RefineMesh(mesh, n, sym)
    
       INPUT:
    
       mesh is a MeshStructure,
            using 1D, 2D, or 3D simplicial elements
       n    is a scalar, (positive integer)
            the subdivision parameter for each simplex
       sym  is 4 x s, (optional) 
            the array of quaternions giving the symmetry
            group for meshes on orientation space
    
       OUTPUT:
    
       rmesh is a MeshStructure,
             it is derived from the input mesh by subdividing each 
             simplicial element into a number of subelements 
             based on the subdivision parameter n
      
       NOTES:
    
       *  This routine only subdivides the simplex.  If the 
          mesh points are mapped, as in sphere meshes, then
          that mapping needs to be applied after this routine.
       
    

    SliceMesh

    SliceMesh - Planar slice through a 3D mesh

    Usage

    [sm, smels, smecrd] = SliceMesh(m, p, n)

    Interactive Documentation

     SliceMesh - Planar slice through a 3D mesh
       
       USAGE:
    
       sm = SliceMesh(m, p, n)
    
       INPUT:
    
       m is a MeshStructure,
         for a general mesh
       p is a 3-vector,
         a point on the slice plane
       n is a 3-vector,
         the normal to the slice plane; it does not
         need to be unit length
    
       OUTPUT:
    
       sm is a MeshStructure,
          on the 2D planar section
       smels is an integer array,
          the list of elements containing the nodes in `sm',
          relative to the original mesh, `m'
       smecrd is 4 x n,
          the barycentric (elemental) coordinates of the nodes
          in `sm' relative to the original mesh, `m'
    
    

    SmoothFunction

    SmoothFunction - Smooth by convolution.

    Usage

    fsm = SmoothFunction(f, mesh, qpts, gqrule, SmoothFun, varargin)

    Interactive Documentation

     SmoothFunction - Smooth by convolution.
       
       USAGE:
    
       fsm = SmoothFunction(f, mesh, gqrule, @SmoothFun)
       fsm = SmoothFunction(f, mesh, gqrule, @SmoothFun, arg1, ...)
    
       INPUT:
    
       f      is an n-vector, 
              the values of a function on the mesh at the
              set of independent nodal points
       mesh   is a MeshStructure,
              for any region
       qpts   is d x n,
              the barycentric coordinates of the quadrature points
       gqrule is a QRuleStructure,
              the global quadrature rule for the mesh
    
       SmoothFun is a function handle,
                 which defines the function to use for
                 smoothing; it has the form:
    
                 SmoothFun(center, points, ...)
    
                 center is m x 1, 
                        the center of the distribution
                 points is m x n, 
                        the list of points to evaluate
    
       Other arguments are passed to `SmoothFun'
    
       OUTPUT:
    
       fsm is 1 x n, 
          the nodal point values of the smoothed function at
          the set of independent nodal points
    
       NOTES:
     
       *  The function is smoothed by convolving a fixed distribution
          (e.g. Gaussian) with the given function.  The result at 
          each nodal point value is the integral of the input function 
          times the smoothing function centered at that nodal point.
    
       *  The result is not normalized.  
          
    
    

    SpreadRefPts

    SpreadRefPts - Spread reference coordinates to all elements.

    Usage

    pts = SpreadRefPts(mesh, ref)

    Interactive Documentation

     SpreadRefPts - Spread reference coordinates to all elements.
       
       USAGE:
    
       pts = SpreadRefPts(mesh, ref)
    
       INPUT:
    
       mesh is a MeshStructure 
            with simplicial element type
       ref is e x k, 
           a list of barycentric coordinates for points in
           the reference element; 
    
       OUTPUT:
    
       pts is d x k x m, 
           the spatial coordinates of the reference points under
           the isoparametric mapping defined by the mesh;
           `d' is the dimension of the mapped space, 'k' is the
           number of reference points, and 'm' is the number
           of elements in `mesh'
    
       NOTES:
    
       *  Typically this would be used for numerical quadrature.
       *  e = d + 1 is not necessary; cross-dimension mappings are ok.
    
    

    SubdivideSimplex

    SubdivideSimplex - Regular subdivision of a simplex.

    Usage

    [ref, con] = SubdivideSimplex(dim, n)

    Interactive Documentation

     SubdivideSimplex - Regular subdivision of a simplex.
    
       USAGE:
    
       ref = SubdivideSimplex(dim, n)
       [ref, con] = SubdivideSimplex(dim, n)
    
       INPUT:
    
       dim is a positive integer, 
           the dimension of the simplex
       n   is a positive integer, 
           the number of subdivisions in each direction
    
       OUTPUT:
    
       ref is d x m, 
           the list of barycentric coordinates of the points 
           in the subdivision
       con is d x e, (integer)
           the connectivity of the subdivision
    
    

    ToAllNodes

    ToAllNodes - Spread array at independent nodes to all nodes.

    Usage

    all = ToAllNodes(red, eqv)

    Interactive Documentation

     ToAllNodes - Spread array at independent nodes to all nodes.
       
       USAGE:
    
       all = ToAllNodes(red, eqv)
    
       INPUT:
    
       red is m x n, 
           a list of n m-vectors at the independent nodes of a mesh
    
       eqv is 2 x l, (integer)
           the list of node equivalences (new #, old #)
    
       OUTPUT:
    
       all is m x k, 
           the array at all nodes of the mesh; k = n + l