13 #ifndef __LATTICEMASTER_H
14 #define __LATTICEMASTER_H
72 #include <boost/filesystem/path.hpp>
170 void runRunnables(RunnableVector::iterator begin, RunnableVector::iterator end);
175 TriMeshDataPair
readTriMesh(
const std::string &fileName,
int);
176 TriMeshDataPair
readTriMesh(
const std::string &fileName);
190 return std::string(PACKAGE_VERSION);
240 const std::string &meshName,
241 const MeshNodeDataVector &mndVector,
242 const MeshTriDataVector &mtdVector
244 void addMesh2D(
const std::string&,
const std::string&,
int);
246 void addTriMesh(
const std::string &meshName,
const std::string &fileName);
260 void addExIG(
const std::string&,
const std::string&);
265 void addRotBondedIG(
int,
const std::string&,
double,
double,
double,
double,
double,
double,
double,
double,
bool,
bool,
double);
364 void addScalarInteractionSaveField(
const std::string&,
const std::string&,
const std::string&,
const std::string&,
const std::string&,
int,
int,
int,
bool checked=
false);
366 void addVectorInteractionSaveField(
const std::string&,
const std::string&,
const std::string&,
const std::string&,
const std::string&,
int,
int,
int,
bool checked=
false);
367 void addTaggedScalarInteractionSaveField(
const std::string&,
const std::string&,
const std::string&,
const std::string&,
const std::string&,
int,
int,
int,
int,
int,
bool);
368 void addTaggedScalarParticleDistributionSaver(
const std::string&,
const std::string&,
const std::string&,
int,
int,
int,
int,
int,
int,
double,
double,
int);
371 void addVectorWallField(
const string&,
const string&,vector<string>,
const string&,
int,
int,
int);
387 const std::string &fileNamePrefix,
407 const std::string &fileNamePrefix,
418 const char *particleType,
424 const char *particleType,
501 const Vec3 &minBBoxPt,
502 const Vec3 &maxBBoxPt,
525 template <
class TmplParticle>
552 template <
class TmplIterator,
class TmplParticle>
563 template <
class TmplIterator>
567 template <
typename TmplVisitor>
570 template <
typename TmplVisitor>
573 template <
typename TmplVisitor>
576 template <
typename TmplVisitor>
578 const string &meshName,
584 template <
typename TmplVisitor,
typename TmplParticle>
586 const IdVector &particleIdVector,
590 template <
typename TmplVisitor>
591 void visitParticles(
const IdVector &particleIdVector, TmplVisitor &visitor);
606 template<
typename TmplParticle>
void moveTaggedParticlesBy(int particleTag, const Vec3 &displacement)
Definition: LatticeMaster.cpp:861
bool m_geometry_is_initialized
Definition: LatticeMaster.h:143
CheckPointController * m_pSnapShotController
Definition: LatticeMaster.h:132
void setProcessDims(const esys::lsm::CLatticeParam::ProcessDims &dims)
Definition: LatticeMaster.cpp:296
void setParticleAngVel(int, const Vec3 &)
Definition: LatticeMaster.cpp:1186
void addVectorTriangleSaveField(const string &, const string &, const string &, const string &, int, int, int)
Definition: LatticeMaster.cpp:1865
void loadCheckPointData(const std::string &checkPointFileName)
Definition: LatticeMaster.cpp:491
Definition: RankAndComm.h:19
int m_max_ts
Definition: LatticeMaster.h:148
void visitMeshFaceReferences(const string &meshName)
Definition: LatticeMaster.hpp:81
void addBondedMesh2DIG(const BMesh2DIP &, const MeshTagBuildPrms &)
Definition: LatticeMaster.cpp:2973
TML_Comm m_tml_global_comm
Definition: LatticeMaster.h:160
Vec3 m_init_min_pt
Definition: LatticeMaster.h:166
RunnableVector & getPreTimeStepRunnableVector()
Definition: LatticeMaster.h:447
void setParticleDensity(int tag, int mask, double rho)
Definition: LatticeMaster.cpp:1165
void runRunnables(RunnableVector::iterator begin, RunnableVector::iterator end)
Definition: LatticeMaster.cpp:2039
vector< AFieldMaster * > m_save_fields
Definition: LatticeMaster.h:138
MPI_Group m_mpi_local_group
Definition: LatticeMaster.h:162
bool m_first_time
Definition: LatticeMaster.h:154
void setTaggedParticleVel(int tag, const Vec3 &)
Definition: LatticeMaster.cpp:1145
int findParticleNearestTo(const Vec3 &pos)
Definition: LatticeMaster.cpp:983
void setWallNormal(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1243
void addBondedIG(const CBondedIGP &)
Definition: LatticeMaster.cpp:2240
MpiRankAndComm getGlobalRankAndComm() const
Definition: LatticeMaster.h:179
Interaction parameters for frictional interaction.
Definition: FrictionInteraction.h:27
Interaction parameters for bonded interaction.
Definition: BondedInteraction.h:39
Vec3 getSphereBodyPosn(const std::string &)
Definition: LatticeMaster.cpp:778
Interaction group parameters for CRotElasticInteractionGroups.
Definition: RotElasticInteraction.h:24
void addConnections(TmplIterator &it)
Definition: LatticeMaster.hpp:344
RunnableVector m_postRunnableVector
Definition: LatticeMaster.h:158
RunnableVector m_preRunnableVector
Definition: LatticeMaster.h:157
std::string m_timingFileName
Definition: LatticeMaster.h:129
void visitParticles(const IdVector &particleIdVector, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:228
void searchNeighbors(bool)
Definition: LatticeMaster.cpp:1328
MpiWTimers * m_pTimers
Definition: LatticeMaster.h:130
double m_total_time
Definition: LatticeMaster.h:150
void oneStep()
Definition: LatticeMaster.cpp:1298
void performCheckPoints(const std::string &fileNamePrefix, int beginTime, int endTime, int timeInterval, int precision)
Definition: LatticeMaster.cpp:1669
Vec3 getWallPosn(const std::string &)
Definition: LatticeMaster.cpp:675
Vec3 m_init_max_pt
Definition: LatticeMaster.h:167
void setNumSteps(int s)
Definition: LatticeMaster.cpp:180
Definition: BodyForceGroup.h:26
void moveTaggedNodesBy(const std::string &, int, const Vec3 &)
Definition: LatticeMaster.cpp:917
Definition: RotThermFricInteraction.h:34
void addScalarTriangleSaveField(const string &, const string &, const string &, const string &, int, int, int)
Definition: LatticeMaster.cpp:1898
void moveSphereBodyBy(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1224
Interaction parameters for frictional interaction between rotational particles.
Definition: RotFricInteraction.h:37
void addScalarParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int)
field saving functions
Definition: LatticeMaster.cpp:1399
std::pair< MeshNodeDataVector, MeshTriDataVector > TriMeshDataPair
Definition: LatticeMaster.h:126
void moveSingleNodeBy(const std::string &, int, const Vec3 &)
Definition: LatticeMaster.cpp:896
void setParticleVel(int, const Vec3 &)
Definition: LatticeMaster.cpp:1125
double getTimeStepSize() const
Definition: LatticeMaster.h:196
void addTaggedVectorParticleSaveFieldWT(const std::string &, const std::string &, const std::string &, int, int, int, int, int, const MaxTrigParams &)
Definition: LatticeMaster.cpp:1607
std::vector< ParticleIdPair > ParticleIdPairVector
Definition: LatticeMaster.h:123
Definition: GeometryInfo.h:33
std::vector< MeshTriData > MeshTriDataVector
Definition: LatticeMaster.h:125
std::vector< unsigned int > ProcessDims
Definition: LatticeParam.h:32
Definition: BodyForceGroup.h:67
CLatticeMaster()
Definition: LatticeMaster.cpp:85
Interaction parameters for adhesive frictional interaction.
Definition: AdhesiveFriction.h:21
void translateMeshBy(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:937
void do2dCalculations(bool do2d)
Definition: LatticeMaster.cpp:215
Definition: CheckPointable.cpp:16
Definition: MaxTrigger.h:24
void addPostTimeStepRunnable(esys::lsm::Runnable &runnable)
Definition: LatticeMaster.cpp:2034
void addPairIG(const CElasticIGP &prms)
Definition: LatticeMaster.cpp:2458
~CLatticeMaster()
Definition: LatticeMaster.cpp:115
const std::string & getTimingFileName() const
Definition: LatticeMaster.cpp:210
TriMeshDataPair readTriMesh(const std::string &fileName, int)
Definition: LatticeMaster.cpp:3123
void setupWorkers(int numWorkers)
Definition: LatticeMaster.cpp:145
void readAndDistributeMesh2D(const std::string &, int)
Definition: LatticeMaster.cpp:3219
const std::string & getParticleType() const
Definition: LatticeMaster.h:352
void runPostRunnables()
Definition: LatticeMaster.cpp:2055
Interaction group parameters for Hertzian elastic interactions.
Definition: HertzianElasticInteraction.h:24
void readGeometryFile(const std::string &fileName)
Definition: LatticeMaster.cpp:460
int m_t
Definition: LatticeMaster.h:151
void getSlaveSpatialDomains()
Definition: LatticeMaster.cpp:408
Interaction group parameters for CBWallInteractionGroups.
Definition: BWallInteractionGroup.h:38
Definition: ABCDampingIGP.h:23
int m_global_rank
Definition: LatticeMaster.h:146
int m_global_size
Definition: LatticeMaster.h:147
void setConsoleFilename(const string &)
Definition: LatticeMaster.cpp:3525
std::vector< int > IntVector
Definition: LatticeMaster.h:114
void addPreTimeStepRunnable(esys::lsm::Runnable &runnable)
Definition: LatticeMaster.cpp:2029
double m_dbl_NaN
Definition: LatticeMaster.h:165
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:32
double m_dt
Definition: LatticeMaster.h:152
void addVectorParticleSaveFieldWT(const std::string &, const std::string &, const std::string &, int, int, int, const MaxTrigParams &)
Definition: LatticeMaster.cpp:1576
void particlesMinMax(const TmplParticle &particle)
Definition: LatticeMaster.hpp:402
void addExIG(const std::string &, const std::string &)
Definition: LatticeMaster.cpp:3429
std::vector< int > IdVector
Definition: LatticeMaster.h:582
Definition: Runnable.h:23
void tagParticleNearestTo(int, int, const Vec3 &)
Definition: LatticeMaster.cpp:960
Vec3 getWallForce(const std::string &)
Definition: LatticeMaster.cpp:704
void addWallIG(const CEWallIGP &)
Definition: LatticeMaster.cpp:562
bool m_isInitialized
Definition: LatticeMaster.h:153
void visitParticlesOfType(const IdVector &particleIdVector, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:185
void runOneStep()
Definition: LatticeMaster.cpp:2066
void addSphereBody(const std::string &, const Vec3 &, const double &)
Definition: LatticeMaster.cpp:739
void addMesh2D(const std::string &, const std::string &, int)
Definition: LatticeMaster.cpp:3196
void addTriMeshIG(const ETriMeshIP &prms)
Definition: LatticeMaster.cpp:2848
void visitTriMeshFaceForce(const string &meshName, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:147
Definition: BMesh2DIP.h:16
void moveWallBy(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1205
std::string m_particle_type
Definition: LatticeMaster.h:155
void addTaggedWallIG(const CEWallIGP &, int, int)
Definition: LatticeMaster.cpp:654
void makeLattice(const char *particleType, double gridSize, double verletDist)
initialization functions
Definition: LatticeMaster.cpp:239
void addCappedBondedIG(int, const std::string &, double, double, double)
Definition: LatticeMaster.cpp:2272
void addShortBondedIG(int, const std::string &, double, double)
Definition: LatticeMaster.cpp:2306
Interaction group parameters for CElasticInteractionGroups.
Definition: ElasticInteraction.h:24
const RunnableVector & getPostTimeStepRunnableVector() const
Definition: LatticeMaster.h:461
esys::lsm::IntVector m_particle_dimensions
Definition: LatticeMaster.h:168
void addTaggedVectorParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int, int, int)
Definition: LatticeMaster.cpp:1548
void runPreRunnables()
Definition: LatticeMaster.cpp:2047
void addParticles(TmplIterator &it)
Definition: LatticeMaster.hpp:262
esys::lsm::IntVector getParticleDimensions()
Definition: LatticeMaster.h:479
Vec3 getParticlePosn(int particleId)
Definition: LatticeMaster.cpp:1033
int getNumParticles()
Definition: LatticeMaster.cpp:2414
GeometryInfo m_geo_info
Definition: LatticeMaster.h:141
void performCheckPointsThroughMaster(const std::string &fileNamePrefix, int beginTime, int endTime, int timeInterval, int precision)
Definition: LatticeMaster.cpp:1699
map< int, ConnIdVector > m_temp_conn
Definition: LatticeMaster.h:137
Interaction group parameters for CLocalDampingGroup.
Definition: LocalDampingIGP.h:27
void addTaggedScalarParticleDistributionSaver(const std::string &, const std::string &, const std::string &, int, int, int, int, int, int, double, double, int)
Definition: LatticeMaster.cpp:1490
Definition: CheckPointController.h:31
Interaction group parameters for CDampingGroup.
Definition: DampingIGP.h:27
abstract base class for communicator
Definition: comm.h:46
void setTimingFileName(const std::string &fileName)
Definition: LatticeMaster.cpp:205
void addSphereBodyIG(const CESphereBodyIGP &)
Definition: LatticeMaster.cpp:759
void readGeometry(const std::string &fileName)
Definition: LatticeMaster.hpp:29
void runEnd()
Definition: LatticeMaster.cpp:2003
void addRotThermBondedIG(const CRotThermBondedIGP &prms)
Definition: LatticeMaster.cpp:2380
void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshTagBuildPrms &buildPrms)
Definition: LatticeMaster.cpp:2921
void setVelocityOfWall(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1282
CheckPointController * m_pCheckPointController
Definition: LatticeMaster.h:131
void addTaggedScalarParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int, int, int)
Definition: LatticeMaster.cpp:1456
RunnableVector & getPostTimeStepRunnableVector()
Definition: LatticeMaster.h:469
std::string getLsmVersion() const
Definition: LatticeMaster.h:188
void getInitMinMaxPt(Vec3 &initMinPt, Vec3 &initMaxPt)
Definition: LatticeMaster.cpp:312
Definition: BTriMeshIP.h:18
void moveSingleParticleTo(int particleId, const Vec3 &posn)
Definition: LatticeMaster.cpp:876
void addVectorWallField(const string &, const string &, vector< string >, const string &, int, int, int)
Definition: LatticeMaster.cpp:1635
void createTriMesh(const std::string &meshName, const MeshNodeDataVector &mndVector, const MeshTriDataVector &mtdVector)
Definition: LatticeMaster.cpp:3162
void addScalarInteractionSaveField(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &, int, int, int, bool checked=false)
Definition: LatticeMaster.cpp:1768
void addTaggedScalarInteractionSaveField(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &, int, int, int, int, int, bool)
Definition: LatticeMaster.cpp:1966
void addScalarHistoryInteractionSaveField(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &, int, int, int)
Definition: LatticeMaster.cpp:1833
Interaction group parameters for CESphereBodyInteractionGroups.
Definition: ESphereBodyInteractionGroup.h:32
const esys::lsm::CLatticeParam::ProcessDims & getProcessDims() const
Definition: LatticeMaster.cpp:301
void addVectorParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int)
Definition: LatticeMaster.cpp:1518
void addRotBondedIG(int, const std::string &, double, double, double, double, double, double, double, double, bool, bool, double)
Definition: LatticeMaster.cpp:2332
void updateInteractions()
Definition: LatticeMaster.cpp:1376
int getSteps() const
Definition: LatticeMaster.h:263
std::pair< int, int > ParticleIdPair
Definition: LatticeMaster.h:122
int getNumSteps() const
Definition: LatticeMaster.h:262
Interaction group parameters for CSoftBWallInteractionGroups.
Definition: SoftBWallInteractionGroup.h:31
void addTriMesh(const std::string &meshName, const std::string &fileName)
Definition: LatticeMaster.cpp:3047
Vec3 getSphereBodyForce(const std::string &)
Definition: LatticeMaster.cpp:807
void applyForceToWall(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1262
std::vector< int > ConnIdVector
Definition: LatticeMaster.h:136
void addDamping(const CDampingIGP &dampingIGP)
Definition: LatticeMaster.cpp:3362
int getTimeStep() const
Definition: LatticeMaster.h:195
void runInit()
Definition: LatticeMaster.cpp:1987
Definition: LatticeMaster.h:118
void addMesh2DIG(const ETriMeshIP &prms)
Definition: LatticeMaster.cpp:2875
Interaction group parameters for Hertzian viscoelastic interactions with friction.
Definition: HertzianViscoElasticFrictionInteraction.h:27
void initializeConsole(const string &, int)
Definition: LatticeMaster.cpp:3555
std::vector< MeshNodeData > MeshNodeDataVector
Definition: LatticeMaster.h:124
void setParticleNonRot(int)
Definition: LatticeMaster.cpp:1090
std::vector< esys::lsm::Runnable * > RunnableVector
Definition: LatticeMaster.h:121
void readAndDistributeTriMesh(const std::string &, const std::string &, int)
Definition: LatticeMaster.cpp:3076
void visitMesh2dEdgeStress(const string &meshName, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:112
Definition: RotThermBondedInteraction.h:34
void run()
Definition: LatticeMaster.cpp:2195
void applyForceToSphereBody(const std::string &, const Vec3 &)
Interaction parameters for frictional interaction with a fractal distribution of the coefficient of f...
Definition: FractalFriction.h:25
MPI_Comm m_local_comm
Definition: LatticeMaster.h:161
Interaction group parameters for Hertzian viscoelastic interactions.
Definition: HertzianViscoElasticInteraction.h:24
const RunnableVector & getPreTimeStepRunnableVector() const
Definition: LatticeMaster.h:439
bool m_bbx_has_been_set
Definition: LatticeMaster.h:142
void addWall(const std::string &, const Vec3 &, const Vec3 &)
Definition: LatticeMaster.cpp:540
void visitMesh2dNodeReferences(const string &meshName, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:87
void setConsoleBuffered(unsigned int)
Definition: LatticeMaster.cpp:3539
int getNumWorkerProcesses() const
Definition: LatticeMaster.cpp:175
esys::lsm::CLatticeParam::ProcessDims m_processDims
Definition: LatticeMaster.h:133
Definition: BodyForceGroup.h:50
void saveTimingDataToFile(const std::string &fileNamePrefix)
Definition: LatticeMaster.cpp:187
int m_center_id
Definition: LatticeMaster.h:149
void initSnapShotController(const std::string &, int, int, int)
Definition: LatticeMaster.cpp:1732
Definition: BTriMeshIP.h:75
MPI_Comm m_global_comm
Definition: LatticeMaster.h:161
void addTaggedPairIG(const CRotFrictionIGP &prms, int, int, int, int)
Definition: LatticeMaster.cpp:2638
Interaction group parameters for CBWallInteractionGroups.
Definition: ViscWallIG.h:32
Interaction group parameters for Linear Dashpot interactions.
Definition: LinearDashpotInteraction.h:24
void moveParticleTo(int particleTag, const Vec3 &posn)
Definition: LatticeMaster.cpp:841
void setVerbosity(int)
Definition: LatticeMaster.cpp:3511
void init()
Definition: LatticeMaster.cpp:136
void saveTimingData()
Definition: LatticeMaster.cpp:2014
void setTimeStepSize(double dt)
Definition: LatticeMaster.cpp:285
bool checkNeighbors()
Definition: LatticeMaster.cpp:1351
void addSingleIG(const esys::lsm::GravityIGP &gravityIGP)
Definition: LatticeMaster.cpp:3278
void removeIG(const std::string &)
Definition: LatticeMaster.cpp:2821
Definition: BTriMeshIP.h:62
void setParticleNonDynamic(int)
Definition: LatticeMaster.cpp:1073
void addVectorInteractionSaveField(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &, int, int, int, bool checked=false)
Definition: LatticeMaster.cpp:1932
Definition: ETriMeshIP.h:17
void setParticleNonTrans(int)
Definition: LatticeMaster.cpp:1107
void setSpatialDomain(const Vec3 &minBBoxPt, const Vec3 &maxBBoxPt)
Definition: LatticeMaster.cpp:324
Definition: RotThermElasticInteraction.h:23