MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Logger.cc File Reference
#include "Logger.h"
#include <cstdlib>
#include <iostream>
#include <csignal>

Go to the source code of this file.

Functions

static void printInfo (std::string module, std::string msg, Flusher doFlush)
 Prints messages of loglevel INFO. More...
 
static void printMessage (std::string module, std::string msg, Flusher doFlush)
 Prints messages of loglevel WARN. More...
 
static void printError (std::string module, std::string msg, Flusher doFlush)
 Prints messages of loglevel ERROR. More...
 
static void printFatalError (const std::string &module, const std::string &msg, Flusher doFlush)
 Prints messages of loglevel FATAL. More...
 

Variables

LL< Log::FATAL > FATAL
 Definition of the different loglevels by its wrapper class LL. These are used as tags in template metaprogramming for the Logger class. More...
 
LL< Log::ERROR > ERROR
 Error log level. More...
 
LL< Log::WARN > WARN
 Warning log level. More...
 
LL< Log::INFO > INFO
 Info log level. More...
 
LL< Log::DEFAULT > DEFAULT
 Default log level. More...
 
LL< Log::VERBOSE > VERBOSE
 Verbose information. More...
 
LL< Log::DEBUG > DEBUG
 Debug information. More...
 
Logger< MERCURY_LOGLEVELlogger ("MercuryKernel")
 Definition of different loggers with certain modules. A user can define its own custom logger here. More...
 
Logger< CG_LOGLEVELcgLogger ("MercuryCG")
 
LoggerOutput loggerOutputDefaultImpl
 
LoggerOutputloggerOutput = &loggerOutputDefaultImpl
 Declaration of the output functions. More...
 

Function Documentation

static void printError ( std::string  module,
std::string  msg,
Flusher  doFlush 
)
static

Prints messages of loglevel ERROR.

Parameters
[in]moduleThe module name of the current logger invocation.
[in]msgformatted message to be printed.
[in]doFlushFlusher enum class object to enable/disable flushing of the output.

Definition at line 130 of file Logger.cc.

References ERROR, MPIContainer::getProcessorID(), constants::i, initialiseMPI(), and MPIContainer::Instance().

131 {
132 #ifdef MERCURY_USE_MPI
133  //Check if MPI is initialised
134  initialiseMPI();
135  MPIContainer& communicator = MPIContainer::Instance();
136  std::cout << "\033[1;33mError " << module << ":\033[0m\n" << "[Processor: " << communicator.getProcessorID() << "]" << msg << std::endl;
137 #else
138  std::cout << "\033[1;31mAn error has occured"
139  << "\n\033[1;31mModule :" << module
140  << "\n\033[1;31mMessage :" << msg << std::endl;
141 #endif
142 #ifdef MERCURY_STACKTRACE_SHOW
143  std::cerr << "\n-----------------[Stack Trace]-----------------\n";
144 
145  void* stackBuffer[64]; //This should be enough for all purposes..
146  //First, we retrieve the addresses of the entire stack...
147  int nStackFrames = backtrace(stackBuffer, 64);
148 #ifndef MERCURY_STACKTRACE_DEMANGLE
149  //We don't have the demangling infra, so just use backtrace_symbols.
150  char** functionNames = backtrace_symbols(stackBuffer, nStackFrames);
151  for( int i = 0; i < nStackFrames; i++ )
152  {
153  std::cerr << '\t' << functionNames[i] << '\n';
154  }
155  std::cerr << "Exiting.\n" << std::endl;
156 
157  //DO NOT USE DELETE HERE. THIS SHOULD BE free()'d!
158  // -- dducks
159  free(functionNames);
160 #else
161  //We request the symbol information ourselves, in order to be able to demangle it.
162  //And request the function names using dladdr.
163  Dl_info infoStruct;
164  for (int i = 4; i < nStackFrames; i++)
165  {
166  if (dladdr(stackBuffer[i], &infoStruct))
167  { // We succesfully loaded the address...
168  int demangleStatus;
169  char* fnDemangled = abi::__cxa_demangle(infoStruct.dli_sname, NULL, NULL, &demangleStatus);
170  if (infoStruct.dli_sname == nullptr)
171  continue;
172 
173  //We even succesfully demangled the symbol...
174  if (demangleStatus == 0)
175  {
176  std::cerr << fnDemangled << " +" << (void*) ((char*) stackBuffer[i] - (char*) infoStruct.dli_saddr) << "\t(" << infoStruct.dli_fname << ")\n";
177  free(fnDemangled);
178  }
179  else
180  { //Well, we tried. Lets output at least our raw symbol name.
181  std::cerr << infoStruct.dli_sname << " +" << (void*) ((char*) stackBuffer[i] - (char*) infoStruct.dli_saddr) << "\t(" << infoStruct.dli_fname << ")\n";
182  }
183  }
184  else
185  { //Name lookup failed.
186  std::cerr << stackBuffer[i] << ": ?????" << std::endl;
187  }
188  }
189 #endif
190 #endif
191  //send a signal first, in case a debugger can catch it
192  std::raise(SIGTERM);
193  //call exit() for the specific loglevel
194  std::exit(static_cast<int>(Log::ERROR));
195 }
This class contains all information and functions required for communication between processors...
Definition: MpiContainer.h:129
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:134
const std::complex< Mdouble > i
Definition: ExtendedMath.h:51
void initialiseMPI()
Inialises the MPI library.
std::size_t getProcessorID()
Reduces a scalar on all processors to one scalar on a target processor.
static void printFatalError ( const std::string &  module,
const std::string &  msg,
Flusher  doFlush 
)
static

Prints messages of loglevel FATAL.

Parameters
[in]moduleThe module name of the current logger invocation.
[in]msgformatted message to be printed.
[in]doFlushFlusher enum class object to enable/disable flushing of the output.

Definition at line 206 of file Logger.cc.

References FATAL, MPIContainer::getProcessorID(), constants::i, initialiseMPI(), and MPIContainer::Instance().

