# PhasicFlow: src/phasicFlow/structuredData/boundaries/boundaryList.hpp Source File
PhasicFlow is an open-source parallel DEM (discrete element method) package for simulating granular flow. It is developed in C++ and can be exectued on both GPU (like CUDA) and CPU.

boundaryList.hpp
Go to the documentation of this file.
/*------------------------------- phasicFlow ---------------------------------
O C enter of
O O E ngineering and
O O M ultiscale modeling of
OOOOOOO F luid flow
------------------------------------------------------------------------------
Copyright (C): www.cemf.ir
email: hamid.r.norouzi AT gmail.com
------------------------------------------------------------------------------
Licence:
This file is part of phasicFlow code. It is a free software for simulating
granular and multiphase flows. You can redistribute it and/or modify it under
the terms of GNU General Public License v3 or any other later versions.
phasicFlow is distributed to help others in their research in the field of
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------------------------------------------------------*/
#ifndef __boundaryList_hpp__
#define __boundaryList_hpp__
#include "domain.hpp"
#include "boundaryBase.hpp"
#include "ListPtr.hpp"
#include "timeInfo.hpp"
#include "boundariesMask.hpp"
namespace pFlow
{
class pointStructure;
class boundaryList
:
public ListPtr<boundaryBase>
{
private:
pointStructure& pStruct_;
uint32 neighborListUpdateInterval_;
uint32 updateInterval_;
uint32 lastNeighborUpdated_ = 0;
bool neighborListUpdate_;
bool boundaryUpdate_;
bool iterBeforeBoundaryUpdate_;
domain extendedDomain_;
box internalDomainBox_;
bool listSet_ = false;
void setExtendedDomain();
bool resetLists();
bool updateNeighborLists();
public:
TypeInfo("boundaryList");
explicit boundaryList(pointStructure& pStruct);
virtual ~boundaryList() = default;
bool updateNeighborLists(uint32 iter, bool force = false);
bool createBoundaries();
inline
const pointStructure& pStruct()const
{
return pStruct_;
}
inline
auto& boundary(size_t i)
{
return ListPtr<boundaryBase>::operator[](i);
}
inline
const auto& boundary(size_t i)const
{
return ListPtr<boundaryBase>::operator[](i);
}
inline
bool boundariesUpdated()const
{
return boundaryUpdate_;
}
inline
const auto& extendedDomain()const
{
return extendedDomain_;
}
inline
const auto& extendedDomainBox()const
{
return extendedDomain_.domainBox();
}
box internalDomainBox()const;
bool beforeIteration(const timeInfo& tf, bool force = false);
bool iterate(const timeInfo& tf, bool force = false);
bool afterIteration(const timeInfo& tf, bool force = false);
};
} // pFlow
#endif //__boundaryList_hpp__
pFlow::boundaryList::internalDomainBox
box internalDomainBox() const
Definition: boundaryList.cpp:165
pFlow::ListPtr
Definition: ListPtr.hpp:37
ListPtr.hpp
domain.hpp
timeInfo.hpp
pFlow::boundaryList::pStruct_
pointStructure & pStruct_
Definition: boundaryList.hpp:42
pFlow::boundaryList::extendedDomain
const auto & extendedDomain() const
Definition: boundaryList.hpp:113
pFlow::domain::domainBox
const INLINE_FUNCTION_HD auto & domainBox() const
Definition: domain.hpp:86
boundaryBase.hpp
pFlow::boundaryList::pStruct
const pointStructure & pStruct() const
Definition: boundaryList.hpp:89
pFlow::boundaryList::neighborListUpdate_
bool neighborListUpdate_
Definition: boundaryList.hpp:50
pFlow::boundaryList::iterate
bool iterate(const timeInfo &tf, bool force=false)
Definition: boundaryList.cpp:237
pFlow::uint32
unsigned int uint32
Definition: builtinTypes.hpp:56
pFlow::boundaryList
Definition: boundaryList.hpp:35
pFlow::boundaryList::beforeIteration
bool beforeIteration(const timeInfo &tf, bool force=false)
Definition: boundaryList.cpp:186
pFlow::boundaryList::extendedDomain_
domain extendedDomain_
Definition: boundaryList.hpp:56
pFlow::timeInfo
Definition: timeInfo.hpp:28
pFlow
Definition: demGeometry.hpp:27
pFlow::boundaryList::lastNeighborUpdated_
uint32 lastNeighborUpdated_
Definition: boundaryList.hpp:48
pFlow::boundaryList::boundaryList
boundaryList(pointStructure &pStruct)
Definition: boundaryList.cpp:91
pFlow::boundaryList::boundary
const auto & boundary(size_t i) const
Definition: boundaryList.hpp:101
pFlow::boundaryList::afterIteration
bool afterIteration(const timeInfo &tf, bool force=false)
Definition: boundaryList.cpp:252
pFlow::pointStructure
Definition: pointStructure.hpp:34
pFlow::boundaryList::boundary
auto & boundary(size_t i)
Definition: boundaryList.hpp:95
pFlow::boundaryList::createBoundaries
bool createBoundaries()
Definition: boundaryList.cpp:141
pFlow::boundaryList::extendedDomainBox
const auto & extendedDomainBox() const
Definition: boundaryList.hpp:119
pFlow::boundaryList::iterBeforeBoundaryUpdate_
bool iterBeforeBoundaryUpdate_
Definition: boundaryList.hpp:54
pFlow::boundaryList::boundariesUpdated
bool boundariesUpdated() const
Definition: boundaryList.hpp:107
pFlow::boundaryList::TypeInfo
TypeInfo("boundaryList")
type info
pFlow::boundaryList::setExtendedDomain
void setExtendedDomain()
Definition: boundaryList.cpp:25
pFlow::boundaryList::listSet_
bool listSet_
Definition: boundaryList.hpp:60
pFlow::boundaryList::internalDomainBox_
box internalDomainBox_
Definition: boundaryList.hpp:58
pFlow::boundaryList::updateNeighborLists
bool updateNeighborLists()
update neighbor list of boundaries regardless of the time intervals
Definition: boundaryList.cpp:54
pFlow::box
Definition: box.hpp:32
boundariesMask.hpp
pFlow::boundaryList::boundaryUpdate_
bool boundaryUpdate_
Definition: boundaryList.hpp:52
pFlow::boundaryList::updateInterval_
uint32 updateInterval_
Definition: boundaryList.hpp:46
pFlow::boundaryList::neighborListUpdateInterval_
uint32 neighborListUpdateInterval_
Definition: boundaryList.hpp:44
pFlow::ListPtr::operator[]
T & operator[](size_t i)
Definition: ListPtrI.hpp:230
pFlow::boundaryList::~boundaryList
virtual ~boundaryList()=default
pFlow::domain
Definition: domain.hpp:31
pFlow::boundaryList::resetLists
bool resetLists()
Definition: boundaryList.cpp:46