45 #ifdef DEBUG_CONSTRUCTOR
46 std::cout <<
"LiquidMigrationWilletInteraction::LiquidMigrationWilletInteraction() finished" << std::endl;
58 #ifdef DEBUG_CONSTRUCTOR
59 std::cout <<
"LiquidMigrationWilletInteraction::LiquidMigrationWilletInteraction(const LiquidMigrationWilletInteraction &p finished" << std::endl;
68 #ifdef DEBUG_DESTRUCTOR
69 std::cout <<
"LiquidMigrationWilletInteraction::~LiquidMigrationWilletInteraction() finished" << std::endl;
165 else if (PParticle == 0)
187 IParticleReal = IParticle;
190 Mdouble distributableLiquidVolume =
195 if (distributableLiquidVolume <= 0)
199 else if (distributableLiquidVolume <= species->getLiquidBridgeVolumeMax())
252 int numContactsP = 0;
262 if (numContactsP > 0)
265 Mdouble ExcessBridgeVolume = 0.0;
279 ExcessBridgeVolume +=
307 else if (PParticle == 0)
309 int numContactsI = 0;
317 if (numContactsI > 0)
320 Mdouble ExcessBridgeVolume = 0.0;
353 if (numContactsP < 1)
361 for (
auto i :
getP()->getInteractions())
370 if (excessVolume < 0.0)
389 if (numContactsI < 1)
410 if (excessVolume < 0.0)
469 return "LiquidMigrationWillet";
512 return "liquidBridgeRadius";
std::string getTypeVTK(unsigned i) const override
unsigned int getIndex() const
Returns the index of the object in the handler.
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...
Mdouble getEffectiveRadius() const
Returns a Mdouble to the effective radius of the interaction. (Not corrected for the overlap) ...
int getNumberOfContacts(BaseInteractable *interactable)
Defines the liquid bridge willet interaction between two particles or walls.
void addLiquidVolume(Mdouble liquidVolume)
InteractionHandler * getHandler() const
Gets a point to the interaction handlers to which this interaction belongs.
Mdouble getElasticEnergy() const
Returns the amount of Elastic energy involved in an interaction. Basically used in case you want to w...
Mdouble getContactAngle() const
used to access the contact angle between particle and liquid bridge surface.
Stores information about interactions between two interactable objects; often particles but could be ...
Mdouble getLiquidBridgeVolumeMax() const
used to access the Volume of the liquid bridge.
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...
BaseParticle * getPeriodicFromParticle() const
Returns the 'original' particle this one's a periodic copy of.
Mdouble getDistributionCoefficient() const
used to access the surface tension of the liquid.
Mdouble getLiquidBridgeVolume() const
const BaseSpecies * getBaseSpecies() const
Return a constant point to BaseSpecies of the interaction.
Mdouble getRuptureDistance()
virtual void actionsOnErase()
If an interaction needs to do something before it gets erased, add it here. E.g. Liquid bridges ruptu...
void setWasInContact(bool wasInContact)
ParticleHandler particleHandler
An object of the class ParticleHandler, contains the pointers to all the particles created...
void setLiquidVolume(Mdouble liquidVolume)
const Vec3D & getNormal() const
Gets the normal vector between the two interacting objects.
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.
virtual ~LiquidMigrationWilletInteraction()
Destructor.
Mdouble getOverlap() const
Returns a Mdouble with the current overlap between the two interacting objects.
void addForce(Vec3D force)
add an force increment to the total force.
std::string getNameVTK(unsigned i) const override
bool getWasInContact() const
void addLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Mdouble liquidBridgeVolume_
BaseInteractable * getI()
Mdouble getLiquidVolume() const
void setLiquidBridgeVolume(Mdouble liquidBridgeVolume)
Defines the basic properties that a interactable object can have.
const std::list< BaseInteraction * > & getInteractions() const
Returns a reference to the list of interactions in this BaseInteractable.
void computeAdhesionForce()
Computes the adhesive forces for liquid bridge Willet type of interaction.
BaseInteractable * getP()
Returns a pointer to first object involved in the interaction (normally a particle).
DPMBase * getDPMBase()
Gets the problem that is solved using this handler.
Mdouble getSurfaceTension() const
used to access the surface tension of the liquid.
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.