26 #ifndef StressStrainControlBoundary_H
27 #define StressStrainControlBoundary_H
68 void read(std::istream& is)
override;
71 void write(std::ostream& os)
const override;
74 std::string
getName()
const override;
86 bool isStrainRateControlled);
double Mdouble
Definition: GeneralDefine.h:34
Definition: BaseBoundary.h:49
Implementation of a 3D matrix.
Definition: Matrix.h:38
Container to store all BaseParticle.
Definition: ParticleHandler.h:48
Container to store pointers to all BasePeriodicBoundary objects.
Definition: PeriodicBoundaryHandler.h:46
A cuboid box consists of periodic boundaries that can be strain/stress controlled and achieve differe...
Definition: StressStrainControlBoundary.h:55
Matrix3D gainFactor_
Definition: StressStrainControlBoundary.h:143
bool isStrainRateControlled_
The boolean input, true means switch on the strain rate control for particles affine movements.
Definition: StressStrainControlBoundary.h:146
void write(std::ostream &os) const override
Adds object's id_ to given ostream.
Definition: StressStrainControlBoundary.cc:64
void checkPeriodicLeesEdwardsBoundariesAfterParticlesMove(ParticleHandler &particleHandler)
Call the boundary and update them based on the new domain size after the stress-control movement.
Definition: StressStrainControlBoundary.cc:139
Mdouble integratedShift_
Shift integrated for all the time when using Lees-Edwards Boundary.
Definition: StressStrainControlBoundary.h:149
void set(const Matrix3D &stressGoal, const Matrix3D &strainRate, const Matrix3D &gainFactor, bool isStrainRateControlled)
Sets all boundary inputs at once and determines which deformation mode it is, then combine the right ...
Definition: StressStrainControlBoundary.cc:310
std::vector< PeriodicBoundary > periodicBoundaries_
Definition: StressStrainControlBoundary.h:157
Matrix3D getStressGoal() const
Accesses the target stress tensor.
Definition: StressStrainControlBoundary.h:117
void activateStrainRateControl(const ParticleHandler &particleHandler)
Activate the strainrate control for particle movement based on user's boolean input.
Definition: StressStrainControlBoundary.cc:199
virtual ~StressStrainControlBoundary()=default
destructor.
StressStrainControlBoundary * copy() const override
Used to create a copy of the object.
Definition: StressStrainControlBoundary.cc:55
Mdouble computeStressError()
Definition: StressStrainControlBoundary.cc:48
std::string getName() const override
Sets the name of the boundary.
Definition: StressStrainControlBoundary.cc:105
Matrix3D getGainFactor() const
Accesses the gainFactor.
Definition: StressStrainControlBoundary.h:120
void createPeriodicParticles(ParticleHandler &particleHandler) override
Create the periodic particles after read in from a restart file to attain right information.
Definition: StressStrainControlBoundary.cc:384
Matrix3D strainRate_
Definition: StressStrainControlBoundary.h:143
Matrix3D getStrainRate() const
Accesses the strainrate tensor.
Definition: StressStrainControlBoundary.h:114
void determineLengthAndCentre()
Determine the length in x,y,z and center location of domain.
Definition: StressStrainControlBoundary.cc:156
void setStrainRate(const Matrix3D &strainRate)
Definition: StressStrainControlBoundary.cc:375
Matrix3D stressGoal_
Stores the stress value the boundary should attain.
Definition: StressStrainControlBoundary.h:143
void read(std::istream &is) override
Reads the object's id_ from given istream.
Definition: StressStrainControlBoundary.cc:89
void determineStressControlledShearBoundaries()
Determines stress-controlled shear Lees-Edwards boundary in x-y direction and normal periodic in z di...
Definition: StressStrainControlBoundary.cc:268
void checkBoundaryAfterParticlesMove(ParticleHandler &particleHandler) override
Virtual function that does things to particles, each timestep after particles have moved.
Definition: StressStrainControlBoundary.cc:115
void updateDomainSize()
Update the domain to new sizes.
Definition: StressStrainControlBoundary.cc:246
std::vector< LeesEdwardsBoundary > leesEdwardsBoundaries_
Definition: StressStrainControlBoundary.h:156
void computeStrainRate()
Compute the change of strainrate tensor based on the stress difference and then update the tensor.
Definition: StressStrainControlBoundary.cc:165
StressStrainControlBoundary()
default constructor.
Definition: StressStrainControlBoundary.cc:37
double getIntegratedShift() const
Definition: StressStrainControlBoundary.h:127
StressStrainControlBoundary(const StressStrainControlBoundary &b)=default
copy constructor.