diff --git a/analysis/runAnalysis.cpp b/analysis/runAnalysis.cpp index 34eeb8a0..30431027 100644 --- a/analysis/runAnalysis.cpp +++ b/analysis/runAnalysis.cpp @@ -39,21 +39,24 @@ void DeleteArray( const TYPE *p ) class WriteRestartWorkItem: public ThreadPool::WorkItemRet { public: - WriteRestartWorkItem( const char* filename_, std::shared_ptr cphi_, std::shared_ptr cfq_, int N_ ): - filename(filename_), cphi(cphi_), cfq(cfq_), N(N_) {} + WriteRestartWorkItem( const char* filename_, std::shared_ptr cDen_, std::shared_ptr cfq_, int N_ ): + filename(filename_), cDen(cDen_), cfq(cfq_), N(N_) {} virtual void run() { PROFILE_START("Save Checkpoint",1); double value; ofstream File(filename,ios::binary); for (int n=0; n cfq,cphi; + std::shared_ptr cfq,cDen; // const DoubleArray& phase; //const DoubleArray& dist; const int N; @@ -601,14 +604,14 @@ void runAnalysis::run( int timestep, TwoPhase& Averages, const double *Phi, d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[2*d_Np],Averages.Vel_z); PROFILE_STOP("Copy-State",1); } - std::shared_ptr cfq,cPhi; + std::shared_ptr cfq,cDen; //if ( matches(type,AnalysisType::CreateRestart) ) { if (timestep%d_restart_interval==0){ // Copy restart data to the CPU - cPhi = std::shared_ptr(new double[d_Np],DeleteArray); + cDen = std::shared_ptr(new double[2*d_Np],DeleteArray); cfq = std::shared_ptr(new double[19*d_Np],DeleteArray); ScaLBL_CopyToHost(cfq.get(),fq,19*d_Np*sizeof(double)); - ScaLBL_CopyToHost(cPhi.get(),Phi,d_Np*sizeof(double)); + ScaLBL_CopyToHost(cDen.get(),Den,2*d_Np*sizeof(double)); } PROFILE_STOP("Copy data to host",1); @@ -616,6 +619,10 @@ void runAnalysis::run( int timestep, TwoPhase& Averages, const double *Phi, if ( matches(type,AnalysisType::IdentifyBlobs) ) { phase = std::shared_ptr(new DoubleArray(d_N[0],d_N[1],d_N[2])); d_ScaLBL_Comm->RegularLayout(d_Map,Phi,*phase); + if (d_regular) + d_ScaLBL_Comm->RegularLayout(d_Map,Phi,*phase); + else + ScaLBL_CopyToHost(phase.get(),Phi,N*sizeof(double)); BlobIDstruct new_index(new std::pair(0,IntArray())); BlobIDstruct new_ids(new std::pair(0,IntArray())); @@ -653,7 +660,7 @@ void runAnalysis::run( int timestep, TwoPhase& Averages, const double *Phi, fclose(Rst); } // Write the restart file (using a seperate thread) - auto work = new WriteRestartWorkItem(d_restartFile.c_str(),cPhi,cfq,d_Np); + auto work = new WriteRestartWorkItem(d_restartFile.c_str(),cDen,cfq,d_Np); work->add_dependency(d_wait_restart); d_wait_restart = d_tpool.add_work(work); } diff --git a/models/ColorModel.cpp b/models/ColorModel.cpp index 2ce1ec4e..5e77a29d 100644 --- a/models/ColorModel.cpp +++ b/models/ColorModel.cpp @@ -296,9 +296,11 @@ void ScaLBL_ColorModel::Initialize(){ double *cPhi = new double[Np]; double *cDist = new double[19*Np]; ifstream File(LocalRestartFile,ios::binary); - double value; - for (int n=0; n