Fluid: Updated Mantaflow source files

Updated files include fixes for the mesh IO - read/write success was not propagated.
This commit is contained in:
Sebastián Barschkis 2020-07-21 15:22:21 +02:00
parent 727e569ac3
commit 6b6e2e742f
4 changed files with 87 additions and 86 deletions

@ -1,3 +1,3 @@
#define MANTA_GIT_VERSION "commit 78ecf1940765e45d8fc15b3304a622785a84939e"
#define MANTA_GIT_VERSION "commit 3370c2014ad7192041cb4fbed19ed74ae9725fb5"

@ -213,34 +213,36 @@ Mesh &Mesh::operator=(const Mesh &o)
return *this;
}
void Mesh::load(string name, bool append)
int Mesh::load(string name, bool append)
{
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 == ".gz") // assume bobj gz
readBobjFile(name, this, append);
return readBobjFile(name, this, append);
else if (ext == ".obj")
readObjFile(name, this, append);
return readObjFile(name, this, append);
else
errMsg("file '" + name + "' filetype not supported");
// dont always rebuild...
// rebuildCorners();
// rebuildLookup();
return 0;
}
void Mesh::save(string name)
int Mesh::save(string name)
{
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 == ".obj")
writeObjFile(name, this);
return writeObjFile(name, this);
else if (ext == ".gz")
writeBobjFile(name, this);
return writeBobjFile(name, this);
else
errMsg("file '" + name + "' filetype not supported");
return 0;
}
void Mesh::fromShape(Shape &shape, bool append)
@ -1379,30 +1381,32 @@ void Mesh::updateDataFields()
}
}
template<typename T> void MeshDataImpl<T>::load(string name)
template<typename T> int MeshDataImpl<T>::load(string name)
{
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 == ".uni")
readMdataUni<T>(name, this);
return readMdataUni<T>(name, this);
else if (ext == ".raw") // raw = uni for now
readMdataUni<T>(name, this);
return readMdataUni<T>(name, this);
else
errMsg("mesh data '" + name + "' filetype not supported for loading");
return 0;
}
template<typename T> void MeshDataImpl<T>::save(string name)
template<typename T> int MeshDataImpl<T>::save(string name)
{
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 == ".uni")
writeMdataUni<T>(name, this);
return writeMdataUni<T>(name, this);
else if (ext == ".raw") // raw = uni for now
writeMdataUni<T>(name, this);
return writeMdataUni<T>(name, this);
else
errMsg("mesh data '" + name + "' filetype not supported for saving");
return 0;
}
// specializations

