aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/PhysicalParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/PhysicalParticleContainer.cpp')
-rw-r--r--Source/Particles/PhysicalParticleContainer.cpp122
1 files changed, 61 insertions, 61 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp
index 318ad4664..99c6973f9 100644
--- a/Source/Particles/PhysicalParticleContainer.cpp
+++ b/Source/Particles/PhysicalParticleContainer.cpp
@@ -34,7 +34,7 @@ PhysicalParticleContainer::PhysicalParticleContainer (AmrCore* amr_core, int isp
pp.query("do_splitting", do_splitting);
pp.query("split_type", split_type);
pp.query("do_continuous_injection", do_continuous_injection);
- // Whether to plot back-transformed (lab-frame) diagnostics
+ // Whether to plot back-transformed (lab-frame) diagnostics
// for this species.
pp.query("do_boosted_frame_diags", do_boosted_frame_diags);
@@ -51,7 +51,7 @@ PhysicalParticleContainer::PhysicalParticleContainer (AmrCore* amr_core, int isp
do_user_plot_vars = pp.queryarr("plot_vars", plot_vars);
if (not do_user_plot_vars){
// By default, all particle variables are dumped to plotfiles,
- // including {x,y,z,ux,uy,uz}old variables when running in a
+ // including {x,y,z,ux,uy,uz}old variables when running in a
// boosted frame
if (WarpX::do_boosted_frame_diagnostic && do_boosted_frame_diags){
plot_flags.resize(PIdx::nattribs + 6, 1);
@@ -68,9 +68,9 @@ PhysicalParticleContainer::PhysicalParticleContainer (AmrCore* amr_core, int isp
// If not none, set plot_flags values to 1 for elements in plot_vars.
if (plot_vars[0] != "none"){
for (const auto& var : plot_vars){
- // Return error if var not in PIdx.
- AMREX_ALWAYS_ASSERT_WITH_MESSAGE(
- ParticleStringNames::to_index.count(var),
+ // Return error if var not in PIdx.
+ AMREX_ALWAYS_ASSERT_WITH_MESSAGE(
+ ParticleStringNames::to_index.count(var),
"plot_vars argument not in ParticleStringNames");
plot_flags[ParticleStringNames::to_index.at(var)] = 1;
}
@@ -142,7 +142,7 @@ void PhysicalParticleContainer::MapParticletoBoostedFrame(Real& x, Real& y, Real
void
PhysicalParticleContainer::AddGaussianBeam(Real x_m, Real y_m, Real z_m,
Real x_rms, Real y_rms, Real z_rms,
- Real q_tot, long npart,
+ Real q_tot, long npart,
int do_symmetrize) {
const Geometry& geom = m_gdb->Geom(0);
@@ -154,7 +154,7 @@ PhysicalParticleContainer::AddGaussianBeam(Real x_m, Real y_m, Real z_m,
std::normal_distribution<double> distz(z_m, z_rms);
if (ParallelDescriptor::IOProcessor()) {
- // If do_symmetrize, create 4x fewer particles, and
+ // If do_symmetrize, create 4x fewer particles, and
// Replicate each particle 4 times (x,y) (-x,y) (x,-y) (-x,-y)
if (do_symmetrize){
npart /= 4;
@@ -387,11 +387,11 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox)
const int tile_id = mfi.LocalTileIndex();
// Max number of new particles, if particles are created in the whole
- // overlap_box. All of them are created, and invalid ones are then
+ // overlap_box. All of them are created, and invalid ones are then
// discaded
int max_new_particles = overlap_box.numPts() * num_ppc;
- // If refine injection, build pointer dp_cellid that holds pointer to
+ // If refine injection, build pointer dp_cellid that holds pointer to
// array of refined cell IDs.
Vector<int> cellid_v;
if (refine_injection and lev == 0)
@@ -446,7 +446,7 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox)
if (do_field_ionization) {
pi = soa.GetIntData(particle_icomps["ionization_level"]).data() + old_size;
}
-
+
const GpuArray<Real,AMREX_SPACEDIM> overlap_corner
{AMREX_D_DECL(overlap_realbox.lo(0),
overlap_realbox.lo(1),
@@ -458,9 +458,9 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox)
bool loc_do_field_ionization = do_field_ionization;
int loc_ionization_initial_level = ionization_initial_level;
- // Loop over all new particles and inject them (creates too many
+ // Loop over all new particles and inject them (creates too many
// particles, in particular does not consider xmin, xmax etc.).
- // The invalid ones are given negative ID and are deleted during the
+ // The invalid ones are given negative ID and are deleted during the
// next redistribute.
amrex::For(max_new_particles, [=] AMREX_GPU_DEVICE (int ip) noexcept
{
@@ -627,7 +627,7 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox)
p.pos(1) = z;
#endif
}, shared_mem_bytes);
-
+
if (cost) {
wt = (amrex::second() - wt) / tile_box.d_numPts();
Array4<Real> const& costarr = cost->array(mfi);
@@ -865,7 +865,7 @@ PhysicalParticleContainer::FieldGather (int lev,
MultiFab* cost = WarpX::getCosts(lev);
#ifdef _OPENMP
-#pragma omp parallel
+#pragma omp parallel
#endif
{
#ifdef _OPENMP
@@ -915,7 +915,7 @@ PhysicalParticleContainer::FieldGather (int lev,
//
int e_is_nodal = Ex.is_nodal() and Ey.is_nodal() and Ez.is_nodal();
FieldGather(pti, Exp, Eyp, Ezp, Bxp, Byp, Bzp,
- &exfab, &eyfab, &ezfab, &bxfab, &byfab, &bzfab,
+ &exfab, &eyfab, &ezfab, &bxfab, &byfab, &bzfab,
Ex.nGrow(), e_is_nodal,
0, np, thread_num, lev, lev);
@@ -949,11 +949,11 @@ PhysicalParticleContainer::Evolve (int lev,
BL_PROFILE_VAR_NS("PPC::FieldGather", blp_fg);
BL_PROFILE_VAR_NS("PPC::ParticlePush", blp_ppc_pp);
BL_PROFILE_VAR_NS("PPC::Evolve::partition", blp_partition);
-
+
const std::array<Real,3>& dx = WarpX::CellSize(lev);
const std::array<Real,3>& cdx = WarpX::CellSize(std::max(lev-1,0));
- // Get instances of NCI Godfrey filters
+ // Get instances of NCI Godfrey filters
const auto& nci_godfrey_filter_exeybz = WarpX::GetInstance().nci_godfrey_filter_exeybz;
const auto& nci_godfrey_filter_bxbyez = WarpX::GetInstance().nci_godfrey_filter_bxbyez;
@@ -978,9 +978,9 @@ PhysicalParticleContainer::Evolve (int lev,
tmp_particle_data[lev][index][i].resize(np);
}
}
-
+
#ifdef _OPENMP
-#pragma omp parallel
+#pragma omp parallel
#endif
{
#ifdef _OPENMP
@@ -1183,7 +1183,7 @@ PhysicalParticleContainer::Evolve (int lev,
}
const long np_current = (cjx) ? nfine_current : np;
-
+
//
// copy data from particle container to temp arrays
//
@@ -1199,14 +1199,14 @@ PhysicalParticleContainer::Evolve (int lev,
} else {
ion_lev = nullptr;
}
- DepositCharge(pti, wp, ion_lev, rho, 0, 0,
+ DepositCharge(pti, wp, ion_lev, rho, 0, 0,
np_current, thread_num, lev, lev);
if (has_buffer){
DepositCharge(pti, wp, ion_lev, crho, 0, np_current,
np-np_current, thread_num, lev, lev-1);
}
}
-
+
if (! do_not_push)
{
const long np_gather = (cEx) ? nfine_gather : np;
@@ -1218,7 +1218,7 @@ PhysicalParticleContainer::Evolve (int lev,
//
BL_PROFILE_VAR_START(blp_fg);
FieldGather(pti, Exp, Eyp, Ezp, Bxp, Byp, Bzp,
- exfab, eyfab, ezfab, bxfab, byfab, bzfab,
+ exfab, eyfab, ezfab, bxfab, byfab, bzfab,
Ex.nGrow(), e_is_nodal,
0, np_gather, thread_num, lev, lev);
@@ -1234,7 +1234,7 @@ PhysicalParticleContainer::Evolve (int lev,
FArrayBox const* cbxfab = &(*cBx)[pti];
FArrayBox const* cbyfab = &(*cBy)[pti];
FArrayBox const* cbzfab = &(*cBz)[pti];
-
+
if (WarpX::use_fdtd_nci_corr)
{
#if (AMREX_SPACEDIM == 2)
@@ -1272,13 +1272,13 @@ PhysicalParticleContainer::Evolve (int lev,
eyeli = filtered_Ey.elixir();
nci_godfrey_filter_exeybz[lev-1]->ApplyStencil(filtered_Ey, (*cEy)[pti], filtered_Ey.box());
ceyfab = &filtered_Ey;
-
+
// Filter Bx
filtered_Bx.resize(amrex::convert(tbox,WarpX::Bx_nodal_flag));
bxeli = filtered_Bx.elixir();
nci_godfrey_filter_bxbyez[lev-1]->ApplyStencil(filtered_Bx, (*cBx)[pti], filtered_Bx.box());
cbxfab = &filtered_Bx;
-
+
// Filter Bz
filtered_Bz.resize(amrex::convert(tbox,WarpX::Bz_nodal_flag));
bzeli = filtered_Bz.elixir();
@@ -1286,14 +1286,14 @@ PhysicalParticleContainer::Evolve (int lev,
cbzfab = &filtered_Bz;
#endif
}
-
+
// Field gather for particles in gather buffers
e_is_nodal = cEx->is_nodal() and cEy->is_nodal() and cEz->is_nodal();
- FieldGather(pti, Exp, Eyp, Ezp, Bxp, Byp, Bzp,
+ FieldGather(pti, Exp, Eyp, Ezp, Bxp, Byp, Bzp,
cexfab, ceyfab, cezfab,
cbxfab, cbyfab, cbzfab,
- cEx->nGrow(), e_is_nodal,
- nfine_gather, np-nfine_gather,
+ cEx->nGrow(), e_is_nodal,
+ nfine_gather, np-nfine_gather,
thread_num, lev, lev-1);
}
@@ -1303,7 +1303,7 @@ PhysicalParticleContainer::Evolve (int lev,
// Particle Push
//
BL_PROFILE_VAR_START(blp_ppc_pp);
- PushPX(pti, m_xp[thread_num], m_yp[thread_num], m_zp[thread_num],
+ PushPX(pti, m_xp[thread_num], m_yp[thread_num], m_zp[thread_num],
m_giv[thread_num], dt);
BL_PROFILE_VAR_STOP(blp_ppc_pp);
@@ -1317,7 +1317,7 @@ PhysicalParticleContainer::Evolve (int lev,
} else {
ion_lev = nullptr;
}
-
+
// Deposit inside domains
DepositCurrent(pti, wp, uxp, uyp, uzp, ion_lev, &jx, &jy, &jz,
0, np_current, thread_num,
@@ -1337,7 +1337,7 @@ PhysicalParticleContainer::Evolve (int lev,
pti.SetPosition(m_xp[thread_num], m_yp[thread_num], m_zp[thread_num]);
BL_PROFILE_VAR_STOP(blp_copy);
}
-
+
if (rho) {
// Deposit charge after particle push, in component 1 of MultiFab rho.
int* AMREX_RESTRICT ion_lev;
@@ -1406,7 +1406,7 @@ PhysicalParticleContainer::SplitParticles(int lev)
for(int i=0; i<np; i++){
auto& p = particles[i];
if (p.id() == DoSplitParticleID){
- // If particle is tagged, split it and put the
+ // If particle is tagged, split it and put the
// split particles in local arrays psplit_x etc.
np_split_to_add += np_split;
#if (AMREX_SPACEDIM==2)
@@ -1503,11 +1503,11 @@ PhysicalParticleContainer::SplitParticles(int lev)
}
// Add local arrays psplit_x etc. to the temporary
// particle container pctmp_split. Split particles
- // are tagged with p.id()=NoSplitParticleID so that
+ // are tagged with p.id()=NoSplitParticleID so that
// they are not re-split when entering a higher level
// AddNParticles calls Redistribute, so that particles
// in pctmp_split are in the proper grids and tiles
- pctmp_split.AddNParticles(lev,
+ pctmp_split.AddNParticles(lev,
np_split_to_add,
psplit_x.dataPtr(),
psplit_y.dataPtr(),
@@ -1559,12 +1559,12 @@ PhysicalParticleContainer::PushPX(WarpXParIter& pti,
if (do_field_ionization){
ion_lev = pti.GetiAttribs(particle_icomps["ionization_level"]).dataPtr();
}
-
+
// Loop over the particles and update their momentum
const Real q = this->charge;
const Real m = this-> mass;
if (WarpX::particle_pusher_algo == ParticlePusherAlgo::Boris){
- amrex::ParallelFor(
+ amrex::ParallelFor(
pti.numParticles(),
[=] AMREX_GPU_DEVICE (long i) {
Real qp = q;
@@ -1613,7 +1613,7 @@ PhysicalParticleContainer::PushP (int lev, Real dt,
int thread_num = omp_get_thread_num();
#else
int thread_num = 0;
-#endif
+#endif
for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti)
{
const Box& box = pti.validbox();
@@ -1653,7 +1653,7 @@ PhysicalParticleContainer::PushP (int lev, Real dt,
int e_is_nodal = Ex.is_nodal() and Ey.is_nodal() and Ez.is_nodal();
FieldGather(pti, Exp, Eyp, Ezp, Bxp, Byp, Bzp,
- &exfab, &eyfab, &ezfab, &bxfab, &byfab, &bzfab,
+ &exfab, &eyfab, &ezfab, &bxfab, &byfab, &bzfab,
Ex.nGrow(), e_is_nodal,
0, np, thread_num, lev, lev);
@@ -1701,7 +1701,7 @@ void PhysicalParticleContainer::copy_attribs(WarpXParIter& pti,const Real* xp,
Real* AMREX_RESTRICT uxp = attribs[PIdx::ux].dataPtr();
Real* AMREX_RESTRICT uyp = attribs[PIdx::uy].dataPtr();
Real* AMREX_RESTRICT uzp = attribs[PIdx::uz].dataPtr();
-
+
const auto np = pti.numParticles();
const auto lev = pti.GetLevel();
const auto index = pti.GetPairIndex();
@@ -1717,7 +1717,7 @@ void PhysicalParticleContainer::copy_attribs(WarpXParIter& pti,const Real* xp,
xpold[i]=xp[i];
ypold[i]=yp[i];
zpold[i]=zp[i];
-
+
uxpold[i]=uxp[i];
uypold[i]=uyp[i];
uzpold[i]=uzp[i];
@@ -1757,7 +1757,7 @@ void PhysicalParticleContainer::GetParticleSlice(const int direction, const Real
slice_box.setHi(direction, z_max);
diagnostic_particles.resize(finestLevel()+1);
-
+
for (int lev = 0; lev < nlevs; ++lev) {
const Real* dx = Geom(lev).CellSize();
@@ -1804,7 +1804,7 @@ void PhysicalParticleContainer::GetParticleSlice(const int direction, const Real
auto& uzp_old = tmp_particle_data[lev][index][TmpIdx::uzold];
const long np = pti.numParticles();
-
+
Real uzfrm = -WarpX::gamma_boost*WarpX::beta_boost*PhysConst::c;
Real inv_c2 = 1.0/PhysConst::c/PhysConst::c;
@@ -1839,7 +1839,7 @@ void PhysicalParticleContainer::GetParticleSlice(const int direction, const Real
Real uzp = uz_old_p *weight_old + uz_new_p *weight_new;
diagnostic_particles[lev][index].GetRealData(DiagIdx::w).push_back(wp[i]);
-
+
diagnostic_particles[lev][index].GetRealData(DiagIdx::x).push_back(xp);
diagnostic_particles[lev][index].GetRealData(DiagIdx::y).push_back(yp);
diagnostic_particles[lev][index].GetRealData(DiagIdx::z).push_back(zp);
@@ -1864,7 +1864,7 @@ PhysicalParticleContainer::ContinuousInjection(const RealBox& injection_box)
AddPlasma(lev, injection_box);
}
-/* \brief Gather fields from FArrayBox exfab, eyfab, ezfab, bxfab, byfab,
+/* \brief Gather fields from FArrayBox exfab, eyfab, ezfab, bxfab, byfab,
* bzfab into arrays of fields on particles Exp, Eyp, Ezp, Bxp, Byp, Bzp.
* \param Exp-Bzp: fields on particles.
* \param exfab-bzfab: FAB of electric and magnetic fields for particles in pti
@@ -1874,7 +1874,7 @@ PhysicalParticleContainer::ContinuousInjection(const RealBox& injection_box)
* \param np_to_gather: number of particles onto which fields are gathered
* \param thread_num: if using OpenMP, thread number
* \param lev: level on which particles are located
- * \param gather_lev: level from which particles gather fields (lev-1) for
+ * \param gather_lev: level from which particles gather fields (lev-1) for
particles in buffers.
*/
void
@@ -1901,14 +1901,14 @@ PhysicalParticleContainer::FieldGather (WarpXParIter& pti,
AMREX_ALWAYS_ASSERT_WITH_MESSAGE((gather_lev==(lev-1)) ||
(gather_lev==(lev )),
"Gather buffers only work for lev-1");
-
+
// If no particles, do not do anything
if (np_to_gather == 0) return;
// Get cell size on gather_lev
const std::array<Real,3>& dx = WarpX::CellSize(std::max(gather_lev,0));
// Set staggering shift depending on e_is_nodal
const Real stagger_shift = e_is_nodal ? 0.0 : 0.5;
-
+
// Get box from which field is gathered.
// If not gathering from the finest level, the box is coarsened.
Box box;
@@ -1918,26 +1918,26 @@ PhysicalParticleContainer::FieldGather (WarpXParIter& pti,
const IntVect& ref_ratio = WarpX::RefRatio(gather_lev);
box = amrex::coarsen(pti.tilebox(),ref_ratio);
}
-
+
// Add guard cells to the box.
box.grow(ngE);
-
+
const Array4<const Real>& ex_arr = exfab->array();
const Array4<const Real>& ey_arr = eyfab->array();
const Array4<const Real>& ez_arr = ezfab->array();
const Array4<const Real>& bx_arr = bxfab->array();
const Array4<const Real>& by_arr = byfab->array();
const Array4<const Real>& bz_arr = bzfab->array();
-
+
const Real * const AMREX_RESTRICT xp = m_xp[thread_num].dataPtr() + offset;
const Real * const AMREX_RESTRICT zp = m_zp[thread_num].dataPtr() + offset;
const Real * const AMREX_RESTRICT yp = m_yp[thread_num].dataPtr() + offset;
-
+
// Lower corner of tile box physical domain
const std::array<Real, 3>& xyzmin = WarpX::LowerCorner(box, gather_lev);
-
+
const Dim3 lo = lbound(box);
-
+
// Depending on l_lower_in_v and WarpX::nox, call
// different versions of template function doGatherShapeN
if (WarpX::l_lower_order_in_v){
@@ -2020,10 +2020,10 @@ void PhysicalParticleContainer::InitIonizationModule ()
}
// Compute ADK prefactors (See Chen, JCP 236 (2013), equation (2))
// For now, we assume l=0 and m=0.
- // The approximate expressions are used,
+ // The approximate expressions are used,
// without Gamma function
Real wa = std::pow(PhysConst::alpha,3) * PhysConst::c / PhysConst::r_e;
- Real Ea = PhysConst::m_e * PhysConst::c*PhysConst::c /PhysConst::q_e *
+ Real Ea = PhysConst::m_e * PhysConst::c*PhysConst::c /PhysConst::q_e *
std::pow(PhysConst::alpha,4)/PhysConst::r_e;
Real UH = table_ionization_energies[0];
Real l_eff = std::sqrt(UH/ionization_energies[0]) - 1.;
@@ -2038,18 +2038,18 @@ void PhysicalParticleContainer::InitIonizationModule ()
Real C2 = std::pow(2,2*n_eff)/(n_eff*tgamma(n_eff+l_eff+1)*tgamma(n_eff-l_eff));
adk_power[i] = -(2*n_eff - 1);
Real Uion = ionization_energies[i];
- adk_prefactor[i] = dt * wa * C2 * ( Uion/(2*UH) )
+ adk_prefactor[i] = dt * wa * C2 * ( Uion/(2*UH) )
* std::pow(2*std::pow((Uion/UH),3./2)*Ea,2*n_eff - 1);
adk_exp_prefactor[i] = -2./3 * std::pow( Uion/UH,3./2) * Ea;
}
}
/* \brief create mask of ionized particles (1 if ionized, 0 otherwise)
- *
+ *
* \param mfi: tile or grid
* \param lev: MR level
* \param ionization_mask: Array with as many elements as particles in mfi.
- * This function initialized the array, and set each element to 1 or 0
+ * This function initialized the array, and set each element to 1 or 0
* depending on whether the particle is ionized or not.
*/
void
@@ -2095,7 +2095,7 @@ PhysicalParticleContainer::buildIonizationMask (const amrex::MFIter& mfi, const
// Loop over all particles in grid/tile. If ionized, set mask to 1
// and increment ionization level.
- ParallelFor(
+ ParallelFor(
np,
[=] AMREX_GPU_DEVICE (long i) {
// Get index of ionization_level