MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BasePeriodicBoundary.cc
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 #include "BasePeriodicBoundary.h"
28 #include "ParticleHandler.h"
29 #include "MpiDataClass.h"
30 #include "DPMBase.h"
31 
36  : BaseBoundary()
37 {
38  periodicHandler_ = nullptr;
39 #ifdef DEBUG_CONSTRUCTOR
40  std::cout<<"BasePeriodicBoundary::BasePeriodicBoundary() finished"<<std::endl;
41 #endif
42 }
43 
49  : BaseBoundary(b)
50 {
52 #ifdef DEBUG_CONSTRUCTOR
53  std::cout<<"BasePeriodicBoundary::BasePeriodicBoundary(const BasePeriodicBoundary&b) finished"<<std::endl;
54 #endif
55 }
56 
61 {
62 #ifdef DEBUG_DESTRUCTOR
63  std::cout << "BasePeriodicBoundary::~BasePeriodicBoundary() finished"<<std::endl;
64 #endif
65 }
66 
71 void BasePeriodicBoundary::read(std::istream& is)
72 {
74 }
75 
80 void BasePeriodicBoundary::write(std::ostream& os) const
81 {
83 }
84 
85 
91 {
92  periodicHandler_ = periodicHandler;
93 }
94 
100 {
101  return periodicHandler_;
102 }
103 
112 {
113 }
114 
128 {
129 }
130 
131 //TODO documentation
132 void BasePeriodicBoundary::modifyPeriodicComplexity(std::vector<int>& complexity, int& totalPeriodicComplexity,
133  BaseParticle* particle UNUSED, int i UNUSED) const
134 {
135 }
136 
137 //TODO documentation
139 {
140 }
141 
void write(std::ostream &os) const override
Adds object's id_ to given ostream.
PeriodicBoundaryHandler * periodicHandler_
pointer to the periodic boundary handler
const std::complex< Mdouble > i
Definition: ExtendedMath.h:50
BasePeriodicBoundary()
default constructor.
PeriodicBoundaryHandler * getPeriodicHandler() const
Returns the periodic boundary handler.
void read(std::istream &is) override=0
Reads the object's id_ from given istream NB: purely virtual function, overriding the version of Base...
Definition: BaseBoundary.cc:61
void setPeriodicHandler(PeriodicBoundaryHandler *periodicHandler)
Sets the periodicBoundaryHandler, required for parallel periodic boundaries.
Container to store pointers to all BasePeriodicBoundary objects.
void read(std::istream &is) override
Reads the object's id_ from given istream.
virtual void modifyPeriodicComplexity(std::vector< int > &complexity, int &totalPeriodicComplexity, BaseParticle *particle, int i) const
Modifies periodic complexity of a particle if necessary (i.e. maser boundary)
void checkBoundaryAfterParticlesMove(ParticleHandler &pH) override
Virtual function that does things to particles, each time step after particles have moved...
#define UNUSED
Definition: GeneralDefine.h:39
void write(std::ostream &os) const override=0
Adds object's id_ to given ostream NB: purely virtual function, overriding the version of BaseObject...
Definition: BaseBoundary.cc:70
void createPeriodicParticles(ParticleHandler &pH) override
Creates periodic ocpies of given particle in case of periodic boundaries in serial build...
Container to store all BaseParticle.
virtual void performActionsBeforeAddingParticles()
Actions that need to be performed before adding new ghost particles.
~BasePeriodicBoundary() override
destructor