From d9cde3c76cb1fd206a7c2002f323ec7de4e480f6 Mon Sep 17 00:00:00 2001 From: James McClure Date: Thu, 6 Aug 2020 16:12:18 -0400 Subject: [PATCH] use generalized D3Q7 MPI structures for multi-ion --- models/IonModel.cpp | 20 +++++++++++++------- models/PoissonSolver.cpp | 8 ++++---- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/models/IonModel.cpp b/models/IonModel.cpp index 92dcd652..687deb9e 100644 --- a/models/IonModel.cpp +++ b/models/IonModel.cpp @@ -25,9 +25,11 @@ void ScaLBL_IonModel::ReadParams(string filename){ tau = 1.0; timestepMax = 100000; tolerance = 1.0e-8; - // Model parameters - if (ion_db->keyExists( "timestepMax" )){ - timestepMax = ion_db->getScalar( "timestepMax" ); + // Model parameters + + number_ion_species = 1; + if (ion_db->keyExists( "number_ion_species" )){ + number_ion_species = ion_db->getScalar( "number_ion_species" ); } } void ScaLBL_IonModel::SetDomain(){ @@ -180,17 +182,21 @@ void ScaLBL_IonModel::Run(double *Velocity){ while (timestep < timestepMax && error > tolerance) { //************************************************************************/ timestep++; - ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL + for (int ic=0; icSendD3Q7AA(fq, ic); //READ FROM NORMAL ScaLBL_D3Q7_AAodd_Ion(NeighborList, fq, Velocity, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx, Fx, Fy, Fz); - ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE + for (int ic=0; icRecvD3Q7AA(fq, ic); //WRITE INTO OPPOSITE // Set boundary conditions /* ... */ ScaLBL_D3Q7_AAodd_Ion(NeighborList, fq, Velocity, 0, ScaLBL_Comm->LastExterior(), Np, rlx, Fx, Fy, Fz); ScaLBL_DeviceBarrier(); MPI_Barrier(comm); timestep++; - ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL + for (int ic=0; icSendD3Q7AA(fq, ic); //READ FORM NORMAL ScaLBL_D3Q7_AAeven_Ion(fq, Velocity, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx, Fx, Fy, Fz); - ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE + for (int ic=0; icRecvD3Q7AA(fq, ic); //WRITE INTO OPPOSITE // Set boundary conditions /* ... */ ScaLBL_D3Q7_AAeven_Ion(fq, Velocity, 0, ScaLBL_Comm->LastExterior(), Np, rlx, Fx, Fy, Fz); diff --git a/models/PoissonSolver.cpp b/models/PoissonSolver.cpp index 776134cc..9668dd0b 100644 --- a/models/PoissonSolver.cpp +++ b/models/PoissonSolver.cpp @@ -189,17 +189,17 @@ void ScaLBL_Poisson::Run(double *ChargeDensity){ while (timestep < timestepMax && error > tolerance) { //************************************************************************/ timestep++; - ScaLBL_Comm->SendD3Q19AA(fq); //READ FROM NORMAL + ScaLBL_Comm->SendD3Q7AA(fq, 0); //READ FROM NORMAL ScaLBL_D3Q7_AAodd_Poisson(NeighborList, fq, ChargeDensity, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx, Fx, Fy, Fz); - ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE + ScaLBL_Comm->RecvD3Q7AA(fq, 0); //WRITE INTO OPPOSITE // Set boundary conditions /* ... */ ScaLBL_D3Q7_AAodd_Poisson(NeighborList, fq, ChargeDensity, 0, ScaLBL_Comm->LastExterior(), Np, rlx, Fx, Fy, Fz); ScaLBL_DeviceBarrier(); MPI_Barrier(comm); timestep++; - ScaLBL_Comm->SendD3Q19AA(fq); //READ FORM NORMAL + ScaLBL_Comm->SendD3Q7AA(fq, 0); //READ FORM NORMAL ScaLBL_D3Q7_AAeven_Poisson(fq, ChargeDensity, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np, rlx, Fx, Fy, Fz); - ScaLBL_Comm->RecvD3Q19AA(fq); //WRITE INTO OPPOSITE + ScaLBL_Comm->RecvD3Q7AA(fq, 0); //WRITE INTO OPPOSITE // Set boundary conditions /* ... */ ScaLBL_D3Q7_AAeven_Poisson(fq, ChargeDensity, 0, ScaLBL_Comm->LastExterior(), Np, rlx, Fx, Fy, Fz);