Personal tools
 

Meeting Minutes - 12 January 2000


Criticism of Meeting Minutes - 22 December 1999

Oh well. I never really expected everyone to agree the first time. You just can't make everyone happy.

Poul pointed out: Lagrange basis functions previously named "linear-Lagrange" etc, should be renamed "Lagrange-n", to be consistent with the specification of monomial basis functions. This is appropriate as formulae exists for the set of n Lagrange basis functions given n nodes equi-spaced between the 0.0 and 1.0. This change has been maded to the Element Bases page.

Poul also pointed out: With the general linear map description method the user may want fields to share maps, in the sense that if the map is changed from within a FieldML processing application, all of the fields sharing the map will be affected. In the 22/12/1999 minutes, the intent was for maps to be re-used within the FieldML file format, but this didn't extend to sharing within the processing application. Do we need to separate the two? Map re-use in the file format probably indicates map sharing. Do we want to force the sharing behaviour on the application?

One feature that wasn't included in the 22/12/99 minutes was a means for defining and referencing FieldML objects, which is necessary for the efficient re-use of information. Objects destined for re-use could easily include :

  • vectors : lists of basis functions, lists of local coordinate positions (natural description), vectors of ensemble field parameters or nodal values, vectors of node indices (nodal description)
  • matrices : ensemble-element-field parameter maps
  • information sets : the information for a field (ie. the data within a <node-information>, <map-information> and <natural-information> elements).

In practice, a system whereby any element in the FieldML repertoire can be named and then referenced would be useful. Why not use a <define> element with an id attribute to create objects. The value of the id attribute is of XML-type ID, so is guaranteed to be unique within a file. To reference the object, prefix the base element-name with "use-" and use the idref attribute (of XML-type IDREF). For instance :

<define
    id  = "bi-linear-monomial">
  <bases>
    <vector>
      <ci>monomial-1</ci><ci>monomial-1</ci>
    </vector>
  </bases>
</define>

<define
    id  = "two-element-mesh-map">
  <map-information>
    <element-list>
      <element
          index  = "1">
        <use-bases
            idref  = "bi-linear-monomial" />
      </element>
    </element-list>
  </map-information>
</define>

<field
    name            = "fibre-directions"
    num-components  = "2">
  <field-component
      name  = "x">
    <use-map-information
        idref  = "two-element-mesh-map" />
  </field-component>
  <field-component
      name  = "y">
    <use-map-information
        idref  = "two-element-mesh-map" />
  </field-component>
</field>

Example For Further Discussion

<region
    name         = "two-element-mesh"
    displayName  = "two element mesh">

<field-list>

  <field
      name            = "geometry"
      num-components  = "2">
    <field-component
        name  = "x">
      <use-node-information
          idref  = "two-element-mesh-nodes" />
    </field-component>
    <field-component
        name  = "y">
      <use-node-information
          idref  = "two-element-mesh-nodes" />
    </field-component>
  </field>

  <field
      name            = "fibre-directions"
      num-components  = "2">
    <field-component
        name  = "x">
      <use-map-information
          idref  = "two-element-mesh-map" />
    </field-component>
    <field-component
        name  = "y">
      <use-map-information
          idref  = "two-element-mesh-map" />
    </field-component>
  </field>

  <field
      name            = "temperature"
      num-components  = "1">
    <field-component>
      <natural-information>
        <global-parameter-list>
          <global-parameter>
            <in-element>1</in-element>
            <at-local-coordinates>
              <vector><cn>0.0</cn><cn>0.0</cn></vector>
            </at-local-coordinates>
            <field-value>5.0</field-value>
          </global-parameter>
          <global-parameter>
            <in-element>1</in-element>
            <at-local-coordinates>
              <vector><cn>1.0</cn><cn>0.0</cn></vector>
            </at-local-coordinates>
            <field-value>3.0</field-value>
          </global-parameter>
          <global-parameter>
            <in-element>2</in-element>
            <at-local-coordinates>
              <vector><cn>1.0</cn><cn>0.0</cn></vector>
            </at-local-coordinates>
            <field-value>4.0</field-value>
          </global-parameter>
          <global-parameter>
            <in-element>1</in-element>
            <at-local-coordinates>
              <vector><cn>0.0</cn><cn>1.0</cn></vector>
            </at-local-coordinates>
            <field-value>4.0</field-value>
          </global-parameter>
          <global-parameter>
            <in-element>1</in-element>
            <at-local-coordinates>
              <vector><cn>1.0</cn><cn>1.0</cn></vector>
            </at-local-coordinates>
            <field-value>5.0</field-value>
          </global-parameter>
          <global-parameter>
            <in-element>2</in-element>
            <at-local-coordinates>
              <vector><cn>1.0</cn><cn>1.0</cn></vector>
            </at-local-coordinates>
            <field-value>3.0</field-value>
          </global-parameter>
        </global-parameter-list>

        <constraint-list>
          <constraint>
            <field-continuity
                between-elements  = "all"
                order             = "C0" />
          </constraint>
        </constraint-list>

      </natural-information>
    </field-component>
  </field>

