NGSolve  4.9
basiclinalg/bla.hpp
00001 #ifndef FILE_NGBLA
00002 #define FILE_NGBLA
00003 
00004 
00005 #ifdef USE_BLAS
00006 
00007 extern "C"
00008 {
00009   // #include <cblas.h>
00010 #include <mkl_cblas.h>
00011 }
00012 #endif
00013 
00014 
00015 #include <ngstd.hpp>
00016 
00017 
00019 namespace ngbla
00020 {
00021   using namespace std;
00022   using namespace ngstd;
00023 
00024   using ngstd::CArray;
00025 
00026   typedef std::complex<double> Complex;
00027   inline double fabs (Complex v) { return std::abs (v); }
00028 
00029   inline bool IsComplex(double v) { return false; }
00030   inline bool IsComplex(Complex v) { return true; }
00031 }
00032 
00033 
00034 #ifdef PARALLEL
00035 namespace ngstd
00036 {
00037   template <>
00038   class MPI_Traits<ngbla::Complex>
00039   {
00040   public:
00041     static MPI_Datatype MPIType () 
00042     { 
00043       // return MPI_C_DOUBLE_COMPLEX;   // no MPI_SUM defined ??
00044       return MPI_DOUBLE_COMPLEX;
00045     }
00046   };
00047 }
00048 #endif
00049 
00050 
00051 
00052 
00053 #include "expr.hpp"
00054 #include "vector.hpp"
00055 #include "matrix.hpp"
00056 #include "cholesky.hpp"
00057 #include "symmetricmatrix.hpp"
00058 #include "bandmatrix.hpp"
00059 
00060 
00061 namespace ngbla
00062 {
00063 
00065   extern void CalcEigenSystem (const FlatMatrix<double> & mat,
00066                                FlatVector<double> & lami,
00067                                FlatMatrix<double> & eigenvecs);
00068 
00069 
00070 
00072   extern void CalcSchurComplement (const FlatMatrix<double> a, 
00073                                    FlatMatrix<double> s,
00074                                    const BitArray & used,
00075                                    LocalHeap & lh);
00076 }
00077 
00078 #include "ng_lapack.hpp"
00079 
00080 #endif