ESyS-Particle  2.3.4
ElasticInteraction.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __ELASTICINTERACTION_H
14 #define __ELASTICINTERACTION_H
15 
16 #include "Model/IGParam.h"
17 #include "Model/Interaction.h"
18 #include "Model/Particle.h"
19 
20 
24 class CElasticIGP : public AIGParam
25 {
26 protected:
27 public:
28  double m_k;
29  bool m_scaling;
30 
31  CElasticIGP();
32  CElasticIGP(const std::string&,double,bool scaling=true);
33 
34  virtual void packInto(CVarMPIBuffer*) const;
35  void setSpringConst(double k){m_k=k;};
36  double getSpringConst() const{return m_k;};
37 
38  virtual std::string getTypeString() const {return "Elastic";}
39 
40  friend ostream& operator<<(ostream&,const CElasticIGP&);
41 };
42 
43 
52 {
53 public:
54 
55  typedef double (CElasticInteraction::* ScalarFieldFunction)() const;
56  typedef pair<bool,double> (CElasticInteraction::* CheckedScalarFieldFunction)() const;
58 
59  static ScalarFieldFunction getScalarFieldFunction(const string&);
61  static VectorFieldFunction getVectorFieldFunction(const string&);
62 
63 private:
64  double m_k;
67  bool m_scaling;
68 
69 public:
71 
73  virtual ~CElasticInteraction(){};
74 
75  virtual Vec3 getPos() const {return m_cpos;};
76  double getPotentialEnergy() const;
77 
78  virtual void calcForces();
79  Vec3 getForce() const;
80  friend ostream& operator<<(ostream&,const CElasticInteraction&);
81 
82  // save/load of restart parameters
83  virtual void saveRestartData(std::ostream &oStream);
84  virtual void loadRestartData(std::istream &iStream);
85 };
86 #endif //__ELASTICINTERACTION_H
CElasticInteraction::m_cpos
Vec3 m_cpos
Definition: ElasticInteraction.h:66
CElasticInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: ElasticInteraction.cpp:116
CElasticInteraction::m_k
double m_k
spring constant
Definition: ElasticInteraction.h:64
APairInteraction
Abstract base class for 2-particle interactions.
Definition: Interaction.h:69
APairInteraction::m_p2
CParticle * m_p2
Definition: Interaction.h:71
CElasticInteraction::ParameterType
CElasticIGP ParameterType
Definition: ElasticInteraction.h:70
CElasticInteraction::VectorFieldFunction
Vec3(CElasticInteraction::* VectorFieldFunction)() const
Definition: ElasticInteraction.h:57
CVarMPIBuffer
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:35
CElasticInteraction::operator<<
friend ostream & operator<<(ostream &, const CElasticInteraction &)
Definition: ElasticInteraction.cpp:173
operator<<
ostream & operator<<(ostream &ost, const CElasticInteraction &BI)
Definition: ElasticInteraction.cpp:173
AInteraction::Count
double Count() const
Definition: Interaction.h:56
CElasticInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: ElasticInteraction.cpp:90
CElasticIGP::getSpringConst
double getSpringConst() const
Definition: ElasticInteraction.h:36
console.h
AInteraction::m_init
bool m_init
Definition: Interaction.h:41
APairInteraction::m_p1
CParticle * m_p1
Definition: Interaction.h:71
Interaction.h
CElasticIGP
Interaction group parameters for CElasticInteractionGroups.
Definition: ElasticInteraction.h:25
CElasticInteraction::getPos
virtual Vec3 getPos() const
Definition: ElasticInteraction.h:75
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
CElasticInteraction::m_scaling
bool m_scaling
toggles scaling of elastic properties by particle size
Definition: ElasticInteraction.h:67
CElasticInteraction::CElasticInteraction
CElasticInteraction(CParticle *, CParticle *, const CElasticIGP &)
Definition: ElasticInteraction.cpp:25
CElasticIGP::operator<<
friend ostream & operator<<(ostream &, const CElasticIGP &)
Definition: ElasticInteractionGroup.cpp:28
CElasticInteraction::~CElasticInteraction
virtual ~CElasticInteraction()
Definition: ElasticInteraction.h:73
NULL
#define NULL
Definition: t_list.h:17
CElasticIGP::m_k
double m_k
Definition: ElasticInteraction.h:28
CElasticInteraction::CheckedScalarFieldFunction
pair< bool, double >(CElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: ElasticInteraction.h:56
CElasticInteraction::loadRestartData
virtual void loadRestartData(std::istream &iStream)
Definition: ElasticInteraction.cpp:164
CElasticInteraction::getForce
Vec3 getForce() const
Definition: ElasticInteraction.cpp:80
CElasticInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: ElasticInteraction.cpp:131
CElasticIGP::packInto
virtual void packInto(CVarMPIBuffer *) const
Definition: ElasticInteractionGroup.cpp:22
Vec3
Definition: vec3.h:47
CParticle::getDo2dCalculations
static bool getDo2dCalculations()
Definition: Particle.h:181
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CElasticInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: ElasticInteraction.cpp:73
CElasticIGP::CElasticIGP
CElasticIGP()
Definition: ElasticInteraction.cpp:17
CElasticInteraction::saveRestartData
virtual void saveRestartData(std::ostream &oStream)
Definition: ElasticInteraction.cpp:150
CElasticIGP::setSpringConst
void setSpringConst(double k)
Definition: ElasticInteraction.h:35
CElasticInteraction::calcForces
virtual void calcForces()
Definition: ElasticInteraction.cpp:54
CElasticInteraction::ScalarFieldFunction
double(CElasticInteraction::* ScalarFieldFunction)() const
Definition: ElasticInteraction.h:55
CBasicParticle::getID
int getID() const
Definition: BasicParticle.h:65
ElasticInteraction.h
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
CElasticIGP::m_scaling
bool m_scaling
Definition: ElasticInteraction.h:29
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
CElasticIGP::getTypeString
virtual std::string getTypeString() const
Definition: ElasticInteraction.h:38
AInteraction::m_id
vector< int > m_id
id's of the particles involved
Definition: Interaction.h:39
CParticle
Class for a basic particle.
Definition: Particle.h:51
IGParam.h
CElasticInteraction
Elastic Interaction between free particles.
Definition: ElasticInteraction.h:52
Particle.h
CElasticInteraction::m_force
Vec3 m_force
caching force for E_pot
Definition: ElasticInteraction.h:65