MercuryDPM
Trunk
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-2020, 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
33
class
BaseParticle
;
34
39
class
CircularPeriodicBoundary
:
public
BaseBoundary
40
{
41
public
:
45
CircularPeriodicBoundary
();
46
50
explicit
CircularPeriodicBoundary
(
double
innerRadius);
51
55
~CircularPeriodicBoundary
()
override
;
56
60
CircularPeriodicBoundary
*
copy
()
const override
;
61
66
void
rotateParticle
(
BaseParticle
* P,
double
angle);
67
72
void
createPeriodicParticle
(
BaseParticle
* p,
ParticleHandler
& pH)
override
;
73
74
void
createPeriodicParticles
(
ParticleHandler
& pH)
override
;
75
79
bool
checkBoundaryAfterParticleMoved
(
BaseParticle
* P,
ParticleHandler
& pH);
80
82
void
checkBoundaryAfterParticlesMove
(
ParticleHandler
& pH)
override
;
83
87
void
read
(std::istream& is)
override
;
88
92
void
oldRead
(std::istream& is);
93
97
void
write
(std::ostream& os)
const override
;
98
103
std::string
getName
()
const override
;
104
105
private
:
106
110
double
innerRadius_
;
111
112
//A particle is between to Radii in plane (i) and has two (straight) walls (plane 0 defines centre)
113
//If it is close to its inner Radius it should be copied once with a positive rotation of 2*pi/2^i
114
//If it is close to one of its straight walls is should be rotative with +/- 2*pi/2^i
115
116
//Particles can only apply forces to real particles
117
118
//If a particle crosses a straight wall it should simply be shifted
119
//If a particle crosses its inner Radius it should be coppied
120
//If a particle crosses its outer Radius it may need to be deleted
121
122
};
123
124
#endif
CircularPeriodicBoundary::read
void read(std::istream &is) override
reads the CircularPeriodicBoundary
Definition:
CircularPeriodicBoundary.cc:226
CircularPeriodicBoundary::oldRead
void oldRead(std::istream &is)
Definition:
CircularPeriodicBoundary.cc:233
CircularPeriodicBoundary::innerRadius_
double innerRadius_
Definition:
CircularPeriodicBoundary.h:110
CircularPeriodicBoundary::CircularPeriodicBoundary
CircularPeriodicBoundary()
default constructor
Definition:
CircularPeriodicBoundary.cc:30
CircularPeriodicBoundary::getName
std::string getName() const override
Returns the name of the object.
Definition:
CircularPeriodicBoundary.cc:245
CircularPeriodicBoundary
used to create a circular periodic boundary
Definition:
CircularPeriodicBoundary.h:39
CircularPeriodicBoundary::rotateParticle
void rotateParticle(BaseParticle *P, double angle)
Definition:
CircularPeriodicBoundary.cc:70
BaseBoundary.h
CircularPeriodicBoundary::~CircularPeriodicBoundary
~CircularPeriodicBoundary() override
destructor
Definition:
CircularPeriodicBoundary.cc:55
CircularPeriodicBoundary::checkBoundaryAfterParticlesMove
void checkBoundaryAfterParticlesMove(ParticleHandler &pH) override
Definition:
CircularPeriodicBoundary.cc:215
ParticleHandler
Container to store all BaseParticle.
Definition:
ParticleHandler.h:47
BaseBoundary
Definition:
BaseBoundary.h:48
CircularPeriodicBoundary::createPeriodicParticle
void createPeriodicParticle(BaseParticle *p, ParticleHandler &pH) override
Definition:
CircularPeriodicBoundary.cc:84
BaseParticle
Definition:
BaseParticle.h:53
CircularPeriodicBoundary::copy
CircularPeriodicBoundary * copy() const override
Used to create a copy of the object NB: purely virtual function.
Definition:
CircularPeriodicBoundary.cc:62
CircularPeriodicBoundary::createPeriodicParticles
void createPeriodicParticles(ParticleHandler &pH) override
Definition:
CircularPeriodicBoundary.cc:133
CircularPeriodicBoundary::write
void write(std::ostream &os) const override
outputs the CircularPeriodicBoundary
Definition:
CircularPeriodicBoundary.cc:239
CircularPeriodicBoundary::checkBoundaryAfterParticleMoved
bool checkBoundaryAfterParticleMoved(BaseParticle *P, ParticleHandler &pH)
Definition:
CircularPeriodicBoundary.cc:142
Boundaries
CircularPeriodicBoundary.h
Generated on Wed May 11 2022 04:00:24 for MercuryDPM by
1.8.7