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>