diff --git a/analysis/ElectroChemistry.cpp b/analysis/ElectroChemistry.cpp index b052d459..4a7bcf29 100644 --- a/analysis/ElectroChemistry.cpp +++ b/analysis/ElectroChemistry.cpp @@ -38,21 +38,94 @@ ElectroChemistryAnalyzer::ElectroChemistryAnalyzer(std::shared_ptr dm): } ElectroChemistryAnalyzer::~ElectroChemistryAnalyzer(){ - + if (Dm->rank()==0){ + fclose(TIMELOG); + } } void ElectroChemistryAnalyzer::SetParams(){ } -void ElectroChemistryAnalyzer::Basic(ScaLBL_IonModel &Ion, ScaLBL_Poisson &Poisson, ScaLBL_StokesModel &Stokes){ +void ElectroChemistryAnalyzer::Basic(ScaLBL_IonModel &Ion, ScaLBL_Poisson &Poisson, ScaLBL_StokesModel &Stokes, int timestep){ + int i,j,k; Poisson.getElectricPotential(ElectricalPotential); + + /* local sub-domain averages */ + double rho_avg_local[Ion.number_ion_species]; + double rho_mu_avg_local[Ion.number_ion_species]; + double rho_mu_fluctuation_local[Ion.number_ion_species]; + double rho_psi_avg_local[Ion.number_ion_species]; + double rho_psi_fluctuation_local[Ion.number_ion_species]; + /* global averages */ + double rho_avg_global[Ion.number_ion_species]; + double rho_mu_avg_global[Ion.number_ion_species]; + double rho_mu_fluctuation_global[Ion.number_ion_species]; + double rho_psi_avg_global[Ion.number_ion_species]; + double rho_psi_fluctuation_global[Ion.number_ion_species]; + for (int ion=0; ionComm, rho_avg_local[ion]); + rho_mu_avg_global[ion]=sumReduce( Dm->Comm, rho_mu_avg_local[ion]); + rho_psi_avg_global[ion]=sumReduce( Dm->Comm, rho_psi_avg_local[ion]); + + rho_mu_avg_global[ion] /= rho_avg_global[ion]; + rho_psi_avg_global[ion] /= rho_avg_global[ion]; } + for (int ion=0; ionComm, rho_mu_fluctuation_local[ion]); + rho_psi_fluctuation_global[ion]=sumReduce( Dm->Comm, rho_psi_fluctuation_local[ion]); + } + if (Dm->rank()==0){ + fprintf(TIMELOG,"%i ",timestep); + for (int ion=0; ion input_db, int timestep){ @@ -89,7 +162,6 @@ void ElectroChemistryAnalyzer::WriteVis( ScaLBL_IonModel &Ion, ScaLBL_Poisson &P IonConcentration->data.resize(Dm->Nx-2,Dm->Ny-2,Dm->Nz-2); visData[0].vars.push_back(IonConcentration); } - } if (vis_db->getWithDefault( "save_velocity", false )){ VxVar->name = "Velocity_x"; diff --git a/analysis/ElectroChemistry.h b/analysis/ElectroChemistry.h index fa404fb0..8d613ef7 100644 --- a/analysis/ElectroChemistry.h +++ b/analysis/ElectroChemistry.h @@ -47,7 +47,7 @@ public: ~ElectroChemistryAnalyzer(); void SetParams(); - void Basic( ScaLBL_IonModel &Ion, ScaLBL_Poisson &Poisson, ScaLBL_StokesModel &Stokes); + void Basic( ScaLBL_IonModel &Ion, ScaLBL_Poisson &Poisson, ScaLBL_StokesModel &Stokes, int timestep); void WriteVis( ScaLBL_IonModel &Ion, ScaLBL_Poisson &Poisson, ScaLBL_StokesModel &Stokes, std::shared_ptr input_db, int timestep); private: