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