MercuryDPM
0.10
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
DeletionBoundary.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 DELETIONBOUNDARY_H
27
#define DELETIONBOUNDARY_H
28
29
#include "
ParticleHandler.h
"
30
31
class
DeletionBoundary
:
public
BaseBoundary
32
{
33
public
:
34
DeletionBoundary
() :
BaseBoundary
()
35
{
36
#ifdef CONSTUCTOR_OUTPUT
37
std::cout<<
"DeletionBoundary () finished"
<<std::endl;
38
#endif
39
}
40
41
DeletionBoundary
*
copy
()
const
42
{
43
#ifdef CONSTUCTOR_OUTPUT
44
std::cerr <<
"virtual DeletionBoundary* copy() const finished"
<< std::endl;
45
#endif
46
return
new
DeletionBoundary
(*
this
);
47
}
48
49
void
set
(
Vec3D
normal_,
Mdouble
position_)
50
{
51
factor
= 1. / sqrt(Dot(normal_, normal_));
52
normal
= normal_ *
factor
;
53
position
= position_ *
factor
;
54
}
55
56
Mdouble
get_distance
(
const
Vec3D
&Position) {
return
position
- Dot(Position,
normal
);}
57
58
//Returns true if the particle is deleted
59
bool
checkBoundaryAfterParticleMoved
(
BaseParticle
*P,
ParticleHandler
&pH)
60
{
61
if
(
get_distance
(P->
get_Position
())<0)
62
{
63
pH.
removeObject
(P->
get_Index
());
64
return
true
;
65
}
66
else
67
return
false
;
68
};
69
71
void
read
(std::istream& is) {
72
std::string dummy;
73
is >> dummy >>
normal
>> dummy >>
position
;
74
}
75
77
void
print
(std::ostream& os)
const
{
78
os <<
"DeletionBoundary normal "
<<
normal
<<
" position "
<<
position
;
79
}
80
81
82
private
:
83
Vec3D
normal
;
//<outward unit normal vector
84
Mdouble
position
;
//<position n*x=p
85
Mdouble
factor
;
//<This is the normal to rescale to unit vectoers.
86
};
87
88
89
#endif
DeletionBoundary::read
void read(std::istream &is)
reads wall
Definition:
DeletionBoundary.h:71
DeletionBoundary::normal
Vec3D normal
Definition:
DeletionBoundary.h:83
DeletionBoundary::checkBoundaryAfterParticleMoved
bool checkBoundaryAfterParticleMoved(BaseParticle *P, ParticleHandler &pH)
Definition:
DeletionBoundary.h:59
ParticleHandler.h
DeletionBoundary
Definition:
DeletionBoundary.h:31
BaseParticle::get_Index
int get_Index() const
Definition:
BaseParticle.cc:225
DeletionBoundary::set
void set(Vec3D normal_, Mdouble position_)
Definition:
DeletionBoundary.h:49
Mdouble
double Mdouble
Definition:
ExtendedMath.h:33
DeletionBoundary::DeletionBoundary
DeletionBoundary()
Definition:
DeletionBoundary.h:34
DeletionBoundary::position
Mdouble position
Definition:
DeletionBoundary.h:84
BaseParticle::get_Position
const Vec3D & get_Position() const
Definition:
BaseParticle.cc:232
ParticleHandler
Container to store all BaseParticle.
Definition:
ParticleHandler.h:38
BaseBoundary
Definition:
BaseBoundary.h:34
DeletionBoundary::copy
DeletionBoundary * copy() const
BaseBoundary copy method.
Definition:
DeletionBoundary.h:41
BaseParticle
Definition:
BaseParticle.h:42
Vec3D
Implementation of a 3D vector (by Vitaliy).
Definition:
Vector.h:40
BaseHandler::removeObject
virtual void removeObject(unsigned const int id)
Removes a Object from the BaseHandler.
Definition:
BaseHandler.h:122
DeletionBoundary::print
void print(std::ostream &os) const
outputs wall
Definition:
DeletionBoundary.h:77
DeletionBoundary::get_distance
Mdouble get_distance(const Vec3D &Position)
Definition:
DeletionBoundary.h:56
DeletionBoundary::factor
Mdouble factor
Definition:
DeletionBoundary.h:85
DeletionBoundary.h
Generated on Thu Nov 10 2016 11:54:52 for MercuryDPM by
1.8.7