207 {
208 #ifdef MERCURY_USE_MPI
209  //Check if MPI is initialised
210  initialiseMPI();
211  MPIContainer& communicator = MPIContainer::Instance();
212  std::cout << "\033[1;33mError " << module << ":\033[0m\n" << "[Processor: " << communicator.getProcessorID() << "]" << msg << std::endl;
213 #else
214  std::cout << "\033[1;31mA fatal error has occured"
215  << "\n\033[1;31mModule :" << module
216  << "\n\033[1;31mMessage :" << msg << std::endl;
217 #endif
218 #ifdef MERCURY_STACKTRACE_SHOW
219  std::cerr << "\n-----------------[Stack Trace]-----------------\n";
220 
221  void* stackBuffer[64]; //This should be enough for all purposes..
222  //First, we retrieve the addresses of the entire stack...
223  int nStackFrames = backtrace(stackBuffer, 64);
224 #ifndef MERCURY_STACKTRACE_DEMANGLE
225  //We don't have the demangling infra, so just use backtrace_symbols.
226  char** functionNames = backtrace_symbols(stackBuffer, nStackFrames);
227  for( int i = 0; i < nStackFrames; i++ )
228  {
229  std::cerr << '\t' << functionNames[i] << '\n';
230  }
231  std::cerr << "Exiting.\n" << std::endl;
232 
233  //DO NOT USE DELETE HERE. THIS SHOULD BE free()'d!
234  // -- dducks
235  free(functionNames);
236 #else
237  //We request the symbol information ourselves, in order to be able to demangle it.
238  //And request the function names using dladdr.
239  Dl_info infoStruct;
240  for (int i = 4; i < nStackFrames; i++)
241  {
242  if (dladdr(stackBuffer[i], &infoStruct))
243  { // We succesfully loaded the address...
244  int demangleStatus;
245  char* fnDemangled = abi::__cxa_demangle(infoStruct.dli_sname, NULL, NULL, &demangleStatus);
246  if (infoStruct.dli_sname == nullptr)
247  continue;
248 
249  //We even succesfully demangled the symbol...
250  if (demangleStatus == 0)
251  {
252  std::cerr << fnDemangled << " +" << (void*) ((char*) stackBuffer[i] - (char*) infoStruct.dli_saddr) << "\t(" << infoStruct.dli_fname << ")\n";
253  free(fnDemangled);
254  }
255  else
256  { //Well, we tried. Lets output at least our raw symbol name.
257  std::cerr << infoStruct.dli_sname << " +" << (void*) ((char*) stackBuffer[i] - (char*) infoStruct.dli_saddr) << "\t(" << infoStruct.dli_fname << ")\n";
258  }
259  }
260  else
261  { //Name lookup failed.
262  std::cerr << stackBuffer[i] << ": ?????" << std::endl;
263  }
264  }
265 #endif
266 #endif
267  //send a signal first, in case a debugger can catch it
268  std::raise(SIGTERM);
269  //call exit for the specific loglevel
270  std::exit(static_cast<int>(Log::FATAL));
271 }
This class contains all information and functions required for communication between processors...
Definition: MpiContainer.h:129
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:134
const std::complex< Mdouble > i
Definition: ExtendedMath.h:51
void initialiseMPI()
Inialises the MPI library.
std::size_t getProcessorID()
Reduces a scalar on all processors to one scalar on a target processor.
static void printInfo ( std::string  module,
std::string  msg,
Flusher  doFlush 
)
static

Prints messages of loglevel INFO.

Parameters
[in]moduleThe module name of the current logger invocation.
[in]msgformatted message to be printed.
[in]doFlushFlusher enum class object to enable/disable flushing of the output.

Definition at line 76 of file Logger.cc.

References FLUSH, MPIContainer::getProcessorID(), initialiseMPI(), and MPIContainer::Instance().

77 {
78 #ifdef MERCURY_USE_MPI
79  //Check if MPI is initialised
80  initialiseMPI();
81  MPIContainer& communicator = MPIContainer::Instance();
82  std::cout << "[Process: " << communicator.getProcessorID() << "]: " << msg;
83  if (doFlush == Flusher::FLUSH)
84  {
85  std::cout << std::endl;
86  }
87 #else
88  std::cout << msg;
89  if (doFlush == Flusher::FLUSH)
90  {
91  std::cout << std::endl;
92  }
93 #endif
94 }
This class contains all information and functions required for communication between processors...
Definition: MpiContainer.h:129
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:134
void initialiseMPI()
Inialises the MPI library.
std::size_t getProcessorID()
Reduces a scalar on all processors to one scalar on a target processor.
static void printMessage ( std::string  module,
std::string  msg,
Flusher  doFlush 
)
static

Prints messages of loglevel WARN.

Parameters
[in]moduleThe module name of the current logger invocation.
[in]msgformatted message to be printed.
[in]doFlushFlusher enum class object to enable/disable flushing of the output.

Definition at line 103 of file Logger.cc.

References FLUSH, MPIContainer::getProcessorID(), initialiseMPI(), and MPIContainer::Instance().

104 {
105 #ifdef MERCURY_USE_MPI
106  //Check if MPI is initialised
107  initialiseMPI();
108  MPIContainer& communicator = MPIContainer::Instance();
109  std::cout << "\033[1;33mModule " << module << ":\033[0m\n" << "[Processor: " << communicator.getProcessorID() << "]" << msg;
110  if (doFlush == Flusher::FLUSH)
111  {
112  std::cout << std::endl;
113  }
114 #else
115  std::cout << "\033[1;33mMessage " << module << ":\033[0m\n" << msg;
116  if (doFlush == Flusher::FLUSH)
117  {
118  std::cout << std::endl;
119  }
120 #endif
121 }
This class contains all information and functions required for communication between processors...
Definition: MpiContainer.h:129
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:134
void initialiseMPI()
Inialises the MPI library.
std::size_t getProcessorID()
Reduces a scalar on all processors to one scalar on a target processor.

Variable Documentation

LL<Log::DEBUG> DEBUG

Debug information.

Only used for internal development. Can be very cryptic, as it is only meant for finding bugs / oddities by the internal development team.

Example: Collision found between Particle #38201 and Wall #5

