Personal tools
 

Meeting Minutes - 22 December 1999


Specifying Element Bases

The specification of element basis functions is the one part of FieldML which is common to the three formats proposed in FieldML here.

Initially basis functions will be specified using a comma-separated strings, taken from a pre-defined set which application software is required to recognise. (Applications are free to recognise further basis function strings as required.) The ordering of the basis functions corresponds to the order that coordinate directions were defined in the shape part of the mesh declaration for the corresponding element. An example of a declaration of element bases for a region follows.

<element-bases>
  <use-bases>
    linear-Lagrange,
    cubic-Hermite,
    monomial-4

  </use-bases>
</element-bases>

The basis function sets that a FieldML processor is required to recognise are :

  • "Lagrange-n" : the set of n nth-order basis functions required for linear interpolation across an element given n field values specified at equi-spaced local coordinate locations between 0.0 and 1.0.
  • "cubic-Hermite" : the set of four third-order basis functions required for cubic interpolation across an element given field values specified at local coordinates 0.0 and 1.0, and field derivatives at the same points (in that order).
  • "monomial-n" : the set of n monomial basis functions (a monomial basis of degree P consists of the P+1 powers of x from 0 to P). Note that the element field parameters combined with a monomial basis have no physical significance.

Combining Bases

Various shorthand forms of specifying bases will be available - in particular the common requirements of specifying the same set of element bases for every element in a mesh, or for multiple fields. This still has to be finalised, but will most likely be managed via a elements attribute on the <use-bases> element. The elements attribute may take a list of integers or ranges (see [to do : define these elementary productions somewhere]) or the string "all". If this attribute is omitted (as in the first example above), then a value of "all" is assumed. If a list of integers or ranges is specified then the bases defined within the element will be applied to the elements with indices matching the integers occuring in the union of all lists and ranges. For a given field, no integers should be repeated in the elements attribute on any <use-bases> element. If a <use-bases> element has no elements attribute or an elements attribute with value "all", then the specified bases will be applied to all elements in the mesh that have not already been specified. It is illegal to have more than one <use-bases> element with no elements attribute or an elements attribute with value "all". So, in a more complicated example :

<element-bases>
  <use-bases elements = "1">
    linear-Lagrange , linear-Lagrange
  </use-bases>
  <use-bases elements = "2 , 3">
    linear-Lagrange , cubic-Hermite
  </use-bases>
  <use-bases elements = "all">
    monomial-4, monomial-4
  </use-bases>
</element-bases>

Defining New Basis Functions

As the need arises, a scheme for extending basis function definitions may be introduced whereby basis functions are expressed as linear combinations of monomial basis functions. For instance, a set of one-dimensional cubic Bezier basis functions where the element field parameters are the field values at x = 0 and x = 1 and guide points at x = 1/3 and x = 2/3, could be defined in FieldML as :

<element-bases>
  <define-bases>
    <name> cubic-Bezier </name>
    <num-functions> 4 </num-functions>
    <monomial-order> 4 </monomial-order>
    <monomial-coefficients>
      <matrix>
        <matrixrow>
          <cn> 1</cn> <cn>-3</cn> <cn> 3</cn> <cn>-1</cn>
        </matrixrow>
        <matrixrow>
          <cn> 0</cn> <cn> 3</cn> <cn>-6</cn> <cn> 3</cn>
        </matrixrow>
        <matrixrow>
          <cn> 0</cn> <cn> 0</cn> <cn> 3</cn> <cn>-3</cn>
        </matrixrow>
        <matrixrow>
          <cn> 0</cn> <cn> 0</cn> <cn> 0</cn> <cn> 1</cn>
        </matrixrow>
      </matrix>
    </monomial-coefficients>
  </define-bases>
  <use-bases> cubic-Bezier </use-bases>
</element-bases>