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