1
/*************************************************************************
2
* Copyright (C) 2007 by Bruno CHAREYRE *
3
* bruno.chareyre@hmg.inpg.fr *
5
* This program is free software; it is licensed under the terms of the *
6
* GNU General Public License v2 or later. See file LICENSE for details. *
7
*************************************************************************/
11
#include<yade/pkg/common/Dispatching.hpp>
12
#include<yade/pkg/common/ElastMat.hpp>
13
#include<yade/pkg/dem/HertzMindlin.hpp>
15
class MindlinCapillaryPhys : public MindlinPhys
18
int currentIndexes [4]; // used for faster interpolation (stores previous positions in tables)
20
virtual ~MindlinCapillaryPhys();
22
YADE_CLASS_BASE_DOC_ATTRS_DEPREC_INIT_CTOR_PY(MindlinCapillaryPhys,MindlinPhys,"Adds capillary physics to Mindlin's interaction physics.",
23
((bool,meniscus,false,,"Presence of a meniscus if true"))
24
((bool,isBroken,false,,"If true, capillary force is zero and liquid bridge is inactive."))
25
((Real,capillaryPressure,0.,,"Value of the capillary pressure Uc defines as Ugas-Uliquid"))
26
((Real,vMeniscus,0.,,"Volume of the menicus"))
27
((Real,Delta1,0.,,"Defines the surface area wetted by the meniscus on the smallest grains of radius R1 (R1<R2)"))
28
((Real,Delta2,0.,,"Defines the surface area wetted by the meniscus on the biggest grains of radius R2 (R1<R2)"))
29
((Vector3r,fCap,Vector3r::Zero(),,"Capillary Force produces by the presence of the meniscus"))
30
((short int,fusionNumber,0.,,"Indicates the number of meniscii that overlap with this one"))
32
((Fcap,fCap,"naming convention"))
33
((CapillaryPressure,capillaryPressure,"naming convention"))
34
,,createIndex();currentIndexes[0]=currentIndexes[1]=currentIndexes[2]=currentIndexes[3]=0;
37
REGISTER_CLASS_INDEX(MindlinCapillaryPhys,MindlinPhys);
39
REGISTER_SERIALIZABLE(MindlinCapillaryPhys);
42
class Ip2_FrictMat_FrictMat_MindlinCapillaryPhys : public IPhysFunctor
45
virtual void go( const shared_ptr<Material>& b1,
46
const shared_ptr<Material>& b2,
47
const shared_ptr<Interaction>& interaction);
49
FUNCTOR2D(FrictMat,FrictMat);
50
YADE_CLASS_BASE_DOC_ATTRS(Ip2_FrictMat_FrictMat_MindlinCapillaryPhys,IPhysFunctor, "RelationShips to use with Law2_ScGeom_CapillaryPhys_Capillarity\n\n In these RelationShips all the interaction attributes are computed. \n\n.. warning::\n\tas in the others :yref:`Ip2 functors<IPhysFunctor>`, most of the attributes are computed only once, when the interaction is new.",
51
((Real,gamma,0.0,,"Surface energy parameter [J/m^2] per each unit contact surface, to derive DMT formulation from HM"))
52
((Real,eta,0.0,,"Coefficient to determine the plastic bending moment"))
53
((Real,krot,0.0,,"Rotational stiffness for moment contact law"))
54
((Real,ktwist,0.0,,"Torsional stiffness for moment contact law"))
55
((shared_ptr<MatchMaker>,en,,,"Normal coefficient of restitution $e_n$."))
56
((shared_ptr<MatchMaker>,es,,,"Shear coefficient of restitution $e_s$."))
57
((shared_ptr<MatchMaker>,betan,,,"Normal viscous damping coefficient $\\beta_n$."))
58
((shared_ptr<MatchMaker>,betas,,,"Shear viscous damping coefficient $\\beta_s$."))
62
REGISTER_SERIALIZABLE(Ip2_FrictMat_FrictMat_MindlinCapillaryPhys);