Skip to content

Commit

Permalink
DEM restart for solid bcs
Browse files Browse the repository at this point in the history
  • Loading branch information
jmpearl committed May 13, 2024
1 parent ab6f928 commit c517fad
Show file tree
Hide file tree
Showing 14 changed files with 213 additions and 1 deletion.
29 changes: 29 additions & 0 deletions src/DEM/SolidBoundary/CircularPlaneSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"

#include "DEM/SolidBoundary/CircularPlaneSolidBoundary.hh"

#include <string>
using std::string;

namespace Spheral {

template<typename Dimension>
Expand Down Expand Up @@ -71,4 +76,28 @@ update(const double multiplier, const double t, const double dt) {
}


//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
CircularPlaneSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mPoint, pathName + "/point");
file.write(mNormal, pathName + "/normal");
file.write(mExtent, pathName + "/extent");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
CircularPlaneSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mPoint, pathName + "/point");
file.read(mNormal, pathName + "/normal");
file.read(mExtent, pathName + "/extent");
file.read(mVelocity, pathName + "/velocity");
}

}
4 changes: 4 additions & 0 deletions src/DEM/SolidBoundary/CircularPlaneSolidBoundary.hh
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ public:
const Vector& velocity() const;
void velocity(const Vector& value);

virtual std::string label() const { return "CircularPlaneSolidBoundary" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const override;
virtual void restoreState(const FileIO& file, const std::string& pathName) override;

protected:
//-------------------------- Protected Interface --------------------------//
Vector mPoint;
Expand Down
33 changes: 33 additions & 0 deletions src/DEM/SolidBoundary/ClippedSphereSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"
Expand All @@ -12,6 +14,9 @@

#include <cmath>

#include <string>
using std::string;

namespace Spheral {

template<typename Dimension>
Expand Down Expand Up @@ -106,4 +111,32 @@ setClipIntersectionRadius() {
mClipPoint = rcMag * mClipAxis + mCenter;
}

//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
ClippedSphereSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mCenter, pathName + "/center");
file.write(mRadius, pathName + "/radius");
file.write(mClipPoint, pathName + "/clipPoint");
file.write(mClipAxis, pathName + "/clipAxis");
file.write(mClipIntersectionRadius, pathName + "/clipIntersectionRadius");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
ClippedSphereSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mCenter, pathName + "/center");
file.read(mRadius, pathName + "/radius");
file.read(mClipPoint, pathName + "/clipPoint");
file.read(mClipAxis, pathName + "/clipAxis");
file.read(mClipIntersectionRadius, pathName + "/clipIntersectionRadius");
file.read(mVelocity, pathName + "/velocity");
}

}
4 changes: 4 additions & 0 deletions src/DEM/SolidBoundary/ClippedSphereSolidBoundary.hh
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public:
void velocity(const Vector& value);

void setClipIntersectionRadius();

virtual std::string label() const { return "ClippedSphereSolidBoundary" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const override;
virtual void restoreState(const FileIO& file, const std::string& pathName) override;
protected:
//-------------------------- Protected Interface --------------------------//
Vector mCenter;
Expand Down
31 changes: 31 additions & 0 deletions src/DEM/SolidBoundary/CylinderSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"

#include "DEM/SolidBoundary/CylinderSolidBoundary.hh"

#include <string>
using std::string;

namespace Spheral {

template<typename Dimension>
Expand Down Expand Up @@ -71,5 +76,31 @@ update(const double multiplier, const double t, const double dt) {
mPoint += multiplier*mVelocity;
}

//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
CylinderSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mPoint, pathName + "/point");
file.write(mAxis, pathName + "/axis");
file.write(mRadius, pathName + "/radius");
file.write(mLength, pathName + "/length");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
CylinderSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mPoint, pathName + "/point");
file.read(mAxis, pathName + "/axis");
file.read(mRadius, pathName + "/radius");
file.read(mLength, pathName + "/length");
file.read(mVelocity, pathName + "/velocity");
}


}
4 changes: 4 additions & 0 deletions src/DEM/SolidBoundary/CylinderSolidBoundary.hh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ public:
const Vector& velocity() const;
void velocity(const Vector& value);

virtual std::string label() const { return "CylinderSolidBoundary" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const override;
virtual void restoreState(const FileIO& file, const std::string& pathName) override;

protected:
//-------------------------- Protected Interface --------------------------//
Vector mPoint;
Expand Down
26 changes: 26 additions & 0 deletions src/DEM/SolidBoundary/InfinitePlaneSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"

#include "DEM/SolidBoundary/InfinitePlaneSolidBoundary.hh"

#include <string>
using std::string;

namespace Spheral {

template<typename Dimension>
Expand Down Expand Up @@ -61,5 +66,26 @@ update(const double multiplier, const double t, const double dt) {
mPoint += multiplier*mVelocity;
}

//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
InfinitePlaneSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mPoint, pathName + "/point");
file.write(mNormal, pathName + "/normal");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
InfinitePlaneSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mPoint, pathName + "/point");
file.read(mNormal, pathName + "/normal");
file.read(mVelocity, pathName + "/velocity");
}

}
4 changes: 4 additions & 0 deletions src/DEM/SolidBoundary/InfinitePlaneSolidBoundary.hh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ public:
const Vector& velocity() const;
void velocity(const Vector& value);

