From 0aa352cf24cc84e97c4ba36a1401cc9d0502647f Mon Sep 17 00:00:00 2001 From: Rex Zhe Li Date: Sat, 2 Jan 2021 19:21:15 -0500 Subject: [PATCH] update writing IonConcentration for visualization --- analysis/ElectroChemistry.cpp | 38 +++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/analysis/ElectroChemistry.cpp b/analysis/ElectroChemistry.cpp index 4a7bcf29..30487f03 100644 --- a/analysis/ElectroChemistry.cpp +++ b/analysis/ElectroChemistry.cpp @@ -140,7 +140,10 @@ void ElectroChemistryAnalyzer::WriteVis( ScaLBL_IonModel &Ion, ScaLBL_Poisson &P visData[0].meshName = "domain"; visData[0].mesh = std::make_shared( Dm->rank_info,Dm->Nx-2,Dm->Ny-2,Dm->Nz-2,Dm->Lx,Dm->Ly,Dm->Lz ); auto ElectricPotential = std::make_shared(); - auto IonConcentration = std::make_shared(); + std::vector> IonConcentration; + for (int ion=0; ion()); + } auto VxVar = std::make_shared(); auto VyVar = std::make_shared(); auto VzVar = std::make_shared(); @@ -155,14 +158,15 @@ void ElectroChemistryAnalyzer::WriteVis( ScaLBL_IonModel &Ion, ScaLBL_Poisson &P if (vis_db->getWithDefault( "save_concentration", true )){ for (int ion=0; ionname = VisName; - IonConcentration->type = IO::VariableType::VolumeVariable; - IonConcentration->dim = 1; - IonConcentration->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); - visData[0].vars.push_back(IonConcentration); + sprintf(VisName,"IonConcentration_%i",ion+1); + IonConcentration[ion]->name = VisName; + IonConcentration[ion]->type = IO::VariableType::VolumeVariable; + IonConcentration[ion]->dim = 1; + IonConcentration[ion]->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); + visData[0].vars.push_back(IonConcentration[ion]); } } + if (vis_db->getWithDefault( "save_velocity", false )){ VxVar->name = "Velocity_x"; VxVar->type = IO::VariableType::VolumeVariable; @@ -190,23 +194,23 @@ void ElectroChemistryAnalyzer::WriteVis( ScaLBL_IonModel &Ion, ScaLBL_Poisson &P if (vis_db->getWithDefault( "save_concentration", true )){ for (int ion=0; ionname = VisName; - ASSERT(visData[0].vars[1]->name==VisName); - Array& IonConcentrationData = visData[0].vars[1]->data; + sprintf(VisName,"IonConcentration_%i",ion+1); + IonConcentration[ion]->name = VisName; + ASSERT(visData[0].vars[1+ion]->name==VisName); + Array& IonConcentrationData = visData[0].vars[1+ion]->data; Ion.getIonConcentration(Rho,ion); fillData.copy(Rho,IonConcentrationData); } } if (vis_db->getWithDefault( "save_velocity", false )){ - 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[1+Ion.number_ion_species+0]->name=="Velocity_x"); + ASSERT(visData[0].vars[1+Ion.number_ion_species+1]->name=="Velocity_y"); + ASSERT(visData[0].vars[1+Ion.number_ion_species+2]->name=="Velocity_z"); Stokes.getVelocity(Vel_x,Vel_y,Vel_z); - Array& VelxData = visData[0].vars[2]->data; - Array& VelyData = visData[0].vars[3]->data; - Array& VelzData = visData[0].vars[4]->data; + Array& VelxData = visData[0].vars[1+Ion.number_ion_species+0]->data; + Array& VelyData = visData[0].vars[1+Ion.number_ion_species+1]->data; + Array& VelzData = visData[0].vars[1+Ion.number_ion_species+2]->data; fillData.copy(Vel_x,VelxData); fillData.copy(Vel_y,VelyData); fillData.copy(Vel_z,VelzData);