/*! \page field FIELD \section FIELD_introduction Introduction MEDMEM fields are used to represent variables over a particular set of elements of the mesh. The region on which the variable is defined is determined through a support object (which can be retrieved by \a getSupport() method). Each field has a number of components, that could for instance be the different coordinates of a vector. All these components have a name, a description and a unit. Elements can also contain several Gauss points, in which case, values are defined on each Gauss point of the element. The fields can contain integer values or floating point values. In C++, this is reflected by the fact that FIELD is a class template that can be either a \c FIELD or \c FIELD. In Python, two classes \c FIELDINT and \c FIELDDOUBLE exist. In the present section, the methods of the FIELD template will be described as methods of a class \c FIELD_ (from which the template classes actually inherit). The template parameter is \c T. In MEDMEM, a field is characterized by its name (\c getName) and an optional description (\c getDescription). It is also characterized by its computation time : - an iteration number (time step number) - an order number (used if there are internal iterations inside a time step) - the time that corresponds to this iteration number. By default, there are no iteration and order number defined (value MED_NOPDT and MED_NONOR). \section field_interlacing Interlacing modes As for the coordinates in the mesh definition, there are two ways to store fields : one consists in interlacing the different components, grouping the data elementwise (MED_FULL_INTERLACE mode), the other one consists in grouping the data componentwise (MED_NO_INTERLACE). The situation is further complicated by the introduction of Gauss points. If the field is defined on several Gauss points, the MEDMEM convention is that the Gauss points are always grouped together. Let us denote \f$V_{ijk}\f$ the value of the field on the \f$i\f$-th element, for the \f$j\f$-th component on its \f$k\f$-th Gauss point. In {\c MED_FULL_INTERLACE, elements are nested in a \f$ijk\f$ order, while in \c MED_NO_INTERLACE elements are nested in \f$jik\f$ order. \\ For instance, \c MED_FULL_INTERLACE will result in the following ordering (for four Gauss points and two components): \f$V_{111} V_{112} V_{113} V_{114} V_{121} V_{122} V_{123} V_{124} V_{211} V_{212} ... \f$ \c MED_NO_INTERLACE will result in the following ordering : \f$ V_{111} V_{112} V_{113} V_{114} V_{211} V_{212} V_{213} V_{214} V_{311} V_{312} ... V_{121} V_{122} V_{123} \f$ In this document, only the methods enabling the retrieval of values on fields defined on several Gauss points are presented. For further information on defining the location of the Gauss points in a reference element, the reader should consult MED file Web Page : https://hammi.extra.cea.fr/static/MED/web_med/ \section field_outline Outline The following sections describe the FIELD methods : - This section describes how to create a FIELD lying on a support and fill it : \ref FIELD_getset - This section describes I/O methods :\ref FIELD_io - This section details methods for setting and accessing the values: \ref FIELD_value - This section details arithmetic operations performed on fields : \ref FIELD_algo, - This section treats the specific case of fields with several Gauss points : \ref FIELD_gauss. \subsection field_io_example Example for I/O routines This program gives an example of creation of a file containing a mesh and fields. This program is a tool that reads a mesh in an input file, creates a field with the inverse of the cell volume, and creates an output file with the mesh and the field. The reader should note that the mesh name passed as an argument to the \c addDriver() method has to be coherent with the mesh name (as obtained by \c getName() ). \verbinclude FIELDwrite.cxx \subsection FIELD_example Example The following example reviews most of the notions seen in this section. \verbinclude FIELDgeneral.cxx */