Fem Ply Format

The following documents the capabilities of the ply readers for reading fem structures, all subclasses of `FemPlyReaderDelegate`, i.e. `Fem1DPlyReaderDelegate`, `Fem2DPlyReaderDelegate` and `Fem3DPlyReaderDelgate`. When properties are denoted as "Optional" in the following examples it means that you may use or omit this property in the ply header. Whenever the property is used in the header all elements have to supply values for the property.

### Fem1D

    ply
    format ascii 1.0
    comment Created by hand
    element vertex 7 (Verices of the Fem1d)
    property double x
    property double y
    property double z
    property double thetaX  (Optional)
    property double thetaY  (Optional)
    property double thetaZ  (Optional)
    element 1d_element 7 (Element Definition of the Fem1d)
    property list uint uint vertex_indices (Each entry starts with the number of nodes in this element i.e. '2', followed by the nodes' indices)
    property double mass_density  (Optional)
    property double poisson_ratio (Optional)
    property double young_modulus (Optional)
    element boundary_condition 3 (Boundary conditions of the Fem1D)
    property uint vertex_index (Each entry fixes all the degrees of freedom of the given node index)
    element radius 1 (Radius for all the elements)
    property double value
    element material 1 (Physical material properties for all the elements)
    property double mass_density
    property double poisson_ratio
    property double young_modulus
    end_header

The ply file for an Fem1d is mostly marked by the `1d_element` element, the `radius` and `material` properties are applied to all of the `1d_elements`. Please note that the `vertex` element is compatible with the graphics file format and you should be able to load the fem1d file into a common graphics application. Optionally you can assign per element material properties at the `1d_element` level, in this case every element will need to carry material values and the `material` element will be ignored.

### Fem2D

    ply
    format ascii 1.0
    comment Created by hand
    element vertex 6
    property double x
    property double y
    property double z
    property double thetaX  (Optional)
    property double thetaY  (Optional)
    property double thetaZ  (Optional)
    element 2d_element 3 (Element Definition of the Fem2d)
    property list uint uint vertex_indices (each entry starts with the number of nodes in this element i.e. '3', followed by the nodes' indices)
    property double mass_density  (Optional)
    property double poisson_ratio (Optional)
    property double young_modulus (Optional)
    element boundary_condition 2 (Boundary conditions of the Fem2D)
    property uint vertex_index (Each entry fixes all the degrees of freedom of the given node index)
    element thickness 1 (Thickness for all the elements)
    property double value
    element material 1 (Physical material properties for all the elements)
    property double mass_density
    property double poisson_ratio
    property double young_modulus
    end_header

The ply file for an Fem2d is indicated by the `2d_element` element, the `thickness` and `material` properties are applied to all of the `2d_elements`. Please note that the `vertex` element is compatible with the graphics file format and you should be able to load the fem1d file into a common graphics application. Additionally you can add `face` elements to this file to embed a graphics mesh with the fem mesh. Currently the format only supports triangles as elements, this means the 2d_element data must have 3 entries. Optionally you can assign per element material properties at the `2d_element` level, in this case every element will need to carry material values and the `material` element will be ignored.

### Fem3D

    ply
    format ascii 1.0
    comment Created by hand
    element vertex 10
    property double x
    property double y
    property double z
    element 3d_element 3 (Element Definition of the Fem3d)
    property list uint uint vertex_indices (Each entry starts with the number of nodes in this element i.e. '4' or '8', followed by the nodes' indices)
    property double mass_density  (Optional)
    property double poisson_ratio (Optional)
    property double young_modulus (Optional)
    element boundary_condition 2 (Boundary conditions of the Fem3D)
    property uint vertex_index (Each entry fixes all the degrees of freedom of the given node index)
    element material 1 (Physical material properties for all the elements)
    property double mass_density
    property double poisson_ratio
    property double young_modulus
    end_header

The ply file for an Fem3d is indicated by the `3d_element` element. Please note that the `vertex` element is compatible with the graphics file format and you should be able to load the fem3d file into a common graphics application. Additionally you can add `face` elements to this file to embed a graphics mesh with the fem mesh. Currently the reader supports tehtrahedral and hexahedral elements (4 and 8 nodes respectively), it will depend on the actual representation that is being used whether these elements can be mixed within one mesh. Optionally you can assign per element material properties at the `1d_element` level, in this case every element will need to carry material values and the `material` element will be ignored.