OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
Todo List
Member DistributionMoments::computeDebyeLength (ippl::ParticleAttrib< Vector_t< double, 3 > >view_type &Pview, size_t Np, size_t Nlocal, double density)
check with opal
Member DistributionMoments::isParticleExcluded (const OpalParticle &) const
this needs to go
Member FieldSolver< T, Dim >::initSolverWithParams (const ippl::ParameterList &sp)
implement properly
Member FieldSolverCmd::constructBCHandler () const
remove this restriction when more BC configurations are implemented
Member OpalParser::readStatement (TokenStream *) const
check this /stat->printWhere(*IpplInfo::Error, true);
Member OpalRingDefinition::update ()
setElement(ring); was used in the old OPAL now core dumps
Member Option::execute ()
check if we need to do this anymore
Member ParallelTracker::kickParticles (const BorisPusher &pusher)

unnecessary update? kick does not modify positions

Apparently, we want mass in eV and charge in elementary charges here to match OPAL's BorisPusher

might want to remove dt and R altogether from the kick!

Member ParallelTracker::pushParticles (const BorisPusher &pusher)

check +-

use false for now, since I am not sure how well integrated "dt_per_particle" is (needs to be consistent with particle emission later!).

Member ParallelTracker::updateRefToLabCSTrafo ()

this function is empty at the moment.

this line seems to fail sometimes! Results in Quaternion NaN

This function makes P a NaN for some reason sometimes

Member PartBins::resetPartInBin_cyc (size_t newPartNum[], int binID)
check if greater is the same than max in old IPPL
Member PartBunch< PLayout, T, Dim >::computeSelfFields ()

Add binned field solver here (needs iteration over bins, scatterPerBin calls and Etmp build up)! See https://gitlab.psi.ch/OPAL/opal-x/src/-/blame/binnedFieldSolver/src/PartBunch/PartBunch.cpp?ref_type=heads#L376

replace with scatterCIC? --> later with scatterPerBin!

Member PartBunch< PLayout, T, Dim >::destroyT ()

setTotalNum(newTotalNum);

ippl::Comm->reduce(newTotalNum, newTotalNum, OpAddAssign());

Member PartBunch< PLayout, T, Dim >::lbt_m
doesn't do anything???
Member PartBunch< PLayout, T, Dim >::PartBunch (double qi, double mi, size_t totalP, double lbt, std::string integration_method, std::shared_ptr< Distribution > &OPALdistribution, std::shared_ptr< FieldSolverCmd > &OPALFieldSolver)
so far, we only use true for all periodic and false for all open.
Member PartBunch< PLayout, T, Dim >::PartBunch (PLayout &pl, Vector_t< double, Dim > hr, Vector_t< double, Dim > rmin, Vector_t< double, Dim > rmax, std::array< bool, Dim > decomp, double Qtot)
setupBCs(a);
Member PartBunch< PLayout, T, Dim >::performBunchSanityChecks () const
always try to add more checks here! Best practice: throw explanatory exceptions and give output when passed.
Member PartBunch< PLayout, T, Dim >::switchOffUnitlessPositions (bool use_dt_per_particle=false)
remove later
Member PartBunch< PLayout, T, Dim >::switchToUnitlessPositions (bool use_dt_per_particle=false)
remove later
Member Quaternion::operator*= (const Quaternion &)
there is a scope issue w.r.t dot and ippl::Vector
Member StatWriter::fillHeader (const losses_t &losses=losses_t())
Options::computePercentiles needs to be brought back
Member Track::Track (BeamSequence *, const PartData &, const std::vector< double > &dt, const std::vector< unsigned long long > &maxtsteps, int stepsperturn, double zStart, const std::vector< double > &zStop, Steppers::TimeIntegrator timeintegrator, double t0, double dtScInit, double deltaTau)
can we do this anymore OpalData::getInstance()->setPartBunch(new PartBunch(&ref));
Member TrackCmd::execute ()

track block needs to be removed

here the tracker is constructed

Member TrackRun::execute ()

debugging output, can potentially be removed later

it would be much better to reinstate PartData or itsReference_m?

do we delete here itsTracker_m;