From: benkirk Date: Tue, 12 Feb 2002 14:37:27 +0000 (+0000) Subject: Added binary Tecplot support in the DataOutBase class and added necessary hooks in... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ef9a9bc0fab7f20c309c9ffcc40e410f4500cdd;p=dealii-svn.git Added binary Tecplot support in the DataOutBase class and added necessary hooks in ./configure to support this git-svn-id: https://svn.dealii.org/trunk@5510 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/aclocal.m4 b/deal.II/aclocal.m4 index 69fe36eeed..4239941b69 100644 --- a/deal.II/aclocal.m4 +++ b/deal.II/aclocal.m4 @@ -704,3 +704,27 @@ void f (const std::ostream &out); ]) ) + +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 +]) diff --git a/deal.II/base/include/base/config.h.in b/deal.II/base/include/base/config.h.in index 6b04e2b73b..979597596b 100644 --- a/deal.II/base/include/base/config.h.in +++ b/deal.II/base/include/base/config.h.in @@ -82,5 +82,8 @@ /* 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 diff --git a/deal.II/base/include/base/data_out_base.h b/deal.II/base/include/base/data_out_base.h index d8c999054c..c87d3d09c4 100644 --- a/deal.II/base/include/base/data_out_base.h +++ b/deal.II/base/include/base/data_out_base.h @@ -21,6 +21,13 @@ #include #include +// Only include the Tecplot API header if the appropriate files +// were detected by configure +#ifdef DEAL_II_HAVE_TECPLOT +# include "TECIO.h" +# include +#endif + // we only need output streams, but older compilers did not provide // them in a separate include file #ifdef HAVE_STD_OSTREAM_HEADER @@ -286,14 +293,22 @@ class ParameterHandler; * @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} @@ -1140,18 +1155,25 @@ class DataOutBase */ 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 @@ -1327,7 +1349,7 @@ class DataOutBase /** * 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. */ @@ -1337,6 +1359,27 @@ class DataOutBase 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 + static void write_tecplot_binary (const typename std::vector > &patches, + const std::vector &data_names, + const TecplotFlags &flags, + std::ostream &out); + /** * Write the given list of * patches to the output stream @@ -1406,7 +1449,19 @@ class DataOutBase * 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 @@ -1600,7 +1655,7 @@ class DataOutInterface : private DataOutBase * 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 @@ -1659,6 +1714,16 @@ class DataOutInterface : private DataOutBase */ 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 diff --git a/deal.II/base/source/data_out_base.all_dimensions.cc b/deal.II/base/source/data_out_base.all_dimensions.cc index 9788987fbd..8733788322 100644 --- a/deal.II/base/source/data_out_base.all_dimensions.cc +++ b/deal.II/base/source/data_out_base.all_dimensions.cc @@ -382,6 +382,13 @@ DataOutBase::GmvFlags::memory_consumption () const +DataOutBase::TecplotFlags::TecplotFlags (const char* tecplot_binary_file_name) : + tecplot_binary_file_name(tecplot_binary_file_name) +{ +}; + + + void DataOutBase::TecplotFlags::declare_parameters (ParameterHandler &/*prm*/) {}; diff --git a/deal.II/base/source/data_out_base.cc b/deal.II/base/source/data_out_base.cc index 9e6516b6f0..157797a7a3 100644 --- a/deal.II/base/source/data_out_base.cc +++ b/deal.II/base/source/data_out_base.cc @@ -2305,8 +2305,8 @@ void DataOutBase::write_gmv (const typename std::vector > &p template void DataOutBase::write_tecplot (const typename std::vector > &patches, const std::vector &data_names, - const TecplotFlags &/*flags*/, - std::ostream &out) + const TecplotFlags &flags, + std::ostream &out) { AssertThrow (out, ExcIO()); @@ -2320,8 +2320,8 @@ void DataOutBase::write_tecplot (const typename std::vector 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, @@ -2353,7 +2353,9 @@ void DataOutBase::write_tecplot (const typename std::vector }; - /////////////////////// + + + /////////// // preamble { std::time_t time1= std::time (0); @@ -2371,7 +2373,7 @@ void DataOutBase::write_tecplot (const typename std::vector << "# For a description of the Tecplot format see the Tecplot documentation." << std::endl << "#" << std::endl; - + out << "Variables="; @@ -2396,21 +2398,21 @@ void DataOutBase::write_tecplot (const typename std::vector }; 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 @@ -2420,7 +2422,7 @@ void DataOutBase::write_tecplot (const typename std::vector }; - // 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 @@ -2441,6 +2443,7 @@ void DataOutBase::write_tecplot (const typename std::vector // separate thread and when wanting // to write out the data, we wait // for that thread to finish + std::vector > data_vectors (n_data_sets, std::vector (n_nodes)); Threads::ThreadManager thread_manager; @@ -2458,7 +2461,8 @@ void DataOutBase::write_tecplot (const typename std::vector for (unsigned int d=1; d<=spacedim; ++d) - { + { + for (typename std::vector >::const_iterator patch=patches.begin(); patch!=patches.end(); ++patch) { @@ -2485,6 +2489,7 @@ void DataOutBase::write_tecplot (const typename std::vector // 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) + @@ -2513,6 +2518,7 @@ void DataOutBase::write_tecplot (const typename std::vector // 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) + @@ -2523,7 +2529,6 @@ void DataOutBase::write_tecplot (const typename std::vector (patch->vertices[7](d-1) * (1-x_frac))) * y_frac) * z_frac) << '\n'; }; - break; }; @@ -2546,6 +2551,7 @@ void DataOutBase::write_tecplot (const typename std::vector // then write data. for (unsigned int data_set=0; data_set(out, "\n")); @@ -2576,11 +2582,14 @@ void DataOutBase::write_tecplot (const typename std::vector { for (unsigned int i=0; i for (unsigned int k=0; k default: Assert (false, ExcNotImplemented()); }; + }; + // assert the stream is still ok AssertThrow (out, ExcIO()); @@ -2636,6 +2648,459 @@ void DataOutBase::write_tecplot (const typename std::vector +//-------------------------------------------------------- +// 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 +void DataOutBase::write_tecplot_binary (const typename std::vector > &patches, + const std::vector &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 >::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::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 > data_vectors (n_data_sets, + std::vector (n_nodes)); + Threads::ThreadManager thread_manager; + void (*fun_ptr) (const typename std::vector > &, + std::vector > &) + = &DataOutBase::template write_gmv_reorder_data_vectors; + 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 >::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( + (((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( + ((((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(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 >::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_nodes), + num_cells = static_cast(n_cells); + + ierr = TECINI (NULL, + tecVarNames, + file_name, + static_cast("."), + &tec_debug, + &is_double); + + Assert (ierr == 0, ExcErrorOpeningTecplotFile(file_name)); + + ierr = TECZNE (NULL, + &num_nodes, + &num_cells, + &cell_type, + static_cast("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 void DataOutBase::write_vtk (const typename std::vector > &patches, const std::vector &data_names, @@ -3120,6 +3585,15 @@ void DataOutInterface::write_tecplot (std::ostream &out) const +template +void DataOutInterface::write_tecplot_binary (std::ostream &out) const +{ + DataOutBase::write_tecplot_binary (get_patches(), get_dataset_names(), + tecplot_flags, out); +}; + + + template void DataOutInterface::write_vtk (std::ostream &out) const { @@ -3168,6 +3642,10 @@ DataOutInterface::write (std::ostream &out, write_tecplot (out); break; + case tecplot_binary: + write_tecplot_binary (out); + break; + case vtk: write_vtk (out); break; @@ -3283,6 +3761,9 @@ DataOutInterface::default_suffix (const OutputFormat output_format case tecplot: return ".dat"; + case tecplot_binary: + return ".plt"; + case vtk: return ".vtk"; @@ -3319,6 +3800,9 @@ DataOutInterface::parse_output_format (const std::string &format_n if (format_name == "tecplot") return tecplot; + if (format_name == "tecplot_binary") + return tecplot_binary; + if (format_name == "vtk") return vtk; diff --git a/deal.II/common/Make.global_options.in b/deal.II/common/Make.global_options.in index f7ea380a34..1878cd5c49 100644 --- a/deal.II/common/Make.global_options.in +++ b/deal.II/common/Make.global_options.in @@ -35,6 +35,8 @@ enable-shared = @enableshared@ 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) @@ -42,6 +44,9 @@ 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 @@ -90,12 +95,14 @@ include-path-base = $D/base/include 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) diff --git a/deal.II/configure b/deal.II/configure index cffa47a084..6920c88e30 100755 --- a/deal.II/configure +++ b/deal.II/configure @@ -68,6 +68,8 @@ + + @@ -666,7 +668,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } 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 @@ -687,7 +689,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 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 @@ -705,7 +707,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 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 @@ -743,7 +745,7 @@ cross_compiling=$ac_cv_prog_cxx_cross # 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 @@ -773,7 +775,7 @@ if test -z "$CC"; then # 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 @@ -824,7 +826,7 @@ fi # 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 @@ -856,7 +858,7 @@ fi 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. @@ -867,12 +869,12 @@ cross_compiling=$ac_cv_prog_cc_cross 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 @@ -898,12 +900,12 @@ if test $ac_cv_prog_cc_works = no; 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 @@ -912,7 +914,7 @@ 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 @@ -931,7 +933,7 @@ ac_test_CFLAGS="${CFLAGS+set}" 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 @@ -965,7 +967,7 @@ fi # 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 @@ -1006,7 +1008,7 @@ do # 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 @@ -1038,7 +1040,7 @@ test -n "$CXX" || CXX="gcc" 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. @@ -1049,12 +1051,12 @@ cross_compiling=$ac_cv_prog_cxx_cross 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 @@ -1080,12 +1082,12 @@ if test $ac_cv_prog_cxx_works = no; 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 @@ -1094,7 +1096,7 @@ 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 @@ -1113,7 +1115,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}" 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 @@ -1144,11 +1146,62 @@ else fi fi +for ac_declaration in \ + ''\ + '#include ' \ + '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 < +$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 <&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 @@ -1342,9 +1395,9 @@ cross_compiling=$ac_cv_prog_cxx_cross 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 < @@ -1358,7 +1411,7 @@ int main() { ; 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 @@ -1441,12 +1494,12 @@ fi 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 < @@ -1467,7 +1520,7 @@ int main() { ; 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" @@ -1558,7 +1611,7 @@ if test "$enablemultithreading" = yes ; then 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" @@ -1594,7 +1647,7 @@ echo "configure:1562: checking for platform specific thread flags" >&5 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' @@ -1603,7 +1656,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&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 @@ -1662,7 +1715,7 @@ fi 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 @@ -1683,7 +1736,7 @@ fi 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' @@ -1693,7 +1746,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="-ansi -I$withmultithreading" cat > conftest.$ac_ext < @@ -1703,7 +1756,7 @@ int main() { ; 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" @@ -1719,7 +1772,7 @@ fi rm -f conftest* CXXFLAGS="-pedantic -Werror -I$withmultithreading" cat > conftest.$ac_ext < @@ -1729,7 +1782,7 @@ int main() { ; 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" @@ -1816,7 +1869,7 @@ done 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' @@ -1826,7 +1879,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS=$CXXFLAGSG cat > conftest.$ac_ext < @@ -1905,7 +1958,7 @@ int main() { ; 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 @@ -1922,7 +1975,7 @@ fi 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' @@ -1932,7 +1985,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS=$CXXFLAGSO cat > conftest.$ac_ext < @@ -2011,7 +2064,7 @@ int main() { ; 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 @@ -2029,7 +2082,7 @@ rm -f conftest* 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' @@ -2039,7 +2092,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext <&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 @@ -2080,7 +2133,7 @@ rm -f conftest* 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' @@ -2090,7 +2143,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2101,7 +2154,7 @@ int main() { ; 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 @@ -2121,7 +2174,7 @@ fi 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' @@ -2131,7 +2184,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2143,7 +2196,7 @@ int main() { ; 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 @@ -2163,7 +2216,7 @@ fi 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' @@ -2173,7 +2226,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2184,7 +2237,7 @@ int main() { ; 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 @@ -2204,7 +2257,7 @@ fi rm -f conftest* echo $ac_n "checking for header""... $ac_c" 1>&6 -echo "configure:2208: checking for header" >&5 +echo "configure:2261: checking for header" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' @@ -2214,7 +2267,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2225,7 +2278,7 @@ int main() { ; 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 @@ -2245,7 +2298,7 @@ fi rm -f conftest* echo $ac_n "checking for header""... $ac_c" 1>&6 -echo "configure:2249: checking for header" >&5 +echo "configure:2302: checking for header" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CXXCPP $CPPFLAGS' @@ -2255,7 +2308,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2266,7 +2319,7 @@ int main() { ; 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 @@ -2290,7 +2343,7 @@ rm -f conftest* 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' @@ -2300,7 +2353,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS="$CXXFLAGSG" cat > conftest.$ac_ext < @@ -2316,7 +2369,7 @@ int main() { ; 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 @@ -2337,7 +2390,7 @@ rm -f conftest* 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' @@ -2346,7 +2399,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < @@ -2358,7 +2411,7 @@ int main() { ; 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 @@ -2376,7 +2429,7 @@ fi 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' @@ -2387,7 +2440,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS=$CXXFLAGSG deal_II_isnan_flag="" cat > conftest.$ac_ext < @@ -2399,7 +2452,7 @@ int main() { ; 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 @@ -2415,7 +2468,7 @@ rm -f conftest* if test "x$deal_II_isnan_flag" = "x" ; then cat > conftest.$ac_ext < @@ -2427,7 +2480,7 @@ int main() { ; 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 @@ -2447,7 +2500,7 @@ rm -f conftest* for testflag in -D_ISOC99_SOURCE -D__EXTENSIONS__ ; do CXXFLAGS="$CXXFLAGSG $testflag" cat > conftest.$ac_ext < @@ -2459,7 +2512,7 @@ int main() { ; 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" @@ -2472,7 +2525,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < @@ -2484,7 +2537,7 @@ int main() { ; 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" @@ -2506,7 +2559,7 @@ rm -f conftest* 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' @@ -2517,7 +2570,7 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXFLAGS=$CXXFLAGSO deal_II_isnan_flag="" cat > conftest.$ac_ext < @@ -2529,7 +2582,7 @@ int main() { ; 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 @@ -2545,7 +2598,7 @@ rm -f conftest* if test "x$deal_II_isnan_flag" = "x" ; then cat > conftest.$ac_ext < @@ -2557,7 +2610,7 @@ int main() { ; 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 @@ -2577,7 +2630,7 @@ rm -f conftest* for testflag in -D_ISOC99_SOURCE -D__EXTENSIONS__ ; do CXXFLAGS="$CXXFLAGSO $testflag" cat > conftest.$ac_ext < @@ -2589,7 +2642,7 @@ int main() { ; 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" @@ -2602,7 +2655,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < @@ -2614,7 +2667,7 @@ int main() { ; 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" @@ -2645,9 +2698,9 @@ cross_compiling=$ac_cv_prog_cxx_cross 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 < @@ -2659,7 +2712,7 @@ int i=rand_r(&i); ; 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 @@ -2682,12 +2735,12 @@ rm -f conftest* 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 <&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 @@ -2742,7 +2795,7 @@ done # 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 @@ -2778,7 +2831,7 @@ if test "x$F77" = "x" ; then # 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 @@ -2929,7 +2982,7 @@ fi # 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 @@ -2967,7 +3020,7 @@ fi 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" @@ -3032,7 +3085,7 @@ else 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 @@ -3068,7 +3121,7 @@ if test "$docxx" = to-be-determined ; then # 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 @@ -3102,7 +3155,7 @@ fi 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 @@ -3116,6 +3169,170 @@ fi + + +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' @@ -3125,16 +3342,16 @@ cross_compiling=$ac_cv_prog_cxx_cross 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 <&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 @@ -3152,16 +3369,16 @@ rm -f conftest* 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 <&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 @@ -3314,6 +3531,8 @@ s%@enablemultigrid@%$enablemultigrid%g 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 diff --git a/deal.II/configure.in b/deal.II/configure.in index d3579fbe62..b811cbdd75 100644 --- a/deal.II/configure.in +++ b/deal.II/configure.in @@ -956,6 +956,13 @@ AC_SUBST(docxx) +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 ------------------------------------------------------------- diff --git a/deal.II/doc/development/Makefile b/deal.II/doc/development/Makefile index ea6944d8c1..e7d96bac5f 100644 --- a/deal.II/doc/development/Makefile +++ b/deal.II/doc/development/Makefile @@ -50,6 +50,8 @@ makefiles.html: Makefile makefiles.1.html $D/common/Make.global_options makefile @echo '
  • ACE_ROOT=$(ACE_ROOT)' >> $@ @echo '
  • lib-ACE=$(lib-ACE)' >> $@ @echo '
  • with-multithreading=$(with-multithreading)' >> $@ + @echo '
  • TECIO_INCLUDE=$(TECIO_INCLUDE)' >> $@ + @echo '
  • TECIO_LIBRARY=$(TECIO_LIBRARY)' >> $@ @cat makefiles.2.html >> $@ diff --git a/deal.II/doc/development/makefiles.1.html b/deal.II/doc/development/makefiles.1.html index 65f055dde8..246d7e2d76 100644 --- a/deal.II/doc/development/makefiles.1.html +++ b/deal.II/doc/development/makefiles.1.html @@ -180,7 +180,8 @@
    LIBS

    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.

    @@ -379,8 +380,30 @@ your program shall use multithreading or not.

    - +
  • Variables associated with Tecplot binary support

    + +

    + 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: + +

    +
    TECIO_INCLUDE
    +

    + Path to the Tecplot API header files as found by ./configure +

    +
    + + +
    TECIO_LIBRARY
    +

    + Path to the Tecplot API library +

    +
    +
    + + diff --git a/deal.II/doc/news/2002/c-3-3.html b/deal.II/doc/news/2002/c-3-3.html index 80e3a6dee9..0ca59afb35 100644 --- a/deal.II/doc/news/2002/c-3-3.html +++ b/deal.II/doc/news/2002/c-3-3.html @@ -47,14 +47,28 @@ documentation, etc. n to be compliant wth the new class PolynomialSpace.
    - GK 2002/02/11) + (GK 2002/02/11)

  • New: The class PolynomialSpace implements the space of polynomials at most a certain degree in arbitrary space dimensions.
    - GK 2002/02/11) + (GK 2002/02/11) +

    + +
  • New: The function DataOutBase:: + write_tecplot_binary 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 DataOutBase + ::TecplotFlags. + tecplot_binary_file_name variable. If the API is not + available this code simply calls the existing ASCII output function. +
    + (BK 2002/02/11)

      @@ -83,7 +97,7 @@ documentation, etc.
    1. New: Finite element family with complete polynomial spaces for discontinuous Galerkin: FE_DGP
      - GK 2002/02/11) + (GK 2002/02/11)

        diff --git a/deal.II/doc/news/news.html b/deal.II/doc/news/news.html index 22afc127ec..e04fee756e 100644 --- a/deal.II/doc/news/news.html +++ b/deal.II/doc/news/news.html @@ -29,6 +29,18 @@
        +
        + 2002/02/11: New support for Tecplot binary output +
        +
        + Benjamin Shelton Kirk contributed binary + Tecplot support. + This feature can be used to create more efficient data files + in the Tecplot FEBLOCK finite element format. For more information + look here. +

        +
        +
        Changes between version 3.3 and the main branch diff --git a/deal.II/doc/readme.html b/deal.II/doc/readme.html index a856643ddb..95d5597a14 100644 --- a/deal.II/doc/readme.html +++ b/deal.II/doc/readme.html @@ -158,7 +158,7 @@ GNUPLOT, GMV (general mesh viewer), - Tecplot, + Tecplot (ASCII and binary), Visualization Toolkit (Vtk), AVS Explorer, @@ -604,6 +604,14 @@ include these functions, see this page.

        + +
      1. +

        + Deal.II supports writing Tecplot + 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. +