update flux-saving routines on GPU;to be verified
This commit is contained in:
24
cuda/Ion.cu
24
cuda/Ion.cu
@@ -97,7 +97,7 @@ __global__ void dvc_ScaLBL_D3Q7_AAeven_IonConcentration(double *dist, double *D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
__global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
int n;
|
int n;
|
||||||
double Ci;
|
double Ci;
|
||||||
@@ -154,6 +154,12 @@ __global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, doub
|
|||||||
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
||||||
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
||||||
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
||||||
|
FluxAdvective[n+0*Np] = ux*Ci;
|
||||||
|
FluxAdvective[n+1*Np] = uy*Ci;
|
||||||
|
FluxAdvective[n+2*Np] = uz*Ci;
|
||||||
|
FluxElectrical[n+0*Np] = uEPx*Ci;
|
||||||
|
FluxElectrical[n+1*Np] = uEPy*Ci;
|
||||||
|
FluxElectrical[n+2*Np] = uEPz*Ci;
|
||||||
|
|
||||||
// q=0
|
// q=0
|
||||||
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
||||||
@@ -186,7 +192,7 @@ __global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, doub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
__global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
int n;
|
int n;
|
||||||
double Ci;
|
double Ci;
|
||||||
@@ -229,6 +235,12 @@ __global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *F
|
|||||||
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
||||||
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
||||||
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
||||||
|
FluxAdvective[n+0*Np] = ux*Ci;
|
||||||
|
FluxAdvective[n+1*Np] = uy*Ci;
|
||||||
|
FluxAdvective[n+2*Np] = uz*Ci;
|
||||||
|
FluxElectrical[n+0*Np] = uEPx*Ci;
|
||||||
|
FluxElectrical[n+1*Np] = uEPy*Ci;
|
||||||
|
FluxElectrical[n+2*Np] = uEPz*Ci;
|
||||||
|
|
||||||
// q=0
|
// q=0
|
||||||
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
||||||
@@ -348,10 +360,10 @@ extern "C" void ScaLBL_D3Q7_AAeven_IonConcentration(double *dist, double *Den, i
|
|||||||
//cudaProfilerStop();
|
//cudaProfilerStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
//cudaProfilerStart();
|
//cudaProfilerStart();
|
||||||
dvc_ScaLBL_D3Q7_AAodd_Ion<<<NBLOCKS,NTHREADS >>>(neighborList,dist,Den,FluxDiffusive,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
dvc_ScaLBL_D3Q7_AAodd_Ion<<<NBLOCKS,NTHREADS >>>(neighborList,dist,Den,FluxDiffusive,FluxAdvective,FluxElectrical,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
||||||
|
|
||||||
cudaError_t err = cudaGetLastError();
|
cudaError_t err = cudaGetLastError();
|
||||||
if (cudaSuccess != err){
|
if (cudaSuccess != err){
|
||||||
@@ -360,10 +372,10 @@ extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *D
|
|||||||
//cudaProfilerStop();
|
//cudaProfilerStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
extern "C" void ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
//cudaProfilerStart();
|
//cudaProfilerStart();
|
||||||
dvc_ScaLBL_D3Q7_AAeven_Ion<<<NBLOCKS,NTHREADS >>>(dist,Den,FluxDiffusive,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
dvc_ScaLBL_D3Q7_AAeven_Ion<<<NBLOCKS,NTHREADS >>>(dist,Den,FluxDiffusive,FluxAdvective,FluxElectrical,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
||||||
|
|
||||||
cudaError_t err = cudaGetLastError();
|
cudaError_t err = cudaGetLastError();
|
||||||
if (cudaSuccess != err){
|
if (cudaSuccess != err){
|
||||||
|
|||||||
24
hip/Ion.cu
24
hip/Ion.cu
@@ -98,7 +98,7 @@ __global__ void dvc_ScaLBL_D3Q7_AAeven_IonConcentration(double *dist, double *D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
__global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
int n;
|
int n;
|
||||||
double Ci;
|
double Ci;
|
||||||
@@ -155,6 +155,12 @@ __global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, doub
|
|||||||
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
||||||
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
||||||
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
||||||
|
FluxAdvective[n+0*Np] = ux*Ci;
|
||||||
|
FluxAdvective[n+1*Np] = uy*Ci;
|
||||||
|
FluxAdvective[n+2*Np] = uz*Ci;
|
||||||
|
FluxElectrical[n+0*Np] = uEPx*Ci;
|
||||||
|
FluxElectrical[n+1*Np] = uEPy*Ci;
|
||||||
|
FluxElectrical[n+2*Np] = uEPz*Ci;
|
||||||
|
|
||||||
// q=0
|
// q=0
|
||||||
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
||||||
@@ -187,7 +193,7 @@ __global__ void dvc_ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, doub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, ddouble *Velocity, double *ElectricField,
|
__global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
int n;
|
int n;
|
||||||
double Ci;
|
double Ci;
|
||||||
@@ -230,6 +236,12 @@ __global__ void dvc_ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *F
|
|||||||
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
FluxDiffusive[n+0*Np] = flux_diffusive_x;
|
||||||
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
FluxDiffusive[n+1*Np] = flux_diffusive_y;
|
||||||
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
FluxDiffusive[n+2*Np] = flux_diffusive_z;
|
||||||
|
FluxAdvective[n+0*Np] = ux*Ci;
|
||||||
|
FluxAdvective[n+1*Np] = uy*Ci;
|
||||||
|
FluxAdvective[n+2*Np] = uz*Ci;
|
||||||
|
FluxElectrical[n+0*Np] = uEPx*Ci;
|
||||||
|
FluxElectrical[n+1*Np] = uEPy*Ci;
|
||||||
|
FluxElectrical[n+2*Np] = uEPz*Ci;
|
||||||
|
|
||||||
// q=0
|
// q=0
|
||||||
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
dist[n] = f0*(1.0-rlx)+rlx*0.25*Ci;
|
||||||
@@ -349,10 +361,10 @@ extern "C" void ScaLBL_D3Q7_AAeven_IonConcentration(double *dist, double *Den, i
|
|||||||
//cudaProfilerStop();
|
//cudaProfilerStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
//cudaProfilerStart();
|
//cudaProfilerStart();
|
||||||
dvc_ScaLBL_D3Q7_AAodd_Ion<<<NBLOCKS,NTHREADS >>>(neighborList,dist,Den,FluxDiffusive,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
dvc_ScaLBL_D3Q7_AAodd_Ion<<<NBLOCKS,NTHREADS >>>(neighborList,dist,Den,FluxDiffusive,FluxAdvective,FluxElectrical,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
||||||
|
|
||||||
hipError_t err = hipGetLastError();
|
hipError_t err = hipGetLastError();
|
||||||
if (hipSuccess != err){
|
if (hipSuccess != err){
|
||||||
@@ -361,10 +373,10 @@ extern "C" void ScaLBL_D3Q7_AAodd_Ion(int *neighborList, double *dist, double *D
|
|||||||
//cudaProfilerStop();
|
//cudaProfilerStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *Velocity, double *ElectricField,
|
extern "C" void ScaLBL_D3Q7_AAeven_Ion(double *dist, double *Den, double *FluxDiffusive, double *FluxAdvective, double *FluxElectrical, double *Velocity, double *ElectricField,
|
||||||
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
double Di, int zi, double rlx, double Vt, int start, int finish, int Np){
|
||||||
//cudaProfilerStart();
|
//cudaProfilerStart();
|
||||||
dvc_ScaLBL_D3Q7_AAeven_Ion<<<NBLOCKS,NTHREADS >>>(dist,Den,FluxDiffusive,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
dvc_ScaLBL_D3Q7_AAeven_Ion<<<NBLOCKS,NTHREADS >>>(dist,Den,FluxDiffusive,FluxAdvective,FluxElectrical,Velocity,ElectricField,Di,zi,rlx,Vt,start,finish,Np);
|
||||||
|
|
||||||
hipError_t err = hipGetLastError();
|
hipError_t err = hipGetLastError();
|
||||||
if (hipSuccess != err){
|
if (hipSuccess != err){
|
||||||
|
|||||||
Reference in New Issue
Block a user