ESyS-Particle  2.3.4
RotElasticInteraction.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 __ROTELASTICINTERACTION_H
14 #define __ROTELASTICINTERACTION_H
15 
17 #include "Model/RotParticle.h"
18 #include "Model/IGParam.h"
19 
20 
24 class CRotElasticIGP : public AIGParam
25 {
26  protected:
27  public:
29  CRotElasticIGP(const std::string &name, double kr, bool scaling);
30 
31  double m_kr;
32  bool m_scaling;
33 
34  virtual void packInto(CVarMPIBuffer*) const;
35  void setNormalSpringConst(double k){m_kr=k;};
36  double getNormalSpringConst() const{return m_kr;};
37 
38  virtual std::string getTypeString() const {return "RotElastic";}
39 
40  friend ostream& operator<<(ostream&,const CRotElasticIGP&);
41 };
42 
45 
51 {
52 public:
53  typedef double (CRotElasticInteraction::* ScalarFieldFunction)() const;
54  typedef pair<bool,double> (CRotElasticInteraction::* CheckedScalarFieldFunction)() const;
56 
57  static ScalarFieldFunction getScalarFieldFunction(const string&);
59  static VectorFieldFunction getVectorFieldFunction(const string&);
60 
61 private:
62  double m_kr;
64  double m_nForce;
67  bool m_scaling;
68 
69 public:
71 
75 
76  virtual Vec3 getPos() const {return m_cpos;}
77 
78  static string getType(){return "RotElastic";}
79 
80  virtual void calcForces();
81 
82  Vec3 getForce() const;
83  double getPotentialEnergy() const;
84 
85  friend ostream& operator<<(ostream&,const CRotElasticInteraction&);
86 
87  // save/load of restart parameters
88  virtual void saveRestartData(std::ostream &oStream);
89  virtual void loadRestartData(std::istream &iStream);
90 };
91 #endif //__ELASTICINTERACTION_H
RotPairInteraction.h
CRotElasticInteraction::getPotentialEnergy
double getPotentialEnergy() const
Definition: RotElasticInteraction.cpp:93
CRotElasticInteraction::m_scaling
bool m_scaling
scaling of normal stiffness with particle size
Definition: RotElasticInteraction.h:67
CRotElasticInteraction::getScalarFieldFunction
static ScalarFieldFunction getScalarFieldFunction(const string &)
Definition: RotElasticInteraction.cpp:103
CVarMPIBuffer
MPI send/recv buffer with automagically adjusted size.
Definition: mpivbuf.h:35
CRotElasticInteraction::ParameterType
CRotElasticIGP ParameterType
Definition: RotElasticInteraction.h:70
RotParticle.h
AInteraction::Count
double Count() const
Definition: Interaction.h:56
CRotElasticIGP::setNormalSpringConst
void setNormalSpringConst(double k)
Definition: RotElasticInteraction.h:35
CRotElasticInteraction::CheckedScalarFieldFunction
pair< bool, double >(CRotElasticInteraction::* CheckedScalarFieldFunction)() const
Definition: RotElasticInteraction.h:54
CRotElasticInteraction::m_cpos
Vec3 m_cpos
current position
Definition: RotElasticInteraction.h:65
operator<<
ostream & operator<<(ostream &ost, const CRotElasticInteraction &BI)
Definition: RotElasticInteraction.cpp:184
CRotElasticIGP::CRotElasticIGP
CRotElasticIGP()
Definition: RotElasticInteraction.cpp:21
console.h
CRotElasticInteraction::saveRestartData
virtual void saveRestartData(std::ostream &oStream)
Definition: RotElasticInteraction.cpp:159
AInteraction::m_init
bool m_init
Definition: Interaction.h:41
AMPIBuffer
Abstract base class for MPI send/recv buffer.
Definition: mpibuf.h:34
CRotElasticInteraction::getType
static string getType()
Definition: RotElasticInteraction.h:78
CRotElasticInteraction::m_nForce
double m_nForce
normal force, always >= 0
Definition: RotElasticInteraction.h:64
CRotElasticInteraction::m_force
Vec3 m_force
caching force for E_pot
Definition: RotElasticInteraction.h:63
Vec3::norm
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
CRotElasticIGP::operator<<
friend ostream & operator<<(ostream &, const CRotElasticIGP &)
Definition: RotElasticInteractionGroup.cpp:45
CRotElasticInteraction::~CRotElasticInteraction
virtual ~CRotElasticInteraction()
Definition: RotElasticInteraction.h:74
CParticle::applyForce
void applyForce(const Vec3 &, const Vec3 &)
Definition: Particle.cpp:384
CRotElasticInteraction::getForce
Vec3 getForce() const
Definition: RotElasticInteraction.cpp:61
ARotPairInteraction::m_p2
CRotParticle * m_p2
Definition: RotPairInteraction.h:31
CRotElasticInteraction::VectorFieldFunction
Vec3(CRotElasticInteraction::* VectorFieldFunction)() const
Definition: RotElasticInteraction.h:55
CRotElasticIGP::m_kr
double m_kr
Definition: RotElasticInteraction.h:31
NULL
#define NULL
Definition: t_list.h:17
ARotPairInteraction
Abstract base class interactions between 2 rotational particles.
Definition: RotPairInteraction.h:29
CRotElasticInteraction
Elastic Interaction between free rotational particles.
Definition: RotElasticInteraction.h:51
ARotPairInteraction::m_p1
CRotParticle * m_p1
Definition: RotPairInteraction.h:31
RotElasticInteraction.h
packed_message_interface.h
CRotElasticInteraction::operator<<
friend ostream & operator<<(ostream &, const CRotElasticInteraction &)
Definition: RotElasticInteraction.cpp:184
CRotElasticIGP::getNormalSpringConst
double getNormalSpringConst() const
Definition: RotElasticInteraction.h:36
CRotElasticInteraction::getVectorFieldFunction
static VectorFieldFunction getVectorFieldFunction(const string &)
Definition: RotElasticInteraction.cpp:140
CRotElasticIGP::getTypeString
virtual std::string getTypeString() const
Definition: RotElasticInteraction.h:38
Vec3
Definition: vec3.h:47
CParticle::getDo2dCalculations
static bool getDo2dCalculations()
Definition: Particle.h:181
CRotElasticInteraction::getPos
virtual Vec3 getPos() const
Definition: RotElasticInteraction.h:76
AIGParam
Abstract base class for InteractionGroup parameters.
Definition: IGParam.h:29
CRotElasticIGP
Interaction group parameters for CRotElasticInteractionGroups.
Definition: RotElasticInteraction.h:25
CRotElasticInteraction::m_kr
double m_kr
spring constant
Definition: RotElasticInteraction.h:62
CRotElasticInteraction::m_D
Vec3 m_D
initial positions of the particles
Definition: RotElasticInteraction.h:66
CRotElasticInteraction::getCheckedScalarFieldFunction
static CheckedScalarFieldFunction getCheckedScalarFieldFunction(const string &)
Definition: RotElasticInteraction.cpp:124
CRotElasticIGP::packInto
virtual void packInto(CVarMPIBuffer *) const
Definition: RotElasticInteractionGroup.cpp:19
CBasicParticle::getID
int getID() const
Definition: BasicParticle.h:65
CRotElasticInteraction::loadRestartData
virtual void loadRestartData(std::istream &iStream)
Definition: RotElasticInteraction.cpp:174
CBasicParticle::getRad
double getRad() const
Definition: BasicParticle.h:64
extractRotElasticIGP_p
CRotElasticIGP * extractRotElasticIGP_p(AMPIBuffer *)
Definition: RotElasticInteractionGroup.cpp:37
CRotElasticInteraction::ScalarFieldFunction
double(CRotElasticInteraction::* ScalarFieldFunction)() const
Definition: RotElasticInteraction.h:53
CBasicParticle::getPos
Vec3 getPos() const
Definition: BasicParticle.h:62
CRotElasticIGP::m_scaling
bool m_scaling
Definition: RotElasticInteraction.h:32
CRotElasticInteraction::CRotElasticInteraction
CRotElasticInteraction()
Definition: RotElasticInteraction.cpp:32
AInteraction::m_id
vector< int > m_id
id's of the particles involved
Definition: Interaction.h:39
IGParam.h
CRotElasticInteraction::calcForces
virtual void calcForces()
Definition: RotElasticInteraction.cpp:69
extractRotElasticIGP
CRotElasticIGP * extractRotElasticIGP(AMPIBuffer *)
Definition: RotElasticInteractionGroup.cpp:25
CRotParticle
Class for a rotational particle.
Definition: RotParticle.h:54