ESyS-Particle  2.3
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"
70 
71 #include <boost/filesystem/path.hpp>
72 
73 //--- MPI includes ---
74 #include <mpi.h>
75 
76 //--- TML includes ---
77 #include "tml/comm/comm_world.h"
78 
79 // -- STL includes --
80 #include <vector>
81 #include <list>
82 #include <map>
83 #include <utility>
84 #include <string>
85 #include <limits>
86 
87 // forward decls.
88 // includes are in the .cpp
90 
91 namespace esys
92 {
93  namespace lsm
94  {
95  class GeometryInfo;
96  class BodyForceIGP;
97  }
98 }
99 
107 class MpiWTimers;
108 
109 namespace esys
110 {
111  namespace lsm
112  {
113  typedef std::vector<int> IntVector;
114  }
115 }
116 
118 {
119  public:
120  typedef std::vector<esys::lsm::Runnable *> RunnableVector;
121  typedef std::pair<int, int> ParticleIdPair;
122  typedef std::vector<ParticleIdPair> ParticleIdPairVector;
123  typedef std::vector<MeshNodeData> MeshNodeDataVector;
124  typedef std::vector<MeshTriData> MeshTriDataVector;
125  typedef std::pair<MeshNodeDataVector,MeshTriDataVector> TriMeshDataPair;
126 
127  private:
128  std::string m_timingFileName;
130  CheckPointController *m_pCheckPointController; // for restart checkpoints
131  CheckPointController *m_pSnapShotController; // for viz/analysis dumps
133 
134  protected:
135  typedef std::vector<int> ConnIdVector;
136  map<int,ConnIdVector> m_temp_conn;
137  vector<AFieldMaster*> m_save_fields;
138 
139  // -- variables for global model geometry
143  // ----
144 
147  int m_max_ts;
149  double m_total_time;
150  int m_t ;
151  double m_dt;
154  std::string m_particle_type;
155 
156  RunnableVector m_preRunnableVector;
157  RunnableVector m_postRunnableVector;
158 
161  MPI_Group m_mpi_local_group; // needs to be member in order to free at desctruction
162 
163  // Variables for calculating the initial particle endpoints in the geometry.
164  double m_dbl_NaN;
168 
169  void runRunnables(RunnableVector::iterator begin, RunnableVector::iterator end);
170  void runPreRunnables();
171  void runPostRunnables();
172 
173  void saveTimingData();
174  TriMeshDataPair readTriMesh(const std::string &fileName,int);
175  TriMeshDataPair readTriMesh(const std::string &fileName);
176  void readAndDistributeMesh2D(const std::string&,int);
177 
179  {
180  return MpiRankAndComm(m_global_rank, m_global_comm);
181  }
182 
183 public:
184  CLatticeMaster();
185  ~CLatticeMaster();
186 
187  std::string getLsmVersion() const
188  {
189  return std::string(PACKAGE_VERSION);
190  }
191 
192  int getNumWorkerProcesses() const;
193 
194  int getTimeStep() const {return m_t;}
195  double getTimeStepSize() const {return m_dt;}
196  void setTimeStepSize(double dt);
197 
198  void init();
199 
200  void setupWorkers(int numWorkers);
201  void run();
202  void runInit();
203  void runOneStep();
204  void runEnd();
205  void oneStep();
206  void searchNeighbors(bool);
207  bool checkNeighbors();
208  void updateInteractions();
209  void addBondedIG(const CBondedIGP&);
210  void addCappedBondedIG(int,const std::string&,double,double,double);
211  void addShortBondedIG(int,const std::string&,double,double);
212 
213  void addPairIG(const CElasticIGP &prms);
214  void addPairIG(const CFrictionIGP &prms);
215  void addPairIG(const FractalFrictionIGP &prms);
216  void addPairIG(const CAdhesiveFrictionIGP &prms);
217  void addPairIG(const CRotElasticIGP &prms);
218  void addPairIG(const CRotFrictionIGP &prms);
219  void addPairIG(const CHertzianElasticIGP &prms);
221  void addPairIG(const CHertzianViscoElasticIGP &prms);
222  void addPairIG(const CLinearDashpotIGP &prms);
223  void addPairIG(const CRotThermElasticIGP &prms);
224  void addPairIG(const CRotThermFrictionIGP &prms);
225  void addTaggedPairIG(const CRotFrictionIGP &prms,int,int,int,int);
226  void addTaggedPairIG(const CFrictionIGP &prms,int,int,int,int);
227  void addTaggedPairIG(const CHertzianElasticIGP &prms,int,int,int,int);
228  void addTaggedPairIG(const CHertzianViscoElasticFrictionIGP &prms,int,int,int,int);
229  void addTaggedPairIG(const CHertzianViscoElasticIGP &prms,int,int,int,int);
230  void addTaggedPairIG(const CLinearDashpotIGP &prms,int,int,int,int);
231  void addTaggedPairIG(const CRotElasticIGP &prms,int,int,int,int);
232  void addTaggedPairIG(const CElasticIGP &prms,int,int,int,int);
233 
234  void removeIG(const std::string&);
235 
236  void readAndDistributeTriMesh(const std::string&,const std::string&,int);
237  void readAndDistributeTriMesh(const std::string&,const std::string&);
238  void createTriMesh(
239  const std::string &meshName,
240  const MeshNodeDataVector &mndVector,
241  const MeshTriDataVector &mtdVector
242  );
243  void addMesh2D(const std::string&,const std::string&,int);
244  void addMesh2DIG(const ETriMeshIP &prms);
245  void addTriMesh(const std::string &meshName, const std::string &fileName);
246  void addTriMeshIG(const ETriMeshIP &prms);
247 
248  void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshTagBuildPrms &buildPrms);
249  void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshGapBuildPrms &buildPrms);
250 
251  void addBondedMesh2DIG(const BMesh2DIP&, const MeshTagBuildPrms&);
252  void addBondedMesh2DIG(const BMesh2DIP&, const MeshGapBuildPrms&);
253  void addDamping(const CDampingIGP &dampingIGP);
254  void addDamping(const CLocalDampingIGP &dampingIGP);
255  void addDamping(const ABCDampingIGP &dampingIGP);
256 
257  void addSingleIG(const esys::lsm::GravityIGP &gravityIGP);
258  void addSingleIG(const esys::lsm::BuoyancyIGP &buoyancyIGP);
259  void addExIG(const std::string&,const std::string&);
260  void setNumSteps(int s);
261  int getNumSteps() const {return m_max_ts;};
262  int getSteps() const {return m_t;};
263 
264  void addRotBondedIG(int,const std::string&,double,double,double,double,double,double,double,double,bool,bool,double);
265  void addRotThermBondedIG(const CRotThermBondedIGP &prms);
266 
267 // ParticleIdPairVector getBondGroupIdPairs(const std::string &groupName);
268 
269  // --- wall related fucntions ---
270  void addWall(const std::string&,const Vec3&,const Vec3&);
271  void addWallIG(const CEWallIGP&);
272  void addWallIG(const CBWallIGP&);
273  void addWallIG(const CVWallIGP&);
274  void addWallIG(const CSoftBWallIGP&);
275  void addTaggedWallIG(const CEWallIGP&,int,int);
276  Vec3 getWallPosn(const std::string&);
277  Vec3 getWallForce(const std::string&);
278 
279  // void initSoftBondedWall(const string&,const Vec3&,const Vec3&,double,double,double,int);
280 
281 
282  void moveParticleTo(int particleTag, const Vec3 &posn);
283  void moveTaggedParticlesBy(int particleTag, const Vec3 &displacement);
284  void moveSingleParticleTo(int particleId, const Vec3 &posn);
285  Vec3 getParticlePosn(int particleId);
286  void setParticleNonDynamic(int);
287  void setParticleNonRot(int);
288  void setParticleNonTrans(int);
289  void setParticleVel(int,const Vec3&);
290  void setParticleAngVel(int,const Vec3&);
291  void setParticleDensity(int tag,int mask,double rho);
292  void setTaggedParticleVel(int tag,const Vec3&);
293  void moveWallBy(const std::string&,const Vec3&);
294  void setWallNormal(const std::string&,const Vec3&);
295  void setVelocityOfWall(const std::string&,const Vec3&);
296  void tagParticleNearestTo(int,int,const Vec3&);
301  int findParticleNearestTo(const Vec3& pos);
302  void applyForceToWall(const std::string&,const Vec3&);
303  // --- Mesh movement functions ---
304  void moveSingleNodeBy(const std::string&,int,const Vec3&);
305  void moveTaggedNodesBy(const std::string&,int,const Vec3&);
306  void translateMeshBy(const std::string&,const Vec3&);
307 
308  void saveTimingDataToFile(const std::string &fileNamePrefix);
309 
313  void do2dCalculations(bool do2d);
314 
325 
327 
333  void setTimingFileName(const std::string &fileName);
334 
341  const std::string &getTimingFileName() const;
342 
343  const std::string &getParticleType() const
344  {
345  return m_particle_type;
346  }
347 
348  int getNumParticles();
349 
351  void addScalarParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int);
352  void addTaggedScalarParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int,int,int);
353  void addVectorParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int);
354  void addTaggedVectorParticleSaveField(const std::string&,const std::string&,const std::string&,int,int,int,int,int);
355  void addScalarInteractionSaveField(const std::string&,const std::string&,const std::string&,const std::string&,const std::string&,int,int,int,bool checked=false);
356  void addVectorInteractionSaveField(const std::string&,const std::string&,const std::string&,const std::string&,const std::string&,int,int,int,bool checked=false);
357  void addTaggedScalarInteractionSaveField(const std::string&,const std::string&,const std::string&,const std::string&,const std::string&,int,int,int,int,int,bool);
358  void addTaggedScalarParticleDistributionSaver(const std::string&,const std::string&,const std::string&,int,int,int,int,int,int,double,double,int);
359  void addVectorTriangleSaveField(const string&,const string&,const string&,const string&,int,int,int);
360  void addScalarTriangleSaveField(const string&,const string&,const string&,const string&,int,int,int);
361  void addVectorWallField(const string&,const string&,vector<string>,const string&,int,int,int);
362  // fields with trigger
363  void addVectorParticleSaveFieldWT(const std::string&,const std::string&,const std::string&,int,int,int,const MaxTrigParams&);
364  void addTaggedVectorParticleSaveFieldWT(const std::string&,const std::string&,const std::string&,int,int,int,int,int,const MaxTrigParams&);
365 
376  void performCheckPoints(
377  const std::string &fileNamePrefix,
378  int beginTime,
379  int endTime,
380  int timeInterval,
381  int precision
382  );
383 
397  const std::string &fileNamePrefix,
398  int beginTime,
399  int endTime,
400  int timeInterval,
401  int precision
402  );
403 
404  void initSnapShotController(const std::string&,int,int,int);
405 
407  void makeLattice(
408  const char *particleType,
409  double gridSize,
410  double verletDist
411  );
412 
413  void makeLattice(
414  const char *particleType,
415  double gridSize,
416  double verletDist,
417  double dt
418  );
419 
425 
429  const RunnableVector &getPreTimeStepRunnableVector() const
430  {
431  return m_preRunnableVector;
432  }
433 
438  {
439  return m_preRunnableVector;
440  }
441 
447 
451  const RunnableVector &getPostTimeStepRunnableVector() const
452  {
453  return m_postRunnableVector;
454  }
455 
460  {
461  return m_postRunnableVector;
462  }
463 
470  {
471  return m_particle_dimensions;
472  }
473 
480  void getInitMinMaxPt(Vec3 &initMinPt, Vec3 &initMaxPt);
481 
485  void setSpatialDomain(const Vec3 &minBBoxPt, const Vec3 &maxBBoxPt);
486 
490  void setSpatialDomain(
491  const Vec3 &minBBoxPt,
492  const Vec3 &maxBBoxPt,
493  const esys::lsm::IntVector &circDimVector
494  );
495 
500  //bool haveSetSpatialDomain() const;
501 
505  void getSlaveSpatialDomains();
506 
507 
515  template <class TmplParticle>
516  void readGeometry(const std::string &fileName);
517 
523  void readGeometryFile(const std::string &fileName);
524 
532  void loadCheckPointData(const std::string &checkPointFileName);
533 
542  template <class TmplIterator, class TmplParticle>
543  void addParticles(TmplIterator &it);
544 
553  template <class TmplIterator>
554  void addConnections(TmplIterator &it);
555 
556  //--- function for mesh data exchange ---
557  template <typename TmplVisitor>
558  void visitMeshFaceReferences(const string &meshName);
559 
560  template <typename TmplVisitor>
561  void visitMesh2dNodeReferences(const string &meshName, TmplVisitor &visitor);
562 
563  template <typename TmplVisitor>
564  void visitMesh2dEdgeStress(const string &meshName, TmplVisitor &visitor);
565 
566  template <typename TmplVisitor>
568  const string &meshName,
569  TmplVisitor &visitor
570  );
571 
572  typedef std::vector<int> IdVector;
573 
574  template <typename TmplVisitor, typename TmplParticle>
576  const IdVector &particleIdVector,
577  TmplVisitor &visitor
578  );
579 
580  template <typename TmplVisitor>
581  void visitParticles(const IdVector &particleIdVector, TmplVisitor &visitor);
582 
583  void setVerbosity(bool);
584 
585 protected:
592  template<typename TmplParticle>
593  void particlesMinMax(const TmplParticle &particle);
594 };
595 
597 
598 #endif
void moveTaggedParticlesBy(int particleTag, const Vec3 &displacement)
Definition: LatticeMaster.cpp:757
bool m_geometry_is_initialized
Definition: LatticeMaster.h:142
CheckPointController * m_pSnapShotController
Definition: LatticeMaster.h:131
void setProcessDims(const esys::lsm::CLatticeParam::ProcessDims &dims)
Definition: LatticeMaster.cpp:295
void setParticleAngVel(int, const Vec3 &)
Definition: LatticeMaster.cpp:1082
void addVectorTriangleSaveField(const string &, const string &, const string &, const string &, int, int, int)
Definition: LatticeMaster.cpp:1709
void loadCheckPointData(const std::string &checkPointFileName)
Definition: LatticeMaster.cpp:490
Definition: RankAndComm.h:19
int m_max_ts
Definition: LatticeMaster.h:147
void visitMeshFaceReferences(const string &meshName)
Definition: LatticeMaster.hpp:81
void addBondedMesh2DIG(const BMesh2DIP &, const MeshTagBuildPrms &)
Definition: LatticeMaster.cpp:2817
TML_Comm m_tml_global_comm
Definition: LatticeMaster.h:159
Vec3 m_init_min_pt
Definition: LatticeMaster.h:165
RunnableVector & getPreTimeStepRunnableVector()
Definition: LatticeMaster.h:437
void setParticleDensity(int tag, int mask, double rho)
Definition: LatticeMaster.cpp:1061
void runRunnables(RunnableVector::iterator begin, RunnableVector::iterator end)
Definition: LatticeMaster.cpp:1883
vector< AFieldMaster * > m_save_fields
Definition: LatticeMaster.h:137
Definition: vec3.h:46
MPI_Group m_mpi_local_group
Definition: LatticeMaster.h:161
bool m_first_time
Definition: LatticeMaster.h:153
void setTaggedParticleVel(int tag, const Vec3 &)
Definition: LatticeMaster.cpp:1041
int findParticleNearestTo(const Vec3 &pos)
Definition: LatticeMaster.cpp:879
void setWallNormal(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1120
void addBondedIG(const CBondedIGP &)
Definition: LatticeMaster.cpp:2084
MpiRankAndComm getGlobalRankAndComm() const
Definition: LatticeMaster.h:178
Interaction parameters for frictional interaction.
Definition: FrictionInteraction.h:27
Interaction parameters for bonded interaction.
Definition: BondedInteraction.h:39
Interaction group parameters for CRotElasticInteractionGroups.
Definition: RotElasticInteraction.h:24
void addConnections(TmplIterator &it)
Definition: LatticeMaster.hpp:344
RunnableVector m_postRunnableVector
Definition: LatticeMaster.h:157
RunnableVector m_preRunnableVector
Definition: LatticeMaster.h:156
std::string m_timingFileName
Definition: LatticeMaster.h:128
void visitParticles(const IdVector &particleIdVector, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:228
void searchNeighbors(bool)
Definition: LatticeMaster.cpp:1205
MpiWTimers * m_pTimers
Definition: LatticeMaster.h:129
double m_total_time
Definition: LatticeMaster.h:149
void oneStep()
Definition: LatticeMaster.cpp:1175
void performCheckPoints(const std::string &fileNamePrefix, int beginTime, int endTime, int timeInterval, int precision)
Definition: LatticeMaster.cpp:1546
Vec3 getWallPosn(const std::string &)
Definition: LatticeMaster.cpp:674
Vec3 m_init_max_pt
Definition: LatticeMaster.h:166
void setNumSteps(int s)
Definition: LatticeMaster.cpp:179
Definition: BodyForceGroup.h:26
void moveTaggedNodesBy(const std::string &, int, const Vec3 &)
Definition: LatticeMaster.cpp:813
Definition: RotThermFricInteraction.h:34
void addScalarTriangleSaveField(const string &, const string &, const string &, const string &, int, int, int)
Definition: LatticeMaster.cpp:1742
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:1276
std::pair< MeshNodeDataVector, MeshTriDataVector > TriMeshDataPair
Definition: LatticeMaster.h:125
void moveSingleNodeBy(const std::string &, int, const Vec3 &)
Definition: LatticeMaster.cpp:792
void setParticleVel(int, const Vec3 &)
Definition: LatticeMaster.cpp:1021
void setVerbosity(bool)
Definition: LatticeMaster.cpp:3355
double getTimeStepSize() const
Definition: LatticeMaster.h:195
void addTaggedVectorParticleSaveFieldWT(const std::string &, const std::string &, const std::string &, int, int, int, int, int, const MaxTrigParams &)
Definition: LatticeMaster.cpp:1484
std::vector< ParticleIdPair > ParticleIdPairVector
Definition: LatticeMaster.h:122
Definition: GeometryInfo.h:33
std::vector< MeshTriData > MeshTriDataVector
Definition: LatticeMaster.h:124
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:833
void do2dCalculations(bool do2d)
Definition: LatticeMaster.cpp:214
Definition: CheckPointable.cpp:16
Definition: MaxTrigger.h:24
void addPostTimeStepRunnable(esys::lsm::Runnable &runnable)
Definition: LatticeMaster.cpp:1878
void addPairIG(const CElasticIGP &prms)
Definition: LatticeMaster.cpp:2302
~CLatticeMaster()
Definition: LatticeMaster.cpp:115
const std::string & getTimingFileName() const
Definition: LatticeMaster.cpp:209
TriMeshDataPair readTriMesh(const std::string &fileName, int)
Definition: LatticeMaster.cpp:2967
void setupWorkers(int numWorkers)
Definition: LatticeMaster.cpp:145
void readAndDistributeMesh2D(const std::string &, int)
Definition: LatticeMaster.cpp:3063
const std::string & getParticleType() const
Definition: LatticeMaster.h:343
void runPostRunnables()
Definition: LatticeMaster.cpp:1899
Interaction group parameters for Hertzian elastic interactions.
Definition: HertzianElasticInteraction.h:24
void readGeometryFile(const std::string &fileName)
Definition: LatticeMaster.cpp:459
int m_t
Definition: LatticeMaster.h:150
void getSlaveSpatialDomains()
Definition: LatticeMaster.cpp:407
Interaction group parameters for CBWallInteractionGroups.
Definition: BWallInteractionGroup.h:38
Definition: ABCDampingIGP.h:23
int m_global_rank
Definition: LatticeMaster.h:145
int m_global_size
Definition: LatticeMaster.h:146
std::vector< int > IntVector
Definition: LatticeMaster.h:113
void addPreTimeStepRunnable(esys::lsm::Runnable &runnable)
Definition: LatticeMaster.cpp:1873
double m_dbl_NaN
Definition: LatticeMaster.h:164
Interaction group parameters for CEWallInteractionGroups.
Definition: brokenEWallInteractionGroup.h:32
double m_dt
Definition: LatticeMaster.h:151
void addVectorParticleSaveFieldWT(const std::string &, const std::string &, const std::string &, int, int, int, const MaxTrigParams &)
Definition: LatticeMaster.cpp:1453
void particlesMinMax(const TmplParticle &particle)
Definition: LatticeMaster.hpp:402
void addExIG(const std::string &, const std::string &)
Definition: LatticeMaster.cpp:3273
std::vector< int > IdVector
Definition: LatticeMaster.h:572
Definition: Runnable.h:23
void tagParticleNearestTo(int, int, const Vec3 &)
Definition: LatticeMaster.cpp:856
Vec3 getWallForce(const std::string &)
Definition: LatticeMaster.cpp:703
void addWallIG(const CEWallIGP &)
Definition: LatticeMaster.cpp:561
bool m_isInitialized
Definition: LatticeMaster.h:152
void visitParticlesOfType(const IdVector &particleIdVector, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:185
void runOneStep()
Definition: LatticeMaster.cpp:1910
void addMesh2D(const std::string &, const std::string &, int)
Definition: LatticeMaster.cpp:3040
void addTriMeshIG(const ETriMeshIP &prms)
Definition: LatticeMaster.cpp:2692
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:1101
std::string m_particle_type
Definition: LatticeMaster.h:154
void addTaggedWallIG(const CEWallIGP &, int, int)
Definition: LatticeMaster.cpp:653
void makeLattice(const char *particleType, double gridSize, double verletDist)
initialization functions
Definition: LatticeMaster.cpp:238
void addCappedBondedIG(int, const std::string &, double, double, double)
Definition: LatticeMaster.cpp:2116
void addShortBondedIG(int, const std::string &, double, double)
Definition: LatticeMaster.cpp:2150
Interaction group parameters for CElasticInteractionGroups.
Definition: ElasticInteraction.h:24
const RunnableVector & getPostTimeStepRunnableVector() const
Definition: LatticeMaster.h:451
esys::lsm::IntVector m_particle_dimensions
Definition: LatticeMaster.h:167
void addTaggedVectorParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int, int, int)
Definition: LatticeMaster.cpp:1425
void runPreRunnables()
Definition: LatticeMaster.cpp:1891
void addParticles(TmplIterator &it)
Definition: LatticeMaster.hpp:262
esys::lsm::IntVector getParticleDimensions()
Definition: LatticeMaster.h:469
Vec3 getParticlePosn(int particleId)
Definition: LatticeMaster.cpp:929
int getNumParticles()
Definition: LatticeMaster.cpp:2258
GeometryInfo m_geo_info
Definition: LatticeMaster.h:140
void performCheckPointsThroughMaster(const std::string &fileNamePrefix, int beginTime, int endTime, int timeInterval, int precision)
Definition: LatticeMaster.cpp:1576
map< int, ConnIdVector > m_temp_conn
Definition: LatticeMaster.h:136
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:1367
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:204
void readGeometry(const std::string &fileName)
Definition: LatticeMaster.hpp:29
void runEnd()
Definition: LatticeMaster.cpp:1847
void addRotThermBondedIG(const CRotThermBondedIGP &prms)
Definition: LatticeMaster.cpp:2224
void addBondedTriMeshIG(const BTriMeshIP &triMeshPrms, const MeshTagBuildPrms &buildPrms)
Definition: LatticeMaster.cpp:2765
void setVelocityOfWall(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1159
CheckPointController * m_pCheckPointController
Definition: LatticeMaster.h:130
void addTaggedScalarParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int, int, int)
Definition: LatticeMaster.cpp:1333
RunnableVector & getPostTimeStepRunnableVector()
Definition: LatticeMaster.h:459
std::string getLsmVersion() const
Definition: LatticeMaster.h:187
void getInitMinMaxPt(Vec3 &initMinPt, Vec3 &initMaxPt)
Definition: LatticeMaster.cpp:311
Definition: BTriMeshIP.h:18
void moveSingleParticleTo(int particleId, const Vec3 &posn)
Definition: LatticeMaster.cpp:772
void addVectorWallField(const string &, const string &, vector< string >, const string &, int, int, int)
Definition: LatticeMaster.cpp:1512
void createTriMesh(const std::string &meshName, const MeshNodeDataVector &mndVector, const MeshTriDataVector &mtdVector)
Definition: LatticeMaster.cpp:3006
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:1645
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:1810
const esys::lsm::CLatticeParam::ProcessDims & getProcessDims() const
Definition: LatticeMaster.cpp:300
void addVectorParticleSaveField(const std::string &, const std::string &, const std::string &, int, int, int)
Definition: LatticeMaster.cpp:1395
void addRotBondedIG(int, const std::string &, double, double, double, double, double, double, double, double, bool, bool, double)
Definition: LatticeMaster.cpp:2176
void updateInteractions()
Definition: LatticeMaster.cpp:1253
int getSteps() const
Definition: LatticeMaster.h:262
std::pair< int, int > ParticleIdPair
Definition: LatticeMaster.h:121
int getNumSteps() const
Definition: LatticeMaster.h:261
Interaction group parameters for CSoftBWallInteractionGroups.
Definition: SoftBWallInteractionGroup.h:31
void addTriMesh(const std::string &meshName, const std::string &fileName)
Definition: LatticeMaster.cpp:2891
void applyForceToWall(const std::string &, const Vec3 &)
Definition: LatticeMaster.cpp:1139
std::vector< int > ConnIdVector
Definition: LatticeMaster.h:135
void addDamping(const CDampingIGP &dampingIGP)
Definition: LatticeMaster.cpp:3206
int getTimeStep() const
Definition: LatticeMaster.h:194
void runInit()
Definition: LatticeMaster.cpp:1831
Definition: LatticeMaster.h:117
void addMesh2DIG(const ETriMeshIP &prms)
Definition: LatticeMaster.cpp:2719
Interaction group parameters for Hertzian viscoelastic interactions with friction.
Definition: HertzianViscoElasticFrictionInteraction.h:27
std::vector< MeshNodeData > MeshNodeDataVector
Definition: LatticeMaster.h:123
void setParticleNonRot(int)
Definition: LatticeMaster.cpp:986
std::vector< esys::lsm::Runnable * > RunnableVector
Definition: LatticeMaster.h:120
void readAndDistributeTriMesh(const std::string &, const std::string &, int)
Definition: LatticeMaster.cpp:2920
void visitMesh2dEdgeStress(const string &meshName, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:112
Definition: RotThermBondedInteraction.h:34
void run()
Definition: LatticeMaster.cpp:2039
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:160
Interaction group parameters for Hertzian viscoelastic interactions.
Definition: HertzianViscoElasticInteraction.h:24
Definition: Timer.h:86
const RunnableVector & getPreTimeStepRunnableVector() const
Definition: LatticeMaster.h:429
bool m_bbx_has_been_set
Definition: LatticeMaster.h:141
void addWall(const std::string &, const Vec3 &, const Vec3 &)
Definition: LatticeMaster.cpp:539
void visitMesh2dNodeReferences(const string &meshName, TmplVisitor &visitor)
Definition: LatticeMaster.hpp:87
int getNumWorkerProcesses() const
Definition: LatticeMaster.cpp:174
esys::lsm::CLatticeParam::ProcessDims m_processDims
Definition: LatticeMaster.h:132
Definition: BodyForceGroup.h:50
void saveTimingDataToFile(const std::string &fileNamePrefix)
Definition: LatticeMaster.cpp:186
int m_center_id
Definition: LatticeMaster.h:148
void initSnapShotController(const std::string &, int, int, int)
Definition: LatticeMaster.cpp:1609
Definition: BTriMeshIP.h:75
MPI_Comm m_global_comm
Definition: LatticeMaster.h:160
void addTaggedPairIG(const CRotFrictionIGP &prms, int, int, int, int)
Definition: LatticeMaster.cpp:2482
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:737
void init()
Definition: LatticeMaster.cpp:136
void saveTimingData()
Definition: LatticeMaster.cpp:1858
void setTimeStepSize(double dt)
Definition: LatticeMaster.cpp:284
bool checkNeighbors()
Definition: LatticeMaster.cpp:1228
void addSingleIG(const esys::lsm::GravityIGP &gravityIGP)
Definition: LatticeMaster.cpp:3122
void removeIG(const std::string &)
Definition: LatticeMaster.cpp:2665
Definition: BTriMeshIP.h:62
void setParticleNonDynamic(int)
Definition: LatticeMaster.cpp:969
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:1776
Definition: ETriMeshIP.h:17
void setParticleNonTrans(int)
Definition: LatticeMaster.cpp:1003
void setSpatialDomain(const Vec3 &minBBoxPt, const Vec3 &maxBBoxPt)
Definition: LatticeMaster.cpp:323
Definition: RotThermElasticInteraction.h:23