00001 #ifndef _CUDAKTMETHOD
00002 #define _CUDAKTMETHOD
00003 #include "globals.h"
00004 #include "transportbase.h"
00005 #include "orthomesh.h"
00006 #include "laxfriedrichsforsystem.h"
00007
00008 class CUDAKTMethod : public TransportBase
00009 {
00010 private:
00011 ArrayOfVecDouble m_vSol;
00012 VecDouble m_vFluxes;
00013 VecDouble m_fValues;
00014 VecDouble m_vNV;
00015 OrthoMesh &m_mesh;
00016 double *m_vX,*m_vY,*m_vZ;
00017 VecDouble m_vX0, m_vX1, m_vY0, m_vY1, m_vZ0, m_vZ1;
00018 double m_CFL;
00019 unsigned m_nX,m_nY,m_nZ;
00020 Point3D m_Q;
00021 double m_rs1,m_rs2,m_theta,m_v1,m_v2,m_por;
00022 public:
00023 CUDAKTMethod(OrthoMesh &mesh,Function3D &fInitU,const VecDouble &cPor,Function3D &fPrescribedU,double v1,double v2,double theta,double rs1,double rs2,double CFL);
00024 virtual void updateVelocities(DynamicBase &dynMod);
00025 virtual void iterateN(unsigned n,double dt);
00026 virtual double getDt(double t,double tEnd);
00027 virtual ArrayOfVecDouble& getSolutionAtCells();
00028 virtual void printOutput();
00029 virtual void updateDataForDynamicModule();
00030 };
00031 #endif