diff --git a/FDTD/operator_sse.cpp b/FDTD/operator_sse.cpp index 8a1b21b..214bf3a 100644 --- a/FDTD/operator_sse.cpp +++ b/FDTD/operator_sse.cpp @@ -41,11 +41,11 @@ Operator_sse::~Operator_sse() Delete(); } -Engine* Operator_sse::CreateEngine() const +Engine* Operator_sse::CreateEngine() { //! create a special sse-engine - Engine_sse* eng = Engine_sse::New(this); - return eng; + m_Engine = Engine_sse::New(this); + return m_Engine; } void Operator_sse::Init() diff --git a/FDTD/operator_sse.h b/FDTD/operator_sse.h index 317ea72..c0a698a 100644 --- a/FDTD/operator_sse.h +++ b/FDTD/operator_sse.h @@ -29,7 +29,7 @@ public: static Operator_sse* New(); virtual ~Operator_sse(); - virtual Engine* CreateEngine() const; + virtual Engine* CreateEngine(); inline virtual FDTD_FLOAT GetVV( unsigned int n, unsigned int x, unsigned int y, unsigned int z ) const { return f4_vv[n][x][y][z%numVectors].f[z/numVectors]; } inline virtual FDTD_FLOAT GetVI( unsigned int n, unsigned int x, unsigned int y, unsigned int z ) const { return f4_vi[n][x][y][z%numVectors].f[z/numVectors]; } diff --git a/FDTD/operator_sse_compressed.cpp b/FDTD/operator_sse_compressed.cpp index 5214892..ce3e8e3 100644 --- a/FDTD/operator_sse_compressed.cpp +++ b/FDTD/operator_sse_compressed.cpp @@ -42,16 +42,14 @@ Operator_SSE_Compressed::~Operator_SSE_Compressed() Delete(); } -Engine* Operator_SSE_Compressed::CreateEngine() const +Engine* Operator_SSE_Compressed::CreateEngine() { if (!m_Use_Compression) - { //! create a default sse-engine - Engine_sse* eng = Engine_sse::New(this); - return eng; - } - Engine_SSE_Compressed* eng = Engine_SSE_Compressed::New(this); - return eng; + m_Engine = Engine_sse::New(this); + else + m_Engine = Engine_SSE_Compressed::New(this); + return m_Engine; } int Operator_SSE_Compressed::CalcECOperator( DebugFlags debugFlags ) diff --git a/FDTD/operator_sse_compressed.h b/FDTD/operator_sse_compressed.h index 5d3454f..f9b12a2 100644 --- a/FDTD/operator_sse_compressed.h +++ b/FDTD/operator_sse_compressed.h @@ -43,7 +43,7 @@ public: static Operator_SSE_Compressed* New(); virtual ~Operator_SSE_Compressed(); - virtual Engine* CreateEngine() const; + virtual Engine* CreateEngine(); inline virtual FDTD_FLOAT GetVV( unsigned int n, unsigned int x, unsigned int y, unsigned int z ) const { if (m_Use_Compression) return f4_vv_Compressed[n][m_Op_index[x][y][z%numVectors]].f[z/numVectors]; else return Operator_sse::GetVV(n,x,y,z);} inline virtual FDTD_FLOAT GetVI( unsigned int n, unsigned int x, unsigned int y, unsigned int z ) const { if (m_Use_Compression) return f4_vi_Compressed[n][m_Op_index[x][y][z%numVectors]].f[z/numVectors]; else return Operator_sse::GetVI(n,x,y,z);}