LiquidMigrationLSInteraction.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef LiquidMigrationLSInteraction_H
6 #define LiquidMigrationLSInteraction_H
7 
9 #include "Math/Vector.h"
10 #include "ParticleHandler.h"
11 #include "InteractionHandler.h"
12 
13 class BaseParticle;
14 
16 
17 class BaseInteractable;
18 
19 // First forward declare template class LiquidFilm and class SphericalParticle, to forward declare typedef LiquidFilmParticle.
20 template <class T>
21 class LiquidFilm;
22 class SphericalParticle;
24 
30 {
31 public:
36 
41 
42  //used for mpi
44 
49 
54 
55  void actionsOnErase() override;
56 
57  void actionsAfterTimeStep() override;
58 
62  void computeAdhesionForce();
63 
67  void read(std::istream& is) override;
68 
72  void write(std::ostream& os) const override;
73 
78  Mdouble getElasticEnergy() const override;
79 
83  const LiquidMigrationLSSpecies* getSpecies() const;
84 
88  std::string getBaseName() const;
89 
91 
92  void setLiquidBridgeVolume(Mdouble liquidBridgeVolume);
93 
94  void addLiquidBridgeVolume(Mdouble liquidBridgeVolume);
95 
96  bool getWasInContact() const;
97 
98  void setWasInContact(bool wasInContact);
99 
100  void rupture();
101 
102  void form();
103 
105 
107 
109 
113  unsigned getNumberOfFieldsVTK() const override;
114 
115  std::string getTypeVTK(unsigned i) const override;
116 
117  std::string getNameVTK(unsigned i) const override;
118 
119  std::vector<Mdouble> getFieldVTK(unsigned i) const override;
120 
122 
124 
125 private:
126  void distributeToOtherBridges(LiquidFilmParticle* particle, Mdouble distributableVolume);
127 
128 private:
134 
136 };
137 
138 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
LiquidFilm< SphericalParticle > LiquidFilmParticle
Definition: LiquidMigrationLSInteraction.h:22
float * p
Definition: Tutorial_Map_using.cpp:9
Defines the basic properties that a interactable object can have.
Definition: BaseInteractable.h:34
Stores information about interactions between two interactable objects; often particles but could be ...
Definition: BaseInteraction.h:39
Definition: BaseParticle.h:33
Container to store Interaction objects.
Definition: InteractionHandler.h:25
Definition: LiquidFilmParticle.h:15
Defines the liquid bridge LS interaction between two particles or walls.
Definition: LiquidMigrationLSInteraction.h:30
Mdouble liquidBridgeVolume_
Definition: LiquidMigrationLSInteraction.h:135
bool getWasInContact() const
Definition: LiquidMigrationLSInteraction.cc:310
void actionsAfterTimeStep() override
test if particle needs to be ruptured
Definition: LiquidMigrationLSInteraction.cc:153
void write(std::ostream &os) const override
Interaction print function, which accepts an std::ostream as input.
Definition: LiquidMigrationLSInteraction.cc:73
void read(std::istream &is) override
Interaction read function, which accepts an std::istream as input.
Definition: LiquidMigrationLSInteraction.cc:83
void computeAdhesionForce()
Computes the adhesive forces for liquid bridge LS type of interaction.
Definition: LiquidMigrationLSInteraction.cc:100
~LiquidMigrationLSInteraction() override
Destructor.
Definition: LiquidMigrationLSInteraction.cc:58
LiquidMigrationLSInteraction()
Definition: LiquidMigrationLSInteraction.cc:32
bool wasInContact_
A history parameter to store if the particles were in contact or not. Useful to compute adhesive forc...
Definition: LiquidMigrationLSInteraction.h:133
unsigned getNumberOfFieldsVTK() const override
Definition: LiquidMigrationLSInteraction.cc:337
std::string getNameVTK(unsigned i) const override
Definition: LiquidMigrationLSInteraction.cc:347
Mdouble getHalfFillingAngle()
Definition: LiquidMigrationLSInteraction.cc:326
void rupture()
Definition: LiquidMigrationLSInteraction.cc:241
static Mdouble getTotalLiquidFilmVolume(ParticleHandler &)
Definition: LiquidMigrationLSInteraction.cc:358
Mdouble getElasticEnergy() const override
Returns the amount of Elastic energy involved in an interaction. Basically used in case you want to w...
Definition: LiquidMigrationLSInteraction.cc:273
std::string getBaseName() const
Returns the name of the interaction, see Interaction.h.
Definition: LiquidMigrationLSInteraction.cc:290
static Mdouble getTotalLiquidBridgeVolume(InteractionHandler &)
Definition: LiquidMigrationLSInteraction.cc:372
Mdouble getLimitingDistance()
Definition: LiquidMigrationLSInteraction.cc:332
const LiquidMigrationLSSpecies * getSpecies() const
Returns a pointer to the adhesive force species LiquidMigrationLSSpecies.
Definition: LiquidMigrationLSInteraction.cc:282
void setLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationLSInteraction.cc:300
Mdouble getLiquidBridgeVolume() const
Definition: LiquidMigrationLSInteraction.cc:295
void distributeToOtherBridges(LiquidFilmParticle *particle, Mdouble distributableVolume)
Definition: LiquidMigrationLSInteraction.cc:211
void form()
Definition: LiquidMigrationLSInteraction.cc:171
std::string getTypeVTK(unsigned i) const override
Definition: LiquidMigrationLSInteraction.cc:342
LiquidMigrationLSSpecies SpeciesType
An alias name for LiquidMigrationLSSpecies data type.
Definition: LiquidMigrationLSInteraction.h:35
void setWasInContact(bool wasInContact)
Definition: LiquidMigrationLSInteraction.cc:315
std::vector< Mdouble > getFieldVTK(unsigned i) const override
Definition: LiquidMigrationLSInteraction.cc:353
Mdouble getRuptureDistance()
Definition: LiquidMigrationLSInteraction.cc:320
void addLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationLSInteraction.cc:305
void actionsOnErase() override
If an interaction needs to do something before it gets erased, add it here. E.g. Liquid bridges ruptu...
Definition: LiquidMigrationLSInteraction.cc:65
LiquidMigrationLSSpecies contains the parameters used to describe a short-range force caused by liqui...
Definition: LiquidMigrationLSSpecies.h:17
Container to store pointers to all particles.
Definition: ParticleHandler.h:28
A spherical particle is the most simple particle used in MercuryDPM.
Definition: SphericalParticle.h:16
#define I
Definition: main.h:127
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286