LiquidMigrationWilletInteraction.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 LiquidMigrationWilletInteraction_H
6 #define LiquidMigrationWilletInteraction_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 
84 
88  std::string getBaseName() const;
89 
91 
92  void setLiquidBridgeVolumeByEvaporation(Mdouble liquidBridgeVolume);
93 
94  void addLiquidBridgeVolumeByEvaporation(Mdouble liquidBridgeVolume);
95 
96  virtual void setLiquidBridgeVolume(Mdouble liquidBridgeVolume);
97 
98  virtual void addLiquidBridgeVolume(Mdouble liquidBridgeVolume);
99 
100  bool getWasInContact() const;
101 
102  void setWasInContact(bool wasInContact);
103 
104  virtual void rupture();
105 
106  void form();
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: LiquidMigrationWilletInteraction.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 willet interaction between two particles or walls.
Definition: LiquidMigrationWilletInteraction.h:30
void actionsAfterTimeStep() override
test if particle needs to be ruptured
Definition: LiquidMigrationWilletInteraction.cc:118
Mdouble getLiquidBridgeVolume() const
Definition: LiquidMigrationWilletInteraction.cc:260
virtual void setLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationWilletInteraction.cc:275
std::vector< Mdouble > getFieldVTK(unsigned i) const override
Definition: LiquidMigrationWilletInteraction.cc:317
static Mdouble getTotalLiquidFilmVolume(ParticleHandler &)
Definition: LiquidMigrationWilletInteraction.cc:322
Mdouble getElasticEnergy() const override
Returns the amount of Elastic energy involved in an interaction. Basically used in case you want to w...
Definition: LiquidMigrationWilletInteraction.cc:238
virtual void addLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationWilletInteraction.cc:280
static Mdouble getTotalLiquidBridgeVolume(InteractionHandler &)
Definition: LiquidMigrationWilletInteraction.cc:336
void setWasInContact(bool wasInContact)
Definition: LiquidMigrationWilletInteraction.cc:290
void read(std::istream &is) override
Interaction read function, which accepts an std::istream as input.
Definition: LiquidMigrationWilletInteraction.cc:81
virtual void rupture()
Definition: LiquidMigrationWilletInteraction.cc:206
void computeAdhesionForce()
Computes the adhesive forces for liquid bridge Willet type of interaction.
Definition: LiquidMigrationWilletInteraction.cc:91
const LiquidMigrationWilletSpecies * getSpecies() const
Returns a pointer to the adhesive force species LiquidMigrationWilletSpecies.
Definition: LiquidMigrationWilletInteraction.cc:247
Mdouble liquidBridgeVolume_
Definition: LiquidMigrationWilletInteraction.h:135
void distributeToOtherBridges(LiquidFilmParticle *particle, Mdouble distributableVolume)
Definition: LiquidMigrationWilletInteraction.cc:176
~LiquidMigrationWilletInteraction() override
Destructor.
Definition: LiquidMigrationWilletInteraction.cc:56
void form()
Definition: LiquidMigrationWilletInteraction.cc:136
std::string getNameVTK(unsigned i) const override
Definition: LiquidMigrationWilletInteraction.cc:311
LiquidMigrationWilletInteraction()
Definition: LiquidMigrationWilletInteraction.cc:30
LiquidMigrationWilletSpecies SpeciesType
An alias name for LiquidMigrationWilletSpecies data type.
Definition: LiquidMigrationWilletInteraction.h:35
std::string getTypeVTK(unsigned i) const override
Definition: LiquidMigrationWilletInteraction.cc:306
std::string getBaseName() const
Returns the name of the interaction, see Interaction.h.
Definition: LiquidMigrationWilletInteraction.cc:255
bool getWasInContact() const
Definition: LiquidMigrationWilletInteraction.cc:285
Mdouble getRuptureDistance()
Definition: LiquidMigrationWilletInteraction.cc:295
unsigned getNumberOfFieldsVTK() const override
Definition: LiquidMigrationWilletInteraction.cc:301
void setLiquidBridgeVolumeByEvaporation(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationWilletInteraction.cc:265
void actionsOnErase() override
If an interaction needs to do something before it gets erased, add it here. E.g. Liquid bridges ruptu...
Definition: LiquidMigrationWilletInteraction.cc:63
bool wasInContact_
A history parameter to store if the particles were in contact or not. Useful to compute adhesive forc...
Definition: LiquidMigrationWilletInteraction.h:133
void write(std::ostream &os) const override
Interaction print function, which accepts an std::ostream as input.
Definition: LiquidMigrationWilletInteraction.cc:71
void addLiquidBridgeVolumeByEvaporation(Mdouble liquidBridgeVolume)
Definition: LiquidMigrationWilletInteraction.cc:270
LiquidMigrationWilletSpecies contains the parameters used to describe a short-range force caused by l...
Definition: LiquidMigrationWilletSpecies.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