Files
test2/extern/mantaflow/preprocessed/fileio/mantaio.cpp
Sebastián Barschkis 9ad828dbad Fluid: Updated Mantaflow source files
Includes improvements for the file IO. Namely, more meta data will be written from now on.

This change is required to prevent IO issues (e.g. T84649) that arised through the use of sparse grids caching (introduced in 2.92).
2021-02-02 17:46:48 +01:00

168 lines
5.3 KiB
C++

// DO NOT EDIT !
// This file is generated using the MantaFlow preprocessor (prep generate).
/******************************************************************************
*
* MantaFlow fluid solver framework
* Copyright 2020 Sebastian Barschkis, 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
*
* General functions that make use of functions from other io files.
*
******************************************************************************/
#include "mantaio.h"
using namespace std;
namespace Manta {
int load(const string &name, std::vector<PbClass *> &objects, float worldSize = 1.0)
{
if (name.find_last_of('.') == string::npos)
errMsg("file '" + name + "' does not have an extension");
string ext = name.substr(name.find_last_of('.'));
if (ext == ".raw")
return readGridsRaw(name, &objects);
else if (ext == ".uni")
return readGridsUni(name, &objects);
else if (ext == ".vol")
return readGridsVol(name, &objects);
if (ext == ".vdb")
return readObjectsVDB(name, &objects, worldSize);
else if (ext == ".npz")
return readGridsNumpy(name, &objects);
else if (ext == ".txt")
return readGridsTxt(name, &objects);
else
errMsg("file '" + name + "' filetype not supported");
return 0;
}
static PyObject *_W_0(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
FluidSolver *parent = _args.obtainParent();
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(parent, "load", !noTiming);
PyObject *_retval = nullptr;
{
ArgLocker _lock;
const string &name = _args.get<string>("name", 0, &_lock);
std::vector<PbClass *> &objects = *_args.getPtr<std::vector<PbClass *>>(
"objects", 1, &_lock);
float worldSize = _args.getOpt<float>("worldSize", 2, 1.0, &_lock);
_retval = toPy(load(name, objects, worldSize));
_args.check();
}
pbFinalizePlugin(parent, "load", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("load", e.what());
return 0;
}
}
static const Pb::Register _RP_load("", "load", _W_0);
extern "C" {
void PbRegister_load()
{
KEEP_UNUSED(_RP_load);
}
}
int save(const string &name,
std::vector<PbClass *> &objects,
float worldSize = 1.0,
bool skipDeletedParts = false,
int compression = COMPRESSION_ZIP,
bool precisionHalf = true,
int precision = PRECISION_HALF,
float clip = 1e-4,
const Grid<Real> *clipGrid = nullptr,
const bool meta = false)
{
if (!precisionHalf) {
debMsg("Warning: precisionHalf argument is deprecated. Please use precision level instead", 0);
precision = PRECISION_HALF; // for backwards compatibility
}
if (name.find_last_of('.') == string::npos)
errMsg("file '" + name + "' does not have an extension");
string ext = name.substr(name.find_last_of('.'));
if (ext == ".raw")
return writeGridsRaw(name, &objects);
else if (ext == ".uni")
return writeGridsUni(name, &objects);
else if (ext == ".vol")
return writeGridsVol(name, &objects);
if (ext == ".vdb")
return writeObjectsVDB(
name, &objects, worldSize, skipDeletedParts, compression, precision, clip, clipGrid, meta);
else if (ext == ".npz")
return writeGridsNumpy(name, &objects);
else if (ext == ".txt")
return writeGridsTxt(name, &objects);
else
errMsg("file '" + name + "' filetype not supported");
return 0;
}
static PyObject *_W_1(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
FluidSolver *parent = _args.obtainParent();
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(parent, "save", !noTiming);
PyObject *_retval = nullptr;
{
ArgLocker _lock;
const string &name = _args.get<string>("name", 0, &_lock);
std::vector<PbClass *> &objects = *_args.getPtr<std::vector<PbClass *>>(
"objects", 1, &_lock);
float worldSize = _args.getOpt<float>("worldSize", 2, 1.0, &_lock);
bool skipDeletedParts = _args.getOpt<bool>("skipDeletedParts", 3, false, &_lock);
int compression = _args.getOpt<int>("compression", 4, COMPRESSION_ZIP, &_lock);
bool precisionHalf = _args.getOpt<bool>("precisionHalf", 5, true, &_lock);
int precision = _args.getOpt<int>("precision", 6, PRECISION_HALF, &_lock);
float clip = _args.getOpt<float>("clip", 7, 1e-4, &_lock);
const Grid<Real> *clipGrid = _args.getPtrOpt<Grid<Real>>("clipGrid", 8, nullptr, &_lock);
const bool meta = _args.getOpt<bool>("meta", 9, false, &_lock);
_retval = toPy(save(name,
objects,
worldSize,
skipDeletedParts,
compression,
precisionHalf,
precision,
clip,
clipGrid,
meta));
_args.check();
}
pbFinalizePlugin(parent, "save", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("save", e.what());
return 0;
}
}
static const Pb::Register _RP_save("", "save", _W_1);
extern "C" {
void PbRegister_save()
{
KEEP_UNUSED(_RP_save);
}
}
} // namespace Manta