MercuryDPM
Beta
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
CircularPeriodicBoundary.h
Go to the documentation of this file.
1
//Copyright (c) 2013-2014, The MercuryDPM Developers Team. All rights reserved.
2
//For the list of developers, see <http://www.MercuryDPM.org/Team>.
3
//
4
//Redistribution and use in source and binary forms, with or without
5
//modification, are permitted provided that the following conditions are met:
6
// * Redistributions of source code must retain the above copyright
7
// notice, this list of conditions and the following disclaimer.
8
// * Redistributions in binary form must reproduce the above copyright
9
// notice, this list of conditions and the following disclaimer in the
10
// documentation and/or other materials provided with the distribution.
11
// * Neither the name MercuryDPM nor the
12
// names of its contributors may be used to endorse or promote products
13
// derived from this software without specific prior written permission.
14
//
15
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
//ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
//WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
//DISCLAIMED. IN NO EVENT SHALL THE MERCURYDPM DEVELOPERS TEAM BE LIABLE FOR ANY
19
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
//ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
//(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
26
#ifndef CircularPeriodicBoundary_H
27
#define CircularPeriodicBoundary_H
28
29
#include "
BaseBoundary.h
"
30
31
class
ParticleHandler
;
32
class
BaseParticle
;
33
38
class
CircularPeriodicBoundary
:
public
BaseBoundary
39
{
40
public
:
44
CircularPeriodicBoundary
();
45
49
CircularPeriodicBoundary
(
double
innerRadius);
50
54
~CircularPeriodicBoundary
();
55
59
CircularPeriodicBoundary
*
copy
()
const
;
60
65
void
rotateParticle
(
BaseParticle
*P,
double
angle);
66
71
void
createPeriodicParticles
(
BaseParticle
*P,
ParticleHandler
&pH);
72
76
bool
checkBoundaryAfterParticleMoved
(
BaseParticle
*P,
ParticleHandler
&pH);
77
81
void
read
(std::istream& is);
82
86
void
oldRead
(std::istream& is);
87
91
void
write
(std::ostream& os)
const
;
92
97
virtual
std::string
getName
()
const
;
98
99
private
:
100
104
double
innerRadius_
;
105
106
//A particle is between to Radii in plane (i) and has two (straight) walls (plane 0 defines centre)
107
//If it is close to its inner Radius it should be copied once with a positive rotation of 2*pi/2^i
108
//If it is close to one of its straight walls is should be rotative with +/- 2*pi/2^i
109
110
//Particles can only apply forces to real particles
111
112
//If a particle crosses a straight wall it should simply be shifted
113
//If a particle crosses its inner Radius it should be coppied
114
//If a particle crosses its outer Radius it may need to be deleted
115
116
};
117
#endif
CircularPeriodicBoundary::getName
virtual std::string getName() const
Returns the name of the object.
Definition:
CircularPeriodicBoundary.cc:213
CircularPeriodicBoundary::oldRead
void oldRead(std::istream &is)
Definition:
CircularPeriodicBoundary.cc:201
CircularPeriodicBoundary::write
void write(std::ostream &os) const
outputs the CircularPeriodicBoundary
Definition:
CircularPeriodicBoundary.cc:207
CircularPeriodicBoundary::copy
CircularPeriodicBoundary * copy() const
Used to create a copy of the object NB: purely virtual function.
Definition:
CircularPeriodicBoundary.cc:55
CircularPeriodicBoundary::innerRadius_
double innerRadius_
Definition:
CircularPeriodicBoundary.h:104
CircularPeriodicBoundary::CircularPeriodicBoundary
CircularPeriodicBoundary()
default constructor
Definition:
CircularPeriodicBoundary.cc:30
CircularPeriodicBoundary
used to create a circular periodic boundary
Definition:
CircularPeriodicBoundary.h:38
CircularPeriodicBoundary::createPeriodicParticles
void createPeriodicParticles(BaseParticle *P, ParticleHandler &pH)
Definition:
CircularPeriodicBoundary.cc:77
CircularPeriodicBoundary::rotateParticle
void rotateParticle(BaseParticle *P, double angle)
Definition:
CircularPeriodicBoundary.cc:63
BaseBoundary.h
CircularPeriodicBoundary::~CircularPeriodicBoundary
~CircularPeriodicBoundary()
destructor
Definition:
CircularPeriodicBoundary.cc:48
ParticleHandler
Container to store all BaseParticle.
Definition:
ParticleHandler.h:41
CircularPeriodicBoundary::read
void read(std::istream &is)
reads the CircularPeriodicBoundary
Definition:
CircularPeriodicBoundary.cc:194
BaseBoundary
Definition:
BaseBoundary.h:42
BaseParticle
Definition:
BaseParticle.h:50
CircularPeriodicBoundary::checkBoundaryAfterParticleMoved
bool checkBoundaryAfterParticleMoved(BaseParticle *P, ParticleHandler &pH)
Definition:
CircularPeriodicBoundary.cc:122
Boundaries
CircularPeriodicBoundary.h
Generated on Sat Jun 17 2023 04:00:16 for MercuryDPM by
1.8.7