])
)
+
+dnl Check for the Tecplot API. If it is found we will be able to write
+dnl Tecplot binary files directly.
+dnl
+dnl This is a little ugly since we aren't guaranteed that TECHOME
+dnl will point to the installation directory. It could just as
+dnl easily be TEC80HOME, TEC90HOME, etc... So, better check them all
+dnl
+dnl Usage: DEAL_II_CONFIGURE_TECPLOT
+dnl
+AC_DEFUN(DEAL_II_CONFIGURE_TECPLOT, dnl
+[
+ AC_CHECK_FILE($TECHOME/lib/tecio.a, TECPLOT_LIBRARY_PATH=$TECHOME/lib/tecio.a)
+ AC_CHECK_FILE($TEC80HOME/lib/tecio.a, TECPLOT_LIBRARY_PATH=$TEC80HOME/lib/tecio.a)
+ AC_CHECK_FILE($TEC90HOME/lib/tecio.a, TECPLOT_LIBRARY_PATH=$TEC90HOME/lib/tecio.a)
+ AC_SUBST(TECPLOT_LIBRARY_PATH)
+ AC_CHECK_FILE($TECHOME/include/TECIO.h, TECPLOT_INCLUDE_PATH=$TECHOME/include)
+ AC_CHECK_FILE($TEC80HOME/include/TECIO.h, TECPLOT_INCLUDE_PATH=$TEC80HOME/include)
+ AC_CHECK_FILE($TEC90HOME/include/TECIO.h, TECPLOT_INCLUDE_PATH=$TEC90HOME/include)
+ AC_SUBST(TECPLOT_INCLUDE_PATH)
+ if test -r $TECPLOT_LIBRARY_PATH -a -r $TECPLOT_INCLUDE_PATH/TECIO.h ; then
+ AC_DEFINE(DEAL_II_HAVE_TECPLOT, 1,[Flag indicating whether the library shall be compiled to use the Tecplot interface])
+ fi
+])
/* Enable the multigrid components of the library */
#undef ENABLE_MULTIGRID
+/* Flag indicating whether the library shall be compiled to use the Tecplot interface */
+#undef DEAL_II_HAVE_TECPLOT
+
#endif
#include <vector>
#include <string>
+// Only include the Tecplot API header if the appropriate files
+// were detected by configure
+#ifdef DEAL_II_HAVE_TECPLOT
+# include "TECIO.h"
+# include <string.h>
+#endif
+
// we only need output streams, but older compilers did not provide
// them in a separate include file
#ifdef HAVE_STD_OSTREAM_HEADER
* @sect3{Tecplot format}
*
* The @p{write_tecplot} function and the @p{write} function through the @p{tecplot}
- * parameter write the data in the Tecplot (http://www.amtec.com) FEBLOCK format. The
+ * parameter write the data in the Tecplot @url{http://www.amtec.com} FEBLOCK format. The
* program supports 1, 2, and 3D data and has features such as contouring, slicing,
* drawing streamlines, and animation. Patches are written as a collection of
* quadrilaterals in 2D or bricks in 3D, with the nodal values interpolated to
- * (bi-,tri-) linear elements.
+ * (bi-,tri-) linear elements. These functions will write Tecplot ASCII formatted files.
+ *
+ * Additionally, Tecplot binary output is supported through the @p{write_tecplot_binary}
+ * and the @p{write} function through the @p{tecplot_binary} parameter. For this to work
+ * properly @p{./configure} checks for the Tecplot API at build time. To write Tecplot binary
+ * files directly make sure that the TECHOME environment variable points to the
+ * Tecplot installation directory, and that the files $TECHOME/include/TECIO.h
+ * and $TECHOME/lib/tecio.a are readable. If these files are not availabe (or in the
+ * case of 1D) @p{write_tecplot_binary} will simply call @{write_tecplot} and thus larger
+ * ASCII data files will be produced rather than more efficient Tecplot binary files.
+ * For more information consult the Tecplot Users and Reference manuals.
*
- * Future work will write Tecplot binary files directly rather than the current
- * ASCI text files provided the proper libraries are detected at compile time.
*
*
* @sect3{VTK format}
*/
struct TecplotFlags
{
- private:
- /**
- * Dummy entry to suppress compiler
- * warnings when copying an empty
- * structure. Remove this member
- * when adding the first flag to
- * this structure (and remove the
- * @p{private} as well).
- */
- int dummy;
public:
+
+ /**
+ * This variable is needed to hold the
+ * output file name when using the
+ * Tecplot API to write binary files.
+ * If the user doesn't set the file
+ * name with this variable only
+ * ASCII Tecplot output will be
+ * produced.
+ */
+ const char* tecplot_binary_file_name;
+
+ /**
+ * Constructor
+ **/
+ TecplotFlags (const char* tecplot_binary_file_name = NULL);
+
/**
* Declare all flags with name
* and type as offered by this
/**
* Write the given list of patches
* to the output stream in Tecplot
- * format. See the general
+ * ASCII format. See the general
* documentation for more information
* on the parameters.
*/
const TecplotFlags &flags,
std::ostream &out);
+ /**
+ * Write the given list of patches
+ * to the output stream in Tecplot
+ * binary format. See the general
+ * documentation for more information
+ * on the parameters. @p{tecplot_binary_file_name}
+ * (specified through the TecplotFlags
+ * struct) indicates the name of the file
+ * to be written. If the file name is not
+ * set ASCII output is produced.
+ *
+ * If the Tecplot API is not present this simply
+ * calls the standard write_tecplot file so that
+ * ASCII output is still produced.
+ */
+ template <int dim, int spacedim>
+ static void write_tecplot_binary (const typename std::vector<Patch<dim,spacedim> > &patches,
+ const std::vector<std::string> &data_names,
+ const TecplotFlags &flags,
+ std::ostream &out);
+
/**
* Write the given list of
* patches to the output stream
* Exception
*/
DeclException0 (ExcIO);
-
+ /**
+ * Exception
+ */
+ DeclException0 (ExcTecplotAPIError);
+ /**
+ * Exception
+ */
+ DeclException1 (ExcErrorOpeningTecplotFile,
+ char*,
+ << "There was an error opening Tecplot file " << arg1
+ << " for output");
+
+
private:
/**
* Class holding the data of one
* the presently supported output
* formats.
*/
- enum OutputFormat { default_format, dx, ucd, gnuplot, povray, eps, gmv, tecplot, vtk };
+ enum OutputFormat { default_format, dx, ucd, gnuplot, povray, eps, gmv, tecplot, tecplot_binary, vtk };
/**
* Obtain data through the
*/
void write_tecplot (std::ostream &out) const;
+ /**
+ * Obtain data through the
+ * @p{get_patches} function and
+ * write it in the Tecplot binary
+ * output format. Note that the name
+ * of the output file must be specified
+ * through the TecplotFlags interface.
+ */
+ void write_tecplot_binary (std::ostream &out) const;
+
/**
* Obtain data through the
* @p{get_patches} function and
+DataOutBase::TecplotFlags::TecplotFlags (const char* tecplot_binary_file_name) :
+ tecplot_binary_file_name(tecplot_binary_file_name)
+{
+};
+
+
+
void DataOutBase::TecplotFlags::declare_parameters (ParameterHandler &/*prm*/)
{};
template <int dim, int spacedim>
void DataOutBase::write_tecplot (const typename std::vector<Patch<dim,spacedim> > &patches,
const std::vector<std::string> &data_names,
- const TecplotFlags &/*flags*/,
- std::ostream &out)
+ const TecplotFlags &flags,
+ std::ostream &out)
{
AssertThrow (out, ExcIO());
Assert (n_data_sets == patches[0].data.n_rows(),
ExcUnexpectedNumberOfDatasets (patches[0].data.n_rows(), n_data_sets));
-
+
// first count the number of cells
// and cells for later use
unsigned int n_cells = 0,
};
- ///////////////////////
+
+
+ ///////////
// preamble
{
std::time_t time1= std::time (0);
<< "# For a description of the Tecplot format see the Tecplot documentation."
<< std::endl
<< "#" << std::endl;
-
+
out << "Variables=";
};
out << std::endl;
-
+
if (dim > 1)
{
out << "zone f=feblock, n=" << n_nodes << ", e=" << n_cells << ", et=";
-
+
switch (dim)
{
- case 2:
- out << "quadrilateral" << std::endl;
- break;
- case 3:
- out << "brick" << std::endl;
- break;
- default:
- Assert (false, ExcNotImplemented());
+ case 2:
+ out << "quadrilateral" << std::endl;
+ break;
+ case 3:
+ out << "brick" << std::endl;
+ break;
+ default:
+ Assert (false, ExcNotImplemented());
};
}
else
};
- // in Tecplot block format the vertex
+ // in Tecplot FEBLOCK format the vertex
// coordinates and the data have an
// order that is a bit unpleasant
// (first all x coordinates, then
// separate thread and when wanting
// to write out the data, we wait
// for that thread to finish
+
std::vector<std::vector<double> > data_vectors (n_data_sets,
std::vector<double> (n_nodes));
Threads::ThreadManager thread_manager;
for (unsigned int d=1; d<=spacedim; ++d)
- {
+ {
+
for (typename std::vector<Patch<dim,spacedim> >::const_iterator patch=patches.begin();
patch!=patches.end(); ++patch)
{
// compute coordinates for
// this patch point
+
out << (((patch->vertices[1](d-1) * x_frac) +
(patch->vertices[0](d-1) * (1-x_frac))) * (1-y_frac) +
((patch->vertices[2](d-1) * x_frac) +
// compute coordinates for
// this patch point
+
out << ((((patch->vertices[1](d-1) * x_frac) +
(patch->vertices[0](d-1) * (1-x_frac))) * (1-y_frac) +
((patch->vertices[2](d-1) * x_frac) +
(patch->vertices[7](d-1) * (1-x_frac))) * y_frac) * z_frac)
<< '\n';
};
-
break;
};
// then write data.
for (unsigned int data_set=0; data_set<n_data_sets; ++data_set)
{
+
copy(data_vectors[data_set].begin(),
data_vectors[data_set].end(),
std::ostream_iterator<double>(out, "\n"));
{
for (unsigned int i=0; i<n_subdivisions; ++i)
for (unsigned int j=0; j<n_subdivisions; ++j)
- out << first_vertex_of_patch+i*(n_subdivisions+1)+j+1 << ' '
- << first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1 << ' '
- << first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1+1 << ' '
- << first_vertex_of_patch+i*(n_subdivisions+1)+j+1+1
- << std::endl;
+ {
+
+ out << first_vertex_of_patch+i*(n_subdivisions+1)+j+1 << ' '
+ << first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1 << ' '
+ << first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1+1 << ' '
+ << first_vertex_of_patch+i*(n_subdivisions+1)+j+1+1
+ << std::endl;
+ };
break;
};
for (unsigned int k=0; k<n_subdivisions; ++k)
{
// note: vertex indices start with 1!
+
out << first_vertex_of_patch+(i*(n_subdivisions+1)+j )*(n_subdivisions+1)+k +1 << ' '
<< first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j )*(n_subdivisions+1)+k +1 << ' '
<< first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j+1)*(n_subdivisions+1)+k +1 << ' '
default:
Assert (false, ExcNotImplemented());
};
+
};
+
// assert the stream is still ok
AssertThrow (out, ExcIO());
+//--------------------------------------------------------
+// Macros for handling Tecplot API data
+
+#ifdef DEAL_II_HAVE_TECPLOT
+
+namespace
+{
+ class TecplotMacros
+ {
+ public:
+ TecplotMacros(const unsigned int n_nodes = 0,
+ const unsigned int n_vars = 0,
+ const unsigned int n_cells = 0,
+ const unsigned int n_vert = 0);
+ ~TecplotMacros();
+ float & nd(const unsigned int i, const unsigned int j);
+ int & cd(const unsigned int i, const unsigned int j);
+ float* nodalData;
+ int* connData;
+ private:
+ unsigned int n_nodes;
+ unsigned int n_vars;
+ unsigned int n_cells;
+ unsigned int n_vert;
+ };
+}
+
+
+
+TecplotMacros::TecplotMacros(const unsigned int n_nodes,
+ const unsigned int n_vars,
+ const unsigned int n_cells,
+ const unsigned int n_vert) :
+ n_nodes(n_nodes),
+ n_vars(n_vars),
+ n_cells(n_cells),
+ n_vert(n_vert)
+{
+ nodalData = new float[n_nodes*n_vars];
+ connData = new int[n_cells*n_vert];
+};
+
+
+
+TecplotMacros::~TecplotMacros()
+{
+ delete [] nodalData;
+ delete [] connData;
+};
+
+
+
+inline
+float & TecplotMacros::nd(const unsigned int i, const unsigned int j)
+{
+ return nodalData[(i)*(n_nodes) + (j)];
+};
+
+
+
+inline
+int & TecplotMacros::cd(const unsigned int i, const unsigned int j)
+{
+ return connData[(i) + (j)*(n_vert)];
+};
+
+#endif
+//--------------------------------------------------------
+
+
+
+template <int dim, int spacedim>
+void DataOutBase::write_tecplot_binary (const typename std::vector<Patch<dim,spacedim> > &patches,
+ const std::vector<std::string> &data_names,
+ const TecplotFlags &flags,
+ std::ostream &out)
+{
+
+#ifndef DEAL_II_HAVE_TECPLOT
+
+ // simply call the ASCII output function if the Tecplot API isn't present
+ write_tecplot (patches, data_names, flags, out);
+ return;
+
+#else
+
+ // Tecplot binary output only good for 2D & 3D
+ if (dim == 1)
+ {
+ write_tecplot (patches, data_names, flags, out);
+ return;
+ };
+
+ // if the user hasn't specified a file name we should
+ // call the ASCII function and use the ostream @p{out}
+ // instead of doing something silly later
+ char* file_name = (char*) flags.tecplot_binary_file_name;
+
+ if (file_name == NULL)
+ {
+ write_tecplot (patches, data_names, flags, out);
+ return;
+ };
+
+
+ AssertThrow (out, ExcIO());
+
+ Assert (patches.size() > 0, ExcNoPatches());
+
+ const unsigned int n_data_sets = data_names.size();
+ // check against # of data sets in
+ // first patch. checks against all
+ // other patches are made in
+ // write_gmv_reorder_data_vectors
+ Assert (n_data_sets == patches[0].data.n_rows(),
+ ExcUnexpectedNumberOfDatasets (patches[0].data.n_rows(), n_data_sets));
+
+
+
+ // first count the number of cells
+ // and cells for later use
+ unsigned int n_cells = 0,
+ n_nodes = 0;
+ for (typename std::vector<Patch<dim,spacedim> >::const_iterator patch=patches.begin();
+ patch!=patches.end(); ++patch)
+ switch (dim)
+ {
+ case 2:
+ n_cells += patch->n_subdivisions *
+ patch->n_subdivisions;
+ n_nodes += (patch->n_subdivisions+1) *
+ (patch->n_subdivisions+1);
+ break;
+ case 3:
+ n_cells += patch->n_subdivisions *
+ patch->n_subdivisions *
+ patch->n_subdivisions;
+ n_nodes += (patch->n_subdivisions+1) *
+ (patch->n_subdivisions+1) *
+ (patch->n_subdivisions+1);
+ break;
+ default:
+ Assert (false, ExcNotImplemented());
+ };
+
+
+
+
+
+ // local variables only needed to write Tecplot
+ // binary output files
+ const unsigned int vars_per_node = (dim+n_data_sets),
+ nodes_per_cell = GeometryInfo<dim>::vertices_per_cell;
+
+ TecplotMacros tm(n_nodes, vars_per_node, n_cells, nodes_per_cell);
+
+ int is_double = 0,
+ tec_debug = 0,
+ cell_type;
+
+
+ unsigned int string_size = 0;
+
+ if (dim==2)
+ string_size = 3;
+ else if (dim==3)
+ string_size = 5;
+
+
+ for (unsigned int data_set=0; data_set<n_data_sets; ++data_set)
+ {
+ string_size += 1;
+ string_size += data_names[data_set].size();
+ };
+
+
+ char *tecVarNames = new char[string_size];
+ *tecVarNames = 0;
+
+
+ switch (dim)
+ {
+ case 2:
+ cell_type = 1;
+ tecVarNames = strncat(tecVarNames, "x y", 3);
+ break;
+ case 3:
+ cell_type = 3;
+ tecVarNames = strncat(tecVarNames, "x y z", 5);
+ break;
+ default:
+ Assert(false, ExcNotImplemented());
+ };
+
+
+ for (unsigned int data_set=0; data_set<n_data_sets; ++data_set)
+ {
+ tecVarNames = strncat(tecVarNames, " ", 1);
+ tecVarNames = strncat(tecVarNames, data_names[data_set].c_str(), data_names[data_set].size());
+ };
+
+ // in Tecplot FEBLOCK format the vertex
+ // coordinates and the data have an
+ // order that is a bit unpleasant
+ // (first all x coordinates, then
+ // all y coordinate, ...; first all
+ // data of variable 1, then
+ // variable 2, etc), so we have to
+ // copy the data vectors a bit around
+ //
+ // note that we copy vectors when
+ // looping over the patches since we
+ // have to write them one variable
+ // at a time and don't want to use
+ // more than one loop
+ //
+ // this copying of data vectors can
+ // be done while we already output
+ // the vertices, so do this on a
+ // separate thread and when wanting
+ // to write out the data, we wait
+ // for that thread to finish
+
+ std::vector<std::vector<double> > data_vectors (n_data_sets,
+ std::vector<double> (n_nodes));
+ Threads::ThreadManager thread_manager;
+ void (*fun_ptr) (const typename std::vector<Patch<dim,spacedim> > &,
+ std::vector<std::vector<double> > &)
+ = &DataOutBase::template write_gmv_reorder_data_vectors<dim,spacedim>;
+ Threads::spawn (thread_manager,
+ Threads::encapsulate (fun_ptr)
+ .collect_args(patches, data_vectors));
+
+ ///////////////////////////////
+ // first make up a list of used
+ // vertices along with their
+ // coordinates
+
+
+ for (unsigned int d=1; d<=spacedim; ++d)
+ {
+ unsigned int entry=0;
+
+ for (typename std::vector<Patch<dim,spacedim> >::const_iterator patch=patches.begin();
+ patch!=patches.end(); ++patch)
+ {
+ const unsigned int n_subdivisions = patch->n_subdivisions;
+
+ switch (dim)
+ {
+ case 2:
+ {
+ for (unsigned int i=0; i<n_subdivisions+1; ++i)
+ for (unsigned int j=0; j<n_subdivisions+1; ++j)
+ {
+ const double x_frac = i * 1./n_subdivisions,
+ y_frac = j * 1./n_subdivisions;
+
+ // compute coordinates for
+ // this patch point
+ tm.nd((d-1),entry) = static_cast<float>(
+ (((patch->vertices[1](d-1) * x_frac) +
+ (patch->vertices[0](d-1) * (1-x_frac))) * (1-y_frac) +
+ ((patch->vertices[2](d-1) * x_frac) +
+ (patch->vertices[3](d-1) * (1-x_frac))) * y_frac)
+ );
+ entry++;
+ };
+ break;
+ };
+
+ case 3:
+ {
+ for (unsigned int i=0; i<n_subdivisions+1; ++i)
+ for (unsigned int j=0; j<n_subdivisions+1; ++j)
+ for (unsigned int k=0; k<n_subdivisions+1; ++k)
+ {
+ // note the broken
+ // design of hexahedra
+ // in deal.II, where
+ // first the z-component
+ // is counted up, before
+ // increasing the y-
+ // coordinate
+ const double x_frac = i * 1./n_subdivisions,
+ y_frac = k * 1./n_subdivisions,
+ z_frac = j * 1./n_subdivisions;
+
+ // compute coordinates for
+ // this patch point
+ tm.nd((d-1),entry) = static_cast<float>(
+ ((((patch->vertices[1](d-1) * x_frac) +
+ (patch->vertices[0](d-1) * (1-x_frac))) * (1-y_frac) +
+ ((patch->vertices[2](d-1) * x_frac) +
+ (patch->vertices[3](d-1) * (1-x_frac))) * y_frac) * (1-z_frac) +
+ (((patch->vertices[5](d-1) * x_frac) +
+ (patch->vertices[4](d-1) * (1-x_frac))) * (1-y_frac) +
+ ((patch->vertices[6](d-1) * x_frac) +
+ (patch->vertices[7](d-1) * (1-x_frac))) * y_frac) * z_frac)
+ );
+ entry++;
+ };
+ break;
+ };
+
+ default:
+ Assert (false, ExcNotImplemented());
+ };
+ };
+ };
+
+
+ ///////////////////////////////////////
+ // data output.
+ //
+ thread_manager.wait ();
+
+ // then write data.
+ for (unsigned int data_set=0; data_set<n_data_sets; ++data_set)
+ for (unsigned int entry=0; entry<data_vectors[data_set].size(); entry++)
+ tm.nd((dim+data_set),entry) = static_cast<float>(data_vectors[data_set][entry]);
+
+
+
+
+ /////////////////////////////////
+ // now for the cells. note that
+ // vertices are counted from 1 onwards
+
+ unsigned int first_vertex_of_patch = 0;
+ unsigned int elem=0;
+
+ for (typename std::vector<Patch<dim,spacedim> >::const_iterator patch=patches.begin();
+ patch!=patches.end(); ++patch)
+ {
+ const unsigned int n_subdivisions = patch->n_subdivisions;
+
+ // write out the cells making
+ // up this patch
+ switch (dim)
+ {
+ case 2:
+ {
+ for (unsigned int i=0; i<n_subdivisions; ++i)
+ for (unsigned int j=0; j<n_subdivisions; ++j)
+ {
+
+ tm.cd(0,elem) = first_vertex_of_patch+i*(n_subdivisions+1)+j+1;
+ tm.cd(1,elem) = first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1;
+ tm.cd(2,elem) = first_vertex_of_patch+(i+1)*(n_subdivisions+1)+j+1+1;
+ tm.cd(3,elem) = first_vertex_of_patch+i*(n_subdivisions+1)+j+1+1;
+
+ elem++;
+ };
+ break;
+ };
+
+ case 3:
+ {
+ for (unsigned int i=0; i<n_subdivisions; ++i)
+ for (unsigned int j=0; j<n_subdivisions; ++j)
+ for (unsigned int k=0; k<n_subdivisions; ++k)
+ {
+ // note: vertex indices start with 1!
+
+
+ tm.cd(0,elem) = first_vertex_of_patch+(i*(n_subdivisions+1)+j )*(n_subdivisions+1)+k +1;
+ tm.cd(1,elem) = first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j )*(n_subdivisions+1)+k +1;
+ tm.cd(2,elem) = first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j+1)*(n_subdivisions+1)+k +1;
+ tm.cd(3,elem) = first_vertex_of_patch+(i*(n_subdivisions+1)+j+1 )*(n_subdivisions+1)+k +1;
+ tm.cd(4,elem) = first_vertex_of_patch+(i*(n_subdivisions+1)+j )*(n_subdivisions+1)+k+1+1;
+ tm.cd(5,elem) = first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j )*(n_subdivisions+1)+k+1+1;
+ tm.cd(6,elem) = first_vertex_of_patch+((i+1)*(n_subdivisions+1)+j+1)*(n_subdivisions+1)+k+1+1;
+ tm.cd(7,elem) = first_vertex_of_patch+(i*(n_subdivisions+1)+j+1 )*(n_subdivisions+1)+k+1+1;
+
+ elem++;
+ };
+ break;
+ };
+
+ default:
+ Assert (false, ExcNotImplemented());
+ };
+
+
+ // finally update the number
+ // of the first vertex of this patch
+ switch (dim)
+ {
+ case 2:
+ first_vertex_of_patch += (n_subdivisions+1) *
+ (n_subdivisions+1);
+ break;
+ case 3:
+ first_vertex_of_patch += (n_subdivisions+1) *
+ (n_subdivisions+1) *
+ (n_subdivisions+1);
+ break;
+ default:
+ Assert (false, ExcNotImplemented());
+ };
+ };
+
+
+ {
+ int ierr = 0,
+ num_nodes = static_cast<int>(n_nodes),
+ num_cells = static_cast<int>(n_cells);
+
+ ierr = TECINI (NULL,
+ tecVarNames,
+ file_name,
+ static_cast<char*>("."),
+ &tec_debug,
+ &is_double);
+
+ Assert (ierr == 0, ExcErrorOpeningTecplotFile(file_name));
+
+ ierr = TECZNE (NULL,
+ &num_nodes,
+ &num_cells,
+ &cell_type,
+ static_cast<char*>("FEBLOCK"),
+ NULL);
+
+ Assert (ierr == 0, ExcTecplotAPIError());
+
+ int total = (vars_per_node*num_nodes);
+
+ ierr = TECDAT (&total,
+ tm.nodalData,
+ &is_double);
+
+ Assert (ierr == 0, ExcTecplotAPIError());
+
+ ierr = TECNOD (tm.connData);
+
+ Assert (ierr == 0, ExcTecplotAPIError());
+
+ ierr = TECEND ();
+
+ Assert (ierr == 0, ExcTecplotAPIError());
+
+ };
+
+
+ delete [] tecVarNames;
+
+#endif
+};
+
+
+
template <int dim, int spacedim>
void DataOutBase::write_vtk (const typename std::vector<Patch<dim,spacedim> > &patches,
const std::vector<std::string> &data_names,
+template <int dim, int spacedim>
+void DataOutInterface<dim,spacedim>::write_tecplot_binary (std::ostream &out) const
+{
+ DataOutBase::write_tecplot_binary (get_patches(), get_dataset_names(),
+ tecplot_flags, out);
+};
+
+
+
template <int dim, int spacedim>
void DataOutInterface<dim,spacedim>::write_vtk (std::ostream &out) const
{
write_tecplot (out);
break;
+ case tecplot_binary:
+ write_tecplot_binary (out);
+ break;
+
case vtk:
write_vtk (out);
break;
case tecplot:
return ".dat";
+ case tecplot_binary:
+ return ".plt";
+
case vtk:
return ".vtk";
if (format_name == "tecplot")
return tecplot;
+ if (format_name == "tecplot_binary")
+ return tecplot_binary;
+
if (format_name == "vtk")
return vtk;
DEAL_II_MAJOR = @DEAL_II_MAJOR@
DEAL_II_MINOR = @DEAL_II_MINOR@
USE_CONTRIB_HSL = @USE_CONTRIB_HSL@
+TECIO_INCLUDE = @TECPLOT_INCLUDE_PATH@
+TECIO_LIBRARY = @TECPLOT_LIBRARY_PATH@
# if HSL sublibs are used, add F77 libs to linker flags
ifeq ($(USE_CONTRIB_HSL),yes)
LIBS += $(F77LIBS)
endif
+# if Tecplot is used, link against tecio.a
+LIBS += $(TECIO_LIBRARY)
+
######################################################
# now configuration for compiler flags, pathes, etc
include-path-lac = $D/lac/include
include-path-deal2 = $D/deal.II/include
include-path-contrib-hsl = $D/contrib/hsl/include
+include-path-tecplot = $(TECIO_INCLUDE)
INCLUDE = $(addprefix -I, $(include-path-base) \
$(include-path-lac) \
$(include-path-deal2)\
- $(include-path-contrib-hsl))
+ $(include-path-contrib-hsl)\
+ $(include-path-tecplot))
# compiler flags for debug and optimized mode
CXXFLAGS.g = @DEFS@ @CXXFLAGSG@ $(INCLUDE)
+
+
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:670: checking host system type" >&5
+echo "configure:672: checking host system type" >&5
host_alias=$host
case "$host_alias" in
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:691: checking target system type" >&5
+echo "configure:693: checking target system type" >&5
target_alias=$target
case "$target_alias" in
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:709: checking build system type" >&5
+echo "configure:711: checking build system type" >&5
build_alias=$build
case "$build_alias" in
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:747: checking for $ac_word" >&5
+echo "configure:749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:777: checking for $ac_word" >&5
+echo "configure:779: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:828: checking for $ac_word" >&5
+echo "configure:830: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:860: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:862: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 871 "configure"
+#line 873 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:902: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:904: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:907: checking whether we are using GNU C" >&5
+echo "configure:909: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:935: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:937: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$CC", so it can be a program name with args.
set dummy $CC; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:969: checking for $ac_word" >&5
+echo "configure:971: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1010: checking for $ac_word" >&5
+echo "configure:1012: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1042: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1044: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 1053 "configure"
+#line 1055 "configure"
#include "confdefs.h"
int main(){return(0);}
EOF
-if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1084: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1086: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1089: checking whether we are using GNU C++" >&5
+echo "configure:1091: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1100: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1117: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1119: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
fi
+for ac_declaration in \
+ ''\
+ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat > conftest.$ac_ext <<EOF
+#line 1160 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int main() {
+exit (42);
+; return 0; }
+EOF
+if { (eval echo configure:1168: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ :
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ continue
+fi
+rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#line 1178 "configure"
+#include "confdefs.h"
+$ac_declaration
+int main() {
+exit (42);
+; return 0; }
+EOF
+if { (eval echo configure:1185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+
CXXFLAGS="$OLDCXXFLAGS"
# Extract the first word of "$CXX", so it can be a program name with args.
set dummy $CXX; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1152: checking for $ac_word" >&5
+echo "configure:1205: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CXXFLAGS="$CXXFLAGSG -Werror"
echo $ac_n "checking for std::advance warning""... $ac_c" 1>&6
-echo "configure:1346: checking for std::advance warning" >&5
+echo "configure:1399: checking for std::advance warning" >&5
cat > conftest.$ac_ext <<EOF
-#line 1348 "configure"
+#line 1401 "configure"
#include "confdefs.h"
#include <map>
; return 0; }
EOF
-if { (eval echo configure:1362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""no" 1>&6
if test "$GXX" = yes ; then
echo $ac_n "checking whether -ggdb works for long symbols""... $ac_c" 1>&6
-echo "configure:1445: checking whether -ggdb works for long symbols" >&5
+echo "configure:1498: checking whether -ggdb works for long symbols" >&5
case "$target" in
alpha*-osf*)
CXXFLAGS="-ggdb $CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 1450 "configure"
+#line 1503 "configure"
#include "confdefs.h"
#include <string>
; return 0; }
EOF
-if { (eval echo configure:1471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
CXXFLAGSG="-ggdb $CXXFLAGSG"
if test "$GXX" = yes ; then
echo $ac_n "checking for platform specific thread flags""... $ac_c" 1>&6
-echo "configure:1562: checking for platform specific thread flags" >&5
+echo "configure:1615: checking for platform specific thread flags" >&5
for i in threads mt pthread pthreads mthreads Kthread kthread invalid_last_entry; do
CXXFLAGS="$CXXFLAGSG -$i"
echo $ac_n "checking for platform specific multi-threading defines""... $ac_c" 1>&6
-echo "configure:1598: checking for platform specific multi-threading defines" >&5
+echo "configure:1651: checking for platform specific multi-threading defines" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 1607 "configure"
+#line 1660 "configure"
#include "confdefs.h"
#if !defined (_REENTRANT) && !defined (_THREAD_SAFE)
; return 0; }
EOF
-if { (eval echo configure:1621: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""not necessary"" 1>&6
if test "$withmultithreading" != no ; then
echo $ac_n "checking for ACE""... $ac_c" 1>&6
-echo "configure:1666: checking for ACE" >&5
+echo "configure:1719: checking for ACE" >&5
if test -d "$withmultithreading" ; then
echo "$ac_t""found" 1>&6
else
if test "$enablemultithreading" = yes ; then
if test "$GXX" = yes ; then
echo $ac_n "checking whether compilation with ACE disallows flags""... $ac_c" 1>&6
-echo "configure:1687: checking whether compilation with ACE disallows flags" >&5
+echo "configure:1740: checking whether compilation with ACE disallows flags" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="-ansi -I$withmultithreading"
cat > conftest.$ac_ext <<EOF
-#line 1697 "configure"
+#line 1750 "configure"
#include "confdefs.h"
# include <ace/Thread_Manager.h>
; return 0; }
EOF
-if { (eval echo configure:1707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_ace_remove_ansi="no"
rm -f conftest*
CXXFLAGS="-pedantic -Werror -I$withmultithreading"
cat > conftest.$ac_ext <<EOF
-#line 1723 "configure"
+#line 1776 "configure"
#include "confdefs.h"
# include <ace/Thread_Manager.h>
; return 0; }
EOF
-if { (eval echo configure:1733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_ace_remove_pedantic="no"
echo $ac_n "checking whether AssertThrow works with debug flags""... $ac_c" 1>&6
-echo "configure:1820: checking whether AssertThrow works with debug flags" >&5
+echo "configure:1873: checking whether AssertThrow works with debug flags" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS=$CXXFLAGSG
cat > conftest.$ac_ext <<EOF
-#line 1830 "configure"
+#line 1883 "configure"
#include "confdefs.h"
#include <exception>
; return 0; }
EOF
-if { (eval echo configure:1909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
rm -f conftest*
echo $ac_n "checking whether AssertThrow works with optimized flags""... $ac_c" 1>&6
-echo "configure:1926: checking whether AssertThrow works with optimized flags" >&5
+echo "configure:1979: checking whether AssertThrow works with optimized flags" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS=$CXXFLAGSO
cat > conftest.$ac_ext <<EOF
-#line 1936 "configure"
+#line 1989 "configure"
#include "confdefs.h"
#include <exception>
; return 0; }
EOF
-if { (eval echo configure:2015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
echo $ac_n "checking for std::vector bug""... $ac_c" 1>&6
-echo "configure:2033: checking for std::vector bug" >&5
+echo "configure:2086: checking for std::vector bug" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2043 "configure"
+#line 2096 "configure"
#include "confdefs.h"
namespace std {
; return 0; }
EOF
-if { (eval echo configure:2063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking for std::iterator class""... $ac_c" 1>&6
-echo "configure:2084: checking for std::iterator class" >&5
+echo "configure:2137: checking for std::iterator class" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2094 "configure"
+#line 2147 "configure"
#include "confdefs.h"
#include <iterator>
; return 0; }
EOF
-if { (eval echo configure:2105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
rm -f conftest*
echo $ac_n "checking for std::i/ostringstream classes""... $ac_c" 1>&6
-echo "configure:2125: checking for std::i/ostringstream classes" >&5
+echo "configure:2178: checking for std::i/ostringstream classes" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2135 "configure"
+#line 2188 "configure"
#include "confdefs.h"
#include <sstream>
; return 0; }
EOF
-if { (eval echo configure:2147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
rm -f conftest*
echo $ac_n "checking for std::numeric_limits classes""... $ac_c" 1>&6
-echo "configure:2167: checking for std::numeric_limits classes" >&5
+echo "configure:2220: checking for std::numeric_limits classes" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2177 "configure"
+#line 2230 "configure"
#include "confdefs.h"
#include <limits>
; return 0; }
EOF
-if { (eval echo configure:2188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2241: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
rm -f conftest*
echo $ac_n "checking for <ostream> header""... $ac_c" 1>&6
-echo "configure:2208: checking for <ostream> header" >&5
+echo "configure:2261: checking for <ostream> header" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2218 "configure"
+#line 2271 "configure"
#include "confdefs.h"
#include <ostream>
; return 0; }
EOF
-if { (eval echo configure:2229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
rm -f conftest*
echo $ac_n "checking for <iosfwd> header""... $ac_c" 1>&6
-echo "configure:2249: checking for <iosfwd> header" >&5
+echo "configure:2302: checking for <iosfwd> header" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2259 "configure"
+#line 2312 "configure"
#include "confdefs.h"
#include <iosfwd>
; return 0; }
EOF
-if { (eval echo configure:2270: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
echo $ac_n "checking whether lrand48 needs to be declared with -ansi""... $ac_c" 1>&6
-echo "configure:2294: checking whether lrand48 needs to be declared with -ansi" >&5
+echo "configure:2347: checking whether lrand48 needs to be declared with -ansi" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
cat > conftest.$ac_ext <<EOF
-#line 2304 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <vector>
; return 0; }
EOF
-if { (eval echo configure:2320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking whether getrusage is properly declared""... $ac_c" 1>&6
-echo "configure:2341: checking whether getrusage is properly declared" >&5
+echo "configure:2394: checking whether getrusage is properly declared" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 2350 "configure"
+#line 2403 "configure"
#include "confdefs.h"
#include <sys/resource.h>
; return 0; }
EOF
-if { (eval echo configure:2362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
rm -f conftest*
echo $ac_n "checking whether isnan is declared with debug flags""... $ac_c" 1>&6
-echo "configure:2380: checking whether isnan is declared with debug flags" >&5
+echo "configure:2433: checking whether isnan is declared with debug flags" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS=$CXXFLAGSG
deal_II_isnan_flag=""
cat > conftest.$ac_ext <<EOF
-#line 2391 "configure"
+#line 2444 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
if test "x$deal_II_isnan_flag" = "x" ; then
cat > conftest.$ac_ext <<EOF
-#line 2419 "configure"
+#line 2472 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
for testflag in -D_ISOC99_SOURCE -D__EXTENSIONS__ ; do
CXXFLAGS="$CXXFLAGSG $testflag"
cat > conftest.$ac_ext <<EOF
-#line 2451 "configure"
+#line 2504 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_isnan_flag="-DHAVE_ISNAN $testflag"
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 2476 "configure"
+#line 2529 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_isnan_flag="-DHAVE_UNDERSCORE_ISNAN $testflag"
fi
echo $ac_n "checking whether isnan is declared with optimized flags""... $ac_c" 1>&6
-echo "configure:2510: checking whether isnan is declared with optimized flags" >&5
+echo "configure:2563: checking whether isnan is declared with optimized flags" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS=$CXXFLAGSO
deal_II_isnan_flag=""
cat > conftest.$ac_ext <<EOF
-#line 2521 "configure"
+#line 2574 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2586: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
if test "x$deal_II_isnan_flag" = "x" ; then
cat > conftest.$ac_ext <<EOF
-#line 2549 "configure"
+#line 2602 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2614: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t"""yes"" 1>&6
for testflag in -D_ISOC99_SOURCE -D__EXTENSIONS__ ; do
CXXFLAGS="$CXXFLAGSO $testflag"
cat > conftest.$ac_ext <<EOF
-#line 2581 "configure"
+#line 2634 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_isnan_flag="-DHAVE_ISNAN $testflag"
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 2606 "configure"
+#line 2659 "configure"
#include "confdefs.h"
#include <cmath>
; return 0; }
EOF
-if { (eval echo configure:2618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
deal_II_isnan_flag="-DHAVE_UNDERSCORE_ISNAN $testflag"
CXXFLAGS=$CXXFLAGSG
echo $ac_n "checking for rand_r""... $ac_c" 1>&6
-echo "configure:2649: checking for rand_r" >&5
+echo "configure:2702: checking for rand_r" >&5
cat > conftest.$ac_ext <<EOF
-#line 2651 "configure"
+#line 2704 "configure"
#include "confdefs.h"
#include <cstdlib>
; return 0; }
EOF
-if { (eval echo configure:2663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""found" 1>&6
for ac_func in gethostname
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2686: checking for $ac_func" >&5
+echo "configure:2739: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2691 "configure"
+#line 2744 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
# Extract the first word of "f77", so it can be a program name with args.
set dummy f77; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2746: checking for $ac_word" >&5
+echo "configure:2799: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_F77'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "g77", so it can be a program name with args.
set dummy g77; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2782: checking for $ac_word" >&5
+echo "configure:2835: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_F77'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2933: checking for $ac_word" >&5
+echo "configure:2986: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for HSL subroutines""... $ac_c" 1>&6
-echo "configure:2971: checking for HSL subroutines" >&5
+echo "configure:3024: checking for HSL subroutines" >&5
hsl_subroutines=""
if test -r contrib/hsl/source/ma27.f ; then
hsl_subroutines="$hsl_subroutines MA27"
fi
echo $ac_n "checking for kdoc""... $ac_c" 1>&6
-echo "configure:3036: checking for kdoc" >&5
+echo "configure:3089: checking for kdoc" >&5
if test "$kdocdir" != ${DEAL2_DIR}/contrib/kdoc/bin ; then
if test -r $kdocdir/kdoc ; then
echo "$ac_t""found" 1>&6
# Extract the first word of ""doc++"", so it can be a program name with args.
set dummy "doc++"; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3072: checking for $ac_word" >&5
+echo "configure:3125: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_docxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
else
echo $ac_n "checking for doc++""... $ac_c" 1>&6
-echo "configure:3106: checking for doc++" >&5
+echo "configure:3159: checking for doc++" >&5
if test -x "$docxx" ; then
echo "$ac_t""yes" 1>&6
else
+
+
+ac_safe=`echo "$TECHOME/lib/tecio.a" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TECHOME/lib/tecio.a""... $ac_c" 1>&6
+echo "configure:3177: checking for $TECHOME/lib/tecio.a" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TECHOME/lib/tecio.a; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_LIBRARY_PATH=$TECHOME/lib/tecio.a
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+ac_safe=`echo "$TEC80HOME/lib/tecio.a" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TEC80HOME/lib/tecio.a""... $ac_c" 1>&6
+echo "configure:3202: checking for $TEC80HOME/lib/tecio.a" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TEC80HOME/lib/tecio.a; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_LIBRARY_PATH=$TEC80HOME/lib/tecio.a
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+ac_safe=`echo "$TEC90HOME/lib/tecio.a" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TEC90HOME/lib/tecio.a""... $ac_c" 1>&6
+echo "configure:3227: checking for $TEC90HOME/lib/tecio.a" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TEC90HOME/lib/tecio.a; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_LIBRARY_PATH=$TEC90HOME/lib/tecio.a
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+
+ac_safe=`echo "$TECHOME/include/TECIO.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TECHOME/include/TECIO.h""... $ac_c" 1>&6
+echo "configure:3253: checking for $TECHOME/include/TECIO.h" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TECHOME/include/TECIO.h; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_INCLUDE_PATH=$TECHOME/include
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+ac_safe=`echo "$TEC80HOME/include/TECIO.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TEC80HOME/include/TECIO.h""... $ac_c" 1>&6
+echo "configure:3278: checking for $TEC80HOME/include/TECIO.h" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TEC80HOME/include/TECIO.h; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_INCLUDE_PATH=$TEC80HOME/include
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+ac_safe=`echo "$TEC90HOME/include/TECIO.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $TEC90HOME/include/TECIO.h""... $ac_c" 1>&6
+echo "configure:3303: checking for $TEC90HOME/include/TECIO.h" >&5
+if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: Cannot check for file existence when cross compiling" 1>&2; exit 1; }
+else
+ if test -r $TEC90HOME/include/TECIO.h; then
+ eval "ac_cv_file_$ac_safe=yes"
+ else
+ eval "ac_cv_file_$ac_safe=no"
+ fi
+fi
+fi
+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ TECPLOT_INCLUDE_PATH=$TEC90HOME/include
+else
+ echo "$ac_t""no" 1>&6
+
+fi
+
+
+ if test -r $TECPLOT_LIBRARY_PATH -a -r $TECPLOT_INCLUDE_PATH/TECIO.h ; then
+ cat >> confdefs.h <<\EOF
+#define DEAL_II_HAVE_TECPLOT 1
+EOF
+
+ fi
+
+
+
+
+
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CXXCPP $CPPFLAGS'
CXXFLAGS="$CXXFLAGSG"
echo $ac_n "checking for consistency of CXXFLAGSG flags""... $ac_c" 1>&6
-echo "configure:3129: checking for consistency of CXXFLAGSG flags" >&5
+echo "configure:3346: checking for consistency of CXXFLAGSG flags" >&5
cat > conftest.$ac_ext <<EOF
-#line 3131 "configure"
+#line 3348 "configure"
#include "confdefs.h"
int main() {
;
; return 0; }
EOF
-if { (eval echo configure:3138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
CXXFLAGS="$CXXFLAGSO"
echo $ac_n "checking for consistency of CXXFLAGSO flags""... $ac_c" 1>&6
-echo "configure:3156: checking for consistency of CXXFLAGSO flags" >&5
+echo "configure:3373: checking for consistency of CXXFLAGSO flags" >&5
cat > conftest.$ac_ext <<EOF
-#line 3158 "configure"
+#line 3375 "configure"
#include "confdefs.h"
int main() {
;
; return 0; }
EOF
-if { (eval echo configure:3165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
s%@kdocdir@%$kdocdir%g
s%@kdocversion@%$kdocversion%g
s%@docxx@%$docxx%g
+s%@TECPLOT_LIBRARY_PATH@%$TECPLOT_LIBRARY_PATH%g
+s%@TECPLOT_INCLUDE_PATH@%$TECPLOT_INCLUDE_PATH%g
s%@subdirs@%$subdirs%g
CEOF
+dnl Find the Tecplot libraries and headers if available
+dnl
+DEAL_II_CONFIGURE_TECPLOT
+
+
+
+
dnl -------------------------------------------------------------
dnl Last check: test whether CXXFLAGS and F77FLAGS are ok
dnl -------------------------------------------------------------
@echo '<li><code>ACE_ROOT=$(ACE_ROOT)</code>' >> $@
@echo '<li><code>lib-ACE=$(lib-ACE)</code>' >> $@
@echo '<li><code>with-multithreading=$(with-multithreading)</code>' >> $@
+ @echo '<li><code>TECIO_INCLUDE=$(TECIO_INCLUDE)</code>' >> $@
+ @echo '<li><code>TECIO_LIBRARY=$(TECIO_LIBRARY)</code>' >> $@
@cat makefiles.2.html >> $@
<dt> <code>LIBS</code> </dt>
<dd> <p>
Additional libraries to be linked in, such as Fortran
- support or the ACE library when multithreading is enabled.
+ support, the ACE library when multithreading is enabled, or
+ Tecplot libraries when binary output is available.
</p>
</dd>
your program shall use multithreading or not.
</p>
- </ul>
+ <li><h4>Variables associated with Tecplot binary support</h4>
+
+ <p>
+ If ./configure, detects a valid Tecplot API installation $(INCLUDE) and
+ $(LIBS) are augmented by the Tecplot API include and library paths, and
+ the following symbols are meaningful:
+
+ <dl>
+ <dt> <code>TECIO_INCLUDE</code> </dt>
+ <dd> <p>
+ Path to the Tecplot API header files as found by ./configure
+ </p>
+ </dd>
+
+
+ <dt> <code>TECIO_LIBRARY</code> </dt>
+ <dd> <p>
+ Path to the Tecplot API library
+ </p>
+ </dd>
+ </dl>
+
+ </ul>
<a name="values">
<code class="member">n</code> to be compliant wth the new class <code
class="class">PolynomialSpace</code>.
<br>
- GK 2002/02/11)
+ (GK 2002/02/11)
</p>
<li> <p> New: The class <code class="class">PolynomialSpace</code>
implements the space of polynomials at most a certain degree in
arbitrary space dimensions.
<br>
- GK 2002/02/11)
+ (GK 2002/02/11)
+ </p>
+
+ <li> <p> New: The function <code class="class">DataOutBase</code>::
+ <code class="member">write_tecplot_binary</code> has been added. This
+ function will write Tecplot binary files if the Tecplot API is detected
+ by ./configure. To use this feature be sure that the environment
+ variable TECHOME points to a valid Tecplot installation and that the files
+ $TECHOME/include/TECIO.h and $TECHOME/lib/tecio.a exist. The name of the
+ file to be written is specified through the <code class="class">DataOutBase</code>
+ ::<code class="member">TecplotFlags</code>.
+ <code class="member">tecplot_binary_file_name</code> variable. If the API is not
+ available this code simply calls the existing ASCII output function.
+ <br>
+ (BK 2002/02/11)
</p>
<ol>
<li> <p> New: Finite element family with complete polynomial spaces
for discontinuous Galerkin: <code class="class">FE_DGP</code>
<br>
- GK 2002/02/11)
+ (GK 2002/02/11)
</p>
<ol>
<dir>
<dl>
+ <dt>
+ <strong>2002/02/11: New support for Tecplot binary output</strong>
+ </dt>
+ <dd>
+ Benjamin Shelton Kirk contributed binary
+ <a href="http://www.amtec.com">Tecplot</a> support.
+ This feature can be used to create more efficient data files
+ in the Tecplot FEBLOCK finite element format. For more information
+ look <a href="2002/c-3-3.html" target="body">here</a>.
+ </p>
+ </dd>
+
<dt>
<strong>Changes between version 3.3 and the
main branch</strong>
GNUPLOT,
<a href="http://www-xdiv.lanl.gov/XCM/gmv/" target="_top">GMV
(general mesh viewer)</a>,
- <a href="http://www.amtec.com" target="_top">Tecplot</a>,
+ <a href="http://www.amtec.com" target="_top">Tecplot</a> (ASCII and binary),
<a href="http://www.kitware.com/vtk.html"
target="_top">Visualization Toolkit (Vtk)</a>,
<a href="http://www.avs.com" target="_top">AVS Explorer</a>,
include these functions, see
<a href="external-libs/hsl.html" target="body">this page</a>.
</p>
+
+ <li>
+ <p>
+ Deal.II supports writing <a href="http://www.amtec.com">Tecplot</a>
+ binary files directly. For this feature to work properly be sure that the
+ environment variable TECHOME points to a valid Tecplot installation and that
+ the files $TECHOME/include/TECIO.h and $TECHOME/lib/tecio.a exist.
+ </p>
</ul>
</p>