168 lines
3.9 KiB
C++
168 lines
3.9 KiB
C++
|
|
|
|
// DO NOT EDIT !
|
|
// This file is generated using the MantaFlow preprocessor (prep generate).
|
|
|
|
/******************************************************************************
|
|
*
|
|
* MantaFlow fluid solver framework
|
|
* Copyright 2011-2016 Tobias Pfaff, Nils Thuerey
|
|
*
|
|
* This program is free software, distributed under the terms of the
|
|
* Apache License, Version 2.0
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Globally used macros and functions (e.g. time measurements),
|
|
* and doxygen documentation collection.
|
|
*
|
|
******************************************************************************/
|
|
|
|
/*! \mainpage Welcome to mantaflow!
|
|
*
|
|
* Here you can find the auto-generated documentation of the mantaflow framework.
|
|
*
|
|
* One of the most useful parts is probably the list of python functions, classes and the C++
|
|
* kernels. Those can be found found in the ''Modules'' section. For python functions the
|
|
* parameters (e.g. Grids, Real or int values) are automatically transferred to and from python.
|
|
* Thus, this list is a good reference how to call the functions used in the example scenes.
|
|
*
|
|
*/
|
|
|
|
// Define plugin documentation group
|
|
// all kernels, plugin functions and classes will automatically be added to this group
|
|
//! @defgroup Plugins Functions callable from Python
|
|
//! @defgroup PyClasses Classes exposed to Python
|
|
//! @defgroup Kernels Computation Kernels
|
|
|
|
#include "general.h"
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
# define WIN32_LEAN_AND_MEAN
|
|
# define NOMINMAX
|
|
# include <windows.h>
|
|
# undef WIN32_LEAN_AND_MEAN
|
|
# undef NOMINMAX
|
|
#else
|
|
# include <sys/time.h>
|
|
# include "gitinfo.h"
|
|
#endif
|
|
|
|
using namespace std;
|
|
|
|
namespace Manta {
|
|
|
|
int gDebugLevel = 1;
|
|
|
|
void MuTime::get()
|
|
{
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
LARGE_INTEGER liTimerFrequency;
|
|
QueryPerformanceFrequency(&liTimerFrequency);
|
|
LARGE_INTEGER liLastTime;
|
|
QueryPerformanceCounter(&liLastTime);
|
|
time = (INT)(((double)liLastTime.QuadPart / liTimerFrequency.QuadPart) * 1000);
|
|
#else
|
|
struct timeval tv;
|
|
struct timezone tz;
|
|
tz.tz_minuteswest = 0;
|
|
tz.tz_dsttime = 0;
|
|
gettimeofday(&tv, &tz);
|
|
time = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
|
#endif
|
|
}
|
|
|
|
MuTime MuTime::update()
|
|
{
|
|
MuTime o = *this;
|
|
get();
|
|
return *this - o;
|
|
}
|
|
|
|
string MuTime::toString()
|
|
{
|
|
stringstream ss;
|
|
ss << *this;
|
|
return ss.str();
|
|
}
|
|
|
|
ostream &operator<<(ostream &os, const MuTime &t)
|
|
{
|
|
unsigned long ms = (unsigned long)((double)t.time / (60.0 * 1000.0));
|
|
unsigned long ss = (unsigned long)(((double)t.time / 1000.0) - ((double)ms * 60.0));
|
|
int ps = (int)(((double)t.time - (double)ss * 1000.0) / 1.0);
|
|
|
|
if (ms > 0) {
|
|
os << ms << "m" << ss << "s";
|
|
}
|
|
else {
|
|
if (ps > 0) {
|
|
os << ss << ".";
|
|
if (ps < 10) {
|
|
os << "0";
|
|
}
|
|
if (ps < 100) {
|
|
os << "0";
|
|
}
|
|
os << ps << "s";
|
|
}
|
|
else {
|
|
os << ss << "s";
|
|
}
|
|
}
|
|
return os;
|
|
}
|
|
|
|
//! print info about this mantaflow build, used eg by printBuildInfo in fluidsolver.cpp
|
|
std::string buildInfoString()
|
|
{
|
|
std::ostringstream infoStr;
|
|
#ifndef MANTAVERSION
|
|
# define MANTAVERSION "<unknown-version>"
|
|
#endif
|
|
infoStr << "mantaflow " << MANTAVERSION;
|
|
|
|
// os
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
infoStr << " win";
|
|
#endif
|
|
#ifdef __APPLE__
|
|
infoStr << " mac";
|
|
#endif
|
|
#ifdef LINUX
|
|
infoStr << " linux";
|
|
#endif
|
|
|
|
// 32/64 bit
|
|
if (sizeof(size_t) == 8)
|
|
infoStr << " 64bit";
|
|
else
|
|
infoStr << " 32bit";
|
|
|
|
// fp precision
|
|
#if FLOATINGPOINT_PRECISION == 2
|
|
infoStr << " fp2";
|
|
#else
|
|
infoStr << " fp1";
|
|
#endif
|
|
|
|
// other compile switches
|
|
#ifdef DEBUG
|
|
infoStr << " debug";
|
|
#endif
|
|
#ifdef OPENMP
|
|
infoStr << " omp";
|
|
#endif
|
|
|
|
// repository info (git commit id)
|
|
#ifndef MANTA_GIT_VERSION
|
|
# define MANTA_GIT_VERSION "<unknown-commit>"
|
|
#endif
|
|
infoStr << " " << MANTA_GIT_VERSION;
|
|
|
|
infoStr << " from " << __DATE__ << ", " << __TIME__;
|
|
return infoStr.str();
|
|
}
|
|
|
|
//! note - generic PYTHON helpers in fluidsolver.cpp , no python bindings here
|
|
|
|
} // namespace Manta
|