@ -240,35 +240,8 @@ class Mesh : public PbClass {
}
}
void load(std::string name, bool append = false);
static PyObject *_W_2(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
Mesh *pbo = dynamic_cast<Mesh *>(Pb::objFromPy(_self));
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(pbo->getParent(), "Mesh::load", !noTiming);
PyObject *_retval = 0;
{
ArgLocker _lock;
std::string name = _args.get<std::string>("name", 0, &_lock);
bool append = _args.getOpt<bool>("append", 1, false, &_lock);
pbo->_args.copy(_args);
_retval = getPyNone();
pbo->load(name, append);
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "Mesh::load", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("Mesh::load", e.what());
return 0;
}
}
void fromShape(Shape &shape, bool append = false);
static PyObject *_W_3(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_2(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -294,34 +267,8 @@ class Mesh : public PbClass {
}
}
void save(std::string name);
static PyObject *_W_4(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
Mesh *pbo = dynamic_cast<Mesh *>(Pb::objFromPy(_self));
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(pbo->getParent(), "Mesh::save", !noTiming);
PyObject *_retval = 0;
{
ArgLocker _lock;
std::string name = _args.get<std::string>("name", 0, &_lock);
pbo->_args.copy(_args);
_retval = getPyNone();
pbo->save(name);
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "Mesh::save", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("Mesh::save", e.what());
return 0;
}
}
void advectInGrid(FlagGrid &flags, MACGrid &vel, int integrationMode);
static PyObject *_W_5(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_3(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -349,7 +296,7 @@ class Mesh : public PbClass {
}
void scale(Vec3 s);
static PyObject *_W_6(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_4(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -375,7 +322,7 @@ class Mesh : public PbClass {
}
void offset(Vec3 o);
static PyObject *_W_7(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_5(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -401,7 +348,7 @@ class Mesh : public PbClass {
}
void rotate(Vec3 thetas);
static PyObject *_W_8(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_6(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -427,7 +374,7 @@ class Mesh : public PbClass {
}
void computeVelocity(Mesh &oldMesh, MACGrid &vel);
static PyObject *_W_9(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
static PyObject *_W_7(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
@ -453,6 +400,58 @@ class Mesh : public PbClass {
}
}
//! file io
int load(std::string name, bool append = false);
static PyObject *_W_8(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
Mesh *pbo = dynamic_cast<Mesh *>(Pb::objFromPy(_self));
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(pbo->getParent(), "Mesh::load", !noTiming);
PyObject *_retval = 0;
{
ArgLocker _lock;
std::string name = _args.get<std::string>("name", 0, &_lock);
bool append = _args.getOpt<bool>("append", 1, false, &_lock);
pbo->_args.copy(_args);
_retval = toPy(pbo->load(name, append));
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "Mesh::load", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("Mesh::load", e.what());
return 0;
}
}
int save(std::string name);
static PyObject *_W_9(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
PbArgs _args(_linargs, _kwds);
Mesh *pbo = dynamic_cast<Mesh *>(Pb::objFromPy(_self));
bool noTiming = _args.getOpt<bool>("notiming", -1, 0);
pbPreparePlugin(pbo->getParent(), "Mesh::save", !noTiming);
PyObject *_retval = 0;
{
ArgLocker _lock;
std::string name = _args.get<std::string>("name", 0, &_lock);
pbo->_args.copy(_args);
_retval = toPy(pbo->save(name));
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "Mesh::save", !noTiming);
return _retval;
}
catch (std::exception &e) {
pbSetError("Mesh::save", e.what());
return 0;
}
}
void computeLevelset(LevelsetGrid &levelset, Real sigma, Real cutoff = -1.);
static PyObject *_W_10(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
@ -1564,7 +1563,7 @@ template<class T> class MeshDataImpl : public MeshDataBase {
}
//! file io
void save(const std::string name);
int save(const std::string name);
static PyObject *_W_41(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
@ -1577,8 +1576,7 @@ template<class T> class MeshDataImpl : public MeshDataBase {
ArgLocker _lock;
const std::string name = _args.get<std::string>("name", 0, &_lock);
pbo->_args.copy(_args);
_retval = getPyNone();
pbo->save(name);
_retval = toPy(pbo->save(name));
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "MeshDataImpl::save", !noTiming);
@ -1590,7 +1588,7 @@ template<class T> class MeshDataImpl : public MeshDataBase {
}
}
void load(const std::string name);
int load(const std::string name);
static PyObject *_W_42(PyObject *_self, PyObject *_linargs, PyObject *_kwds)
{
try {
@ -1603,8 +1601,7 @@ template<class T> class MeshDataImpl : public MeshDataBase {
ArgLocker _lock;
const std::string name = _args.get<std::string>("name", 0, &_lock);
pbo->_args.copy(_args);
_retval = getPyNone();
pbo->load(name);
_retval = toPy(pbo->load(name));
pbo->_args.check();
}
pbFinalizePlugin(pbo->getParent(), "MeshDataImpl::load", !noTiming);

@ -10,14 +10,14 @@ static const Pb::Register _R_12("Mesh", "Mesh", "PbClass");
template<> const char *Namify<Mesh>::S = "Mesh";
static const Pb::Register _R_13("Mesh", "Mesh", Mesh::_W_0);
static const Pb::Register _R_14("Mesh", "clear", Mesh::_W_1);
static const Pb::Register _R_15("Mesh", "load", Mesh::_W_2);
static const Pb::Register _R_16("Mesh", "fromShape", Mesh::_W_3);
static const Pb::Register _R_17("Mesh", "save", Mesh::_W_4);
static const Pb::Register _R_18("Mesh", "advectInGrid", Mesh::_W_5);
static const Pb::Register _R_19("Mesh", "scale", Mesh::_W_6);
static const Pb::Register _R_20("Mesh", "offset", Mesh::_W_7);
static const Pb::Register _R_21("Mesh", "rotate", Mesh::_W_8);
static const Pb::Register _R_22("Mesh", "computeVelocity", Mesh::_W_9);
static const Pb::Register _R_15("Mesh", "fromShape", Mesh::_W_2);
static const Pb::Register _R_16("Mesh", "advectInGrid", Mesh::_W_3);
static const Pb::Register _R_17("Mesh", "scale", Mesh::_W_4);
static const Pb::Register _R_18("Mesh", "offset", Mesh::_W_5);
static const Pb::Register _R_19("Mesh", "rotate", Mesh::_W_6);
static const Pb::Register _R_20("Mesh", "computeVelocity", Mesh::_W_7);
static const Pb::Register _R_21("Mesh", "load", Mesh::_W_8);
static const Pb::Register _R_22("Mesh", "save", Mesh::_W_9);
static const Pb::Register _R_23("Mesh", "computeLevelset", Mesh::_W_10);
static const Pb::Register _R_24("Mesh", "getLevelset", Mesh::_W_11);
static const Pb::Register _R_25("Mesh", "applyMeshToGrid", Mesh::_W_12);