virtual std::string label() const { return "InfinitePlaneSolidBoundary" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const override;
virtual void restoreState(const FileIO& file, const std::string& pathName) override;

protected:
//-------------------------- Protected Interface --------------------------//
Vector mPoint;
Expand Down
29 changes: 29 additions & 0 deletions src/DEM/SolidBoundary/RectangularPlaneSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"
#include "DEM/SolidBoundary/RectangularPlaneSolidBoundary.hh"

#include <string>
using std::string;

namespace Spheral {

template<typename Dimension>
Expand Down Expand Up @@ -62,5 +67,29 @@ update(const double multiplier, const double t, const double dt) {
mPoint += multiplier*mVelocity;
}

//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
RectangularPlaneSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mPoint, pathName + "/point");
file.write(mBasis, pathName + "/basis");
file.write(mExtent, pathName + "/extent");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
RectangularPlaneSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mPoint, pathName + "/point");
file.read(mBasis, pathName + "/basis");
file.read(mExtent, pathName + "/extent");
file.read(mVelocity, pathName + "/velocity");
}


}
4 changes: 4 additions & 0 deletions src/DEM/SolidBoundary/RectangularPlaneSolidBoundary.hh
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ public:
const Vector& velocity() const;
void velocity(const Vector& value);

virtual std::string label() const { return "RectangularPlaneSolidBoundary" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const override;
virtual void restoreState(const FileIO& file, const std::string& pathName) override;

protected:
//-------------------------- Protected Interface --------------------------//
Vector mPoint;
Expand Down
5 changes: 4 additions & 1 deletion src/DEM/SolidBoundary/SolidBoundaryBase.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
namespace Spheral {
template<typename Dimension>
SolidBoundaryBase<Dimension>::
SolidBoundaryBase(){}
SolidBoundaryBase():
mUniqueIndex(-1),
mRestart(registerWithRestart(*this)){
}
template<typename Dimension>
SolidBoundaryBase<Dimension>::
~SolidBoundaryBase(){}
Expand Down
10 changes: 10 additions & 0 deletions src/DEM/SolidBoundary/SolidBoundaryBase.hh
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,16 @@
#ifndef __Spheral_SolidBoundaryBase_hh__
#define __Spheral_SolidBoundaryBase_hh__

#include "DataOutput/registerWithRestart.hh"

#include <string>

namespace Spheral {

template<typename Dimension> class State;
template<typename Dimension> class StateDerivatives;
template<typename Dimension> class DataBase;
class FileIO;

template<typename Dimension>
class SolidBoundaryBase {
Expand Down Expand Up @@ -58,10 +61,17 @@ public:
void uniqueIndex(int uId);
int uniqueIndex() const;

// restartability will default to no-op
virtual std::string label() const { return "SolidBoundaryBase" ; }
virtual void dumpState(FileIO& file, const std::string& pathName) const {};
virtual void restoreState(const FileIO& file, const std::string& pathName) {};

private:
//--------------------------- Public Interface ---------------------------//
int mUniqueIndex;

RestartRegistrationType mRestart;

};
}

Expand Down
27 changes: 27 additions & 0 deletions src/DEM/SolidBoundary/SphereSolidBoundary.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@
// J.M. Pearl 2023
//----------------------------------------------------------------------------//

#include "FileIO/FileIO.hh"

#include "DataBase/DataBase.hh"
#include "DataBase/State.hh"
#include "DataBase/StateDerivatives.hh"

#include "DEM/SolidBoundary/SphereSolidBoundary.hh"

#include <cmath>
#include <string>
using std::string;

namespace Spheral {

Expand Down Expand Up @@ -70,5 +74,28 @@ update(const double multiplier, const double t, const double dt) {
mCenter += multiplier*mVelocity;
}

//------------------------------------------------------------------------------
// Restart
//------------------------------------------------------------------------------
template<typename Dimension>
void
SphereSolidBoundary<Dimension>::
dumpState(FileIO& file, const string& pathName) const {
file.write(mAngularVelocity, pathName + "/omega");
file.write(mCenter, pathName + "/center");
file.write(mRadius, pathName + "/radius");
file.write(mVelocity, pathName + "/velocity");
}


template<typename Dimension>
void
SphereSolidBoundary<Dimension>::
restoreState(const FileIO& file, const string& pathName) {
file.read(mAngularVelocity, pathName + "/omega");
file.read(mCenter, pathName + "/center");
file.read(mRadius, pathName + "/radius");
file.read(mVelocity, pathName + "/velocity");
}

}
Loading

0 comments on commit c517fad

Please sign in to comment.