ESyS-Particle
2.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
Interaction.h
Go to the documentation of this file.
1
2
// //
3
// Copyright (c) 2003-2013 by The University of Queensland //
4
// Earth Systems Science Computational Centre (ESSCC) //
5
// http://www.uq.edu.au/esscc //
6
// //
7
// Primary Business: Brisbane, Queensland, Australia //
8
// Licensed under the Open Software License version 3.0 //
9
// http://www.opensource.org/licenses/osl-3.0.php //
10
// //
12
13
#ifndef __INTERACTION_H
14
#define __INTERACTION_H
15
16
// -- project includes --
17
#include "
Model/Particle.h
"
18
#include "
Foundation/quintuple.h
"
19
20
// -- STL includes --
21
#include <utility>
22
#include <vector>
23
using
std::vector;
24
using
std::pair;
25
using
std::make_pair;
26
27
36
class
AInteraction
37
{
38
protected
:
39
vector<int>
m_id
;
40
int
m_iid
;
41
bool
m_init
;
42
43
public
:
44
AInteraction
();
45
virtual
~AInteraction
();
46
47
bool
initialized
()
const
;
48
virtual
void
calcForces
()=0;
49
virtual
void
calcHeatTrans
() {};
50
virtual
void
calcHeatFrict
() {};
51
vector<int>
getAllID
()
const
;
52
int
getID
(){
return
m_iid
;};
53
virtual
bool
hasTag
(
int
,
int
)
const
=0;
54
virtual
Vec3
getPosFirst
()
const
=0;
55
virtual
Vec3
getPosSecond
()
const
{
return
Vec3
(0.0,0.0,0.0);};
56
inline
double
Count
()
const
{
return
1.0;};
57
};
58
59
68
class
APairInteraction
:
public
AInteraction
69
{
70
protected
:
71
CParticle
*
m_p1
,*
m_p2
;
72
73
public
:
74
// functions
75
APairInteraction
();
76
APairInteraction
(
CParticle
*,
CParticle
*);
77
virtual
~APairInteraction
();
78
79
inline
const
CParticle
*
first
()
const
{
return
m_p1
;}
80
inline
const
CParticle
*
second
()
const
{
return
m_p2
;}
81
inline
CParticle
*
first
() {
return
m_p1
;}
82
inline
CParticle
*
second
() {
return
m_p2
;}
83
84
inline
pair<int,int>
getPairID
()
const
{
return
make_pair(
m_p1
->
getID
(),
m_p2
->
getID
());};
85
virtual
Vec3
getPos
()
const
= 0;
86
virtual
void
calcForces
() = 0;
87
void
setPP
(
CParticle
*,
CParticle
*);
88
void
checkIDs
();
89
virtual
bool
hasTag
(
int
,
int
)
const
;
90
virtual
Vec3
getPosFirst
()
const
{
return
m_p1
->
getPos
();};
91
virtual
Vec3
getPosSecond
()
const
{
return
m_p2
->
getPos
();};
92
93
esys::lsm::quintuple<Vec3,double,Vec3,double,Vec3>
getRaw2Data
()
const
94
{
95
return
96
esys::lsm::quintuple<Vec3,double,Vec3,double,Vec3>
(
97
m_p1
->
getPos
(),
98
m_p1
->
getRad
(),
99
m_p2
->
getPos
(),
100
m_p2
->
getRad
(),
101
getPos
()
102
);
103
}
104
105
template
<
class
TmplParticle>
void
setPP
(
const
vector<TmplParticle *> &pp)
106
{
107
m_p1
=pp[0];
108
m_p2
=pp[1];
109
m_id
.clear();
110
m_id
.push_back(
m_p1
->
getID
());
111
m_id
.push_back(
m_p2
->
getID
());
112
}
113
114
// dummy implementations for save/load of restart parameters
115
virtual
void
saveRestartData
(std::ostream&){};
116
virtual
void
loadRestartData
(std::istream&){};
117
};
118
#endif
Model
Interaction.h
Generated on Mon May 6 2013 23:26:30 for ESyS-Particle by
1.8.3.1