From bdc62f38da166aff44d201ecc9ea1416fa23bf92 Mon Sep 17 00:00:00 2001 From: James E McClure Date: Wed, 1 Aug 2018 07:50:21 -0400 Subject: [PATCH] Added velocity to IO --- analysis/runAnalysis.cpp | 84 ++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 29 deletions(-) diff --git a/analysis/runAnalysis.cpp b/analysis/runAnalysis.cpp index 51c9934d..dd13e002 100644 --- a/analysis/runAnalysis.cpp +++ b/analysis/runAnalysis.cpp @@ -163,15 +163,24 @@ public: PROFILE_START("Save Vis",1); ASSERT(visData[0].vars[0]->name=="phase"); ASSERT(visData[0].vars[1]->name=="Pressure"); - ASSERT(visData[0].vars[2]->name=="SignDist"); - ASSERT(visData[0].vars[3]->name=="BlobID"); + ASSERT(visData[0].vars[2]->name=="Velocity_x"); + ASSERT(visData[0].vars[3]->name=="Velocity_y"); + ASSERT(visData[0].vars[4]->name=="Velocity_z"); + ASSERT(visData[0].vars[5]->name=="SignDist"); + ASSERT(visData[0].vars[6]->name=="BlobID"); Array& PhaseData = visData[0].vars[0]->data; Array& PressData = visData[0].vars[1]->data; - Array& SignData = visData[0].vars[2]->data; - Array& BlobData = visData[0].vars[3]->data; + Array& VelxData = visData[0].vars[2]->data; + Array& VelyData = visData[0].vars[3]->data; + Array& VelzData = visData[0].vars[4]->data; + Array& SignData = visData[0].vars[5]->data; + Array& BlobData = visData[0].vars[6]->data; fillData.copy(Averages.SDn,PhaseData); fillData.copy(Averages.Press,PressData); fillData.copy(Averages.SDs,SignData); + fillData.copy(Averages.Vel_x,VelxData); + fillData.copy(Averages.Vel_y,VelyData); + fillData.copy(Averages.Vel_z,VelzData); fillData.copy(Averages.Label_NWP,BlobData); IO::writeData( timestep, visData, comm.comm ); PROFILE_STOP("Save Vis",1); @@ -327,6 +336,23 @@ runAnalysis::runAnalysis( std::shared_ptr db, PressVar->dim = 1; PressVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); d_meshData[0].vars.push_back(PressVar); + + PressVar->name = "Velocity_x"; + PressVar->type = IO::VariableType::VolumeVariable; + PressVar->dim = 1; + PressVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + d_meshData[0].vars.push_back(Velocity_x); + PressVar->name = "Velocity_y"; + PressVar->type = IO::VariableType::VolumeVariable; + PressVar->dim = 1; + PressVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + d_meshData[0].vars.push_back(Velocity_y); + PressVar->name = "Velocity_z"; + PressVar->type = IO::VariableType::VolumeVariable; + PressVar->dim = 1; + PressVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + d_meshData[0].vars.push_back(Velocity_z); + SignDistVar->name = "SignDist"; SignDistVar->type = IO::VariableType::VolumeVariable; SignDistVar->dim = 1; @@ -549,35 +575,35 @@ void runAnalysis::run( int timestep, TwoPhase& Averages, const double *Phi, } //if ( matches(type,AnalysisType::CopySimState) ) { if ( timestep%d_analysis_interval + 4 == d_analysis_interval ) { - // Copy the members of Averages to the cpu (phase was copied above) - PROFILE_START("Copy-Pressure",1); - ScaLBL_D3Q19_Pressure(fq,Pressure,d_Np); - ScaLBL_D3Q19_Momentum(fq,Velocity,d_Np); - ScaLBL_DeviceBarrier(); - PROFILE_STOP("Copy-Pressure",1); - PROFILE_START("Copy-Wait",1); - PROFILE_STOP("Copy-Wait",1); - PROFILE_START("Copy-State",1); - //memcpy(Averages.Phase.data(),phase->data(),N*sizeof(double)); - if (d_regular) - d_ScaLBL_Comm->RegularLayout(d_Map,Phi,Averages.Phase); - else - ScaLBL_CopyToHost(Averages.Phase.data(),Phi,N*sizeof(double)); - // copy other variables - d_ScaLBL_Comm->RegularLayout(d_Map,Pressure,Averages.Press); - d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[0],Averages.Vel_x); - d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[d_Np],Averages.Vel_y); - d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[2*d_Np],Averages.Vel_z); - PROFILE_STOP("Copy-State",1); + // Copy the members of Averages to the cpu (phase was copied above) + PROFILE_START("Copy-Pressure",1); + ScaLBL_D3Q19_Pressure(fq,Pressure,d_Np); + ScaLBL_D3Q19_Momentum(fq,Velocity,d_Np); + ScaLBL_DeviceBarrier(); + PROFILE_STOP("Copy-Pressure",1); + PROFILE_START("Copy-Wait",1); + PROFILE_STOP("Copy-Wait",1); + PROFILE_START("Copy-State",1); + //memcpy(Averages.Phase.data(),phase->data(),N*sizeof(double)); + if (d_regular) + d_ScaLBL_Comm->RegularLayout(d_Map,Phi,Averages.Phase); + else + ScaLBL_CopyToHost(Averages.Phase.data(),Phi,N*sizeof(double)); + // copy other variables + d_ScaLBL_Comm->RegularLayout(d_Map,Pressure,Averages.Press); + d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[0],Averages.Vel_x); + d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[d_Np],Averages.Vel_y); + d_ScaLBL_Comm->RegularLayout(d_Map,&Velocity[2*d_Np],Averages.Vel_z); + PROFILE_STOP("Copy-State",1); } std::shared_ptr cfq,cPhi; //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); - 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)); + // Copy restart data to the CPU + cPhi = std::shared_ptr(new double[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)); } PROFILE_STOP("Copy data to host",1);