ESyS-Particle  2.3.2
LatticeMaster.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 #ifndef __LATTICEMASTER_H
14 #define __LATTICEMASTER_H
15 
16 //--- Project includes ---
17 
18 #include "Parallel/mpibuf.h"
19 #include "Parallel/mpivbuf.h"
20 #include "Parallel/LatticeParam.h"
21 #include "Parallel/RankAndComm.h"
23 
24 #ifdef HAVE_CONFIG_H
25 #include "config.h"
26 #endif
27 
28 #include "Foundation/console.h"
29 #include "Foundation/Runnable.h"
30 
31 #include "Fields/FieldMaster.h"
32 #include "Fields/MaxTrigger.h"
33 
34 #include "Geometry/GeometryInfo.h"
35 
37 
38 #include "Model/Damping.h"
39 #include "Model/LocalDamping.h"
40 #include "Model/ABCDampingIGP.h"
41 #include "Model/Particle.h"
42 #include "Model/RotParticle.h"
43 #include "Model/RotParticleVi.h"
44 #include "Model/RotThermParticle.h"
47 #include "Model/FractalFriction.h"
48 #include "Model/AdhesiveFriction.h"
53 #include "Model/MeshData.h"
54 #include "Model/ETriMeshIP.h"
55 #include "Model/BTriMeshIP.h"
56 #include "Model/BMesh2DIP.h"
65 #include "Model/BodyForceGroup.h"
68 #include "Model/ViscWallIG.h"
71 
72 #include <boost/filesystem/path.hpp>
73 
74 //--- MPI includes ---
75 #include <mpi.h>
76 
77 //--- TML includes ---
78 #include "tml/comm/comm_world.h"
79 
80 // -- STL includes --
81 #include <vector>
82 #include <list>
83 #include <map>
84 #include <utility>
85 #include <string>
86 #include <limits>
87 
88 // forward decls.
89 // includes are in the .cpp
91 
92 namespace esys
93 {
94  namespace lsm
95  {
96  class GeometryInfo;
97  class BodyForceIGP;
98  }
99 }
100 
108 class MpiWTimers;
109 
110 namespace esys
111 {
112  namespace lsm
113  {
114  typedef std::vector<int> IntVector;
115  }
116 }
117 
119 {
120  public:
121  typedef std::vector<esys::lsm::Runnable *> RunnableVector;
122  typedef std::pair<int, int> ParticleIdPair;
123  typedef std::vector<ParticleIdPair> ParticleIdPairVector;
124  typedef std::vector<MeshNodeData> MeshNodeDataVector;
125  typedef std::vector<MeshTriData> MeshTriDataVector;
126  typedef std::pair<MeshNodeDataVector,MeshTriDataVector> TriMeshDataPair;
127 
128  private:
129  std::string m_timingFileName;
131  CheckPointController *m_pCheckPointController; // for restart checkpoints
132  CheckPointController *m_pSnapShotController; // for viz/analysis dumps
134 
135  protected:
136  typedef std::vector<int> ConnIdVector;
137  map<int,ConnIdVector> m_temp_conn;
138  vector<AFieldMaster*> m_save_fields;
139 
140  // -- variables for global model geometry
144  // ----
145 
148  int m_max_ts;
150  double m_total_time;
151  int m_t ;
152  double m_dt;
155  std::string m_particle_type;
156 
157  RunnableVector m_preRunnableVector;
158  RunnableVector m_postRunnableVector;
159 
162  MPI_Group m_mpi_local_group; // needs to be member in order to free at desctruction
163 
164  // Variables for calculating the initial particle endpoints in the geometry.
165  double m_dbl_NaN;
169 
170  void runRunnables(RunnableVector::iterator begin, RunnableVector::iterator end);
171  void runPreRunnables();
172  void runPostRunnables();
173 
174  void saveTimingData();
175  TriMeshDataPair readTriMesh(const std::string &fileName,int);
176  TriMeshDataPair readTriMesh(const std::string &fileName);
177  void readAndDistributeMesh2D(const std::string&,int);
178 
180  {
181  return MpiRankAndComm(m_global_rank, m_global_comm);
182  }
183 
184 public:
185  CLatticeMaster();
186  ~CLatticeMaster();
187 
188  std::string getLsmVersion() const
189  {
190  return std::string(PACKAGE_VERSION);
191  }
192 
193  int getNumWorkerProcesses() const;
194 
195  int getTimeStep() const {return m_t;}
196  double getTimeStepSize() const {return m_dt;}
197  void setTimeStepSize(double dt);
198 
199  void init();
200 
201  void setupWorkers(int numWorkers);
202  void run();
203  void runInit();
204  void runOneStep();
205  void runEnd();
206  void oneStep();
207  void searchNeighbors(bool);
208  bool checkNeighbors();
209  void updateInteractions();
210  void addBondedIG(const CBondedIGP&);
211  void addCappedBondedIG(int,const std::string&,double,double,double);
212  void addShortBondedIG(int,const std::string&,double,double);
213 
214  void addPairIG(const CElasticIGP &prms);
215  void addPairIG(const CFrictionIGP &prms);
216  void addPairIG(const FractalFrictionIGP &prms);
217  void addPairIG(const CAdhesiveFrictionIGP &prms);
218  void addPairIG(const CRotElasticIGP &prms);
219  void addPairIG(const CRotFrictionIGP &prms);
220  void addPairIG(const CHertzianElasticIGP &prms);
222  void addPairIG(const CHertzianViscoElasticIGP &prms);
223  void addPairIG(const CLinearDashpotIGP &prms);
224  void addPairIG(const CRotThermElasticIGP &prms);
225  void addPairIG(const CRotThermFrictionIGP &prms);
226  void addTaggedPairIG(const CRotFrictionIGP &prms,int,int,int,int);
227  void addTaggedPairIG(const CFrictionIGP &prms,int,int,int,int);
228  void addTaggedPairIG(const CHertzianElasticIGP &prms,int,int,int,int);
229  void addTaggedPairIG(const CHertzianViscoElasticFrictionIGP &prms,int,int,int,int);
230  void addTaggedPairIG(const CHertzianViscoElasticIGP &prms,int,int,int,int);
231  void addTaggedPairIG(const CLinearDashpotIGP &prms,int,int,int,int);
232  void addTaggedPairIG(const CRotElasticIGP &prms,int,int,int,int);
233  void addTaggedPairIG(const CElasticIGP &prms,int,int,int,int);
234 
235  void removeIG(const std::string&);
236 
237  void readAndDistributeTriMesh(const std::string&,const std::string&,int);
238  void readAndDistributeTriMesh(const std::string&,const std::string&);
239  void createTriMesh(
240  const std::string &meshName,
241  const MeshNodeDataVector &mndVector,
242  const MeshTriDataVector &mtdVector
243  );
244  void addMesh2D(const std::string&,const std::string&,int);
245  void addMesh2DIG(const ETriMeshIP &prms);
246  void addTriMesh(const std::string &meshName, const std::string &fileName);
247  void addTriMeshIG(const ETriMeshIP &prms);
248 
249  void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshTagBuildPrms &buildPrms);
250  void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshGapBuildPrms &buildPrms);
251 
252  void addBondedMesh2DIG(const BMesh2DIP&, const MeshTagBuildPrms&);
253  void addBondedMesh2DIG(const BMesh2DIP&, const MeshGapBuildPrms&);
254  void addDamping(const CDampingIGP &dampingIGP);
255  void addDamping(const CLocalDampingIGP &dampingIGP);
256  void addDamping(const ABCDampingIGP &dampingIGP);
257 
258  void addSingleIG(const esys::lsm::GravityIGP &gravityIGP);
259  void addSingleIG(const esys::lsm::BuoyancyIGP &buoyancyIGP);
260  void addExIG(const std::string&,const std::string&);
261  void setNumSteps(int s);
262  int getNumSteps() const {return m_max_ts;};
263  int getSteps() const {return m_t;};
264 
265  void addRotBondedIG(int,const std::string&,double,double,double,double,double,double,double,double,bool,bool,double);
266  void addRotThermBondedIG(const CRotThermBondedIGP &prms);
267 
268 // ParticleIdPairVector getBondGroupIdPairs(const std::string &groupName);
269 
270  // --- wall related fucntions ---
271  void addWall(const std::string&,const Vec3&,const Vec3&);
272  void addWallIG(const CEWallIGP&);
273  void addWallIG(const CBWallIGP&);
274  void addWallIG(const CVWallIGP&);
275  void addWallIG(const CSoftBWallIGP&);
276  void addTaggedWallIG(const CEWallIGP&,int,int);
277  Vec3 getWallPosn(const std::string&);
278  Vec3 getWallForce(const std::string&);
279 
280  // --- sphere body related functions ---
281  void addSphereBody(const std::string&,const Vec3&,const double&);
282  void addSphereBodyIG(const CESphereBodyIGP&);
283  Vec3 getSphereBodyPosn(const std::string&);
284  Vec3 getSphereBodyForce(const std::string&);
285 
286  // void initSoftBondedWall(const string&,const Vec3&,const Vec3&,double,double,double,int);
287 
288 
289  void moveParticleTo(int particleTag, const Vec3 &posn);
290  void moveTaggedParticlesBy(int particleTag, const Vec3 &displacement);
291  void moveSingleParticleTo(int particleId, const Vec3 &posn);
292  Vec3 getParticlePosn(int particleId);
293  void setParticleNonDynamic(int);
294  void setParticleNonRot(int);
295  void setParticleNonTrans(int);
296  void setParticleVel(int,const Vec3&);
297  void setParticleAngVel(int,const Vec3&);
298  void setParticleDensity(int tag,int mask,double rho);
299  void setTaggedParticleVel(int tag,const Vec3&);
300  void moveWallBy(const std::string&,const Vec3&);
301  void moveSphereBodyBy(const std::string&,const Vec3&);
302  void setWallNormal(const std::string&,const Vec3&);
303  void setVelocityOfWall(const std::string&,const Vec3&);
304  void tagParticleNearestTo(int,int,const Vec3&);
309  int findParticleNearestTo(const Vec3& pos);
310  void applyForceToWall(const std::string&,const Vec3&);
311  void applyForceToSphereBody(const std::string&,const Vec3&);
312  // --- Mesh movement functions ---
313  void moveSingleNodeBy(const std::string&,int,const Vec3&);
314  void moveTaggedNodesBy(const std::string&,int,const Vec3&);
315  void translateMeshBy(const std::string&,const Vec3&);
316 
317  void saveTimingDataToFile(const std::string &fileNamePrefix);
318 
322  void do2dCalculations(bool do2d);
323 
334 
336 
342  void setTimingFileName(const std::string &fileName);
343 
350  const std::string &getTimingFileName() const;
351 
352  const std::string &getParticleType() const
353  {
354  return m_particle_type;
355  }
356 
357  int getNumParticles();
358 
360  void addScalarParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int);
361  void addTaggedScalarParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int,int,int);
362  void addVectorParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int);
363  void addTaggedVectorParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int,int,int);
364  void addScalarInteractionSaveField(const std::string&,const std::string&,const std::string&,const std::string&,const std::string&,int,int,int,bool checked=false);
365  void addScalarHistoryInteractionSaveField(const std::string&,const std::string&,const std::string&,const std::string&,const std::string&,int,int,int);
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);
369  void addVectorTriangleSaveField(const string&,const string&,const string&,const string&,int,int,int);
370  void addScalarTriangleSaveField(const string&,const string&,const string&,const string&,int,int,int);
371  void addVectorWallField(const string&,const string&,vector<string>,const string&,int,int,int);
372  // fields with trigger
373  void addVectorParticleSaveFieldWT(const std::string&,const std::string&,const std::string&,int,int,int,const MaxTrigParams&);
374  void addTaggedVectorParticleSaveFieldWT(const std::string&,const std::string&,const std::string&,int,int,int,int,int,const MaxTrigParams&);
375 
386  void performCheckPoints(
387  const std::string &fileNamePrefix,
388  int beginTime,
389  int endTime,
390  int timeInterval,
391  int precision
392  );
393 
407  const std::string &fileNamePrefix,
408  int beginTime,
409  int endTime,
410  int timeInterval,
411  int precision
412  );
413 
414  void initSnapShotController(const std::string&,int,int,int);
415 
417  void makeLattice(
418  const char *particleType,
419  double gridSize,
420  double verletDist
421  );
422 
423  void makeLattice(
424  const char *particleType,
425  double gridSize,
426  double verletDist,
427  double dt
428  );
429 
435 
439  const RunnableVector &getPreTimeStepRunnableVector() const
440  {
441  return m_preRunnableVector;
442  }
443 
448  {
449  return m_preRunnableVector;
450  }
451 
457 
461  const RunnableVector &getPostTimeStepRunnableVector() const
462  {
463  return m_postRunnableVector;
464  }
465 
470  {
471  return m_postRunnableVector;
472  }
473 
480  {
481  return m_particle_dimensions;
482  }
483 
490  void getInitMinMaxPt(Vec3 &initMinPt, Vec3 &initMaxPt);
491 
495  void setSpatialDomain(const Vec3 &minBBoxPt, const Vec3 &maxBBoxPt);
496 
500  void setSpatialDomain(
501  const Vec3 &minBBoxPt,
502  const Vec3 &maxBBoxPt,
503  const esys::lsm::IntVector &circDimVector
504  );
505 
510  //bool haveSetSpatialDomain() const;
511 
515  void getSlaveSpatialDomains();
516 
517 
525  template <class TmplParticle>
526  void readGeometry(const std::string &fileName);
527 
533  void readGeometryFile(const std::string &fileName);
534 
542  void loadCheckPointData(const std::string &checkPointFileName);
543 
552  template <class TmplIterator, class TmplParticle>
553  void addParticles(TmplIterator &it);
554 
563  template <class TmplIterator>
564  void addConnections(TmplIterator &it);
565 
566  //--- function for mesh data exchange ---
567  template <typename TmplVisitor>
568  void visitMeshFaceReferences(const string &meshName);
569 
570  template <typename TmplVisitor>
571  void visitMesh2dNodeReferences(const string &meshName, TmplVisitor &visitor);
572 
573  template <typename TmplVisitor>
574  void visitMesh2dEdgeStress(const string &meshName, TmplVisitor &visitor);
575 
576  template <typename TmplVisitor>
578  const string &meshName,
579  TmplVisitor &visitor
580  );
581 
582  typedef std::vector<int> IdVector;
583 
584  template <typename TmplVisitor, typename TmplParticle>
586  const IdVector &particleIdVector,
587  TmplVisitor &visitor
588  );
589 
590  template <typename TmplVisitor>
591  void visitParticles(const IdVector &particleIdVector, TmplVisitor &visitor);
592 
593  // --- console related fucntions
594  void setVerbosity(int);
595  void initializeConsole(const string&, int);
596  void setConsoleFilename(const string&);
597  void setConsoleBuffered(unsigned int);
598 
599 protected:
606  template<typename TmplParticle>
607  void particlesMinMax(const TmplParticle &particle);
608 };
609 
611 
612 #endif
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
Definition: vec3.h:46
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
Definition: Timer.h:86
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