</field-list>

<define
    id  = "two-element-mesh-nodes">
  <node-information>
<-- OK. So what happens when some fields aren't defined at certain nodes? Fill in with zeros or "undef"s, or use a sparse vector notation. -->
    <node-list>
      <field-ordering>
        <nl-field
            name             = "geometry.x"
            value-index      = "1"
            num-derivatives  = "0" />
        <nl-field
            name             = "geometry.y"
            value-index      = "2"
            num-derivatives  = "0" />
      </field-ordering>
      <node
          index  = "1">
        <vector><cn>0.0</cn><cn>0.0</cn></vector>
      </node>
      <node
          index  = "2">
        <vector><cn>1.0</cn><cn>0.0</cn></vector>
      </node>
      <node
          index  = "3">
        <vector><cn>2.0</cn><cn>0.0</cn></vector>
      </node>
      <node
          index  = "4">
        <vector><cn>0.0</cn><cn>1.0</cn></vector>
      </node>
      <node
          index  = "5">
        <vector><cn>1.0</cn><cn>1.0</cn></vector>
      </node>
      <node
          index  = "6">
        <vector><cn>2.0</cn><cn>1.0</cn></vector>
      </node>
    </node-list>

    <element-list>
      <element
          index  = "1">
        <bases>
          <vector><ci>Lagrange-1</ci><ci>Lagrange-1</ci></vector>
        </bases>
        <local-nodes>
          <vector><cn>1</cn><cn>2</cn><cn>4</cn><cn>5</cn></vector>
        </local-nodes>
      </element>
      <element
          index  = "2">
        <bases>
          <vector><ci>Lagrange-1</ci><ci>Lagrange-1</ci></vector>
        </bases>
        <local-nodes>
          <vector><cn>2</cn><cn>3</cn><cn>5</cn><cn>6</cn></vector>
        </local-nodes>
      </element>
    </element-list>

  </node-information>
</define>

<define
    id  = "two-element-mesh-map">
  <map-information>

    <ensemble-field-parameters>
      <vector>
        <cn>5.0</cn> <cn>3.0</cn> <cn>4.0</cn>
        <cn>4.0</cn> <cn>5.0</cn> <cn>3.0</cn>
      </vector>
    </ensemble-field-parameters>

    <-- "ee" is short for ensemble-element-field-parameter -->
    <ee-map-list>
      <ee-map
          index  = "1">
        <bases>
          <vector><ci>monomial-1</ci><ci>monomial-1</ci></vector>
        </bases>
        <matrix>
          <matrixrow>
            <cn> 1.0</cn><cn> 0.0</cn><cn> 0.0</cn>
            <cn> 0.0</cn><cn> 0.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn>-1.0</cn><cn> 1.0</cn><cn> 0.0</cn>
            <cn> 0.0</cn><cn> 0.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn>-1.0</cn><cn> 0.0</cn><cn> 0.0</cn>
            <cn> 1.0</cn><cn> 0.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn> 1.0</cn><cn>-1.0</cn><cn> 0.0</cn>
            <cn>-1.0</cn><cn> 1.0</cn><cn> 0.0</cn>
          </matrixrow>
        </matrix>
      </ee-map>
      <ee-map
          index  = "2">
        <bases>
          <vector><ci>monomial-1</ci><ci>monomial-1</ci></vector>
        </bases>
        <matrix>
          <matrixrow>
            <cn> 0.0</cn><cn> 1.0</cn><cn> 0.0</cn>
            <cn> 0.0</cn><cn> 0.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn> 0.0</cn><cn>-1.0</cn><cn> 1.0</cn>
            <cn> 0.0</cn><cn> 0.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn> 0.0</cn><cn>-1.0</cn><cn> 0.0</cn>
            <cn> 0.0</cn><cn> 1.0</cn><cn> 0.0</cn>
          </matrixrow>
          <matrixrow>
            <cn> 0.0</cn><cn> 1.0</cn><cn>-1.0</cn>
            <cn> 0.0</cn><cn>-1.0</cn><cn> 1.0</cn>
          </matrixrow>
        </matrix>
      </ee-map>
    </ee-map-list>

  </map-information>
</define>


</region>