From 42277520edb4fe3c2bab9dab67f320c0723e033f Mon Sep 17 00:00:00 2001 From: Rex Zhe Li Date: Thu, 7 May 2020 19:09:26 -0400 Subject: [PATCH] update output writing --- models/GreyscaleSCModel.cpp | 61 +++++++++++++++++++--------- models/GreyscaleSCModel.h | 4 +- tests/lbpm_greyscaleSC_simulator.cpp | 1 - 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/models/GreyscaleSCModel.cpp b/models/GreyscaleSCModel.cpp index 0faeee7d..bb73fdbb 100644 --- a/models/GreyscaleSCModel.cpp +++ b/models/GreyscaleSCModel.cpp @@ -120,6 +120,8 @@ void ScaLBL_GreyscaleSCModel::SetDomain(){ Velocity_z.resize(Nx,Ny,Nz); PorosityMap.resize(Nx,Ny,Nz); Pressure.resize(Nx,Ny,Nz); + DenA_data.resize(Nx,Ny,Nz); + DenB_data.resize(Nx,Ny,Nz); id = new signed char [N]; for (int i=0; iid[i] = 1; // initialize this way @@ -744,23 +746,23 @@ void ScaLBL_GreyscaleSCModel::Initialize(){ if (rank==0) printf ("Initializing distributions \n"); ScaLBL_D3Q19_GreyscaleSC_Init(dvcMap,fqA, fqB, DenA,DenB, Np); - //debug - DoubleArray PhaseField(Nx,Ny,Nz); - //ScaLBL_Comm->RegularLayout(Map,&Den[0],PhaseField); - ScaLBL_CopyToHost(PhaseField.data(), DenA, sizeof(double)*N); - FILE *AFILE; - sprintf(LocalRankFilename,"A_init.%05i.raw",rank); - AFILE = fopen(LocalRankFilename,"wb"); - fwrite(PhaseField.data(),8,N,AFILE); - fclose(AFILE); - - //ScaLBL_Comm->RegularLayout(Map,&Den[Np],PhaseField); - ScaLBL_CopyToHost(PhaseField.data(), DenB, sizeof(double)*N); - FILE *BFILE; - sprintf(LocalRankFilename,"B_init.%05i.raw",rank); - BFILE = fopen(LocalRankFilename,"wb"); - fwrite(PhaseField.data(),8,N,BFILE); - fclose(BFILE); +// //debug +// DoubleArray PhaseField(Nx,Ny,Nz); +// //ScaLBL_Comm->RegularLayout(Map,&Den[0],PhaseField); +// ScaLBL_CopyToHost(PhaseField.data(), DenA, sizeof(double)*N); +// FILE *AFILE; +// sprintf(LocalRankFilename,"A_init.%05i.raw",rank); +// AFILE = fopen(LocalRankFilename,"wb"); +// fwrite(PhaseField.data(),8,N,AFILE); +// fclose(AFILE); +// +// //ScaLBL_Comm->RegularLayout(Map,&Den[Np],PhaseField); +// ScaLBL_CopyToHost(PhaseField.data(), DenB, sizeof(double)*N); +// FILE *BFILE; +// sprintf(LocalRankFilename,"B_init.%05i.raw",rank); +// BFILE = fopen(LocalRankFilename,"wb"); +// fwrite(PhaseField.data(),8,N,BFILE); +// fclose(BFILE); //Velocity also needs initialization (for old incompressible momentum transport) //if (rank==0) printf ("Initializing velocity field \n"); @@ -1017,7 +1019,7 @@ void ScaLBL_GreyscaleSCModel::Run(){ // } if (timestep%visualization_interval==0){ - VelocityField(); + WriteOutput(); } // if (timestep%restart_interval==0){ @@ -1066,7 +1068,7 @@ void ScaLBL_GreyscaleSCModel::Run(){ // ************************************************************************ } -void ScaLBL_GreyscaleSCModel::VelocityField(){ +void ScaLBL_GreyscaleSCModel::WriteOutput(){ /* Minkowski Morphology(Mask); int SIZE=Np*sizeof(double); @@ -1121,6 +1123,8 @@ void ScaLBL_GreyscaleSCModel::VelocityField(){ auto VzVar = std::make_shared(); auto SignDistVar = std::make_shared(); auto PressureVar = std::make_shared(); + auto DenAVar = std::make_shared(); + auto DenBVar = std::make_shared(); IO::initialize("","silo","false"); // Create the MeshDataStruct @@ -1155,28 +1159,47 @@ void ScaLBL_GreyscaleSCModel::VelocityField(){ PressureVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); visData[0].vars.push_back(PressureVar); + DenAVar->name = "DenA"; + DenAVar->type = IO::VariableType::VolumeVariable; + DenAVar->dim = 1; + DenAVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + visData[0].vars.push_back(DenAVar); + DenBVar->name = "DenB"; + DenBVar->type = IO::VariableType::VolumeVariable; + DenBVar->dim = 1; + DenBVar->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + visData[0].vars.push_back(DenBVar); + Array& SignData = visData[0].vars[0]->data; Array& VelxData = visData[0].vars[1]->data; Array& VelyData = visData[0].vars[2]->data; Array& VelzData = visData[0].vars[3]->data; Array& PressureData = visData[0].vars[4]->data; + Array& DenAData = visData[0].vars[5]->data; + Array& DenBData = visData[0].vars[6]->data; ASSERT(visData[0].vars[0]->name=="SignDist"); ASSERT(visData[0].vars[1]->name=="Velocity_x"); ASSERT(visData[0].vars[2]->name=="Velocity_y"); ASSERT(visData[0].vars[3]->name=="Velocity_z"); ASSERT(visData[0].vars[4]->name=="Pressure"); + ASSERT(visData[0].vars[5]->name=="DenA"); + ASSERT(visData[0].vars[6]->name=="DenB"); ScaLBL_Comm->RegularLayout(Map,&Velocity[0],Velocity_x); ScaLBL_Comm->RegularLayout(Map,&Velocity[Np],Velocity_y); ScaLBL_Comm->RegularLayout(Map,&Velocity[2*Np],Velocity_z); ScaLBL_Comm->RegularLayout(Map,Pressure_dvc,Pressure); + ScaLBL_CopyToHost(DenA_data.data(), DenA, sizeof(double)*N); + ScaLBL_CopyToHost(DenB_data.data(), DenB, sizeof(double)*N); fillData.copy(SignDist,SignData); fillData.copy(Velocity_x,VelxData); fillData.copy(Velocity_y,VelyData); fillData.copy(Velocity_z,VelzData); fillData.copy(Pressure,PressureData); + fillData.copy(DenA_data,DenAData); + fillData.copy(DenB_data,DenBData); IO::writeData( timestep, visData, Dm->Comm ); diff --git a/models/GreyscaleSCModel.h b/models/GreyscaleSCModel.h index bc71dc01..5de29c3d 100644 --- a/models/GreyscaleSCModel.h +++ b/models/GreyscaleSCModel.h @@ -30,7 +30,7 @@ public: void Initialize(); void Run(); void WriteDebug(); - void VelocityField(); + void WriteOutput(); bool Restart,pBC; int timestep,timestepMax; @@ -82,6 +82,8 @@ public: DoubleArray Velocity_z; DoubleArray PorosityMap; DoubleArray Pressure; + DoubleArray DenA_data; + DoubleArray DenB_data; private: MPI_Comm comm; diff --git a/tests/lbpm_greyscaleSC_simulator.cpp b/tests/lbpm_greyscaleSC_simulator.cpp index b95fff04..340be938 100644 --- a/tests/lbpm_greyscaleSC_simulator.cpp +++ b/tests/lbpm_greyscaleSC_simulator.cpp @@ -49,7 +49,6 @@ int main(int argc, char **argv) GreyscaleSC.Create(); // creating the model will create data structure to match the pore structure and allocate variables GreyscaleSC.Initialize(); // initializing the model will set initial conditions for variables GreyscaleSC.Run(); - //GreyscaleSC.VelocityField(); GreyscaleSC.WriteDebug(); } // ****************************************************