fixed the operator resetting & cleanup + a lot of memory leaks fixed
This commit is contained in:
parent
57c4c56849
commit
67d1307fdf
@ -29,7 +29,7 @@ Operator_Base::Operator_Base()
|
|||||||
|
|
||||||
Operator_Base::~Operator_Base()
|
Operator_Base::~Operator_Base()
|
||||||
{
|
{
|
||||||
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Operator_Base::GetDirName(int ny) const
|
std::string Operator_Base::GetDirName(int ny) const
|
||||||
@ -49,11 +49,21 @@ void Operator_Base::Init()
|
|||||||
m_BC[n]=0;
|
m_BC[n]=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Base::Reset()
|
void Operator_Base::Delete()
|
||||||
{
|
{
|
||||||
for (int n=0; n<3; ++n)
|
for (int n=0; n<3; ++n)
|
||||||
|
{
|
||||||
delete[] discLines[n];
|
delete[] discLines[n];
|
||||||
Init();
|
discLines[n]=0;
|
||||||
|
}
|
||||||
|
for (int n=0; n<6; ++n)
|
||||||
|
m_BC[n]=0;
|
||||||
|
dT = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Operator_Base::Reset()
|
||||||
|
{
|
||||||
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Base::SetMaterialStoreFlags(int type, bool val)
|
void Operator_Base::SetMaterialStoreFlags(int type, bool val)
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
class Operator_Base
|
class Operator_Base
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual ~Operator_Base();
|
||||||
|
|
||||||
//! Get the timestep used by this operator
|
//! Get the timestep used by this operator
|
||||||
virtual double GetTimestep() const {return dT;};
|
virtual double GetTimestep() const {return dT;};
|
||||||
|
|
||||||
@ -77,9 +79,10 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
Operator_Base();
|
Operator_Base();
|
||||||
virtual ~Operator_Base();
|
|
||||||
|
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
//! Cleanup data and reset
|
||||||
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
|
|
||||||
//! boundary conditions
|
//! boundary conditions
|
||||||
|
@ -413,6 +413,7 @@ bool ProcessFields::WriteMesh2HDF5(string filename, string groupName, unsigned i
|
|||||||
}
|
}
|
||||||
//write to dataset
|
//write to dataset
|
||||||
dataset.write( array, H5::PredType::NATIVE_FLOAT );
|
dataset.write( array, H5::PredType::NATIVE_FLOAT );
|
||||||
|
delete[] array;
|
||||||
}
|
}
|
||||||
delete group;
|
delete group;
|
||||||
|
|
||||||
|
@ -107,6 +107,7 @@ int ProcessFieldsFD::Process()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Delete_N_3DArray<FDTD_FLOAT>(field_td,numLines);
|
||||||
++m_FD_SampleCount;
|
++m_FD_SampleCount;
|
||||||
return GetNextInterval();
|
return GetNextInterval();
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ int ProcessFieldsTD::Process()
|
|||||||
else
|
else
|
||||||
cerr << "ProcessFieldsTD::Process: unknown File-Type" << endl;
|
cerr << "ProcessFieldsTD::Process: unknown File-Type" << endl;
|
||||||
|
|
||||||
Delete_N_3DArray(field,numLines);
|
Delete_N_3DArray<FDTD_FLOAT>(field,numLines);
|
||||||
|
|
||||||
return GetNextInterval();
|
return GetNextInterval();
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,8 @@ Operator::~Operator()
|
|||||||
for (size_t n=0; n<m_Op_exts.size(); ++n)
|
for (size_t n=0; n<m_Op_exts.size(); ++n)
|
||||||
delete m_Op_exts.at(n);
|
delete m_Op_exts.at(n);
|
||||||
m_Op_exts.clear();
|
m_Op_exts.clear();
|
||||||
Reset();
|
|
||||||
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Engine* Operator::CreateEngine() const
|
Engine* Operator::CreateEngine() const
|
||||||
@ -81,29 +82,40 @@ void Operator::Init()
|
|||||||
Exc = 0;
|
Exc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator::Reset()
|
void Operator::Delete()
|
||||||
{
|
{
|
||||||
|
CSX = NULL;
|
||||||
|
|
||||||
Delete_N_3DArray(vv,numLines);
|
Delete_N_3DArray(vv,numLines);
|
||||||
Delete_N_3DArray(vi,numLines);
|
Delete_N_3DArray(vi,numLines);
|
||||||
Delete_N_3DArray(iv,numLines);
|
Delete_N_3DArray(iv,numLines);
|
||||||
Delete_N_3DArray(ii,numLines);
|
Delete_N_3DArray(ii,numLines);
|
||||||
delete MainOp;
|
vv=vi=iv=ii=0;
|
||||||
delete DualOp;
|
delete MainOp; MainOp=0;
|
||||||
|
delete DualOp; DualOp=0;
|
||||||
for (int n=0; n<3; ++n)
|
for (int n=0; n<3; ++n)
|
||||||
{
|
{
|
||||||
delete[] EC_C[n];
|
delete[] EC_C[n];EC_C[n]=0;
|
||||||
delete[] EC_G[n];
|
delete[] EC_G[n];EC_G[n]=0;
|
||||||
delete[] EC_L[n];
|
delete[] EC_L[n];EC_L[n]=0;
|
||||||
delete[] EC_R[n];
|
delete[] EC_R[n];EC_R[n]=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete Exc;
|
delete Exc;Exc=0;
|
||||||
|
|
||||||
Delete_N_3DArray(m_epsR,numLines);
|
Delete_N_3DArray(m_epsR,numLines);
|
||||||
|
m_epsR=0;
|
||||||
Delete_N_3DArray(m_kappa,numLines);
|
Delete_N_3DArray(m_kappa,numLines);
|
||||||
|
m_kappa=0;
|
||||||
Delete_N_3DArray(m_mueR,numLines);
|
Delete_N_3DArray(m_mueR,numLines);
|
||||||
|
m_mueR=0;
|
||||||
Delete_N_3DArray(m_sigma,numLines);
|
Delete_N_3DArray(m_sigma,numLines);
|
||||||
|
m_sigma=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Operator::Reset()
|
||||||
|
{
|
||||||
|
Delete();
|
||||||
Operator_Base::Reset();
|
Operator_Base::Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,6 +127,7 @@ protected:
|
|||||||
Operator();
|
Operator();
|
||||||
|
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
virtual void InitOperator();
|
virtual void InitOperator();
|
||||||
virtual void InitDataStorage();
|
virtual void InitDataStorage();
|
||||||
|
@ -37,7 +37,6 @@ Operator_Cylinder::Operator_Cylinder() : Operator_Multithread()
|
|||||||
|
|
||||||
Operator_Cylinder::~Operator_Cylinder()
|
Operator_Cylinder::~Operator_Cylinder()
|
||||||
{
|
{
|
||||||
Operator_Multithread::Reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Cylinder::Init()
|
void Operator_Cylinder::Init()
|
||||||
@ -47,16 +46,6 @@ void Operator_Cylinder::Init()
|
|||||||
Operator_Multithread::Init();
|
Operator_Multithread::Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Cylinder::Reset()
|
|
||||||
{
|
|
||||||
Operator_Multithread::Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Operator_Cylinder::InitOperator()
|
|
||||||
{
|
|
||||||
Operator_Multithread::InitOperator();
|
|
||||||
}
|
|
||||||
|
|
||||||
int Operator_Cylinder::CalcECOperator( DebugFlags debugFlags )
|
int Operator_Cylinder::CalcECOperator( DebugFlags debugFlags )
|
||||||
{
|
{
|
||||||
// debugs only work with the native vector dumps
|
// debugs only work with the native vector dumps
|
||||||
|
@ -68,8 +68,6 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
Operator_Cylinder();
|
Operator_Cylinder();
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
virtual void InitOperator();
|
|
||||||
virtual void Reset();
|
|
||||||
|
|
||||||
//Calc timestep only internal use
|
//Calc timestep only internal use
|
||||||
virtual double CalcTimestep();
|
virtual double CalcTimestep();
|
||||||
|
@ -29,6 +29,7 @@ Operator_CylinderMultiGrid::Operator_CylinderMultiGrid(vector<double> Split_Radi
|
|||||||
|
|
||||||
Operator_CylinderMultiGrid::~Operator_CylinderMultiGrid()
|
Operator_CylinderMultiGrid::~Operator_CylinderMultiGrid()
|
||||||
{
|
{
|
||||||
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Operator_CylinderMultiGrid* Operator_CylinderMultiGrid::New(vector<double> Split_Radii, unsigned int numThreads)
|
Operator_CylinderMultiGrid* Operator_CylinderMultiGrid::New(vector<double> Split_Radii, unsigned int numThreads)
|
||||||
@ -177,10 +178,16 @@ bool Operator_CylinderMultiGrid::SetupExcitation(TiXmlElement* Excite, unsigned
|
|||||||
return Exc->setupExcitation(Excite,maxTS);
|
return Exc->setupExcitation(Excite,maxTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Operator_CylinderMultiGrid::Delete()
|
||||||
|
{
|
||||||
|
delete m_InnerOp;
|
||||||
|
m_InnerOp=0;
|
||||||
|
}
|
||||||
|
|
||||||
void Operator_CylinderMultiGrid::Reset()
|
void Operator_CylinderMultiGrid::Reset()
|
||||||
{
|
{
|
||||||
|
Delete();
|
||||||
Operator_Cylinder::Reset();
|
Operator_Cylinder::Reset();
|
||||||
m_InnerOp->Reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_CylinderMultiGrid::SetBoundaryCondition(int* BCs)
|
void Operator_CylinderMultiGrid::SetBoundaryCondition(int* BCs)
|
||||||
|
@ -56,7 +56,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
Operator_CylinderMultiGrid(vector<double> Split_Radii);
|
Operator_CylinderMultiGrid(vector<double> Split_Radii);
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
// virtual void InitOperator();
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
|
|
||||||
double m_Split_Rad;
|
double m_Split_Rad;
|
||||||
|
@ -30,6 +30,7 @@ Operator_Multithread* Operator_Multithread::New(unsigned int numThreads)
|
|||||||
|
|
||||||
Operator_Multithread::~Operator_Multithread()
|
Operator_Multithread::~Operator_Multithread()
|
||||||
{
|
{
|
||||||
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Multithread::setNumThreads( unsigned int numThreads )
|
void Operator_Multithread::setNumThreads( unsigned int numThreads )
|
||||||
@ -55,6 +56,7 @@ Operator_Multithread::Operator_Multithread()
|
|||||||
void Operator_Multithread::Init()
|
void Operator_Multithread::Init()
|
||||||
{
|
{
|
||||||
Operator_SSE_Compressed::Init();
|
Operator_SSE_Compressed::Init();
|
||||||
|
|
||||||
m_CalcEC_Start=NULL;
|
m_CalcEC_Start=NULL;
|
||||||
m_CalcEC_Stop=NULL;
|
m_CalcEC_Stop=NULL;
|
||||||
|
|
||||||
@ -62,10 +64,8 @@ void Operator_Multithread::Init()
|
|||||||
m_CalcPEC_Stop=NULL;
|
m_CalcPEC_Stop=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_Multithread::Reset()
|
void Operator_Multithread::Delete()
|
||||||
{
|
{
|
||||||
Operator_SSE_Compressed::Reset();
|
|
||||||
|
|
||||||
m_thread_group.join_all();
|
m_thread_group.join_all();
|
||||||
|
|
||||||
delete m_CalcEC_Start;
|
delete m_CalcEC_Start;
|
||||||
@ -79,6 +79,12 @@ void Operator_Multithread::Reset()
|
|||||||
m_CalcPEC_Stop=NULL;
|
m_CalcPEC_Stop=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Operator_Multithread::Reset()
|
||||||
|
{
|
||||||
|
Delete();
|
||||||
|
Operator_SSE_Compressed::Reset();
|
||||||
|
}
|
||||||
|
|
||||||
void Operator_Multithread::CalcStartStopLines(unsigned int &numThreads, vector<unsigned int> &start, vector<unsigned int> &stop) const
|
void Operator_Multithread::CalcStartStopLines(unsigned int &numThreads, vector<unsigned int> &start, vector<unsigned int> &stop) const
|
||||||
{
|
{
|
||||||
vector<unsigned int> jpt = AssignJobs2Threads(numLines[0], numThreads, true);
|
vector<unsigned int> jpt = AssignJobs2Threads(numLines[0], numThreads, true);
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
Operator_Multithread();
|
Operator_Multithread();
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
|
|
||||||
virtual bool Calc_EC(); //this method is using multi-threading
|
virtual bool Calc_EC(); //this method is using multi-threading
|
||||||
|
@ -38,7 +38,7 @@ Operator_sse::Operator_sse() : Operator()
|
|||||||
|
|
||||||
Operator_sse::~Operator_sse()
|
Operator_sse::~Operator_sse()
|
||||||
{
|
{
|
||||||
Reset();
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Engine* Operator_sse::CreateEngine() const
|
Engine* Operator_sse::CreateEngine() const
|
||||||
@ -57,7 +57,7 @@ void Operator_sse::Init()
|
|||||||
f4_ii = 0;
|
f4_ii = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_sse::Reset()
|
void Operator_sse::Delete()
|
||||||
{
|
{
|
||||||
Delete_N_3DArray_v4sf(f4_vv,numLines);
|
Delete_N_3DArray_v4sf(f4_vv,numLines);
|
||||||
Delete_N_3DArray_v4sf(f4_vi,numLines);
|
Delete_N_3DArray_v4sf(f4_vi,numLines);
|
||||||
@ -67,9 +67,15 @@ void Operator_sse::Reset()
|
|||||||
f4_vi = 0;
|
f4_vi = 0;
|
||||||
f4_iv = 0;
|
f4_iv = 0;
|
||||||
f4_ii = 0;
|
f4_ii = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Operator_sse::Reset()
|
||||||
|
{
|
||||||
|
Delete();
|
||||||
Operator::Reset();
|
Operator::Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Operator_sse::InitOperator()
|
void Operator_sse::InitOperator()
|
||||||
{
|
{
|
||||||
Delete_N_3DArray_v4sf(f4_vv,numLines);
|
Delete_N_3DArray_v4sf(f4_vv,numLines);
|
||||||
|
@ -45,6 +45,7 @@ protected:
|
|||||||
Operator_sse();
|
Operator_sse();
|
||||||
|
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
virtual void InitOperator();
|
virtual void InitOperator();
|
||||||
|
|
||||||
|
@ -34,12 +34,12 @@ Operator_SSE_Compressed* Operator_SSE_Compressed::New()
|
|||||||
Operator_SSE_Compressed::Operator_SSE_Compressed() : Operator_sse()
|
Operator_SSE_Compressed::Operator_SSE_Compressed() : Operator_sse()
|
||||||
{
|
{
|
||||||
m_Op_index = NULL;
|
m_Op_index = NULL;
|
||||||
m_Use_Compression = false;
|
m_Use_Compression = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Operator_SSE_Compressed::~Operator_SSE_Compressed()
|
Operator_SSE_Compressed::~Operator_SSE_Compressed()
|
||||||
{
|
{
|
||||||
Reset();
|
Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Engine* Operator_SSE_Compressed::CreateEngine() const
|
Engine* Operator_SSE_Compressed::CreateEngine() const
|
||||||
@ -66,13 +66,12 @@ int Operator_SSE_Compressed::CalcECOperator( DebugFlags debugFlags )
|
|||||||
void Operator_SSE_Compressed::Init()
|
void Operator_SSE_Compressed::Init()
|
||||||
{
|
{
|
||||||
Operator_sse::Init();
|
Operator_sse::Init();
|
||||||
|
m_Use_Compression = false;
|
||||||
m_Op_index = NULL;
|
m_Op_index = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Operator_SSE_Compressed::Reset()
|
void Operator_SSE_Compressed::Delete()
|
||||||
{
|
{
|
||||||
Operator_sse::Reset();
|
|
||||||
|
|
||||||
if (m_Op_index)
|
if (m_Op_index)
|
||||||
{
|
{
|
||||||
Delete3DArray<unsigned int>( m_Op_index, numLines );
|
Delete3DArray<unsigned int>( m_Op_index, numLines );
|
||||||
@ -89,6 +88,12 @@ void Operator_SSE_Compressed::Reset()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Operator_SSE_Compressed::Reset()
|
||||||
|
{
|
||||||
|
Delete();
|
||||||
|
Operator_sse::Reset();
|
||||||
|
}
|
||||||
|
|
||||||
void Operator_SSE_Compressed::InitOperator()
|
void Operator_SSE_Compressed::InitOperator()
|
||||||
{
|
{
|
||||||
//cleanup compression
|
//cleanup compression
|
||||||
@ -102,7 +107,6 @@ void Operator_SSE_Compressed::InitOperator()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Operator_sse::InitOperator();
|
Operator_sse::InitOperator();
|
||||||
|
|
||||||
m_Op_index = Create3DArray<unsigned int>( numLines );
|
m_Op_index = Create3DArray<unsigned int>( numLines );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ protected:
|
|||||||
bool m_Use_Compression;
|
bool m_Use_Compression;
|
||||||
|
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
void Delete();
|
||||||
virtual void Reset();
|
virtual void Reset();
|
||||||
virtual void InitOperator();
|
virtual void InitOperator();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user