PeriDEM 0.3.0
PeriDEM -- Peridynamics-based high-fidelity model for granular media
Loading...
Searching...
No Matches
modelData.h
Go to the documentation of this file.
1/*
2 * -------------------------------------------
3 * Copyright (c) 2021 - 2026 Prashant K. Jha
4 * -------------------------------------------
5 * PeriDEM https://github.com/prashjha/PeriDEM
6 *
7 * Distributed under the Boost Software License, Version 1.0. (See accompanying
8 * file LICENSE)
9 */
10
11#ifndef DATA_MODELDATA_H
12#define DATA_MODELDATA_H
13
14#include "util/point.h"
15#include "util/matrix.h"
16#include "util/vecMethods.h"
18#include "inp/input.h"
21#include "loading/particleIC.h"
22#include "nsearch/nsearch.h"
23#include "fracture/fracture.h"
24#include <cstdint> // uint8_t type
25#include <cstring> // string and size_t type
26#include <vector>
27#include <map>
28#include <fstream>
29#include <iostream>
30#include <string>
31#include <utility>
32
34
35// forward declare particle and wall
36namespace particle {
37class BaseParticle;
38class RefParticle;
39class Particle;
40}
41
42namespace data {
43
50class ModelData {
51
52public:
57 ModelData(std::shared_ptr<inp::Input> & deck)
58 : d_n(0),
59 d_time(0.),
60 d_currentDt(0.),
61 d_infoN(1),
62 d_name("Model"),
63 d_input_p(deck),
70 d_stop(false), d_hMax(0.), d_hMin(0.), d_maxContactR(0.),
76 d_pdDofMpi(false),
77 d_pdGrainAligned(false),
78 d_uLoading_p(nullptr), d_fLoading_p(nullptr),
79 d_fracture_p(nullptr), d_nsearch_p(nullptr) {}
80
86 const particle::BaseParticle* getParticleFromAllList(size_t i) const { return
88
92
100
104
112
116
122 double getDensity(size_t i);
123
129 double getHorizon(size_t i);
130
139 int dimension() const { return d_modelDeck_p->d_dim; }
140
141 double timeStep() const { return d_modelDeck_p->d_dt; }
142
143 double currentDt() const { return d_currentDt; }
144
145 void setCurrentDt(double dt) { d_currentDt = dt; }
146
147 void advanceTime() {
148 ++d_n;
150 }
151
152 size_t numPdForceNodes() const { return d_fPdCompNodes.size(); }
153
154 size_t pdForceNode(size_t k) const { return d_fPdCompNodes[k]; }
155
156 bool isDofFree(size_t i, unsigned int dof) const {
157 return util::methods::isFree(d_fix[i], dof);
158 }
159
160 double getVMag(size_t i) const { return d_vMag[i]; }
161
162 void setVMag(size_t i, double mag) { d_vMag[i] = mag; }
163
164 size_t currentStep() const { return d_n; }
165
166 size_t numTimeSteps() const { return d_modelDeck_p->d_Nt; }
167
168 const std::string &timeDiscretization() const {
169 return d_modelDeck_p->d_timeDiscretization;
170 }
171
172 bool performOutput() const { return d_outputDeck_p->d_performOut; }
173
174 bool shouldOutput() const {
175 return d_outputDeck_p->d_performOut &&
176 (d_n % d_outputDeck_p->d_dtOut == 0) &&
177 (d_n >= d_outputDeck_p->d_dtOut);
178 }
179
187 size_t &getPtId(size_t i) { return d_ptId[i]; };
188
190 const size_t &getPtId(size_t i) const { return d_ptId[i]; };
191
197 void setPtId(size_t i, const size_t &id) { d_ptId[i] = id; };
198
199
206 double getKeyData(std::string key, bool issue_err = false) {
207 return util::methods::getKeyData<double>(key, d_dbgData, issue_err);
208 };
209
215 void appendKeyData(std::string key, double data, bool issue_err = false) {
217 };
218
224 void setKeyData(std::string key, double data, bool issue_err = false) {
226 };
227
238 util::Point &getXRef(size_t i) { return d_xRef[i]; };
239
241 const util::Point &getXRef(size_t i) const { return d_xRef[i]; };
242
248 void setXRef(size_t i, const util::Point &x) { d_xRef[i] = x; };
249
255 void addXRef(size_t i, const util::Point &x) { d_xRef[i] += x; };
256
263 void setXRef(size_t i, int dof, double x) { d_xRef[i][dof] = x; };
264
271 void addXRef(size_t i, int dof, double x) { d_xRef[i][dof] += x; };
272
285 util::Point &getX(size_t i) { return d_x[i]; };
286
288 const util::Point &getX(size_t i) const { return d_x[i]; };
289
295 void setX(size_t i, const util::Point &x) { d_x[i] = x; };
296
302 void addX(size_t i, const util::Point &x) { d_x[i] += x; };
303
310 void setX(size_t i, int dof, double x) { d_x[i][dof] = x; };
311
318 void addX(size_t i, int dof, double x) { d_x[i][dof] += x; };
319
332 util::Point &getU(size_t i) { return d_u[i]; };
333
335 const util::Point &getU(size_t i) const { return d_u[i]; };
336
342 void setU(size_t i, const util::Point &u) { d_u[i] = u; };
343
349 void addU(size_t i, const util::Point &u) { d_u[i] += u; };
350
357 void setU(size_t i, int dof, double u) { d_u[i][dof] = u; };
358
365 void addU(size_t i, int dof, double u) { d_u[i][dof] += u; };
366
379 util::Point &getV(size_t i) { return d_v[i]; };
380
382 const util::Point &getV(size_t i) const { return d_v[i]; };
383
389 void setV(size_t i, const util::Point &v) { d_v[i] = v; };
390
396 void addV(size_t i, const util::Point &v) { d_v[i] += v; };
397
404 void setV(size_t i, int dof, double v) { d_v[i][dof] = v; };
405
412 void addV(size_t i, int dof, double v) { d_v[i][dof] += v; };
413
426 util::Point &getF(size_t i) { return d_f[i]; };
427
429 const util::Point &getF(size_t i) const { return d_f[i]; };
430
436 void setF(size_t i, const util::Point &f) { d_f[i] = f; };
437
443 void addF(size_t i, const util::Point &f) { d_f[i] += f; };
444
451 void setF(size_t i, int dof, double f) { d_f[i][dof] = f; };
452
459 void addF(size_t i, int dof, double f) { d_f[i][dof] += f; };
460
473 double &getVol(size_t i) { return d_vol[i]; };
474
476 const double &getVol(size_t i) const { return d_vol[i]; };
477
483 void setVol(size_t i, const double &vol) { d_vol[i] = vol; };
484
490 void addVol(size_t i, const double &vol) { d_vol[i] += vol; };
491
504 uint8_t &getFix(size_t i) { return d_fix[i]; };
505
507 const uint8_t &getFix(size_t i) const { return d_fix[i]; };
508
515 void setFix(size_t i, const unsigned int &dof,
516 const bool &flag) {
517 // to set i^th bit as true of integer a,
518 // a |= 1UL << (i % 8)
519
520 // to set i^th bit as false of integer a,
521 // a &= ~(1UL << (i % 8))
522
523 flag ? (d_fix[i] |= 1UL << dof) : (d_fix[i] &= ~(1UL << dof));
524 };
525
538 double &getMx(size_t i) { return d_mX[i]; };
539
541 const double &getMx(size_t i) const { return d_mX[i]; };
542
548 void setMx(size_t i, const double &mx) { d_mX[i] = mx; };
549
555 void addMx(size_t i, const double &mx) { d_mX[i] += mx; };
556
569 double &getThetax(size_t i) { return d_thetaX[i]; };
570
572 const double &getThetax(size_t i) const { return d_thetaX[i]; };
573
579 void setThetax(size_t i, const double &thetax) { d_thetaX[i] = thetax; };
580
586 void addThetax(size_t i, const double &thetax) { d_thetaX[i] += thetax; };
587
590public:
592 size_t d_n;
593
595 double d_time;
596
599
601 size_t d_infoN;
602
604 std::string d_name;
605
607 std::vector<std::pair<double, std::string>> d_pvdParticleEntries;
608
610 std::vector<std::pair<double, std::string>> d_pvdStrainEntries;
611
613 std::map<std::string, double> d_dbgData;
614
616 std::ofstream d_ppFile;
617
619 std::shared_ptr<inp::Input> d_input_p;
620
622 std::shared_ptr<inp::ModelDeck> d_modelDeck_p;
623
625 std::shared_ptr<inp::OutputDeck> d_outputDeck_p;
626
628 std::shared_ptr<inp::RestartDeck> d_restartDeck_p;
629
631 std::shared_ptr<inp::TestDeck> d_testDeck_p;
632
634 std::shared_ptr<inp::BCDeck> d_bcDeck_p;
635
637 std::shared_ptr<inp::ParticleDeck> d_particleDeck_p;
638
640 bool d_stop;
641
643 double d_hMax;
644
646 double d_hMin;
647
650
653
656
659
665 std::vector<char> d_mpiIncludeInContactCloud;
666
668 std::vector<std::vector<int>> d_mpiGhostNeedFrom;
669
671 std::vector<std::vector<int>> d_mpiGhostServeTo;
672
675
678
681
690
692 std::vector<size_t> d_pdNodePartition;
693
695 std::vector<std::vector<int>> d_pdGhostNeedFrom;
696
698 std::vector<std::vector<int>> d_pdGhostServeTo;
699
701 std::vector<std::shared_ptr<particle::RefParticle>> d_referenceParticles;
702
704 std::vector<particle::BaseParticle*> d_particlesListTypeAll;
705
707 std::vector<particle::BaseParticle*> d_particlesListTypeParticle;
708
710 std::vector<particle::BaseParticle*> d_particlesListTypeWall;
711
716 std::vector<inp::MatData> d_particlesMatDataList;
717
720
723
727 std::vector<std::vector<size_t>> d_zInfo;
728
730 std::unique_ptr<loading::ParticleULoading> d_uLoading_p;
731
733 std::unique_ptr<loading::ParticleFLoading> d_fLoading_p;
734
736 std::unique_ptr<geometry::Fracture> d_fracture_p;
737
739 std::unique_ptr<NSearch> d_nsearch_p;
740
742 std::vector<util::Point> d_xRef;
743
745 std::vector<util::Point> d_x;
746
748 std::vector<util::Point> d_u;
749
751 std::vector<util::Point> d_v;
752
754 std::vector<double> d_vMag;
755
757 std::vector<util::Point> d_f;
758
760 std::vector<double> d_vol;
761
764 std::vector<size_t> d_ptId;
765
767 std::vector<std::vector<size_t>> d_neighC;
768
770 std::vector<std::vector<size_t>> d_neighPd;
771
773 std::vector<std::vector<float>> d_neighPdSqdDist;
774
776 std::vector<std::vector<std::vector<size_t>>> d_neighWallNodes;
777
779 std::vector<std::vector<std::vector<double>>> d_neighWallNodesDistance;
780
782 std::vector<std::vector<size_t>> d_neighWallNodesCondensed;
783
792 std::vector<uint8_t> d_fix;
793
795 std::vector<uint8_t> d_forceFixity;
796
802 std::vector<double> d_thetaX;
803
808 std::vector<double> d_mX;
809
812 std::vector<size_t> d_fPdCompNodes;
813
815 std::vector<size_t> d_fContCompNodes;
816
818 std::vector<float> d_Z;
819
828 std::vector<float> d_e;
829
831 std::vector<float> d_w;
832
834 std::vector<float> d_phi;
835
837 std::vector<float> d_phiBond;
838
840 std::vector<float> d_eF;
841
843 std::vector<float> d_eFB;
844
846 std::vector<util::Point> d_xQuadCur;
847
849 std::vector<util::SymMatrix3> d_strain;
850
852 std::vector<util::SymMatrix3> d_stress;
853
855 float d_te;
856
858 float d_tw;
859
861 float d_tk;
862
864 float d_teF;
865
867 float d_teFB;
868
870};
871
873
876} // namespace data
877
878#endif // DATA_MODELDATA_H
A class to store model data.
Definition modelData.h:50
std::vector< util::Point > d_x
Current positions of the nodes.
Definition modelData.h:745
void addU(size_t i, int dof, double u)
Add to displacement of the node.
Definition modelData.h:365
void addMx(size_t i, const double &mx)
Add to weighted-volume (mx) of the node.
Definition modelData.h:555
std::vector< util::Point > d_xRef
reference positions of the nodes
Definition modelData.h:742
std::vector< std::vector< size_t > > d_neighWallNodesCondensed
Neighbor data for contact between particle and walls condensed into single vector for each particle.
Definition modelData.h:782
std::vector< float > d_Z
Damage at nodes.
Definition modelData.h:818
void setF(size_t i, int dof, double f)
Set force of the node.
Definition modelData.h:451
const std::string & timeDiscretization() const
Definition modelData.h:168
const util::Point & getF(size_t i) const
Get force of the node.
Definition modelData.h:429
std::vector< size_t > d_fContCompNodes
List of global nodes on which force (contact) is to be computed.
Definition modelData.h:815
std::vector< float > d_eFB
Bond-based fracture energy of the nodes.
Definition modelData.h:843
std::vector< util::Point > d_u
Displacement of the nodes.
Definition modelData.h:748
std::vector< double > d_maxVelocityParticlesListTypeAll
Maximum velocity among all nodes in the particle for each particle.
Definition modelData.h:719
int dimension() const
Definition modelData.h:139
float d_teF
Total fracture energy.
Definition modelData.h:864
std::vector< uint8_t > d_fix
Vector of fixity mask of each node.
Definition modelData.h:792
std::vector< std::vector< std::vector< size_t > > > d_neighWallNodes
Neighbor data for contact between particle and walls.
Definition modelData.h:776
size_t currentStep() const
Definition modelData.h:164
size_t pdForceNode(size_t k) const
Definition modelData.h:154
void advanceTime()
Definition modelData.h:147
std::vector< float > d_e
Energy of the nodes.
Definition modelData.h:828
std::vector< util::Point > d_f
Total force on the nodes.
Definition modelData.h:757
double & getThetax(size_t i)
Get volumetric deformation (thetax) of the node.
Definition modelData.h:569
void addF(size_t i, int dof, double f)
Add to force of the node.
Definition modelData.h:459
std::vector< double > d_mX
Weighted volume.
Definition modelData.h:808
double & getMx(size_t i)
Get weighted-volume (mx) of the node.
Definition modelData.h:538
std::vector< std::vector< int > > d_pdGhostNeedFrom
Ghost node ids requested from each rank (PD DOF halo).
Definition modelData.h:695
std::vector< std::pair< double, std::string > > d_pvdStrainEntries
(simulation time, VTU filename) for output_strain.pvd
Definition modelData.h:610
std::unique_ptr< loading::ParticleULoading > d_uLoading_p
Pointer to displacement Loading object.
Definition modelData.h:730
std::shared_ptr< inp::TestDeck > d_testDeck_p
Test deck.
Definition modelData.h:631
std::vector< std::vector< int > > d_pdGhostServeTo
Local node ids this rank must send to each rank.
Definition modelData.h:698
size_t & getPtId(size_t i)
Get particle id given the location in particle list.
Definition modelData.h:187
const double & getVol(size_t i) const
Get volume of the node.
Definition modelData.h:476
const util::Point & getU(size_t i) const
Get displacement of the node.
Definition modelData.h:335
uint8_t & getFix(size_t i)
Get fixity of the node.
Definition modelData.h:504
void addV(size_t i, const util::Point &v)
Add to velocity of the node.
Definition modelData.h:396
void setF(size_t i, const util::Point &f)
Set force of the node.
Definition modelData.h:436
bool d_pdDofMpi
Nodal DOF-MPI active.
Definition modelData.h:680
std::vector< particle::BaseParticle * > d_particlesListTypeParticle
List of particles.
Definition modelData.h:707
particle::BaseParticle *& getParticleFromParticleList(size_t i)
Definition modelData.h:102
std::vector< std::vector< float > > d_neighPdSqdDist
Square distance neighbor data for peridynamic forces.
Definition modelData.h:773
std::vector< size_t > d_pdNodePartition
Owner rank for each node when d_pdDofMpi is true.
Definition modelData.h:692
void addThetax(size_t i, const double &thetax)
Add to volumetric deformation (thetax) of the node.
Definition modelData.h:586
float d_tk
Total kinetic energy.
Definition modelData.h:861
const util::Point & getX(size_t i) const
Get current coordinate of the node.
Definition modelData.h:288
std::unique_ptr< geometry::Fracture > d_fracture_p
Fracture state of bonds.
Definition modelData.h:736
void setU(size_t i, const util::Point &u)
Set displacement of the node.
Definition modelData.h:342
double d_time
Current time.
Definition modelData.h:595
std::string d_name
Model name for log prefixes.
Definition modelData.h:604
void addXRef(size_t i, int dof, double x)
Add specific reference coordinate of the node.
Definition modelData.h:271
const util::Point & getXRef(size_t i) const
Get reference coordinate of the node.
Definition modelData.h:241
util::Point & getU(size_t i)
Get displacement of the node.
Definition modelData.h:332
particle::BaseParticle *& getParticleFromAllList(size_t i)
Get pointer to base particle.
Definition modelData.h:90
double currentDt() const
Definition modelData.h:143
float d_te
Total internal energy.
Definition modelData.h:855
std::vector< double > d_thetaX
Dilation.
Definition modelData.h:802
particle::BaseParticle *& getParticleFromWallList(size_t i)
Definition modelData.h:114
std::shared_ptr< inp::ModelDeck > d_modelDeck_p
Pointer to deck holding problem related data.
Definition modelData.h:622
std::vector< std::vector< size_t > > d_neighC
Neighbor data for contact forces.
Definition modelData.h:767
void setVMag(size_t i, double mag)
Definition modelData.h:162
std::vector< size_t > d_ptId
Global node to particle id (walls are assigned id after last particle id)
Definition modelData.h:764
std::vector< float > d_phi
Damage function at the nodes (volume-weighted, Silling 2000)
Definition modelData.h:834
const particle::BaseParticle * getParticleFromParticleList(size_t i) const
Get pointer to particle (excluding wall)
Definition modelData.h:98
double getDensity(size_t i)
Get density of particle.
Definition modelData.cpp:14
std::shared_ptr< inp::RestartDeck > d_restartDeck_p
Pointer to deck holding restart related data.
Definition modelData.h:628
void setFix(size_t i, const unsigned int &dof, const bool &flag)
Set fixity of the node.
Definition modelData.h:515
double d_hMin
Maximum mesh over all particles and walls.
Definition modelData.h:646
double & getVol(size_t i)
Get volume of the node.
Definition modelData.h:473
std::vector< float > d_w
Work done on each of the nodes.
Definition modelData.h:831
std::shared_ptr< inp::ParticleDeck > d_particleDeck_p
Pointer to deck holding particle related data.
Definition modelData.h:637
const uint8_t & getFix(size_t i) const
Get fixity of the node.
Definition modelData.h:507
util::Point & getF(size_t i)
Get force of the node.
Definition modelData.h:426
std::vector< particle::BaseParticle * > d_particlesListTypeWall
List of walls.
Definition modelData.h:710
util::Point & getV(size_t i)
Get velocity of the node.
Definition modelData.h:379
std::unique_ptr< NSearch > d_nsearch_p
Pointer to nsearch.
Definition modelData.h:739
const util::Point & getV(size_t i) const
Get velocity of the node.
Definition modelData.h:382
std::vector< particle::BaseParticle * > d_particlesListTypeAll
List of particles + walls.
Definition modelData.h:704
bool d_mpiGhostPlanValid
True once a ghost communication plan has been built.
Definition modelData.h:674
util::Point & getX(size_t i)
Get current coordinate of the node.
Definition modelData.h:285
size_t d_mpiGhostStepsSinceRebuild
Force steps since last ghost-plan rebuild.
Definition modelData.h:677
void addXRef(size_t i, const util::Point &x)
Add reference coordinate of the node.
Definition modelData.h:255
void setU(size_t i, int dof, double u)
Set displacement of the node.
Definition modelData.h:357
std::vector< std::vector< size_t > > d_neighPd
Neighbor data for peridynamic forces.
Definition modelData.h:770
void addF(size_t i, const util::Point &f)
Add to force of the node.
Definition modelData.h:443
std::vector< float > d_eF
Fracture energy of the nodes.
Definition modelData.h:840
double d_maxContactR
Maximum contact radius between over pairs of particles and walls.
Definition modelData.h:649
void appendKeyData(std::string key, double data, bool issue_err=false)
Append value to data associated with key.
Definition modelData.h:215
bool isDofFree(size_t i, unsigned int dof) const
Definition modelData.h:156
size_t numTimeSteps() const
Definition modelData.h:166
double d_contNeighSearchRadius
Neighborlist contact search radius (multiple of d_maxContactR). This variable will be updated during ...
Definition modelData.h:658
void setCurrentDt(double dt)
Definition modelData.h:145
util::Point & getXRef(size_t i)
Get reference coordinate of the node.
Definition modelData.h:238
std::vector< inp::MatData > d_particlesMatDataList
List of particle material data. Only populated if needed for calculation of stress or other quantitie...
Definition modelData.h:716
double d_hMax
Minimum mesh over all particles and walls.
Definition modelData.h:643
double timeStep() const
Definition modelData.h:141
float d_teFB
Total bond-based fracture energy.
Definition modelData.h:867
const double & getThetax(size_t i) const
Get volumetric deformation (thetax) of the node.
Definition modelData.h:572
void setXRef(size_t i, int dof, double x)
Set specific reference coordinate of the node.
Definition modelData.h:263
void addU(size_t i, const util::Point &u)
Add to displacement of the node.
Definition modelData.h:349
void addX(size_t i, const util::Point &x)
Add current coordinate of the node.
Definition modelData.h:302
bool d_pdGrainAligned
DOF owners match whole-grain brick (same as particle-MPI). When true, every node of a grain lives on ...
Definition modelData.h:689
std::vector< size_t > d_fPdCompNodes
List of global nodes on which force (peridynamic/internal) is to be computed.
Definition modelData.h:812
size_t d_contNeighTimestepCounter
Contact neighborlist time step counter.
Definition modelData.h:655
double getKeyData(std::string key, bool issue_err=false)
Get data for a key.
Definition modelData.h:206
std::map< std::string, double > d_dbgData
Debug data.
Definition modelData.h:613
double getHorizon(size_t i)
Get horizon of particle.
Definition modelData.cpp:17
void setMx(size_t i, const double &mx)
Set weighted-volume (mx) of the node.
Definition modelData.h:548
std::vector< std::vector< int > > d_mpiGhostServeTo
Cached grain ids this rank must send to each MPI rank.
Definition modelData.h:671
void setThetax(size_t i, const double &thetax)
Set volumetric deformation (thetax) of the node.
Definition modelData.h:579
std::vector< std::pair< double, std::string > > d_pvdParticleEntries
(simulation time, VTU filename) for output.pvd
Definition modelData.h:607
std::vector< double > d_vMag
Magnitude of velocity of the nodes.
Definition modelData.h:754
std::unique_ptr< loading::ParticleFLoading > d_fLoading_p
Pointer to force Loading object.
Definition modelData.h:733
double getVMag(size_t i) const
Definition modelData.h:160
void setPtId(size_t i, const size_t &id)
Set particle id given the location in particle list.
Definition modelData.h:197
double d_maxVelocity
Maximum velocity among all nodes.
Definition modelData.h:722
std::shared_ptr< inp::Input > d_input_p
Pointer to Input object.
Definition modelData.h:619
size_t d_contNeighUpdateInterval
Neighborlist update interval.
Definition modelData.h:652
size_t d_infoN
Print log step interval.
Definition modelData.h:601
void setXRef(size_t i, const util::Point &x)
Set reference coordinate of the node.
Definition modelData.h:248
double d_currentDt
Current timestep.
Definition modelData.h:598
const particle::BaseParticle * getParticleFromWallList(size_t i) const
Get pointer to wall.
Definition modelData.h:110
const size_t & getPtId(size_t i) const
Get particle id given the location in particle list.
Definition modelData.h:190
void setV(size_t i, const util::Point &v)
Set velocity of the node.
Definition modelData.h:389
void addV(size_t i, int dof, double v)
Add to velocity of the node.
Definition modelData.h:412
bool shouldOutput() const
Definition modelData.h:174
std::shared_ptr< inp::BCDeck > d_bcDeck_p
Boundary condition deck.
Definition modelData.h:634
void setV(size_t i, int dof, double v)
Set velocity of the node.
Definition modelData.h:404
size_t numPdForceNodes() const
Definition modelData.h:152
std::vector< double > d_vol
Nodal volumes.
Definition modelData.h:760
void addX(size_t i, int dof, double x)
Add to specific current coordinate of the node.
Definition modelData.h:318
std::shared_ptr< inp::OutputDeck > d_outputDeck_p
Pointer to deck holding output related data.
Definition modelData.h:625
std::ofstream d_ppFile
File stream to output information.
Definition modelData.h:616
const double & getMx(size_t i) const
Get weighted-volume (mx) of the node.
Definition modelData.h:541
std::vector< std::vector< std::vector< double > > > d_neighWallNodesDistance
Neighbor data (distance) for contact between particle and walls.
Definition modelData.h:779
std::vector< util::SymMatrix3 > d_stress
Stress in elements (values at quadrature points)
Definition modelData.h:852
void setKeyData(std::string key, double data, bool issue_err=false)
Set value to data associated with key.
Definition modelData.h:224
std::vector< util::Point > d_v
Velocity of the nodes.
Definition modelData.h:751
ModelData(std::shared_ptr< inp::Input > &deck)
Constructor.
Definition modelData.h:57
std::vector< float > d_phiBond
Damage as broken-bond count fraction (Bhattacharya & Lipton 2023)
Definition modelData.h:837
std::vector< std::vector< size_t > > d_zInfo
Zone information of particles. For zone 0, d_zInfo[0] = [n1, n2] where n1 is the index at which the p...
Definition modelData.h:727
std::vector< std::shared_ptr< particle::RefParticle > > d_referenceParticles
Pointer to reference particle.
Definition modelData.h:701
float d_tw
Total work done.
Definition modelData.h:858
std::vector< util::SymMatrix3 > d_strain
Strain in elements (values at quadrature points)
Definition modelData.h:849
std::vector< uint8_t > d_forceFixity
Vector of fixity mask of each node for force.
Definition modelData.h:795
bool d_stop
flag to stop the simulation midway
Definition modelData.h:640
void setVol(size_t i, const double &vol)
Set volume of the node.
Definition modelData.h:483
std::vector< std::vector< int > > d_mpiGhostNeedFrom
Cached ghost grain ids requested from each MPI rank (skin rebuild).
Definition modelData.h:668
void setX(size_t i, int dof, double x)
Set specific current coordinate of the node.
Definition modelData.h:310
size_t d_n
Current time step.
Definition modelData.h:592
const particle::BaseParticle * getParticleFromAllList(size_t i) const
Get pointer to base particle.
Definition modelData.h:86
std::vector< char > d_mpiIncludeInContactCloud
Per entry in d_particlesListTypeAll: include nodes in the MPI contact search cloud (owned grains,...
Definition modelData.h:665
void setX(size_t i, const util::Point &x)
Set current coordinate of the node.
Definition modelData.h:295
std::vector< util::Point > d_xQuadCur
Current position of quadrature points.
Definition modelData.h:846
void addVol(size_t i, const double &vol)
Add to volume of the node.
Definition modelData.h:490
bool performOutput() const
Definition modelData.h:172
A class for nearest neighbor search using nanoflann library.
Definition nsearch.h:178
A class to store particle geometry, nodal discretization, and methods.
A class to store reference particle related data. Consider a case of multiple hexagon-shaped particle...
Definition refParticle.h:38
void setupQuadratureData(ModelData &data)
nsearch::NFlannSearchKd< 3 > NSearch
Definition modelData.h:33
Definition contact.h:20
Collection of methods and data related to particle object.
Definition modelData.h:36
T max(const std::vector< T > &data)
Returns the maximum from list of data.
Definition vecMethods.h:76
bool isFree(const int &i, const unsigned int &dof)
Returns true if degree of freedom is free.
Definition vecMethods.h:254
A structure to represent 3d vectors.
Definition point.h:30