Merge pull request #147 from PhasicFlow/develop

bug fix for memory error in PhasicFlowPlus-fluid interaction
This commit is contained in:
Hamidreza Norouzi 2025-01-04 15:49:27 +03:30 committed by GitHub
commit f169e3fc89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 71 additions and 56 deletions

View File

@ -21,42 +21,46 @@ Licence:
#include "grainFluidParticles.hpp" #include "grainFluidParticles.hpp"
#include "grainFluidParticlesKernels.hpp" #include "grainFluidParticlesKernels.hpp"
void pFlow::grainFluidParticles::checkHostMemory()
{
if(fluidForce_.size()!=fluidForceHost_.size())
{
resizeNoInit(fluidForceHost_, fluidForce_.size());
resizeNoInit(fluidTorqueHost_, fluidTorque_.size());
}
// copy the data (if required) from device to host
courseGrainFactorHost_ = coarseGrainFactor().hostView();
}
pFlow::grainFluidParticles::grainFluidParticles( pFlow::grainFluidParticles::grainFluidParticles(
systemControl &control, systemControl &control,
const property& prop const property &prop)
) : grainParticles(control, prop),
:
grainParticles(control, prop),
fluidForce_( fluidForce_(
objectFile( objectFile(
"fluidForce", "fluidForce",
"", "",
objectFile::READ_IF_PRESENT, objectFile::READ_IF_PRESENT,
objectFile::WRITE_ALWAYS objectFile::WRITE_ALWAYS),
),
dynPointStruct(), dynPointStruct(),
zero3 zero3),
),
fluidTorque_( fluidTorque_(
objectFile( objectFile(
"fluidTorque", "fluidTorque",
"", "",
objectFile::READ_IF_PRESENT, objectFile::READ_IF_PRESENT,
objectFile::WRITE_NEVER objectFile::WRITE_NEVER),
),
dynPointStruct(), dynPointStruct(),
zero3 zero3)
) {
{} checkHostMemory();
}
bool pFlow::grainFluidParticles::beforeIteration() bool pFlow::grainFluidParticles::beforeIteration()
{ {
grainParticles::beforeIteration(); grainParticles::beforeIteration();
checkHostMemory();
// copy the data (if required) from device to host
courseGrainFactorHost_ = coarseGrainFactor().hostView();
return true; return true;
} }

View File

@ -53,6 +53,9 @@ protected:
hostViewType1D<real> courseGrainFactorHost_; hostViewType1D<real> courseGrainFactorHost_;
void checkHostMemory();
public: public:
/// construct from systemControl and property /// construct from systemControl and property

View File

@ -21,38 +21,44 @@ Licence:
#include "sphereFluidParticles.hpp" #include "sphereFluidParticles.hpp"
#include "sphereFluidParticlesKernels.hpp" #include "sphereFluidParticlesKernels.hpp"
void pFlow::sphereFluidParticles::checkHostMemory()
{
if(fluidForce_.size()!=fluidForceHost_.size())
{
resizeNoInit(fluidForceHost_, fluidForce_.size());
resizeNoInit(fluidTorqueHost_, fluidTorque_.size());
}
}
pFlow::sphereFluidParticles::sphereFluidParticles( pFlow::sphereFluidParticles::sphereFluidParticles(
systemControl &control, systemControl &control,
const property& prop const property &prop)
) : sphereParticles(control, prop),
:
sphereParticles(control, prop),
fluidForce_( fluidForce_(
objectFile( objectFile(
"fluidForce", "fluidForce",
"", "",
objectFile::READ_IF_PRESENT, objectFile::READ_IF_PRESENT,
objectFile::WRITE_ALWAYS objectFile::WRITE_ALWAYS),
),
dynPointStruct(), dynPointStruct(),
zero3 zero3),
),
fluidTorque_( fluidTorque_(
objectFile( objectFile(
"fluidTorque", "fluidTorque",
"", "",
objectFile::READ_IF_PRESENT, objectFile::READ_IF_PRESENT,
objectFile::WRITE_NEVER objectFile::WRITE_NEVER),
),
dynPointStruct(), dynPointStruct(),
zero3 zero3)
) {
{} checkHostMemory();
}
bool pFlow::sphereFluidParticles::beforeIteration() bool pFlow::sphereFluidParticles::beforeIteration()
{ {
sphereParticles::beforeIteration(); sphereParticles::beforeIteration();
checkHostMemory();
return true; return true;
} }

View File

@ -51,6 +51,8 @@ protected:
hostViewType1D<realx3> fluidTorqueHost_; hostViewType1D<realx3> fluidTorqueHost_;
void checkHostMemory();
/*void zeroFluidForce_H() /*void zeroFluidForce_H()
{ {
fluidForce_.fillHost(zero3); fluidForce_.fillHost(zero3);