- Member AngledPeriodicBoundary::checkBoundaryAfterParticleMoved (BaseParticle *P)
- TW: can't we do the shift in the createPeriodicParticles function only? We are checking the distance three times!
- Member AngledPeriodicBoundary::set (Vec3D normalLeft, Vec3D normalRight, Vec3D origin)
- TW: Note, I cannot calculate angular shift; this needs to be revisited when we complete quaternion implementation
- Member AngledPeriodicBoundary::shiftPosition (BaseParticle *P)
add velocity, angular, springs shift
TW: recalculate the orientation here
TW: not sure how to calculate the angular position in common_axis direction; this needs to be revisited when we complete quaternion implementation
- Member AngledPeriodicBoundary::shiftPositions (Vec3D &P1, Vec3D &P2)
- TW: this still doesn't shift all data
- Member ArcWall::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
- Hacked please fix @Thomas
- Member AxisymmetricIntersectionOfWalls::getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final
- check, maybe orientation has to be normalized differently for axisymmetric walls (or axis needs to be normalized)
- Member BaseCG::averageBeyondDomain_
should the default be false?
currently, the above description is not implemented; it simply ignores particles outside the domain.
- Member BaseCG::setWidth (Mdouble width)=0
- should be standard deviation, but is currently cutoff.
- Member BaseClusterInsertionBoundary::checkBoundaryBeforeTimeStep (DPMBase *md) override
- rename to something like "insertUntilMaxFailed"?
- Member BaseHandler< T >::addGhostObject (T *O)
- mx: type the stuff here: keeps the id unique key
- Member BaseHandler< T >::BaseHandler (const BaseHandler< T > &BH)
- Should max objects be set to the number of objects after this constructor? Maybe in copyContentsFromOtherHandler?
- Member BaseHandler< T >::setDPMBase (DPMBase *DPMBase)
- MX: Bad practice to have a function parameter with the exact name of the class
- Member BaseHandler< T >::setId (T *object, unsigned int id)
- we should use this function only to set the id of particles, not BaseObject::setId; however, to block BaseObject::setId, I need to make this function a friend of BaseObject, and I don't know how to do that.
- Class BaseInteractable
- Check prescribed objects have infinite mass.
- Member BaseInteractable::getCurvature (const Vec3D &labFixedCoordinates) const
- should be wall-type dependent
- Member BaseInteractable::getInteractionWith (BaseParticle *P, unsigned timeStamp, InteractionHandler *interactionHandler)=0
TW make sure this function sets normal, distance, overlap, contact point
AT why is this a BaseParticle and not a BaseInteratable.
- Member BaseInteractable::rotate (const Vec3D &angularVelocityDt)
- TW the move and rotate functions should only pass the time step, as teh velocity can be accessed directly by the object; this would simplify functions like Screw::rotate
- Member BaseInteractable::write (std::ostream &os) const override
- take the zero out
- Member BaseInteraction::BaseInteraction (const BaseInteraction &p)
- why are not all of the member variables copied?
- Member BaseInteraction::BaseInteraction ()
- : empty baseInteraction, used in mpi code probably
- Member BaseInteraction::copySwitchPointer (const BaseInteractable *original, BaseInteractable *ghost) const
- Can this be simpler if we replace the particle with the ghost.
- Member BaseInteraction::gatherContactStatistics ()
Thomas please document this; as this is the area you are currently rewriting.
Thomas please document.
TW centre is used just for backward compatibility; replace centre by contact law; we also have to correct it in StatisticsVector::gatherContactStatistics. There also seems to be an issue with the normal being defined differently for walls
- Member BaseInteraction::getAbsoluteNormalForce () const
- Ant: Check this comment.
- Member BaseInteraction::getIC () const
- getDistance is not set in postprocessing
- Member BaseInteraction::getNormalRelativeVelocity () const
- Ant: Check this comment.
- Member BaseInteraction::rotateHistory (Matrix3D &rotationMatrix)
- some of these might be unneccesary
- Member BaseInteraction::setBasicMPIInteractionValues (int P, int I, unsigned timeStamp, Vec3D force, Vec3D torque, bool isWallInteraction, bool resetPointers)
- TW should P, I be of type unsigned?
- Member BaseInteraction::timeStamp_
- TW it would be safer to use the integer time step here, instead of the double
- Member BaseInteraction::write (std::ostream &os) const override
- should we output id's here? os << " id " << getId() << " particleIds " << P_->getId() << " " << I_->getId();
- Member BaseInteraction::writeToFStat (std::ostream &os, Mdouble time) const
MX The documentation mentions that the first variable is the time - this is incorrect, is is the timeStamp the interaction started
the flip in normal/tangential direction for walls should not be done; this is an old bug
- Member BaseObject::setId (unsigned long id)
- TW: here we should update BaseHandler::nextId_
- Member BaseParticle::getDisplacement2 (Mdouble xmin, Mdouble xmax, Mdouble ymin, Mdouble ymax, Mdouble zmin, Mdouble zmax, Mdouble t) const
see .cc file. \TWH
Rewrite, redefine (TW). Is only used in StatisticsVector.hcc, consider moving to that class.
- Member BaseParticle::getInteractionWith (BaseParticle *P, unsigned timeStamp, InteractionHandler *interactionHandler) override
- We should consider setting the contact point to
- Member BaseParticle::getPeriodicComplexity (int index)
- TW @Marnix, this is indeed a hack; you should call a setter every time you add a value to the periodic boundary handler (this function takes 0.5% cpu time in the speedtest)
- Member BaseParticle::integrateBeforeForceComputation (double time, double timeStep)
- If the position is described by the user, one should also call BaseInteractable::integrateBeforeForceComputation. To check if it works correctly, remove the p0.fixParticle() line from the DrivenParticleUnitTest
- Member BaseParticle::isSphericalParticle () const =0
- This flag is used badly, and used to determine whether particles are superquadric
- Member BaseParticle::oldRead (std::istream &is)
- incorporate contact information
- Member BaseParticle::setIndSpecies (unsigned int indSpecies) override
TW do we have to update the species stored in the interactions here?
MX: this index is used in the MPI transmission. This should be "undeprecated"
- Member BaseParticle::setSpecies (const ParticleSpecies *species)
TW should we chaeck here if we have the right kind of species for the right kind of particle?
TW: this function should also check if the particle is the correct particle for the species type
- Member BasePeriodicBoundary::createPeriodicParticles (ParticleHandler &pH) override
- {JMFT: Should this be virtual?}
- Member BaseSpecies::~BaseSpecies ()
- the BaseSpecies destructor should delete all particles and wall belonging to that species; however, that will break all codes replacing a species (e.g. Sudeshna and Hao) so we need a proper way to replace a species
- Member BaseVTKWriter< H >::makeVTKFileWithHeader () const
- vtw wall files only need to be written by one processor
- Member BaseWall::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
-
- Member BaseWall::getInteractionWithSuperQuad (SuperQuadricParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler)
- make it work with screw, coil and other weird walls
- Member BaseWall::setSpecies (const ParticleSpecies *species)
- TW: this function should also check if the particle is the correct particle for the species type.
- Member BasicIntersectionOfWalls::add (BaseWall &wall)
- TW maybe the Restricted wall should be templated with the wall type such that we don't need to use new and delete.
- Member BasicIntersectionOfWalls::getVTK (std::vector< Vec3D > &points, std::vector< std::vector< double >> &triangleStrips)
this function could be improved; might not plot full wall
change getVTK to writeVTK
- Member BasicUnionOfWalls::add (BaseWall &wall)
- TW maybe the Restricted wall should be templated with the wall type such that we don't need to use new and delete.
- Member BasicUnionOfWalls::getVTK (std::vector< Vec3D > &points, std::vector< std::vector< double >> &triangleStrips)
change getVTK to writeVTK
this function could be improved; might not plot full wall
- Member BondedInteraction::BondedInteraction ()
- MX: add to MPI
- Member BondedInteraction::BondedInteraction (const BondedInteraction &p)
- tw check if the parameters are valid when inserting the species into the handler
- Member Box::getNrPanelsOnLevel (int level)
- some ints here should be unsigned long
- Member CG< Coordinates, BaseFunction, Fields >::evaluateContact (const BaseInteraction &i)
- the check for contact statistics should be done here, not per particle.
- Member CG< Coordinates, BaseFunction, Fields >::evaluateParticle (const BaseParticle &p)
- evaluateParticle and evaluateContact can be optimized by using the grid properties for smart neighborhood search.
- Member CGCoordinates::O::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::R::getLength (const Vec3D &p)
-
- Member CGCoordinates::R::normalisePolynomialCoefficients (std::vector< Mdouble > &coefficients, Mdouble cutoff)
-
- Member CGCoordinates::RZ::getLength (const Vec3D &p)
-
- Member CGCoordinates::RZ::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::spaceEvenly (Vec3D min, Vec3D max, std::vector< std::size_t > nAll, std::vector< T > &points)
- limit to r>0
- Member CGCoordinates::X::getINormal (const BaseInteraction &c, const Vec3D &normal) const
- change from normal.X to sign(normal.X)
- Member CGCoordinates::X::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::XY::getLength (const Vec3D &p)
-
- Member CGCoordinates::XY::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::XYZ::getLength (const Vec3D &p)
-
- Member CGCoordinates::XZ::getLength (const Vec3D &p)
-
- Member CGCoordinates::XZ::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::Y::getLength (const Vec3D &p)
-
- Member CGCoordinates::Y::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::YZ::getLength (const Vec3D &p)
-
- Member CGCoordinates::YZ::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Member CGCoordinates::Z::getLength (const Vec3D &p)
-
- Member CGCoordinates::Z::getVolumeOfAveragedDimensions (const Vec3D &min, const Vec3D &max)
- Generalise to 2D
- Class CGFields::LiquidMigrationFields
- These are currently the only fields that are computed. However, this class is destined to be extended to contain additional information such as fabric, energy, local angular momentum. Also, a simpler version is planned, where only particle statistics are evaluated (density and momentum).
- Class CGFields::OrientationField
- These are currently the only fields that are computed. However, this class is destined to be extended to contain additional information such as fabric, energy, local angular momentum. Also, a simpler version is planned, where only particle statistics are evaluated (density and momentum).
- Class CGFields::StandardFields
- These are currently the only fields that are computed. However, this class is destined to be extended to contain additional information such as fabric, energy, local angular momentum. Also, a simpler version is planned, where only particle statistics are evaluated (density and momentum).
- Member CGFunctions::Gauss< Coordinates >::width_
- TW I thought of implementing width_, cutoff_ and prefactor_ as const Mdouble&, as theses parameters are not set per CGPoint, but per CG object (i.e. all points share the same values). However, this site seems to discourage this: http://stackoverflow.com/questions/12387239/reference-member-variables-as-class-members Anyone has an opinion on this? @dducks @thorntonar
- Member CGFunctions::Polynomial< Coordinates >::coefficients_
- Make variables internal.
- Member CGFunctions::PolynomialType
- add user-defined PolynomialType USER
- Class CGHandler
get function that by default can distinguish species, but also density
make tests
change output format
command line arguments
make more readable definitions
read (a) restart, (b) data/fstat files
add speed by using the mesh
introduce standardDev
add 2D support
do we need to store the BaseObject::index_ anymore?
Can Interaction inherit directly from BaseInteraction?
make Files::statFile_, ... public, like the handlers; remove get functions for File's and handlers.
take out dependence on DPMBase::statFile (i.e. the savecount)
TW note, to keep the code working on Windows:
- std::exit requires correct header cstdlib,
- don't use toString (thanks to Silvia for debugging)
- Member CGHandler::evaluateDataFiles (bool evaluateFStatFiles=true)
- use ignore if time is out of bounds
- Member ChargedBondedInteraction::ChargedBondedInteraction (BaseInteractable *P, BaseInteractable *I, unsigned timeStamp)
Clean up this file by using the logger instead of cout, //cout, cerr and assert, and by motivating why the commented out code needs to be here.
Complete the documentation of these methods
- Member ChargedBondedInteraction::ChargedBondedInteraction ()
- MX: add to MPI
- Member Chute::Chute (const Chute &other)
- Check if this should indeed be a shallow copy.
- Member Chute::createBottom ()
- Does the bottom we always has to be this particle? Maybe add a BaseParticle* argument, and add a default value with particle radius < 1e-12.
- Member Chute::setChuteAngle (Mdouble chuteAngle)
- would a check on the angle be beneficial to check if it is indeed in degrees?
- Member Chute::setRoughBottomType (std::string roughBottomTypeString)
- : logger::Fatal seems very strong here, maybe set a default instead?
- Member Chutebelt::actionsAfterTimeStep () override
- Work out why the volume inserted is not what I expext
- Member ChuteBottom::ChuteBottom (const ChuteBottom &other)
- IFCD: why are the name and file-stuff not set here, in contrast to constructor()?
- Member ChuteBottom::makeRoughBottom (Chute &chute)
Make sure that the post-conditions are:
- N fixed particles in particleHandler, with z-coordinate < 0
- 1 wall, below the rough bottom
- no boundaries
IFCD: Only a warning, or an error?
- Member ChuteBottom::setupInitialConditions () override
Particles are created without insertion boundary... this reeks of double work (see also Dinant's todo in this same function (ChuteBottom::setupInitialConditions()). (BvdH)
The createBottom() function also creates some walls and boundaries, but at slightly different locations. In this version they are removed and reset, but this is (in my opinion (Dinant)) not the correct way.
- Member ChuteInsertionBoundary::placeParticle (BaseParticle *p, RNG &random) override
- change to driver level (ask Thomas)
- Member ChuteWithHopper::addHopper ()
Why shift A by arbitrary number of 40, when isHopperCentred_ = True? NB: this is probably the same shift of 40 as happens in HopperInsertionBoundary::generateParticle(RNG) with the calculation of 'point A'. NB2: seems to be just generating a nice 'view' of the hopper (in the center of the viewer...?)
Waarom had ik deze ook al weer gecomment? IFCD: this was probably BvdH
- Member ChuteWithHopper::getChuteLength () const
- this hides the non-virtual function Chute::getChuteLength
- Member ChuteWithHopper::getTimeStepRatio () const
- Consider generalising this method by implementing it in the MercuryBase class.
- Member ChuteWithHopper::setHopper (Mdouble exitLength, Mdouble exitHeight, Mdouble angle, Mdouble length, Mdouble height)
- : check whether hopperCornerHeight >=0, if not change hopperangle, line 105, I do not yet understand what the criteria is...
- Member ChuteWithPeriodicInflow::computeInternalForces (BaseParticle *P1, BaseParticle *P2)
{The spring should be cut back such that fdott=mu*fdotn. This is simple for getSlidingDissipation()=0; we have to think about what happens in the sliding case with tang. dissipation; same for walls; Update Dec-2-2011: fixed}
TW: the following 13 lines concern only the sliding spring and could be moved into the if statement above
Define the center this way or are radii involved? Or maybe just use middle of overlap region? Thomas: Yes, we should correct that for polydispersed problems; however, then we also have to correct it in StatisticsVector::gatherContactStatistics.
{Is it the first particle the force acts on?}
- Member CircularPeriodicBoundary::checkBoundaryAfterParticleMoved (BaseParticle *P, ParticleHandler &pH)
- TW: Dinant, please confirm that i and oldI should be integer
- Member CircularPeriodicBoundary::checkBoundaryAfterParticlesMove (ParticleHandler &pH) override
- MX: When implementing this function, I realised there might not be a unit test for this boundary
- Member CircularPeriodicBoundary::createPeriodicParticle (BaseParticle *p, ParticleHandler &pH) override
- TW getLargestParticle()->getInteractionRadius() should be getLargestInteractionRadius()
- Class Coil
IFCD: Can someone look at the details of the documentation of class Coil? I can't make sense of them.
Coil is now fixed in Z-direction, centered around the Z-axis. Consider converting to more general parameters, with direction of choise and central axis of choice.
- Member Coil::getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const override
- Make this function readable and explain the steps in the details.
- Class CoilSelfTest
- update documentation to simpler structure
- Member CoilSelfTest::coil
- why is the coil public?
- Member Combtooth::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
- Quick hack JMF2 please clean up with teh new way
- Class ConstantMassFlowMaserBoundary
Which Maser is it used in Denissen2019? To cite the Maser: I. F. C. Denissen, T. Weinhart, A. Te Voortwis, S. Luding, J. M. N. T. Gray and A. R. Thornton, Bulbous head formation in bidisperse shallow granular flow over an inclined plane. Journal of Fluid Mechanics, 866:263–297, mar 2019.
Add functionality which allows for opening the maser boundary after a certain time, being a normal periodic boundary until then
Consider writing a destructor that closes the gap again
Consider splitting it in 2 DPMBase instances, one for the periodic domain and one for the outflow domain
Consider re-using the PeriodicBoundary by adding it as a data member
- Member ConstantMassFlowMaserBoundary::activateMaser ()
- JMFT: Would it be helpful to be able to set a custom gapSize ?
- Member ConstantMassFlowMaserBoundary::gapSize_
- JMFT: Do you mean 6 radii?
- Member ContactDetectionNormalSpheresTest::actionsAfterTimeStep () override
- merge hack please fix
- Member ContactDetectionRotatedSpheresTest::actionsAfterTimeStep () override
- merge hack please fix
- Member ContactDetectionTester::testEllipsoidsContact ()
- For each contact, check position, overlap and normal
- Member ContactDetectionTester::testSpheresContact ()
- For each contact, check position, overlap and normal
- Member ContactDetectionWithWallTester::testEllipsoidsContact ()
- For each contact, check position, overlap and normal
- Member ContactDetectionWithWallTester::testSpheresContact ()
- For each contact, check position, overlap and normal
- Member copyDataFromMPIParticleToParticle (MPIParticle *bP, BaseParticle *p, ParticleHandler *particleHandler)
- MX: Maybe renamet his function to setParticleSpecies() or something
- Member CubeDeletionBoundary::getDistance (const Vec3D &position) const override
- JMFT: Calculate the distance properly, not just 1 or -1.
- Member CubeInsertionBoundary::set (BaseParticle *particleToCopy, unsigned int maxFailed, Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax, Mdouble rMin, Mdouble rMax)
- Check with Timo and Thomas about this.
- Member CubeInsertionBoundary::set (BaseParticle &particleToCopy, unsigned int maxFailed, Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax, Mdouble rMin, Mdouble rMax)
- Check with Timo and Thomas about this.
- Member CubicCell::actionsAfterTimeStep () override
- IFCD: I uncommented the next lines because they prevent a lot of warnings. Please check if uncommenting is correct.
- Member CubicCell::setupInitialConditions () override
- Periodic walls are still not checked in checkParticleForInteraction!
- Member DeletionBoundary::checkBoundaryAfterParticleMoved (BaseParticle *p, ParticleHandler &pH)
JMFT: The mass and volume counters need to be updated in the MPI code.
: MX: update the above comment
- Member DeletionBoundary::checkBoundaryAfterParticlesMove (ParticleHandler &pH) override
- MX: I changed the syntax to a more mpi compatible (and neater) code. Need to update the comments of the checkBoundaryAfterParticleMoved function
- Page Directory Structure
- TW Anthony, please add information about your new output file here.
- Member Domain::boundaryList_
- TW@Marnix should this be unsigned int
- Member Domain::findParticleInList (unsigned int identification, std::vector< BaseParticle * > particleList)
- MX: This is probably not the fastest method
- Member Domain::localIndexToGlobalIndexTable_
- TW@Marnix should this be unsigned int
- Member Domain::localIndexToProcessorList_
- TW@Marnix should this be unsigned int
- Member Domain::read (std::istream &is) override
- MX: why would this function be called?
- Member Domain::write (std::ostream &os) const override
- MX: why would this function be called?
- Member DomainHandler::getName () const final
- Still has to be implemented
- Member DomainHandler::getParticleDomain (int globalIndex)
- TW@Marnix should this be unsigned int?
- Member DomainHandler::getParticleDomainGlobalIndex (BaseParticle *particle)
MX: This function is still under development the goal of this function is to obtain the globalIndex of the domain the particle is located in
MX: function under construction
TW@Marnix should this be unsigned int?
- Member DomainHandler::getParticleProcessor (int globalIndex)
- TW@Marnix should this be unsigned int?
- Member DomainHandler::readAndAddObject (std::istream &is) final
- Still has to be implemented
- Member DomainHandler::readOldObject (std::istream &is)
- Still has to be implemented
- Member DPMBase::checkParticleForInteractionLocal (const BaseParticle &P)
- tw check against periodic copies (see ShearCell3DInitialConditions.cpp)
- Member DPMBase::checkParticleForInteractionLocalPeriodic (const BaseParticle &P)
- TW the implementation of this function is not very efficient and should be improved
- Member DPMBase::computeForcesDueToWalls (BaseParticle *, BaseWall *)
- TW: I think this torque has the wrong sign
- Member DPMBase::computeOneTimeStep ()
IFCD @AT, TW: please check what should be in here, and whether it should be virtual or not.
MX: this is not true anymore. all boundaries are handled here. particles have received a position update, so here the deletion boundary deletes particles \TODO add particles need a periodic check
- Member DPMBase::deleteGhostParticles (std::set< BaseParticle * > &particlesToBeDeleted)
- : doc
- Member DPMBase::getParticlesWriteVTK () const
- Move this (and the set) to ParticleHandler.
- Member DPMBase::getRotationalEnergy () const
- TW why is the ene_rot commented out
- Member DPMBase::getWallsWriteVTK () const
- Move this (and the set) to WallHandler.
- Member DPMBase::initialiseSolve ()
Is it necessary to reset initial conditions here and in setTimeStepByParticle (i.e. should it be in constructor) Thomas: I agree, setTimeStepByParticle should be rewritten to work without calling setupInitialConditions
Is it necessary to reset initial conditions here and in setTimeStepByParticle (i.e. should it be in constructor)? Thomas: I agree, setTimeStepByParticle should be rewritten to work without calling setupInitialConditions
MX: Why does the mass get computed here? if a particle is assigned a radius, it automatically also computes its mass. IFCD: commenting out this line does not make any test fail on my system.
- Member DPMBase::performGhostParticleUpdate ()
- MX: Under construction
- Member DPMBase::read (std::istream &is, ReadOptions opt=ReadOptions::ReadAll)
- warning: hides non-virtual function from the class 'Files'.
- Member DPMBase::setFixedParticles (unsigned int n)
- Question: can this function be called during the run of the program? i.e. can particles be made to suddenly "become fixed"?
- Member DPMBase::setParticlesWriteVTK (bool writeParticlesVTK)
- Move this (and the get) to ParticleHandler.
- Member DPMBase::setRotation (bool rotation)
-
- Member DPMBase::setupInitialConditions ()
- I (Anthony) wants to change this to be an external function. This has a lot of advantages especially when using copy-constructors. This is a major change and will break other codes, so therefore has to be done carefully.
- Member DPMBase::setWallsWriteVTK (FileType writeWallsVTK)
- Move this (and the get) to WallHandler.
- Member DPMBase::setWallsWriteVTK (bool)
- Move this (and the get) to WallHandler.
- Member DPMBase::setWritePythonFileForVTKVisualisation (bool forceWritePythonFileForVTKVisualisation)
- When restarting the indexMax should be reset
- Member DPMBase::solve ()
- IFCD @AT, TW: Consider moving some things before the time loop to actionsBeforeTimeLoop
- Member DPMBase::splitDomain (DomainSplit domainSplit)
- the function needs improvement: for non-cubic domains (with different domain length in x,y,z), having a equal number of grid cell is not the best choice.
- Member DPMBase::write (std::ostream &os, bool writeAllParticles=true) const
- what to do with statisticsFromRestartData?
- Member DPMBase::writeEneHeader (std::ostream &os) const
Add number of particles to this file (change from Jonny to be added later)
{Why is there a +6 here? TW: to get the numbers and title aligned}
JMFT: Get rid of aligned columns. They make things too wide. (changed back) */
- Member DPMBase::writeXBallsScript () const
- Implement or make pure virtual
- Member File::write (std::ostream &os) const
- TW: openMode_ is not saved, maybe it should not even be stored but set every time you open a file
- Member FileReader::read ()
- taking this line of of the for loop gives a huge speed improvement; why?
- Member free_cooling::setupInitialConditions () override
- TW check that all user codes are compiling AND running; but many of them need input files.
- Member FrictionInteraction::computeFrictionForce ()
- TW: Why do we not use the corrected diameter here, as in the rolling case? And check if Stefan uses radius or diameter
- Class FrictionSpecies
- TW: should this class be renamed SlidingRollingTorsionFrictionSpecies?
- Member HeaterBoundary::checkBoundaryAfterParticleMoved (BaseParticle *p, ParticleHandler &pH)
- JMFT: Make a 2D version of this
- Member HeaterBoundary::getDistance (const Vec3D &position) const
- JMFT: Calculate the distance properly, not just 1 or -1.
- Member helpers::addToFile (std::string filename, std::string filecontent)
- gmb Make this MPI compatible.
- Member helpers::computeDisptFromCollisionTimeAndRestitutionCoefficientAndTangentialRestitutionCoefficientAndEffectiveMass (Mdouble tc, Mdouble r, Mdouble beta, Mdouble mass)
- what should be used instead of this function?
- Member helpers::createDirectory (std::string)
gmb log error using strerror(errno)
gmb Make this MPI compatible.
- Member helpers::getMaximumVelocity (Mdouble k, Mdouble disp, Mdouble radius, Mdouble mass)
- what should be used instead of this function?
- Member helpers::getPath ()
- gmb log error using strerror(errno)
- Member helpers::more (std::string filename, unsigned nLines=constants::unsignedMax)
- gmb Make this MPI compatible.
- Member helpers::openFile (std::fstream &file, std::string filename, std::fstream::openmode mode)
- gmb Make this MPI compatible. Is it used?
- Member helpers::readArrayFromFile (std::string filename, int &n, int &m)
- gmb Make this MPI compatible.
- Member helpers::readOptionalVariable (std::istream &is, const std::string &name, T &variable)
- readOptionalVariable should check the full variable name, not just the next value. However, I don't know how to put the location in the ifstream back.
- Member helpers::writeCommandLineToFile (const std::string filename, const int argc, char *const argv[])
- gmb Make this MPI compatible.
- Member helpers::writeToFile (std::string filename, std::string filecontent)
- gmb Make this MPI compatible.
- Member HertzianSinterInteraction::getElasticEnergy () const override
- TW this is not correct; we should count the return energy
- Member HertzianSinterInteraction::HertzianSinterInteraction ()
- : MX add interaction to mpi
- Member HertzianViscoelasticInteraction::computeNormalForce ()
- check for superquadrics
- Member HertzianViscoelasticInteraction::getElasticEnergyAtEquilibrium (Mdouble adhesiveForce) const override
- TW consider renaming to getElasticAdhesiveEnergy or getElasticAdhesiveEnergyRelativeToEquilibrium
- Member HGrid::computeHashBucketIndex (int x, int y, int z, unsigned int l) const
- consider moving to HGridCell, which might give better performance.
- Member HGrid::info () const
- use logger everywhere
- Class HGridOptimiser
- Find out what this class does and document it.
- Class HopperInsertionBoundary
- (BvdH) Better graphical diagrams are needed for further clarification, as well as some property renaming.
- Member HopperInsertionBoundary::placeParticle (BaseParticle *p, RNG &random) override
Thomas, could you check if this bug is still valid? (BvdH)
(BvdH) make a nice (InkScape) diagram with all useful properties in one image, and some angles explaining the definitions of AB and AC directions, the P->setPosition operation and the calculation of the Z-direction of the Vec3D A position.
- Member HorizontalBaseScrew::getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final
- check, maybe orientation has to be normalised differently for axisymmetric walls (or axis needs to be normalised)
- Class HorizontalScrew
- IFCD: Can these details about class HorizontalScrew be made more clear? I don't understand them.
- Member HorizontalScrew::getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final
- Make this function readable and explain the steps in the details.
- Member InfiniteWallWithHole::move_time (Mdouble dt)
- TW: generalize the move function for all walls Allows the wall to be moved with time
- Member InfiniteWallWithHole::set (Vec3D normal, Mdouble position, Mdouble holeRadius)
- Since InfiniteWall:set is deprecated, should we deprecate this format as well (and similar formats in other walls)?
- Member inflowFromPeriodic::Check_and_Duplicate_Periodic_Particle (int i, int nWallPeriodic)
- {distance should be Particles[i].Radius+max(Particles[j].Radius)}
- Member InsertionBoundary::checkBoundaryBeforeTimeStep (DPMBase *md) override
create a definition for zero-size particles. Right now the zero-size particle is only used as a stop criterion for the manual PSD insertion
rename to something like "insertUntilMaxFailed"?
- Member InsertionBoundary::InsertionBoundary ()
- think about making both possible; a discrete distribution and a continuous which is more accurate
- Member InsertionBoundary::isActivated_
- JMFT: This is currently not saved to .restart files.
- Member InsertionBoundary::read (std::istream &is) override
- make theses reads non-optional
- Member InsertionBoundary::setPSD (const PSD psd)
- TP: Consider std::move instead of a set function. This would result in a speedup + no one has to set the PSD for insertionBoundaries again as it is set when a PSD is inserted.
- Member InsertionBoundary::setPSD (std::vector< PSD > psd, std::vector< Mdouble > probability)
- TP: Consider std::move instead of a set function. This would result in a speedup + no one has to set the PSD for insertionBoundaries again as it is set when a PSD is inserted.
- Class Interaction< NormalForceInteraction, FrictionForceInteraction, AdhesiveForceInteraction >
- MX: I do not think the above is correct. integrateBeforeForceComputation() updates the positions
- Member InteractionHandler::eraseOldInteractions (unsigned)
- TW: this function has to be sped up with sth like this: erase(remove_if(begin(), end(), bind2nd(checkSpringTime(), lastTimeStep)), end());
- Member InteractionHandler::getInteraction (BaseInteractable *P, BaseInteractable *I, unsigned timeStamp)
- TW this can bet set earlier
- Member InteractionHandler::InteractionHandler (const InteractionHandler &IH UNUSED)
- Please check if interactions indeed don't need to be copied.
- Member InteractionHandler::readAndAddObject (std::istream &is) override
TW: Change identifier in restart file from id to index; is there any reason the id should be kept after restarting, once this is done? (Note, the id is set to the old one in the particle handler because interactions store id, not indices; also note id's are slow
Ant This is a tmp fix as in some cases the line before has not be finished reading. This should be looked at again at a later date.
- Member InteractionHandler::removeObjectKeepingPeriodics (unsigned int id)
this function will create an error if the timeStamp is in the future! This should not happen (ever), but who knows.
TW The code assumes in a few places that P->getIndex()<I->getIndex(), but the copySwitchPointer function does not obey that rule; we have to check if this is valid behaviour.
- Member IntersectionOfWalls::getDistanceAndNormal (const BaseParticle &p, Mdouble &distance, Vec3D &normal_return) const override
- do this for all walls
- Member IntersectionOfWalls::read (std::istream &is) override
- currently the IntersectionOfWall is special for moving and rotating; should we remove that specialty?
- Member IrreversibleAdhesiveInteraction::IrreversibleAdhesiveInteraction (const IrreversibleAdhesiveInteraction &p)
- tw check if the parameters are valid when inserting the species into the handler
- Class LeesEdwardsBoundary
Add link to paper by Lees-Edwards in the documentation of this class.
Is implemented for 2D only now. Needs extension to 3D.
- Member LevelSetWall::getDistanceAndNormal (const BaseParticle &p, Mdouble &distance, Vec3D &normal_return) const override
- do this for all walls
- Member LevelSetWall::read (std::istream &is) override
-
- Member LinearPlasticViscoelasticInteraction::getElasticEnergy () const override
- TW this is not correct; we should count the return energy
- Member LinearPlasticViscoelasticNormalSpecies::getCollisionTime (Mdouble mass) const
- should this use unloading stiffness?
- Member LinearPlasticViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble mass)
- TW: check that the masses are described correctly here (m_eff or m_p?))
- Member LinearViscoelasticInteraction::getSpecies () const
- you can remove this by adding the species to the Interaction instead of the base interaction
- Member LiquidBridgeWilletInteraction::getElasticEnergy () const override
- TW
- Member LiquidMigrationLSInteraction::form ()
- : maybe we need to check ghost particles?
- Member LiquidMigrationLSInteraction::getElasticEnergy () const override
- TW
- Member LiquidMigrationSelfTest::printTime () const override
- how to set the precision in the logger? Below the former code.
- Member LiquidMigrationWilletInteraction::form ()
- : maybe we need to check ghost particles?
- Member LiquidMigrationWilletInteraction::getElasticEnergy () const override
- TW
- Member logWriteAndDie (const std::string &module, std::string message)
- Why is this here, and not in the logger?
- Member main (int argc UNUSED, char *argv[] UNUSED)
TW we need a replacement for BaseParticle::calculateMaximumVelocity
TW:should be lightest particle, but computeMass has to be automated first
- Member main (int argc, char *argv[])
- change this to the mean particle size (not small particle size)
- Member main (int argc UNUSED, char *argv[] UNUSED)
TW the output of the old and new stat doesn't compare perfectly, check.
TW:should be lightest particle, but computeMass has to be automated first
- Member main (int argc, char *argv[])
- we should force people to set a name
- Member main (int argc UNUSED, char *argv[] UNUSED)
TW automatically measure simulation time
should inertia and mass be outputted by restart, since these are computed variables?
TW The inaccuracy of the calculation is much worse for the irreversible force model, as there is a jump in force at zero overlap; we should correct for that in the time stepping algorithm (i.e. find out what the mean force was over the duration of the time step, not using a left Riemann sum.
TW:should be lightest particle, but computeMass has to be automated first
- Member main ()
TW should there be a discrepancy between distance and distance2?
why do we need to set the position?
- Member main (int argc, char **argv)
- figure out a way to test a LU factorisation
- Member main (int argc, char *argv[])
- make selftest smaller (currently 8 sec)); also CoilSelfTest (8s), LeesEdwardsSelfTest (13s), MaserSelfTest (14s)
- Member MarbleRun::bigSeesawInvInertia
- apply the parallel axis theorem to compute the inertia around the center of roation instead of the center of mass: https://en.wikipedia.org/wiki/Parallel_axis_theorem
- Member MarbleRun::smallSeesawInvInertia
- apply the parallel axis theorem to compute the inertia around the center of roation instead of the center of mass: https://en.wikipedia.org/wiki/Parallel_axis_theorem
- Member mathsFunc::log (Mdouble Power)
- check if this function works
- Member mathsFunc::tan (T x)
- should be properly computed
- Member Matrix3D::operator* (const Matrix3D &a) const
- check
- Member MatrixSymmetric3D::getCylindricalTensorField (const Vec3D &p) const
- implement MatrixSymmetric3D::getCylindricalTensorField
- Member Mercury2D::hGridFindContactsWithinTargetCell (int x, int y, unsigned int l)
- replace this generic check of the each bucket to checking only the object to avoid the critical
- Member Mercury2D::hGridFindParticlesWithTargetCell (int x, int y, unsigned int l, BaseParticle *obj, std::vector< BaseParticle * > &list)
: MX: generalise this
: MX: generalise this
- Member Mercury3D::hGridFindContactsWithinTargetCell (int x, int y, int z, unsigned int l)
- replace this generic check of the each bucket to checking only the object to avoid the critical
- Class MercuryBase
- Discuss if we want to remove Mercury2D and Mercury3D and template MercuryBase as the interface for the user.
- Member MercuryBase::checkParticleForInteraction (const BaseParticle &P) final
IFCD: I think it might be better if it returns true if there is an interaction.
MX: use all reduce with the appropriate operator
- Member MercuryBase::checkParticleForInteractionLocal (const BaseParticle &P) final
- IFCD: I think it might be better if it returns true if there is an interaction.
- Member MercuryBase::getHGridTargetNumberOfBuckets () const
- TW SpeedCheckThomas revealed that adding a factor 10 here improved performance by 20% for monodisperse particles, 45% for highly polydisperse (this seems true for particle numbers 1e3 - 1e6); a larger factor seems to little extra effect; the memory cost is small compared to the number of particles, so I added the factor permanently. @Irana please check this is ok to do.
- Member MercuryBase::hGridRebuild ()
-
- Member MercuryBase::setHGridCellOverSizeRatio (Mdouble cellOverSizeRatio)
- IFCD: I changed the if unequal to if equal, can someone check this is correct?
- Member MercuryTimeStep< NDIMS >::dataFile_
- Chris, please check if this parameter is needed; it causes a warning with [-Wunused-private-field]
- Member MeshTriangle::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
-
- Member MindlinInteraction::getAbsoluteNormalForcePrevious () const
- Ant: Check this comment.
- Member MindlinInteraction::getTangentialOverlap () const override
- TWnow this should be positive
- Member MindlinRollingTorsionInteraction::computeFrictionForce ()
- TW: Why do we not use the corrected diameter here, as in the rolling case? And check if Stefan uses radius or diameter
- Class MindlinRollingTorsionSpecies
- TW: should this class be renamed SlidingRollingTorsionMindlinRollingTorsionSpecies?
- Member MPIContainer::receive (T *t, int count, int from, int tag)
- MX: type documentation. this is used to receive vectors of scalars accross
- Member MPIContainer::send (T *t, int count, int to, int tag)
- MX: type documentation. This one is used to send vectors of scalars across (hence the *t)
- Member my_problem::setupInitialConditions () override
- check whether setMass is needed here
- Member NEVER
- IFCD: can we make this an int instead of unsigned int, as -1 as an unsigned is not good style?
- Member NurbsSurface::getDistance (Vec3D P, double radius, double &distance, Vec3D &normal) const
- here we should use the convex hull argument to rule out certain contactse quickly
- Member ParhamiMcMeekingSinterInteraction::getElasticEnergy () const override
- TW
- Member ParhamiMcMeekingSinterInteraction::ParhamiMcMeekingSinterInteraction ()
- : MX add to MPI
- Member ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies ()
- : implement initial/read/write values
- Class ParticleCreation
is the above still true? it seems that there are 20^3 particles are constructed ///
this code still feels a bit messy and unclear
- Member ParticleCreation::ParticleCreation (Mdouble width, Mdouble length, Mdouble height, Mdouble sizeDistribution)
- is this intended? currently , this comment is misleading
- Member ParticleHandler::addedFixedParticle ()
- MX: For Jonny, is this still required, keeping the parallel code in mind?
- Member ParticleHandler::getNumberOfRealObjectsLocal () const
- MX: in future also add the periodic mpi particles
- Member ParticleHandler::largestParticle_
- TW: note that checkExtrema gets called if a particle gets created and its Species and Radius gets set, even if it's not yet included in the particleHandler! This is necessary to check a not included particle for overlaps before inserting it into the handler. Not sure if this is a sensible structure; to be discussed. Note: these statistic now include mpi and ghost particles as well
- Member ParticleHandler::readAndCreateObject (std::istream &is)
- check what is special about this case
- Member ParticleHandler::removedFixedParticle ()
- MX: For Jonny, is this still required, keeping the parallel code in mind?
- Member ParticleSpecies::getMassFromRadius (Mdouble radius) const
- TW: should getMassFromRadius be removed? IFCD: it is used in at least one driver (AxisymmetricHopper).
- Member ParticleSpecies::getVolumeFromRadius (Mdouble radius) const
- this should depend on the particle shape; thus, it should be a static function of BaseParticle
- Member ParticleSpecies::setDensity (Mdouble density)
- recalculate masses when setting dim_particle or rho
- Member PeriodicBoundary::shiftPositions (Vec3D &postition1, Vec3D &postion2) const
- (AT) see toDo of PeriodicBoundary::shiftPosition().
- Member PeriodicBoundaryHandler::flushParticles (std::set< BaseParticle * > &particlesToBeFlushed)
- This function uses a brute force method to flush the particles, this can be done in a smarter way if profiling shows that this is a bottleneck.
- Member PeriodicBoundaryHandler::~PeriodicBoundaryHandler () override
- MX: Because the periodicBoundaryHandler contains a pointer to a boundary, which is also in the boundary handler currently we just need to empty the PeriodicBoundaryHandler without destroying the object Otherwise we create a segfault in the BoundaryHandler
- Member PointIsAboveCurve (double h, double a, int study_num)
- TWnow: add Hertz again
- Class PossibleContact
- Change the names so that they follow the code guidelines.
- Class PossibleContactList
Look at the memory management of PossibleContactList. Maybe a destructor that takes out all remaining PossibleContact? Or is there a Handler that calls remove_ParticlePosibleContacts for all particles?
Restart-tests are not working with CONTACT_LIST_HGRID turned on, so either finish the ContactList-related code, or get rid of it. If we keep it, clean up the code, in particular the naming-convention.
- Member PSD::convertCumulativeToCumulativeNumberDistribution (TYPE CDFType)
- TP: NOT WORKING! If anyone knows how to do it feel free to add
- Class PSDContinuous
- Make an object storing a vector of these values.
- Member PSDContinuous::convertSubtractiveNumberToVolume (std::vector< PSDContinuous > &psd)
- should this be:
- Member PSDContinuous::convertSubtractiveVolumeToNumber (std::vector< PSDContinuous > &psd)
- should this be:
- Class Quaternion
- Need to generalize this to n-dimensional quaternions of any type
- Member Quaternion::angularVelocityBodyFixedFrameToAngularDisplacement (Vec3D v) const
rename to angularVelocityBodyFixedFrameToAngularDisplacement?
should the arguments be passed by reference?
- Member Quaternion::applyCInverse (Quaternion q) const
- rename to angularDisplacementToAngularVelocity?
- Member Quaternion::Quaternion (Vec3D normal)
- should be explicit as teh conversion is not unique
- Member Quaternion::rotateInverseInertiaTensor (const MatrixSymmetric3D &invI) const
- move link to where it belongs http://stackoverflow.com/questions/1171849/finding-quaternion-representing-the-rotation-from-one-vector-to-another This is the same as rotateTensor, but than for MatrixSymmetric3D instead of SmallMatrix<3,3>.
- Member rapidjson::Writer< Stream, Encoding, Allocator >::WriteDouble (double d)
- Optimization with custom double-to-string converter.
- Member RestrictedWall::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
{setting the index of the wall is necessary to get the right index reported in fstat; however, the better way would be to make setIndex virtual.}
Shouldn't this function be defined in BaseWall?
- Member RestrictedWall::set (BaseWall *wall, InfiniteWall *restriction)
- TW maybe the Restricted wall should be templated with the wall type such that we don't need to use new and delete.
- Member ReversibleAdhesiveInteraction::getElasticEnergy () const override
- TW
- Class RNG
- (AT) implement new C++-standard RNG instead of this one (Kudos on the hard work done here though ;). NB: maybe something for Mercury 2?
- Member RNG::RNG ()
{Thomas: This code does sth. when min>max; I would prefer to throw an error.}
- Member RoughBottomType
consider converting to an enum class.
consider changing to just 'bottomType' and add 'FLAT' (or something similar) as an option so that from ALL bottom types can be chosen with just ONE enumerator IFCD: I did add FLAT, but since there are multiple users using RoughBottomType, it might be a bad idea to change the interface with BottomType. Please also check if I have forgotten places to add "FLAT" to make this a complete interface.
- Member ScaleCoupling< M, O >::getCoupledElements ()
- check if set
- Member SCoupling< M, O >::createTriangleWall (std::array< Vec3D, 3 > vertex)
- Why we need to set GroupID. I don't remember anymore.
- Class SCoupling< M, O >::SCoupledElement
- should we move this to SurfaceCoupledElement.h?
- Member SCoupling< M, O >::updateTriangleWall (TriangleWall *&wall, std::array< Vec3D, 3 > vertex)
why is it using setPrescribedPosition
we need to set velocity
- Class Screw
- IFCD: Can these details about class Screw be made more clear? I don't understand them.
- Member Screw::getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final
- do this for all walls
- Member Screw::getDistanceAndNormalLabCoordinates (Vec3D position, Mdouble wallInteractionRadius, Mdouble &distance, Vec3D &normal_return) const
- Make this function readable and explain the steps in the details.
- Member Screw::rotate (const Vec3D &angularVelocityDt) override
- the move and rotate functions should only pass the time step, as teh velocity can be accessed directly by the object
- Class ShearBoxBoundary
Add link to paper by Lees-Edwards in the documentation of this class.
Is implemented for 2D only now. Needs extension to 3D.
- Member SilbertPeriodic::set_study (int study_num)
Thomas: Hertzian does not appear in the restart file
TW: can we switch species from SlidingFriction to Friction only in the case rolling friction is needed?
turn on rolling friction only at the wall
- Class SimpleDrumSuperquadrics
Document
Definitions in source-file
VTK-write function
Test
- Member SineWall::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
- Hacked please fix
- Member SinterInteraction::computeNormalForce ()
- adhesive force only, or add normalForce?
- Member SinterInteraction::getElasticEnergy () const override
- TW this is not correct; we should count the return energy
- Member SinterInteraction::SinterInteraction ()
- : MX add to MPI
- Member SinterLinInteraction::getElasticEnergy () const override
- TW this is not correct; we should count the return energy
- Member SinterLinInteraction::SinterLinInteraction ()
- : MX add to MPI
- Member SinterLinNormalSpecies::setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble mass)
- TW: check that the masses are described correctly here (m_eff or m_p?))
- Member SinterNormalSpecies::setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble mass)
- TW: check that the masses are described correctly here (m_eff or m_p?))
- Member SinterNormalSpecies::setSinterForceAndTime (Mdouble adhesionForce, Mdouble sinterTime, Mdouble radius)
- fix
- Member SlidingFrictionInteraction::getTangentialOverlap () const override
- TWnow this should be positive
- Member SlidingSpheresUnitTest::actionsAfterTimeStep () override
- should getTimeStep be getNTimeStep?
- Class SmallVector< numberOfRows >
- Need to generalize this to n-dimensional vectors of any type
- Class SmoothChute
decide what to do with commented out code
remove/add commented out code before the release
- Member SmoothChute::actionsBeforeTimeStep () override
this message was commented out in a cout, maybe make a more sensible message
make a more sensible logger message
IFCD: what happens here?
- Member SmoothChute::insertTimeInterval
- what does this do?
- Member SpeciesHandler::addObject (ParticleSpecies *S) override
- TW don't put logger messages that only make sense for one application!
- Member SpeciesHandler::getMixedObject (unsigned int id1, unsigned int id2)
- This function should probably be made private. The user should use the function SpeciesHandler::getMixedObject(const U* S, const U* T), which deals with pointers.
- Member SpeciesHandler::readAndAddObject (std::istream &is) override
TW why does deleting these objects create a segmentation fault How do you create the segmentation fault?
IFCD how does the numbering of mixedSpecies_ work? the numbering of mixed species is 01, 02, 12, 03, 13, 23, 04, 14, 24, 34, i.e. if you add the n-th ParticleSpecies, then you have to add n-1 MixedSpecies. So here I remove the last n-1 MixedSpecies and add n-1 new ones.
- Member SpeciesHandler::~SpeciesHandler () override
- TW Note: deleting the species does not delete the particles and walls of this species.
- Member SphericalParticle::getName () const override
- Should be renamed to SphericalParticle
- Member SPHInteraction::getSpecies () const
- you can remove this by adding the species to the Interaction instead of the base interaction
- Member StatisticsPoint< T >::CG_gradient (const Vec3D &P, const Mdouble phi)
-
- Member StatisticsPoint< T >::CG_integral_gradient (Vec3D &P1, Vec3D &P2, Vec3D &P1_P2_normal, Mdouble P1_P2_distance)
-
- Member StatisticsPoint< T >::CollisionalHeatFlux
-
- Member StatisticsPoint< T >::Dissipation
-
- Member StatisticsPoint< T >::Potential
- {Potential calculations have not been checked, only implemented; fstat file does not include the torsional and rolling spring and hence cannot account for their potential}
- Member StatisticsVector< T >::periodicWalls
- {Thomas: the case periodicWalls=true seems to mess up some statistics. Needs to be checked or removed}
- Member StatisticsVector< T >::rmin
- Thomas: maybe this fixed condition should be replaced by a condition function, bool include_statistics_if()
- Class SubcriticalMaserBoundary
- Which Maser is it used in Denissen2019? To cite the Maser: I. F. C. Denissen, T. Weinhart, A. Te Voortwis, S. Luding, J. M. N. T. Gray and A. R. Thornton, Bulbous head formation in bidisperse shallow granular flow over an inclined plane. Journal of Fluid Mechanics, 866:263–297, mar 2019.
- Member SubcriticalMaserBoundaryTEST::createPeriodicParticle (BaseParticle *p, ParticleHandler &pH) override
- why 2.0?
- Class SubcriticalMaserBoundaryTESTMPI2Test
- add asserts to actually check the behaviour
- Member SuperQuadricParticle::computeHessianLabFixed (const LabFixedCoordinates &labFixedCoordinates) const
- Come up with good expression for when x = y = 0 and n1 < n2
- Member SuperQuadricParticle::computeShapeGradientLabFixed (const LabFixedCoordinates &labFixedCoordinates) const
- Come up with good expression for when x = y = 0 and n1 < n2
- Member SuperQuadricParticle::getAxes () const override
TW we could remove this function from the BaseParticle and use a dynamic_cast instead
ID Middle-term plan is to template the BaseParticle on shape-type, so that we won't have to cast etc.
- Member SuperQuadricParticle::getCurvature (const LabFixedCoordinates &labFixedCoordinates) const override
- Minus sign the wrong way around, check why
- Member SuperQuadricParticle::getInteractionWithSuperQuad (SuperQuadricParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler)
- : find correct value for 'distance'
- Member SuperQuadricParticle::setBoundingRadius ()
- Currently only implemented for ellipsoids
- Member test1 ()
- shouldn't this be default?
- Member test2 ()
- shouldn't this be default?
- Class TimeDependentPeriodicBoundary
Add link to paper by Lees-Edwards in the documentation of this class.
Is implemented for 2D only now. Needs extension to 3D.
- Member TimeDependentPeriodicBoundary::createGhostParticle (BaseParticle *pReal)
- {JMFT: The time comes from p->getHandler()->getDPMBase()->getTime(), which will be undefined if p does not belong to a handler.}
- Member TimeDependentPeriodicBoundary::shiftPosition (BaseParticle *p) const override
- {JMFT: The time comes from p->getHandler()->getDPMBase()->getTime(), which will be undefined if p does not belong to a handler.}
- Member TriangleMeshWall::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
- TW: I think this torque has the wrong sign
- Member TriangulatedWall::Face::getDistanceAndNormal (const BaseParticle &p, Mdouble &distance, Vec3D &normal_return, Mdouble interactionRadius) const
- make the triangle work from both sides
- Member TriangulatedWall::move (const Vec3D &move) override
- We should use the position_ and orientation_ of the TriangulatedWall; that way, TriangulatedWall can be moved with the standard BaseInteractable::move function, getting rid of an anomaly in the code and removing the virtual from the move function.
- Member TriangulatedWall::read (std::istream &is) override
-
- Member VChute::getInteractionWith (BaseParticle *p, unsigned timeStamp, InteractionHandler *interactionHandler) override
- Hacked please fix
- Member Vec3D::getFromCylindricalCoordinates () const
-
- Member VolumeCoupling::actionsAfterTimeStep () override
- actions after time step should be user-defined, so not be used here
- Member VolumeCoupling::solveFirstHalfTimeStep ()
- MX: this is not true anymore. all boundaries are handled here. particles have received a position update, so here the deletion boundary deletes particles \TODO add particles need a periodic check
- Member WallHandler::createObject (const std::string &type)
- Review this line. Problem came up in merging.
- Member WallHandler::readAndCreateOldObject (std::istream &is)
- This is deprecated since r ~2360.
- Member WallHandler::WallHandler ()
- why is this being done?
- Member WallHandler::WallHandler (const WallHandler &BH)
- why is this being done?
- Member WallVTKWriter::writeVTKSurfaceArea (std::fstream &file, VTKContainer &vtk) const
gmb This only needs to be calculated if the mesh changes.
gmb Check if it always true.