diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp | 23 | ||||
-rw-r--r-- | Source/Particles/Collision/CollisionType.cpp | 4 | ||||
-rw-r--r-- | Source/Particles/Deposition/CurrentDeposition.H | 17 |
3 files changed, 29 insertions, 15 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp index dc7f58f48..c98c79835 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp @@ -77,8 +77,13 @@ SpectralFieldDataRZ::SpectralFieldDataRZ (amrex::BoxArray const & realspace_ba, int ostride = grid_size[0]; int odist = 1; int batch = grid_size[0]; // number of ffts +# ifdef AMREX_USE_FLOAT + auto cufft_type = CUFFT_C2C; +# else + auto cufft_type = CUFFT_Z2Z; +# endif result = cufftPlanMany(&forward_plan[mfi], 1, fft_length, inembed, istride, idist, - onembed, ostride, odist, CUFFT_Z2Z, batch); + onembed, ostride, odist, cufft_type, batch); if (result != CUFFT_SUCCESS) { amrex::AllPrint() << " cufftPlanMany failed! \n"; } @@ -225,9 +230,13 @@ SpectralFieldDataRZ::FABZForwardTransform (amrex::MFIter const & mfi, amrex::Box cudaStream_t stream = amrex::Gpu::Device::cudaStream(); cufftSetStream(forward_plan[mfi], stream); for (int mode=0 ; mode < n_rz_azimuthal_modes ; mode++) { +# ifdef AMREX_USE_FLOAT + result = cufftExecC2C(forward_plan[mfi], +# else result = cufftExecZ2Z(forward_plan[mfi], - reinterpret_cast<cuDoubleComplex*>(tempHTransformed[mfi].dataPtr(mode)), // cuDoubleComplex *in - reinterpret_cast<cuDoubleComplex*>(tmpSpectralField[mfi].dataPtr(mode)), // cuDoubleComplex *out +# endif + reinterpret_cast<AnyFFT::Complex*>(tempHTransformed[mfi].dataPtr(mode)), // Complex *in + reinterpret_cast<AnyFFT::Complex*>(tmpSpectralField[mfi].dataPtr(mode)), // Complex *out CUFFT_FORWARD); if (result != CUFFT_SUCCESS) { amrex::AllPrint() << " forward transform using cufftExecZ2Z failed ! \n"; @@ -330,9 +339,13 @@ SpectralFieldDataRZ::FABZBackwardTransform (amrex::MFIter const & mfi, amrex::Bo cudaStream_t stream = amrex::Gpu::Device::cudaStream(); cufftSetStream(forward_plan[mfi], stream); for (int mode=0 ; mode < n_rz_azimuthal_modes ; mode++) { +# ifdef AMREX_USE_FLOAT + result = cufftExecC2C(forward_plan[mfi], +# else result = cufftExecZ2Z(forward_plan[mfi], - reinterpret_cast<cuDoubleComplex*>(tmpSpectralField[mfi].dataPtr(mode)), // cuDoubleComplex *in - reinterpret_cast<cuDoubleComplex*>(tempHTransformed[mfi].dataPtr(mode)), // cuDoubleComplex *out +# endif + reinterpret_cast<AnyFFT::Complex*>(tmpSpectralField[mfi].dataPtr(mode)), // Complex *in + reinterpret_cast<AnyFFT::Complex*>(tempHTransformed[mfi].dataPtr(mode)), // Complex *out CUFFT_INVERSE); if (result != CUFFT_SUCCESS) { amrex::AllPrint() << " backwardtransform using cufftExecZ2Z failed ! \n"; diff --git a/Source/Particles/Collision/CollisionType.cpp b/Source/Particles/Collision/CollisionType.cpp index 36ce7952d..38825d003 100644 --- a/Source/Particles/Collision/CollisionType.cpp +++ b/Source/Particles/Collision/CollisionType.cpp @@ -132,7 +132,7 @@ void CollisionType::doCoulombCollisionsWithinTile #if defined WARPX_DIM_RZ int ri = (i_cell - i_cell%nz) / nz; - auto dV = MathConst::pi*(2.0*ri+1.0)*dr*dr*dz; + auto dV = MathConst::pi*(2.0_rt*ri+1.0_rt)*dr*dr*dz; #else amrex::ignore_unused(nz); #endif @@ -229,7 +229,7 @@ void CollisionType::doCoulombCollisionsWithinTile #if defined WARPX_DIM_RZ int ri = (i_cell - i_cell%nz) / nz; - auto dV = MathConst::pi*(2.0*ri+1.0)*dr*dr*dz; + auto dV = MathConst::pi*(2.0_rt*ri+1.0_rt)*dr*dr*dz; #else amrex::ignore_unused(nz); #endif diff --git a/Source/Particles/Deposition/CurrentDeposition.H b/Source/Particles/Deposition/CurrentDeposition.H index 67c6b4bd0..b116bbb64 100644 --- a/Source/Particles/Deposition/CurrentDeposition.H +++ b/Source/Particles/Deposition/CurrentDeposition.H @@ -249,12 +249,12 @@ void doDepositionShapeN(const GetParticlePosition& GetPosition, Complex xy = xy0; // Note that xy is equal to e^{i m theta} for (int imode=1 ; imode < n_rz_azimuthal_modes ; imode++) { // The factor 2 on the weighting comes from the normalization of the modes - amrex::Gpu::Atomic::Add( &jx_arr(lo.x+j_jx+ix, lo.y+l_jx+iz, 0, 2*imode-1), 2.*sx_jx[ix]*sz_jx[iz]*wqx*xy.real()); - amrex::Gpu::Atomic::Add( &jx_arr(lo.x+j_jx+ix, lo.y+l_jx+iz, 0, 2*imode ), 2.*sx_jx[ix]*sz_jx[iz]*wqx*xy.imag()); - amrex::Gpu::Atomic::Add( &jy_arr(lo.x+j_jy+ix, lo.y+l_jy+iz, 0, 2*imode-1), 2.*sx_jy[ix]*sz_jy[iz]*wqy*xy.real()); - amrex::Gpu::Atomic::Add( &jy_arr(lo.x+j_jy+ix, lo.y+l_jy+iz, 0, 2*imode ), 2.*sx_jy[ix]*sz_jy[iz]*wqy*xy.imag()); - amrex::Gpu::Atomic::Add( &jz_arr(lo.x+j_jz+ix, lo.y+l_jz+iz, 0, 2*imode-1), 2.*sx_jz[ix]*sz_jz[iz]*wqz*xy.real()); - amrex::Gpu::Atomic::Add( &jz_arr(lo.x+j_jz+ix, lo.y+l_jz+iz, 0, 2*imode ), 2.*sx_jz[ix]*sz_jz[iz]*wqz*xy.imag()); + amrex::Gpu::Atomic::Add( &jx_arr(lo.x+j_jx+ix, lo.y+l_jx+iz, 0, 2*imode-1), 2._rt*sx_jx[ix]*sz_jx[iz]*wqx*xy.real()); + amrex::Gpu::Atomic::Add( &jx_arr(lo.x+j_jx+ix, lo.y+l_jx+iz, 0, 2*imode ), 2._rt*sx_jx[ix]*sz_jx[iz]*wqx*xy.imag()); + amrex::Gpu::Atomic::Add( &jy_arr(lo.x+j_jy+ix, lo.y+l_jy+iz, 0, 2*imode-1), 2._rt*sx_jy[ix]*sz_jy[iz]*wqy*xy.real()); + amrex::Gpu::Atomic::Add( &jy_arr(lo.x+j_jy+ix, lo.y+l_jy+iz, 0, 2*imode ), 2._rt*sx_jy[ix]*sz_jy[iz]*wqy*xy.imag()); + amrex::Gpu::Atomic::Add( &jz_arr(lo.x+j_jz+ix, lo.y+l_jz+iz, 0, 2*imode-1), 2._rt*sx_jz[ix]*sz_jz[iz]*wqz*xy.real()); + amrex::Gpu::Atomic::Add( &jz_arr(lo.x+j_jz+ix, lo.y+l_jz+iz, 0, 2*imode ), 2._rt*sx_jz[ix]*sz_jz[iz]*wqz*xy.imag()); xy = xy*xy0; } #endif @@ -552,8 +552,9 @@ void doEsirkepovDepositionShapeN (const GetParticlePosition& GetPosition, for (int imode=1 ; imode < n_rz_azimuthal_modes ; imode++) { // The factor 2 comes from the normalization of the modes // The minus sign comes from the different convention with respect to Davidson et al. - const Complex djt_cmplx = -2._rt * I*(i_new-1 + i + xmin*dxi)*wq*invdtdx/(amrex::Real)imode* - (sx_new[i]*sz_new[k]*(xy_new - xy_mid) + sx_old[i]*sz_old[k]*(xy_mid - xy_old)); + const Complex djt_cmplx = -2._rt * I*(i_new-1 + i + xmin*dxi)*wq*invdtdx/(amrex::Real)imode + *(Complex(sx_new[i]*sz_new[k], 0.)*(xy_new - xy_mid) + + Complex(sx_old[i]*sz_old[k], 0.)*(xy_mid - xy_old)); amrex::Gpu::Atomic::Add( &Jy_arr(lo.x+i_new-1+i, lo.y+k_new-1+k, 0, 2*imode-1), djt_cmplx.real()); amrex::Gpu::Atomic::Add( &Jy_arr(lo.x+i_new-1+i, lo.y+k_new-1+k, 0, 2*imode), djt_cmplx.imag()); xy_new = xy_new*xy_new0; |