Default behaviour: ignore.

Definition at line 58 of file Logger.cc.

Referenced by BaseHandler< T >::BaseHandler(), SmallMatrix< numberOfRows, numberOfColumns >::operator*(), operator*(), CGFields::OrientationField::OrientationField(), CGFields::OrientationField::setFields(), BaseHandler< T >::~BaseHandler(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::~MixedSpecies(), and Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::~Species().

LL<Log::DEFAULT> DEFAULT

Default log level.

Only useful for defining the loglevel of the logger itself. Should not actually be used.

Definition at line 56 of file Logger.cc.

LL<Log::ERROR> ERROR

Error log level.

Error, as in, the program has found a severe problem which it cannot resolve any further. It does not know how to recover in a sane way. The difference to FATAL is mainly that this type of failure is most often caused by human error.

Example: Negative time step, Infinite end time and no override of the continuation function.

Default behaviour: log to std::cerr, followed by std::exit().

Definition at line 53 of file Logger.cc.

Referenced by SmallMatrix< numberOfRows, numberOfColumns >::computeWedgeStuffVector(), SmallMatrix< numberOfRows, numberOfColumns >::determinant(), BaseHandler< T >::getObjectById(), BaseHandler< T >::getObjectsById(), helpers::getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(), main(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::mixAll(), helpers::more(), operator<<(), operator>>(), helpers::readArrayFromFile(), NurbsSurface::set(), and Statistics().

LL<Log::FATAL> FATAL

Definition of the different loglevels by its wrapper class LL. These are used as tags in template metaprogramming for the Logger class.

Fatal log level.

Definition at line 52 of file Logger.cc.

Referenced by main(), and transformMercuryToVTK().

LL<Log::INFO> INFO

Info log level.

Useful information, small oddities and statistics which should be of no real effect to the user, but still give useful information about the current state and progress of the program.

Example: Finished inserting 381 particles.

Default behaviour: log to std::cout, returns afterwards.

Definition at line 55 of file Logger.cc.

Referenced by helpers::addToFile(), checkTemplate(), helpers::compare(), mathsFunc::goldenSectionSearch(), helpers::readFromCommandLine< std::string >(), helpers::loadingTest(), main(), helpers::more(), helpers::normalAndTangentialLoadingTest(), NurbsSurface::NurbsSurface(), helpers::objectivenessTest(), helpers::readArrayFromCommandLine(), helpers::readFromCommandLine(), helpers::readFromFile(), helpers::readVectorFromCommandLine(), NurbsSurface::set(), SinterNormalSpecies::setParhamiMcKeeping(), Statistics(), and transformMercuryToVTK().

Logger<MERCURY_LOGLEVEL> logger("MercuryKernel")

Definition of different loggers with certain modules. A user can define its own custom logger here.

Default logger. Use this for general logging.

For very specific modules, define your own logger. If you want to make extensive use of Debug messages, please use a custom logger as well, to prevent polluting the output.

Referenced by BaseCluster::actionsAfterSolve(), BaseCluster::actionsAfterTimeStep(), BaseBoundary::actionsBeforeTimeLoop(), BaseCluster::actionsOnRestart(), SubcriticalMaserBoundaryTEST::activateMaser(), SubcriticalMaserBoundary::activateMaser(), ConstantMassFlowMaserBoundary::activateMaser(), IntersectionOfWalls::add3PointObject(), PossibleContactList::add_PossibleContact(), ParticleHandler::addExistingObject(), Chute::addFlowParticlesCompactly(), PolydisperseInsertionBoundary::addGenerandum(), ParticleHandler::addGhostObject(), LocalExpansion::addLocalExpansionCoefficients(), Multipole::addMultipoleCoefficients(), WallHandler::addObject(), ParticleHandler::addObject(), IntersectionOfWalls::addObject(), BaseWall::addParticlesAtWall(), Domain::addParticlesToLists(), SubcriticalMaserBoundary::addParticleToMaser(), ConstantMassFlowMaserBoundary::addParticleToMaser(), IntersectionOfWalls::addPlate(), IntersectionOfWalls::addTetra(), IntersectionOfWalls::addTetraSTL(), helpers::addToFile(), Membrane::applyPressure(), HGridOptimiser::applyStep(), Membrane::Edge::applyStretchForce(), AxisymmetricIntersectionOfWalls::AxisymmetricIntersectionOfWalls(), BaseBoundary::BaseBoundary(), BaseCG::BaseCG(), BaseCluster::BaseCluster(), BaseClusterInsertionBoundary::BaseClusterInsertionBoundary(), BaseHandler< T >::BaseHandler(), BaseInteractable::BaseInteractable(), BaseParticle::BaseParticle(), BaseSpecies::BaseSpecies(), BaseWall::BaseWall(), BasicIntersectionOfWalls::BasicIntersectionOfWalls(), BasicUnionOfWalls::BasicUnionOfWalls(), BondedInteraction::BondedInteraction(), BoundaryHandler::BoundaryHandler(), HGridOptimiser::calcDfDx(), HGridOptimiser::calculateDiffWork(), BaseCluster::calculateTimeStep(), HGridOptimiser::calculateWork(), ChargedBondedInteraction::ChargedBondedInteraction(), mathsFunc::chebyshev(), SubcriticalMaserBoundaryTEST::checkBoundaryAfterParticleMoved(), DeletionBoundary::checkBoundaryAfterParticleMoved(), DropletBoundary::checkBoundaryAfterParticlesMove(), StressStrainControlBoundary::checkBoundaryAfterParticlesMove(), SubcriticalMaserBoundaryTEST::checkBoundaryAfterParticlesMove(), FixedClusterInsertionBoundary::checkBoundaryBeforeTimeStep(), RandomClusterInsertionBoundary::checkBoundaryBeforeTimeStep(), InsertionBoundary::checkBoundaryBeforeTimeStep(), MeshTriangle::checkInteractions(), HGridOptimiser::checkLimit(), MercuryBase::checkParticleForInteractionLocal(), DPMBase::checkSettings(), checkTemplate(), Chute::Chute(), CircularPeriodicBoundary::CircularPeriodicBoundary(), Chute::cleanChute(), BaseCG::clear(), ConstantMassFlowMaserBoundary::closeMaser(), ClusterGenerator::ClusterGenerator(), Coil::Coil(), helpers::compare(), ChargedBondedInteraction::computeAdhesionForce(), DPMBase::computeAllForces(), LinearPlasticViscoelasticNormalSpecies::computeBondNumberMax(), SuperQuadricParticle::computeContactPoint(), ScrewsymmetricIntersectionOfWalls::computeDeltaZ(), Box::computeFlow(), FrictionInteraction::computeFrictionForce(), BaseCluster::computeInternalStructure(), ParticleHandler::computeLargestParticle(), SuperQuadricParticle::computeMass(), SinterInteraction::computeNormalForce(), DPMBase::computeOneTimeStep(), HertzianSinterInteraction::computeSinterForce(), SlidingFrictionInteraction::computeSlidingSpringSuperQuadric(), ParticleHandler::computeSmallestParticle(), StressStrainControlBoundary::computeStrainRate(), HertzianSinterNormalSpecies::computeTimeStep(), SinterNormalSpecies::computeTimeStep(), Mercury3D::computeWallForces(), SmallMatrix< numberOfRows, numberOfColumns >::computeWedgeStuffVector(), ConstantMassFlowMaserBoundary::ConstantMassFlowMaserBoundary(), DPMBase::constructor(), PSD::convertProbabilityDensityToProbabilityDensityNumberDistribution(), AngledPeriodicBoundary::copy(), PolydisperseInsertionBoundary::copy(), SubcriticalMaserBoundaryTEST::copyExtraParticles(), MPIInteraction< NormalForceInteraction, FrictionForceInteraction, AdhesiveForceInteraction >::copyFromInteraction(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::copyInto(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::copyInto(), CurvyChute::createBottom(), Chute::createBottom(), DomainHandler::createMesh(), BaseInteraction::createMPIInteractionDataArray(), BoundaryHandler::createObject(), WallHandler::createObject(), ParticleHandler::createObject(), CubeDeletionBoundary::CubeDeletionBoundary(), PSD::cutHighSizeRatio(), PSD::cutoffCumulativeNumber(), DataFiles::DataFiles(), SubcriticalMaserBoundaryTEST::deactivateMaser(), SubcriticalMaserBoundary::deactivateMaser(), Domain::debugInformation(), DPMBase::decompose(), BaseInteraction::deleteMPIInteractionDataArray(), DeletionBoundary::DeletionBoundary(), SmallMatrix< numberOfRows, numberOfColumns >::determinant(), MPIContainer::directReceive(), MPIContainer::directSend(), DomainHandler::DomainHandler(), Box::downwardPass(), CGHandler::evaluateDataFiles(), CGHandler::evaluateRestartFiles(), SubcriticalMaserBoundaryTEST::extendBottom(), FileReader::FileReader(), DPMBase::fillDomainWithParticles(), PeriodicBoundaryHandler::findNewParticle(), DPMBase::findNextExistingDataFile(), FixedClusterInsertionBoundary::FixedClusterInsertionBoundary(), Domain::flushParticlesFromList(), LiquidMigrationWilletInteraction::form(), PolydisperseInsertionBoundary::generateParticle(), InsertionBoundary::generateParticle(), DPMBase::get1DParametersFromRunNumber(), DPMBase::get2DParametersFromRunNumber(), DPMBase::get3DParametersFromRunNumber(), LinearPlasticViscoelasticNormalSpecies::getCollisionTime(), SinterNormalSpecies::getCollisionTime(), LinearViscoelasticNormalSpecies::getCollisionTime(), SmallMatrix< numberOfRows, numberOfColumns >::getColumn(), Quaternion::getComponent(), Vec3D::getComponent(), SuperQuadricParticle::getContactPointPlanB(), NurbsSurface::getDistance(), VChute::getDistanceAndNormal(), HorizontalBaseScrew::getDistanceAndNormal(), SimpleDrumSuperquadrics::getDistanceAndNormal(), BasicIntersectionOfWalls::getDistanceAndNormal(), AxisymmetricIntersectionOfWalls::getDistanceAndNormal(), ScrewsymmetricIntersectionOfWalls::getDistanceAndNormal(), IntersectionOfWalls::getDistanceAndNormal(), Screw::getDistanceAndNormalLabCoordinates(), SimpleDrumSuperquadrics::getDistanceNormalOverlapSuperquadric(), BaseWall::getDistanceNormalOverlapSuperquadric(), BaseInteraction::getEffectiveMass(), BaseInteraction::getEffectiveRadius(), ChargedBondedInteraction::getElasticEnergy(), ParticleHandler::getFastestParticle(), ParticleHandler::getFastestParticleLocal(), BaseWall::getFurthestPointSuperQuadric(), ParticleHandler::getHighestPositionComponentParticle(), ParticleHandler::getHighestPositionComponentParticleLocal(), ParticleHandler::getHighestVelocityComponentParticle(), ParticleHandler::getHighestVelocityComponentParticleLocal(), BaseInteraction::getI(), BaseInteraction::getInteractionDetails(), MeshTriangle::getInteractionWith(), BaseWall::getInteractionWith(), BaseWall::getInteractionWithSuperQuad(), ParticleSpecies::getLargestInverseParticleMassLocal(), ParticleHandler::getLargestParticle(), ParticleHandler::getLowestPositionComponentParticle(), ParticleHandler::getLowestPositionComponentParticleLocal(), ParticleHandler::getLowestVelocityComponentParticle(), ParticleHandler::getLowestVelocityComponentParticleLocal(), SpeciesHandler::getMixedObject(), getName(), PossibleContact::getNext(), RNG::getNormalVariate(), ParticleHandler::getNumberOfRealObjectsLocal(), BasicIntersectionOfWalls::getObject(), BasicUnionOfWalls::getObject(), BaseHandler< T >::getObject(), BaseHandler< T >::getObjectById(), BaseHandler< T >::getObjectsById(), HGridOptimiser::getOptimalDistribution(), PossibleContact::getOtherParticle(), BaseInteraction::getP(), ParticleHandler::getParticleAttribute(), ParticleHandler::getParticleAttributeLocal(), InsertionBoundary::getParticleToCopy(), helpers::getPath(), TimeDependentPeriodicBoundary::getPlanewiseShift(), RNG::getPoissonVariate(), PossibleContact::getPrevious(), PSD::getRadiusByQuantile(), RNG::getRandomNumber(), SmallMatrix< numberOfRows, numberOfColumns >::getRow(), helpers::getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(), ParticleHandler::getSmallestParticle(), Time2Finish::getTime2Finish(), ChuteWithHopper::getTimeStepRatio(), BaseParticle::getVolume(), SuperQuadricParticle::getVolume(), ParticleSpecies::getVolumeFromRadius(), Mercury3DRestart::getWallTime(), helpers::gnuplot(), mathsFunc::goldenSectionSearch(), HGridOptimiser::goldenSectionSearch(), helpers::readFromCommandLine< std::string >(), HGrid::HGrid(), Mercury2D::hGridFindContactsWithTargetCell(), Mercury3D::hGridFindContactsWithTargetCell(), Mercury2D::hGridFindParticleContacts(), Mercury3D::hGridFindParticleContacts(), Mercury3D::hGridGetInteractingParticleList(), Mercury2D::hGridHasParticleContacts(), MercuryBase::hGridNeedsRebuilding(), MercuryBase::hGridRebuild(), HGridOptimiser::histNumberParticlesPerCell(), HorizontalBaseScrew::HorizontalBaseScrew(), HorizontalScrew::HorizontalScrew(), InfiniteWall::InfiniteWall(), HGrid::info(), HGridOptimiser::initialise(), HGridOptimiser::initialisePolyFunc(), InsertionBoundary::insertParticle(), InsertionBoundary::insertParticles(), BaseCluster::insertParticles(), HGrid::insertParticleToHgrid(), InteractionHandler::InteractionHandler(), IntersectionOfWalls::IntersectionOfWalls(), BaseWall::intersectVTK(), MatrixSymmetric3D::inverse(), SmallMatrix< numberOfRows, numberOfColumns >::inverse(), ConstantMassFlowMaserBoundary::isCopying(), LeesEdwardsBoundary::LeesEdwardsBoundary(), SmallVector< numberOfRows >::length(), LevelSetWall::LevelSetWall(), Membrane::loadFromSTL(), helpers::loadingTest(), Membrane::loadVertexPositions(), main(), ChuteBottom::makeRoughBottom(), BaseVTKWriter< H >::makeVTKFileWithHeader(), Membrane::Membrane(), Mercury2D::Mercury2D(), Mercury3D::Mercury3D(), MercuryBase::MercuryBase(), LinearPlasticViscoelasticNormalSpecies::mix(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::mixAll(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::mixAll(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::MixedSpecies(), SubcriticalMaserBoundaryTEST::modifyPeriodicComplexity(), helpers::more(), MPIContainer::MPIContainer(), helpers::normalAndTangentialLoadingTest(), Quaternion::normalise(), Vec3D::normalise(), NurbsSurface::NurbsSurface(), NurbsWall::NurbsWall(), helpers::objectivenessTest(), BaseParticle::oldRead(), BinaryReader::openFile(), SmallMatrix< numberOfRows, numberOfColumns >::operator()(), NumericalVector< std::complex< Mdouble > >::operator()(), SmallVector< numberOfRows >::operator()(), NumericalVector< std::complex< Mdouble > >::operator*(), SmallMatrix< numberOfRows, numberOfColumns >::operator*(), operator*(), NumericalVector< std::complex< Mdouble > >::operator+(), NumericalVector< std::complex< Mdouble > >::operator+=(), NumericalVector< std::complex< Mdouble > >::operator-(), NumericalVector< std::complex< Mdouble > >::operator-=(), operator<<(), SpeciesHandler::operator=(), BoundaryHandler::operator=(), InteractionHandler::operator=(), PeriodicBoundaryHandler::operator=(), DomainHandler::operator=(), ParticleHandler::operator=(), IntersectionOfWalls::operator=(), TriangulatedWall::operator=(), operator>>(), SmallMatrix< numberOfRows, numberOfColumns >::operator[](), NumericalVector< std::complex< Mdouble > >::operator[](), SmallVector< numberOfRows >::operator[](), CGFields::OrientationField::OrientationField(), DPMBase::outputInteractionDetails(), DPMBase::outputXBallsData(), SuperQuadricParticle::overlapFromContactPoint(), ParabolaChute::ParabolaChute(), ParhamiMcMeekingSinterInteraction::ParhamiMcMeekingSinterInteraction(), ParticleHandler::ParticleHandler(), SubcriticalMaserBoundaryTEST::performActionsBeforeAddingParticles(), PeriodicBoundary::PeriodicBoundary(), PeriodicBoundaryHandler::PeriodicBoundaryHandler(), PolydisperseInsertionBoundary::PolydisperseInsertionBoundary(), PossibleContactList::PossibleContactList(), PSD::printPSD(), Chute::printTime(), BaseCluster::printTime(), DPMBase::printTime(), PeriodicBoundaryHandler::processLocalGhostParticles(), PeriodicBoundaryHandler::processLocalInteractionData(), Domain::processReceivedBoundaryParticleData(), PeriodicBoundaryHandler::processReceivedGhostParticleData(), Domain::processReceivedInteractionData(), HGridOptimiser::radius2Cell(), RandomClusterInsertionBoundary::RandomClusterInsertionBoundary(), SubcriticalMaserBoundaryTEST::read(), csvReader::read(), FileReader::read(), InteractionHandler::read(), SuperQuadricParticle::read(), Domain::read(), SubcriticalMaserBoundary::read(), Chute::read(), ConstantMassFlowMaserBoundary::read(), BaseHandler< T >::read(), Membrane::read(), DPMBase::read(), SpeciesHandler::readAndAddObject(), BoundaryHandler::readAndAddObject(), InteractionHandler::readAndAddObject(), WallHandler::readAndCreateObject(), ParticleHandler::readAndCreateObject(), WallHandler::readAndCreateOldObject(), DPMBase::readArguments(), helpers::readArrayFromCommandLine(), helpers::readArrayFromFile(), DPMBase::readDataFile(), helpers::readFromCommandLine(), helpers::readFromFile(), Mercury3DRestart::readNextArgument(), DPMBase::readNextArgument(), DPMBase::readNextDataFile(), DPMBase::readNextFStatFile(), SpeciesHandler::readOldObject(), DPMBase::readParAndIniFiles(), DPMBase::readRestartFile(), WallHandler::readTriangleWall(), helpers::readVectorFromCommandLine(), TriangulatedWall::readVTK(), MPIContainer::receive(), RegimeSinterInteraction::RegimeSinterInteraction(), PossibleContactList::remove_ParticlePosibleContacts(), ParticleHandler::removeGhostObject(), BaseInteractable::removeInteraction(), BaseHandler< T >::removeLastObject(), ParticleHandler::removeObject(), BaseHandler< T >::removeObject(), DPMBase::removeOldFiles(), CGHandler::restart(), RestrictedWall::RestrictedWall(), LiquidMigrationWilletInteraction::rupture(), Membrane::saveAsSTL(), Screw::Screw(), ScrewsymmetricIntersectionOfWalls::ScrewsymmetricIntersectionOfWalls(), MPIContainer::send(), Domain::sendAndReceiveCount(), PeriodicBoundary::set(), ParhamiMcMeekingSinterSpecies::set(), NurbsSurface::set(), StressStrainControlBoundary::set(), InfiniteWall::set(), ChargedBondedSpecies::setAdhesionForceMax(), ReversibleAdhesiveSpecies::setAdhesionForceMax(), ChargedBondedSpecies::setAdhesionStiffness(), ReversibleAdhesiveSpecies::setAdhesionStiffness(), HeatFluidCoupledSpecies< NormalForceSpecies >::setAmbientEquilibriumMoistureContent(), HeatFluidCoupledSpecies< NormalForceSpecies >::setAmbientHumidity(), HeatFluidCoupledSpecies< NormalForceSpecies >::setAmbientTemperature(), HeatFluidCoupledSpecies< NormalForceSpecies >::setAmbientVapourConcentration(), SuperQuadricParticle::setAxesAndExponents(), CurvyChute::setBasalDensity(), CurvyChute::setBasalDisorder(), CurvyChute::setBasalSizeDispersity(), BondedSpecies::setBondDissipation(), ChargedBondedSpecies::setBondDissipation(), BondedSpecies::setBondForceMax(), ChargedBondedSpecies::setBondForceMax(), ChargedBondedSpecies::setCharge(), Chute::setChuteAngle(), Chute::setChuteAngleAndMagnitudeOfGravity(), ChuteWithHopper::setChuteLength(), BaseCluster::setClusterId(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt(), LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient(), BaseCluster::setCollisionTimeOverTimeStep(), SinterLinNormalSpecies::setComplianceZero(), SinterNormalSpecies::setComplianceZero(), Quaternion::setComponent(), Vec3D::setComponent(), SinterNormalSpecies::setConstantC1(), BaseNormalForce::setConstantRestitution(), LiquidBridgeWilletSpecies::setContactAngle(), LiquidMigrationWilletSpecies::setContactAngle(), ParticleSpecies::setDensity(), LinearViscoelasticNormalSpecies::setDissipation(), HertzianViscoelasticNormalSpecies::setDissipation(), HertzianSinterNormalSpecies::setDissipation(), LinearPlasticViscoelasticNormalSpecies::setDissipation(), SinterNormalSpecies::setDissipation(), SinterLinNormalSpecies::setDissipation(), LiquidMigrationWilletSpecies::setDistributionCoefficient(), PSD::setDistributionNormal(), DPMBase::setDomain(), BaseCluster::setDomainLimits(), HertzianViscoelasticNormalSpecies::setEffectiveElasticModulus(), HertzianViscoelasticNormalSpecies::setEffectiveElasticModulusAndEffectiveShearModulus(), HertzianViscoelasticNormalSpecies::setEffectiveElasticModulusAndPoissonRatio(), HertzianViscoelasticNormalSpecies::setEffectiveElasticModulusAndRestitutionCoefficient(), MindlinSpecies::setEffectiveShearModulus(), BaseCluster::setEnergyRatioTolerance(), HeatFluidCoupledSpecies< NormalForceSpecies >::setEvaporationCoefficientA(), HeatFluidCoupledSpecies< NormalForceSpecies >::setEvaporationCoefficientB(), SuperQuadricParticle::setExponents(), CGFields::OrientationField::setFields(), CGFields::LiquidMigrationFields::setFields(), Chute::setFixedParticleRadius(), SinterLinNormalSpecies::setFluidity(), PolydisperseInsertionBoundary::setGenerandum(), BaseCG::setH(), HeatFluidCoupledSpecies< NormalForceSpecies >::setHeatCapacity(), ThermalSpecies< NormalForceSpecies >::setHeatCapacity(), ChuteWithHopper::setHopper(), ChuteWithHopper::setHopperShift(), BaseCG::setHX(), BaseCG::setHY(), BaseCG::setHZ(), BaseWall::setIndSpecies(), BaseParticle::setIndSpecies(), Chute::setInflowParticleRadius(), Chute::setInflowVelocity(), Chute::setInflowVelocityVariance(), ChargedBondedSpecies::setInteractionDistance(), ReversibleAdhesiveSpecies::setInteractionDistance(), DomainHandler::setInteractionDistance(), SinterNormalSpecies::setInverseSinterViscosity(), HeatFluidCoupledSpecies< NormalForceSpecies >::setLatentHeatVaporization(), LiquidBridgeWilletSpecies::setLiquidBridgeVolume(), LiquidMigrationWilletSpecies::setLiquidBridgeVolumeMax(), LiquidMigrationWilletSpecies::setLiquidBridgeVolumeMin(), HeatFluidCoupledSpecies< NormalForceSpecies >::setLiquidDensity(), File::setlogarithmicSaveCount(), MeshTriangle::setMass(), BaseParticle::setMass(), BaseParticle::setMassForP3Statistics(), HeatFluidCoupledSpecies< NormalForceSpecies >::setMassTransferCoefficient(), DPMBase::setMax(), Chute::setMaxInflowParticleRadius(), DPMBase::setMeanVelocityAndKineticEnergy(), DPMBase::setMin(), Chute::setMinInflowParticleRadius(), File::setName(), PossibleContact::setNextPosition(), DPMBase::setNumberOfDomains(), BaseCluster::setNumberOfInternalStructurePoints(), DPMBase::setNumberOfOMPThreads(), BaseCluster::setNumberOfParticles(), RandomClusterInsertionBoundary::setNumberOfParticlesPerCluster(), StatisticsVector< T >::setNZ(), SinterNormalSpecies::setParhamiMcKeeping(), DPMBase::setParticleDimensions(), Membrane::setParticleRadius(), InsertionBoundary::setParticleToCopy(), HertzianSinterNormalSpecies::setPlasticParameters(), SinterNormalSpecies::setPlasticParameters(), LinearPlasticViscoelasticNormalSpecies::setPlasticParameters(), IntersectionOfWalls::setPointsAndLines(), MindlinSpecies::setPoissonRatio(), FixedClusterInsertionBoundary::setPositionsAndRadii(), PossibleContact::setPreviousPosition(), PSD::setPSDFromCSV(), SphericalWall::setRadius(), SimpleDrumSuperquadrics::setRadius(), SuperQuadricParticle::setRadius(), BaseCluster::setRadiusCluster(), BaseClusterInsertionBoundary::setRadiusMicroParticle(), BaseCluster::setRadiusParticle(), Domain::setRange(), FrictionSpecies::setRollingDissipation(), MindlinRollingTorsionSpecies::setRollingDissipation(), MindlinRollingTorsionSpecies::setRollingFrictionCoefficient(), FrictionSpecies::setRollingFrictionCoefficient(), MindlinRollingTorsionSpecies::setRollingFrictionCoefficientStatic(), FrictionSpecies::setRollingFrictionCoefficientStatic(), FrictionSpecies::setRollingStiffness(), Chute::setRoughBottomType(), SinterNormalSpecies::setSeparationDis(), SinterLinNormalSpecies::setSeparationDis(), LevelSetWall::setShapeCube(), LevelSetWall::setShapeCylinder(), LevelSetWall::setShapeDiamond(), LevelSetWall::setShapeFourSided(), LevelSetWall::setShapeSphere(), SinterNormalSpecies::setSinterAdhesion(), SinterLinNormalSpecies::setSinterAdhesion(), SinterNormalSpecies::setSinterForceAndTime(), HertzianSinterNormalSpecies::setSinterRate(), SinterLinNormalSpecies::setSinterRate(), SinterNormalSpecies::setSinterRate(), SinterNormalSpecies::setSinterType(), SinterLinNormalSpecies::setSinterType(), BaseCluster::setSizeDispersityParticle(), MindlinSpecies::setSlidingDissipation(), SlidingFrictionSpecies::setSlidingDissipation(), MindlinSpecies::setSlidingFrictionCoefficient(), SlidingFrictionSpecies::setSlidingFrictionCoefficient(), MindlinSpecies::setSlidingFrictionCoefficientStatic(), SlidingFrictionSpecies::setSlidingFrictionCoefficientStatic(), SlidingFrictionSpecies::setSlidingStiffness(), DPMBase::setSoftStop(), BaseInteractable::setSpecies(), BaseCluster::setSpecies(), Membrane::setSpringConstant(), LinearViscoelasticNormalSpecies::setStiffness(), CurvyChute::setSurface(), LiquidBridgeWilletSpecies::setSurfaceTension(), LiquidMigrationWilletSpecies::setSurfaceTension(), SinterLinNormalSpecies::setSurfTension(), SinterNormalSpecies::setSurfTension(), DPMBase::setSystemDimensions(), HeatFluidCoupledSpecies< NormalForceSpecies >::setThermalConductivity(), ThermalSpecies< NormalForceSpecies >::setThermalConductivity(), ChuteBottom::setThickness(), Membrane::setThickness(), ThermalParticle::setTimeDependentTemperature(), DPMBase::setTimeMax(), DPMBase::setTimeStep(), FrictionSpecies::setTorsionDissipation(), MindlinRollingTorsionSpecies::setTorsionDissipation(), FrictionSpecies::setTorsionFrictionCoefficient(), MindlinRollingTorsionSpecies::setTorsionFrictionCoefficient(), MindlinRollingTorsionSpecies::setTorsionFrictionCoefficientStatic(), FrictionSpecies::setTorsionFrictionCoefficientStatic(), FrictionSpecies::setTorsionStiffness(), ChuteBottom::setupInitialConditions(), Chute::setupInitialConditions(), BaseCluster::setupInitialConditions(), ChargedBondedSpecies::setVanDerWaalsForceMax(), InsertionBoundary::setVariableVolumeFlowRate(), BaseCluster::setVelocityDampingModulus(), DPMBase::setXMax(), DPMBase::setXMin(), DPMBase::setYMax(), DPMBase::setYMin(), DPMBase::setZMax(), DPMBase::setZMin(), DPMBase::signalHandler(), SimpleDrumSuperquadrics::SimpleDrumSuperquadrics(), SineWall::SineWall(), SmallMatrix< numberOfRows, numberOfColumns >::SmallMatrix(), SmallVector< numberOfRows >::SmallVector(), DPMBase::solve(), SmallMatrix< numberOfRows, numberOfColumns >::solve(), CGCoordinates::spaceEvenly(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::Species(), SpeciesHandler::SpeciesHandler(), SphericalWall::SphericalWall(), Statistics(), StressStrainControlBoundary::StressStrainControlBoundary(), SubcriticalMaserBoundary::SubcriticalMaserBoundary(), SuperQuadricParticle::SuperQuadricParticle(), RNG::test(), TimeDependentPeriodicBoundary::TimeDependentPeriodicBoundary(), transformMercuryToVTK(), Multipole::TranslateMultipoleExpansionTo(), TriangulatedWall::TriangulatedWall(), DPMBase::updateGhostGrid(), PeriodicBoundaryHandler::updateMaserParticle(), Domain::updateParticlePosition(), PeriodicBoundaryHandler::updateParticles(), Domain::updateParticles(), PeriodicBoundaryHandler::updateParticleStatus(), MeshTriangle::updateVertexAndNormal(), Box::upwardPass(), MercuryBase::userHGridCellSize(), PSD::validateCumulativeDistribution(), PSD::validateProbabilityDensityDistribution(), DataFiles::write(), Domain::write(), PolydisperseInsertionBoundary::write(), InsertionBoundary::write(), SuperQuadricParticle::writeDebugMessageMiddleOfLoop(), SuperQuadricParticle::writeDebugMessageStep1(), SuperQuadricParticle::writeDebugMessageStep2(), SuperQuadricParticle::writeDebugMessageStep3(), Mercury3DRestart::writeOutputFiles(), DPMBase::writePythonFileForVTKVisualisation(), DataFiles::writeTimeStep(), LevelSetWall::writeToFile(), helpers::writeToFile(), BaseWall::writeVTK(), WallHandler::writeVTKBoundingBox(), AxisymmetricIntersectionOfWalls::~AxisymmetricIntersectionOfWalls(), BaseBoundary::~BaseBoundary(), BaseCluster::~BaseCluster(), BaseHandler< T >::~BaseHandler(), BaseInteractable::~BaseInteractable(), BaseInteraction::~BaseInteraction(), BaseParticle::~BaseParticle(), BaseSpecies::~BaseSpecies(), BaseWall::~BaseWall(), BasicIntersectionOfWalls::~BasicIntersectionOfWalls(), BasicUnionOfWalls::~BasicUnionOfWalls(), BoundaryHandler::~BoundaryHandler(), ClusterGenerator::~ClusterGenerator(), Coil::~Coil(), CubeDeletionBoundary::~CubeDeletionBoundary(), DeletionBoundary::~DeletionBoundary(), DomainHandler::~DomainHandler(), DropletBoundary::~DropletBoundary(), FileReader::~FileReader(), HeaterBoundary::~HeaterBoundary(), HGrid::~HGrid(), HorizontalBaseScrew::~HorizontalBaseScrew(), HorizontalScrew::~HorizontalScrew(), InfiniteWall::~InfiniteWall(), InteractionHandler::~InteractionHandler(), IntersectionOfWalls::~IntersectionOfWalls(), LevelSetWall::~LevelSetWall(), Membrane::~Membrane(), MercuryBase::~MercuryBase(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::~MixedSpecies(), NurbsWall::~NurbsWall(), ParabolaChute::~ParabolaChute(), ParticleHandler::~ParticleHandler(), PeriodicBoundary::~PeriodicBoundary(), PeriodicBoundaryHandler::~PeriodicBoundaryHandler(), RestrictedWall::~RestrictedWall(), Screw::~Screw(), ScrewsymmetricIntersectionOfWalls::~ScrewsymmetricIntersectionOfWalls(), SimpleDrumSuperquadrics::~SimpleDrumSuperquadrics(), SineWall::~SineWall(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::~Species(), SpeciesHandler::~SpeciesHandler(), SphericalWall::~SphericalWall(), SubcriticalMaserBoundaryTEST::~SubcriticalMaserBoundaryTEST(), SuperQuadricParticle::~SuperQuadricParticle(), TimeDependentPeriodicBoundary::~TimeDependentPeriodicBoundary(), and TriangulatedWall::~TriangulatedWall().

Declaration of the output functions.

If the output needs to be redirected, please swap the loggerOutput pointer to your preferred LoggerOutput instance, and make sure this exists until AFTER an std::exit() invocation. (e.g. clean up with std::atexit())

Definition at line 283 of file Logger.cc.

LoggerOutput loggerOutputDefaultImpl
Initial value:
printMessage
}
static void printInfo(std::string module, std::string msg, Flusher doFlush)
Prints messages of loglevel INFO.
Definition: Logger.cc:76
static void printMessage(std::string module, std::string msg, Flusher doFlush)
Prints messages of loglevel WARN.
Definition: Logger.cc:103
static void printFatalError(const std::string &module, const std::string &msg, Flusher doFlush)
Prints messages of loglevel FATAL.
Definition: Logger.cc:206
static void printError(std::string module, std::string msg, Flusher doFlush)
Prints messages of loglevel ERROR.
Definition: Logger.cc:130

Definition at line 274 of file Logger.cc.

LL<Log::VERBOSE> VERBOSE

Verbose information.

Information which is not useful to anybody except those looking for weird behaviour. These should however still be clear in meaning.

Example: Finished creating a particle.

Default behaviour: ignore.

Definition at line 57 of file Logger.cc.

Referenced by NurbsSurface::getDistance(), main(), and BaseHandler< T >::read().

LL<Log::WARN> WARN

Warning log level.

Warning, as in, the program has detected a problem but does know a solution. The simulation can continue with this fix, but the user should look at fixing his / her simulation so this won't occur in the future.

Example: Setting a smaller Xmax than Xmin.

Default behaviour: log to std::cerr, returns afterwards.

Definition at line 54 of file Logger.cc.

Referenced by MPIInteraction< NormalForceInteraction, FrictionForceInteraction, AdhesiveForceInteraction >::copyFromInteraction(), MixedSpecies< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::copyInto(), Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::copyInto(), NurbsSurface::getDistance(), helpers::getPath(), helpers::gnuplot(), BaseVTKWriter< H >::makeVTKFileWithHeader(), SmallMatrix< numberOfRows, numberOfColumns >::operator*(), operator*(), helpers::readFromFile(), BaseHandler< T >::removeLastObject(), CGCoordinates::spaceEvenly(), transformMercuryToVTK(), and helpers::writeToFile().