MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
LiquidMigrationWilletInteraction.h
Go to the documentation of this file.
1 //Copyright (c) 2013-2014, The MercuryDPM Developers Team. All rights reserved.
2 //For the list of developers, see <http://www.MercuryDPM.org/Team>.
3 //
4 //Redistribution and use in source and binary forms, with or without
5 //modification, are permitted provided that the following conditions are met:
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above copyright
9 // notice, this list of conditions and the following disclaimer in the
10 // documentation and/or other materials provided with the distribution.
11 // * Neither the name MercuryDPM nor the
12 // names of its contributors may be used to endorse or promote products
13 // derived from this software without specific prior written permission.
14 //
15 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 //ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 //WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 //DISCLAIMED. IN NO EVENT SHALL THE MERCURYDPM DEVELOPERS TEAM BE LIABLE FOR ANY
19 //DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 //(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 //ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 //(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 
26 #ifndef LiquidMigrationWilletInteraction_H
27 #define LiquidMigrationWilletInteraction_H
28 
30 #include "Math/Vector.h"
31 
32 class BaseParticle;
34 class BaseInteractable;
40 {
41 public:
58 
59  virtual void actionsOnErase();
60 
61  void actionsAfterTimeStep();
62 
66  void computeAdhesionForce();
70  void read(std::istream& is);
74  void write(std::ostream& os) const;
79  Mdouble getElasticEnergy() const;
87  std::string getBaseName() const;
88 
90 
91  void setLiquidBridgeVolume(Mdouble liquidBridgeVolume);
92 
93  void addLiquidBridgeVolume(Mdouble liquidBridgeVolume);
94 
95  bool getWasInContact() const;
96 
97  void setWasInContact(bool wasInContact);
98 
99  void rupture();
100 
101  void form();
102 
104 
105  int getNumberOfContacts(BaseInteractable* interactable);
106 
110  unsigned getNumberOfFieldsVTK() const override;
111 
112  std::string getTypeVTK(unsigned i) const override;
113 
114  std::string getNameVTK(unsigned i) const override;
115 
116  std::vector<Mdouble> getFieldVTK(unsigned i) const override;
117 
118 private:
124 
126 };
127 #endif
std::string getTypeVTK(unsigned i) const override
unsigned getNumberOfFieldsVTK() const override
writes extra information to the VTK output
LiquidMigrationWilletSpecies contains the parameters used to describe a short-range force caused by l...
int getNumberOfContacts(BaseInteractable *interactable)
Defines the liquid bridge willet interaction between two particles or walls.
Mdouble getElasticEnergy() const
Returns the amount of Elastic energy involved in an interaction. Basically used in case you want to w...
double Mdouble
Stores information about interactions between two interactable objects; often particles but could be ...
LiquidMigrationWilletInteraction(BaseInteractable *P, BaseInteractable *I, Mdouble timeStamp)
Constructor.
std::vector< Mdouble > getFieldVTK(unsigned i) const override
bool wasInContact_
A history parameter to store if the particles were in contact or not. Useful to compute adhesive forc...
virtual void actionsOnErase()
If an interaction needs to do something before it gets erased, add it here. E.g. Liquid bridges ruptu...
std::string getBaseName() const
Returns the name of the interaction, see Interaction.h.
void read(std::istream &is)
Interaction read function, which accepts an std::istream as input.
std::string getNameVTK(unsigned i) const override
void addLiquidBridgeVolume(Mdouble liquidBridgeVolume)
void setLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Defines the basic properties that a interactable object can have.
void computeAdhesionForce()
Computes the adhesive forces for liquid bridge Willet type of interaction.
LiquidMigrationWilletSpecies SpeciesType
An alias name for LiquidMigrationWilletSpecies data type.
void write(std::ostream &os) const
Interaction print function, which accepts an std::ostream as input.
void actionsAfterTimeStep()
test if particle needs to be ruptured
const LiquidMigrationWilletSpecies * getSpecies() const
A dynamic_cast of BaseSpecies type pointer to a pointer of type LiquidMigrationWilletSpecies.