FEI Version of the Day
fei_utils.hpp
00001 /*
00002 // @HEADER
00003 // ************************************************************************
00004 //             FEI: Finite Element Interface to Linear Solvers
00005 //                  Copyright (2005) Sandia Corporation.
00006 //
00007 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the
00008 // U.S. Government retains certain rights in this software.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Alan Williams (william@sandia.gov) 
00038 //
00039 // ************************************************************************
00040 // @HEADER
00041 */
00042 
00043 #ifndef _fei_utils_hpp_
00044 #define _fei_utils_hpp_
00045 
00046 
00047 #include <fei_macros.hpp>
00048 #include <fei_fwd.hpp>
00049 #include <fei_version.h>
00050 
00051 #include <Teuchos_ParameterList.hpp>
00052 
00053 #include <string>
00054 #include <vector>
00055 
00056 
00057 
00058 namespace fei_VERSION {
00059 //  Mangled 'version' function. The name of this namespace, 'fei_VERSION'
00060 //  is a macro that is defined (in fei_version.h) to include the current
00061 //  version number.
00062 //  This fei_VERSION::version() function is not intended for public use.
00063 //  There is another 'version' function below, which is for public use,
00064 //  but internally it calls this function in the fei_VERSION namespace. This
00065 //  prevents header-mismatch errors, where a user application accidentally
00066 //  includes headers from a different fei version than the fei libraries that
00067 //  are being linked.
00068 //  (In that scenario, unresolved symbol errors will occur, since the value
00069 //  of fei_VERSION in the headers won't match what's been compiled into the
00070 //  library.)
00071 const char* version();
00072 
00073 }//namespace fei_VERSION
00074 
00075 
00076 
00079 namespace fei {
00080 
00083 namespace utils {
00084 
00087 inline
00088 const char* version()
00089 {
00090   return( fei_VERSION::version() );
00091 }
00092 
00096 double cpu_time();
00097 
00103 fei::OutputLevel string_to_output_level(const std::string& str);
00104 
00108 LinearSystemCore* get_LinearSystemCore(fei::Matrix* matrix);
00109 
00121 void getConnectivityArrays(fei::MatrixGraph& matrixGraph,
00122                            std::vector<int>& nodes,
00123                            std::vector<int>& elem_offsets);
00124 
00128 void char_ptrs_to_strings(int numStrings,
00129                          const char*const* charstrings,
00130                          std::vector<std::string>& stdstrings);
00131 
00137 void strings_to_char_ptrs(std::vector<std::string>& stdstrings,
00138                           int& numStrings,
00139                           const char**& charPtrs);
00140 
00145 void parse_strings(std::vector<std::string>& stdstrings,
00146                   const char* separator_string,
00147                   fei::ParameterSet& paramset);
00148 
00153 void convert_ParameterSet_to_strings(const fei::ParameterSet* paramset,
00154                                      std::vector<std::string>& paramStrings);
00155 
00156 }//namespace utils
00157 }//namespace fei
00158 
00159 #endif
00160 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends