FEI Version of the Day
snl_fei_tester.hpp
00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #ifndef _snl_fei_tester_h_
00010 #define _snl_fei_tester_h_
00011 
00012 #include <fei_macros.hpp>
00013 #include <fei_mpi.h>
00014 #include <fei_SharedPtr.hpp>
00015 
00016 #include <test_utils/feitester.hpp>
00017 #include <test_utils/DataReader.hpp>
00018 
00019 #include <fei_fwd.hpp>
00020 
00021 class snl_fei_tester : public feitester {
00022  public:
00023   snl_fei_tester(fei::SharedPtr<DataReader> data_reader,
00024      MPI_Comm comm, int localProc, int numProcs);
00025   ~snl_fei_tester();
00026 
00027   const char* getName()
00028     {
00029       static const char name[] = "snl_fei_tester";
00030       return((const char*)name);
00031     }
00032 
00033   int testInitialization();
00034 
00035   int testLoading();
00036 
00037   int testSolve();
00038 
00039   int testCheckResult();
00040 
00041   void dumpMatrixFiles();
00042 
00043   void setParameter(const char* param);
00044 
00045  private:
00046   void defineFieldsAndIDTypes();
00047   int initElemBlocks();
00048   int loadElemBlocks();
00049   int initConstraints();
00050   int loadConstraints();
00051   void definePattern(ElemBlock& eb, int& patternID);
00052   int createLibraryInstance(const char* solverName);
00053 
00054   int save_block_node_soln(DataReader& data, fei::Vector* vec,
00055          const char* solnFileName, int numProcs,
00056          int localProc, int solveCounter);
00057 
00058   int save_block_elem_soln(DataReader& data, fei::Vector* vec,
00059          const char* solnFileName,
00060          int numProcs, int localProc, int solveCounter);
00061 
00062   int save_multiplier_soln(DataReader& data, fei::Vector* vec,
00063          const char* solnFileName,
00064          int numProcs, int localProc, int solveCounter);
00065 
00066   int checkSolution(int localProc, int numProcs,
00067       const char* solnFileName, const char* checkFileName,
00068       const char* extension, int solveCounter);
00069 
00070   MPI_Comm comm_;
00071 
00072   fei::SharedPtr<fei::Factory> factory_;
00073 
00074   fei::SharedPtr<fei::VectorSpace> vecSpace_;
00075   fei::SharedPtr<fei::MatrixGraph> matrixGraph_;
00076 
00077   fei::SharedPtr<fei::Matrix> A_;
00078   fei::SharedPtr<fei::Vector> x_;
00079   fei::SharedPtr<fei::Vector> b_;
00080 
00081   fei::SharedPtr<fei::LinearSystem> linSys_;
00082 
00083   LinearSystemCore* linSysCore_;
00084   FiniteElementData* feData_;
00085 
00086   fei::SharedPtr<DataReader> data_;
00087 
00088   std::vector<int> idTypes_;
00089   int numPatterns_;
00090   int nodeTypeOffset_, elemTypeOffset_, constraintTypeOffset_;
00091 
00092   int localProc_, numProcs_;
00093 };
00094 
00095 #endif // _snl_fei_tester_h_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends