15.3.1 The Bézier extraction file format 15.3.1.1 Introduction 15.3.1.2 ANSYS LS-DYNA keyword 15.3.1.3 Geometry file formats 15.3.1.3.1 ASCII format 15.3.1.3.2 Binary format 15.3.2 The Exodus Bézier extraction file format 15.3.2.1 Control point information 15.3.2.2 Element information 15.3.2.3 Node numbering 15.3.2.4 Coefficient vectors 15.3.2.4.1 Examples 15.3.2.4.1.1 Bézier mesh with two elements 15.3.2.4.1.2 Spline mesh with two elements 15.3.2.4.1.3 Rational spline mesh with four elements
2021.11

#### 15.3File Formats

##### 15.3.1.1Introduction

The support of novel computer-aided geometric descriptions forming a potential future basis of isogeometric analysis in ANSYS LS-DYNA is discussed in the present document. In particular, the design of a new keyword as well as the structure of the geometry input file meant to replace the current method using the *INCLUDE_TRANSFORM keyword is outlined. It is also aimed to generalize the geometric description as well as to focus on compressed storage in order to enable the run of larger and more complex examples.

The remaining part of the document is structured as follows. The new LS-DYNA keyword is introduced in ANSYS LS-DYNA keyword. Supported geometry file formats are discussed in Geometry file formats in greater depth.

##### 15.3.1.2ANSYS LS-DYNA keyword

The *IGA_INCLUDE_{OPTION1}_{OPTION2} keyword is introduced to import geometry files to LS-DYNA with BEZIER being one of the supported first optional arguments and blank or TRANSFORM as second optional argument, i.e.

 Card 1 1 2 3 4 5 6 7 8 Variable FILENAME Type C

 Card 2 1 2 3 4 5 6 7 8 Variable TYPE PID DIM Type I I I Default none none none

 Card 3 1 2 3 4 5 6 7 8 Variable IDPOFF FCTLEN TRANID Type I F I

 Variable Description FILENAME Name of file to be included TYPE File type 1 – ASCII 2 – LSDA PID Part ID DIM Parametric dimensions 1 – Curve 2 – Surface 3 – Volume DIM Offset patch ID IDPOFF Length transformation factor FCTLEN Transformation ID

Remarks:
1. One file per *IGA_INCLUDE_BEZIER keyword. The file, however, may contain multiple patches with the same part ID and parametric dimension (PID and DIM on Card 2), i.e. section and material. Notably, default section properties may be modified on a patch-by-patch basis; e.g., integration rule, number of interpolation elements.

2. The optional Card 3 contains fields from the INCLUDE_TRANSFORM keyword relevant for geometric entities extended with an offset of patch IDs. The capability to offset patch IDs is important if one wants to include the same file and affinely transform its content to define a new part—e.g., four tires of a car—or if standard NURBS and Bézier extraction-based geometries are combined within a model.

##### 15.3.1.3Geometry file formats

The key differences with respect to the previous format are as follows:

1. Reduced storage: Bézier extraction operators are not stored in their full form henceforth. In what follows, we distinguish between tensor product, non-tensor-product, and mixed elements. A d-dimensional tensor product element is defined by d local knot vectors. A non-tensor-product element is defined by a set of coefficient vectors essentially representing a row in the Bézier extraction operator. Elements with mixed tensor and non-tensor-product structure, e.g. prism cf. ASCII format may be defined using a combination of local knot and coefficient vectors.

2. Sorted input: Local knot and coefficient vectors are collected into sorted blocks comprised in a library. Element definitions use local knot and/or coefficient vector identifiers, i.e. pointers to the entries of the library. Furthermore, a coefficient vector may be stored using either the dense or sparse storage formats. Noting that the latter may be beneficial as the element dimension increases but complicate the export of the data, the choice to invoke different storage formats is left to the preprocessor. Assuming, for instance, that tensor product elements are used to define most part of the discretization and non-tensor-product elements occur in the vicinity of a few extraordinary points only, it might be easier to export the data in dense format only.

3. Format and precision: In order to ensure consistency with the binary input, cf. Binary format, a fixed input format is proposed using (due to the relative indexing) short integers, i.e. $i8$, and double precision reals of the form 1PE24.16. Consequently, each line may contain up to ten integers or five reals yielding lines of up to 80 or 120 character long, respectively.

For brevity, local knot vectors are also referred to as coefficient vectors henceforth.

##### 15.3.1.3.1ASCII format

The following structured input has to be written for each patch separately, i.e.

 BLOCK 1 - PATCH PID, NN, NE, NCV, WFL Total number of lines: 1

 BLOCK 2 - NODES For each node i = 1,...,NN: Xi, Yi, Zi, Wi Total number of lines: NN

 BLOCK 3 - ELEMENTS For each element subblock j = 1,...,NEB: ETYPEj, NEj, NNj, NCVj, PRj, PSj, PTj For each element subblock j: N1, N2, ...,Nk (as many lines as needed CVID1, CVID2, ...,CVIDl (as many lines as needed Total number of lines: $1 + NEB + \sum_{j=1}^NEB [ceil(NN_j)/10 + ceil(NCV_j)/10]$

 BLOCK 4 - COEFFICIENT VECTORS NDCVB, NSCVB For each dense subblock d = 1,...,NDCVB: NCVd, NCVCd For each sparse subblock j = 1, ..., NSCVB: NCVs, NCVCs For each coefficient vector in dense subblock d: CVC1, CVC2, ...,CVCm (as many lines as needed) For each sparse subblock j = 1, ..., NSCVB: CVI1, CVI2, ...,CVIn (as many lines as needed) CVC1, CVC2, ...,CVCn (as many lines as needed) Total number of lines: $1 + NDCVB + NSCVB + \sum_{d=1}^NDCVB [ceil(NCVCd)/5 + ceil(NCVCs_j)/10 + ceil(NCVCs/5)]$

 Variable Description PID Patch ID NN Number of nodes/control points. NE Number of elements NCV Number of coefficient vectors WFL Control weight flag 0 – Polynomial 1 – Rational Xi, Yi, Zi Nodal coordinates of the i-th node Wi Nodal weights of the i-th node NEB Number of sorted element sub-blocks: i.e., based on the element type, number of nodes, number of coefficient vectors, and polynomial degrees used in their definition, elements are sorted into j = 1, ..., NEB subblocks ETYPEj Type of elements in the j-th subblock 0 – Cube (tensor product) 1 – Cube (non-tensor-product) 2 – Simplex (non-tensor-product) 3 – Prism (tensor product in one direction only) NEj Number of elements in the j-th subblock NNj Number of nodes defining an element in the j-th subblock NCVj Number of coefficient vectors defining an element in the j-th subblock PRj Polynomial degree in the r-direction for elements in the j-th subblock PSj Polynomial degree in the s-direction for elements in the j-th subblock PTj Polynomial degree in the t-direction for elements in the j-th subblock Nk Node IDs defining the element connectivity, k = 1,...,NCVCj in the j-th subblock CVIDl Coefficient vector IDs defining the element, m = 1,...,NCVCj in the j-th subblock NDCVB Number of \textit{sorted} coefficient vector blocks using dense storage format, i.e. the coefficient vectors are stored into d = 1,...,NDCVB sub-blocks based on their length. NSCVB Number of \textit{sorted} coefficient vector blocks using the sparse storage format, .e. the coefficient vectors are stored into s = 1,...,NSVCB sub-blocks based on their length. NCVd(NCVs) Number of dense (sparse) coefficient vectors in the d-th (s-th) sub-block. NCVCd(NCVCs) Number of dense (sparse) coefficient vector components in the d-th (s-th) sub-block. CVCm(CVCn) Coefficient vector components using the dense (sparse) storage format m = 1,...,NCVCd (n = 1,...,NCVCs) in the d-th (s-th) sub-block. CVIn Coefficient vector index, n = 1,...,NCVCs (sparse format only)

Remarks:
1. Element and node IDs are local/relative to the patch and therefore are not defined at input. Consequently, there is no need to offset them on the optional Card 3.

2. A cube may be defined in two and three dimensions (quadrilateral and hexahedron). Simplexes exist in all three dimensions (line, triangle, tetrahedron). A prism is a five-sided polytope defined in three dimensions and bounded by two triangular caps and three rectangular faces.

3. For the sake of generality, a non-tensor-product cube (ETYPE=1) may also be used to define tensor product cubes (ETYPE=0). This may be useful in case local knot vectors can not be retrieved from Bézier extraction operators in higher dimensions.

##### 15.3.1.3.2Binary format

In addition to the ASCII format outlined in the previous section, we intend and in most industrial cases prefer to support binary storage of the geometry using the open LSDA format and API developed and maintained by LSTC. Invoking the binary format will further reduce storage requirements, speeding up I/O. The data should be written using the following path: "keyword/[option]/patch[i8.8]/" where "[option]" is either "isoshell" or "isosolid" for two and three-dimensional patches, respectively.

##### 15.3.2The Exodus Bézier extraction file format

This document describes a standard format for exporting Bézier extraction information in the Exodus-II file format, v8.03 and newer (simply referred to as the Exodus format for the remainder of this document). We leverage the existing attribute capability in Exodus to output the data needed for Bézier extraction, including control point weights, additional element information, and coefficient vector information. In the following sections, we establish a set of common attribute names used to tag this information.

##### 15.3.2.1Control point information

Control point information in Bézier extraction is always encoded in homogeneous form. Nodal values, such as spatial coordinates, are always transfered to projective space through a multiplication by their respective weights. The spline control points are written to Exodus in homogeneous form as nodal control points using ex_put_coord. The nodal weights are stored as nodal attribute, bex_weight, as described below.

 EX_NODAL bex_weight† Description Control weights associated with the control points Attribute type EX_DOUBLE Array size num_nodes

In the table above, the () symbol indicates that the attribute is optional. If all control weights are one, as is the case for non-rational geometry, this attribute may be omitted. If no bex_weight attribute is specified, the weights are implied to be equal to 1.0.

##### 15.3.2.2Element information

To explicitly denote Bézier elements, they are named according to established Exodus element names with a BEX_ prefix.

These new elements and their corresponding parametric dimension d are given in the table below:

 Exodus element name d BEX_CURVE 1 BEX_QUAD 2 BEX_TRIANGLE 2 BEX_HEX 3 BEX_TETRA 3 BEX_WEDGE 3

Note that the Bézier extraction format does not currently support pyramid elements.

To explicitly denote Bézier elements, they are named according to established Exodus element names with a BEX_ prefix. For each Bézier element, we store the polynomial degree of the element as an entity attribute. In table below num_deg is the length of the bex_elem_degrees vector p that uniquely defines the Bernstein polynomials over the element.

For each element block, we store three additional attributes to encode the information necessary to define Bézier elements. In the EX_ELEM_BLOCK table below, d denotes the element’s parametric dimension, and num_elem_blk denotes the number of elements in the block.

 EX_ELEM_BLOCK bex_elem_degrees Description Polynomial degree of the elements in the block Attribute Type EX_INTEGER Array size num_deg

If the extraction operator is simply the identity matrix for every element in the mesh, the spline is composed entirely of $C^{0}$ Bézier elements. In this case, the extraction operators are redundant and the optional attributes indicated by the symbol do not need to be written to the file. If these optional attributes are not included for a block of Bézier elements, it is implied that the extraction operator is simply the identity matrix for every element in the block.

##### 15.3.2.3Node numbering

The node numbering for the Exodus Bézier elements follows an $i$, then $j$, then $k$ fastest ordering. While this is a departure from the node ordering traditionally used in Exodus, it is necessary for easily supporting elements with arbitrary polynomial degree. Figure 604 through Figure 608 give examples of this node ordering on quadratic elements.

Figure 609 gives an example of this indexing scheme on a Bézier hexahedron with polynomial degree $p = {2,1,3}$.

Figure 604: Node ordering for a BEX_CURVE element with degree $p = 2$.

Figure 605: At left: Node ordering for a BEX_QUAD element with degree $p = {2,2}$. At right: Node ordering for a BEX_TRIANGLE element with degree $p = 2$

Figure 606: Node ordering for a BEX_HEX element with degree $p = {2,2,2}$. From left to right, the figures show the nodes corresponding to slices at $k=1$, $k=2$, and $k=3$, respectively.

Figure 607: Node ordering for a BEX_WEDGE element with degree $p = {2,2}$. From left to right, the figures show the nodes corresponding to slices at at $k=1$, $k=2$, and $k=3$, respectively.

Figure 608: Node ordering for a BEX_TETRA element with degree $p = 2$. From left to right, the figures show the nodes corresponding to slices at at at $k=1$, $k=2$, and $k=3$, respectively.

Figure 609: Node ordering for a BEX_HEX element with degree $p = {2,1,3}$. From left to right, the figures show the nodes corresponding to slices at at at $k=1$, $k=2$, and $k=3$, respectively.

##### 15.3.2.4Coefficient vectors

The final set of attributes that must be stored are the extraction operator coefficient vectors. Many Bézier extraction file formats allow for both dense and sparse storage of coefficient vectors. Dense storage entails storing every coefficient vector entry for the extraction operators on multivariate ($d \gt 1$) elements. Sparse storage is an optimization scheme for tensor-product elements, wherein only the coefficient vectors for univariate extraction operators are stored. The coefficient vectors for tensor product elements can then be computed from the tensor product of these univariate coefficient vectors. As an example, the coefficient vector for a degree p = {2,2} BEX_QUAD element

can be computed as the Kronecker product of two $p = 2$ univariate coefficient vectors

Currently, only dense coefficient vector storage has been specified for Exodus, but sparse storage will be added in the future. The coefficient vector is stored as an EX_BLOB with name bex_cv_blob Let NDCVB denote the number of dense coefficient vector blocks in the file. The attributes and variables stored on the blob are given in the table below.

 EX_BLOB bex_dense_cv_info† Description Array containing the number of coefficient vectors and coefficient vector lengths for each dense block. Attribute Type EX_INTEGER Array size 2 * NDCVB bex_dense_cv_blocks† Description Array containing the coefficient vector values Variable Type EX_DOUBLE Array Size $\sum_{i=0}^{NDCVB} \prod_{j=0}^{1} bex\_dense\_cv\_info[2i + j]$

Note that every coefficient vector attribute is marked as optional (). If no coefficient vector attributes are found in a file containing Bézier elements, the extraction operator is assumed to be the identity matrix for every element. In the case of an Exodus file with transient data, the bex_dense_cv_blocks variable will always be stored at the first time step time_step=1.

##### 15.3.2.4.1Examples

In this final section, we supply three simple examples to illustrate how Bézier extraction information is encoded in the Exodus format.

##### 15.3.2.4.1.1Bézier mesh with two elements

In this first example, we save a simple Bézier mesh as an Exodus file. The mesh is a simple rectangle composed of two biquadratic elements, and the interelement continuity is one. Using Coreform Cubit, the Exodus file can be generated with the following commands:

Example journal file that creates a simple U-spline and exports the Bézier mesh Exodus format

reset reset iga create surf rect width 2 height 1 move surf 1 x 1 y 0.5 surf 1 size 1 mesh surf 1 uspline surf 1 export uspline 1 exodus ’two_elem_example’

The resulting Bézier mesh is shown in figure 610.

The tables below show the expected output data contained in the Exodus file.

Figure 610: Schematic of the simple U-spline surface created by the Coreform Cubit commands shown above. The surface is composed of two biquadratic Bézier elements, $c_{1}$ and $c_{2}$, with $C^{0}$ continuity between elements. The global control points are shown in red.

 Attribute or variable name Value xcoord {2.0, 2.0, 2.0, 1.5, 1.5, 1.5, 1.0, 1.0, 1.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0} ycoord {1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0} zcoord {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0} bex_weight {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}

 Attribute or variable name Value elem_type BEX_QUAD num_elem_blk 2 num_nodes_per_elem 9 bex_elem_degrees { 2, 2 } connect 1, 2, 3, 4, 5, 6, 7, 8, 9 7, 8, 9, 10, 11, 12, 13, 14, 15

##### 15.3.2.4.1.2Spline mesh with two elements

In the previous example, the extraction operator was applied to the spline mesh before writing down the data to the Exodus file, so the Bézier mesh was saved into the Exodus file. In the present example, we save the spline mesh and its extraction operators directly to the Exodus file.

To generate the file, we change the last line of the Coreform Cubit command shown above in Bézier mesh with two elements by

export uspline 1 exodus ‘two_elem_example’

The resulting U-spline surface is shown in figure 611.

Figure 611: Schematic of the simple U-spline surface created by the Coreform Cubit commands shown above. The surface is composed of two biquadratic Bézier elements, $c_{1}$ and $c_{2}$, with $C^{1}$ continuity between elements. The global control points are shown in red.

 Attribute or variable name Value xcoord { 2.0, 2.0, 2.0, 1.5, 1.5, 1.5, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0 } ycoord 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0 } zcoord { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }

 Attribute or variable name Value elem_type BEX_QUAD num_elem_blk 2 num_nodes_per_elem 18 bex_elem_degrees { 2, 2 } connect { 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 12, 6, 15, 9, 3, 13, 7, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 10, 4, 17, 11, 5, 14, 8, 2 }

 Attribute or variable name Value bex_dense_cv_info {18, 9} bex_dense_cv_blocks { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }

##### 15.3.2.4.1.3Rational spline mesh with four elements

This example shows just the data entries for a four element mesh of a quarter section of a plate with a hole.

Figure 612: Quarter segment of a plate with a hole.

 Attribute or variable name Value xcoord {1,1.25,1.75,0.92388,1.25,1.75,0.382684,0.56066,0.853553,2,2,2,0,0,0,1,0} ycoord {0,0,0,0.382684,0.56066,0.853553,0.92388,1.25,1.75,0,1,2,1,1.25,1.75,2,2} zcoord {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } bex_weight { 1, 1, 1, 0.92388, 1, 1, 0.92388, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }

 Attribute or variable name Value elem_type BEX_QUAD num_elem_blk 4 num_nodes_per_elem 18 bex_elem_degrees { 2, 2 } connect { 1, 2, 3, 4, 5, 6, 7, 8, 9, 31, 23, 19, 16, 13, 11, 8, 4, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 28, 30, 14, 15, 6, 7, 20, 12, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 28, 21, 17, 29, 22, 18, 10, 5, 2, 5, 6, 8, 9, 12, 14, 15, 16, 17, 24, 26, 25, 27, 20, 8, 9, 12, 3 }

 Attribute or variable name Value bex_dense_cv_info {31, 9} bex_dense_cv_blocks { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.25 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.25 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.50 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.25, 0.00, 0.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.25, 0.50, 0.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 1.00, 0.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.25 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00 0.00, 0.00, 0.00, 0.00, 1.00, 0.50, 0.00, 0.50, 0.25 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.25, 0.00, 0.00 0.00, 0.00, 0.00, 0.50, 1.00, 0.00, 0.25, 0.50, 0.00 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.50, 0.00, 0.00 0.00, 0.00, 0.25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.00, 0.00, 0.25, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.00, 0.50, 0.25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.00, 0.50, 0.25, 0.00, 1.00, 0.50, 0.00, 0.00, 0.00 0.00, 1.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.25, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00 0.25, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.25, 0.50, 0.00, 0.50, 1.00, 0.00, 0.00, 0.00, 0.00 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.50, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00 0.50, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }