Data transfer between processors

- Data transfer is done
- contact search at processor boundary is done
- contact force calculation at processor boundary is done
- tests have been done on rotating drum using serial and openMP
This commit is contained in:
HRN
2024-05-12 19:06:53 +03:30
parent e756d471ba
commit 665879f8ca
14 changed files with 483 additions and 77 deletions

View File

@ -52,7 +52,8 @@ pFlow::processorBoundaryContactSearch::processorBoundaryContactSearch(
:
boundaryContactSearch(dict, boundary, cSearch),
diameter_(cSearch.Particles().boundingSphere()),
masterSearch_(this->isBoundaryMaster())
masterSearch_(this->isBoundaryMaster()),
sizeRatio_(dict.getVal<real>("sizeRatio"))
{
if(masterSearch_)
@ -65,7 +66,8 @@ pFlow::processorBoundaryContactSearch::processorBoundaryContactSearch(
ppContactSearch_ = makeUnique<twoPartContactSearch>(
searchBox_,
maxD);
maxD,
sizeRatio_);
}
else
{
@ -96,7 +98,8 @@ bool pFlow::processorBoundaryContactSearch::broadSearch
thisPoints,
thisDiams,
neighborProcPoints,
neighborProcDiams
neighborProcDiams,
name()
);
//pOutput<<"ppSize "<< ppPairs.size()<<endl;
return true;

View File

@ -39,6 +39,8 @@ private:
bool masterSearch_;
real sizeRatio_;
void setSearchBox();
public:

View File

@ -64,7 +64,9 @@ bool pFlow::twoPartContactSearch::broadSearchPP
const realx3& transferVec
)
{
if(points1.empty())return true;
if(points2.empty()) return true;
buildList(points1);
uint32 nNotInserted = 1;
@ -114,7 +116,8 @@ bool pFlow::twoPartContactSearch::broadSearchPP
const deviceScatteredFieldAccess<realx3> &points1,
const deviceScatteredFieldAccess<real> &diams1,
const realx3Vector_D& points2,
const realVector_D& diams2
const realVector_D& diams2,
const word& name
)
{
buildList(points1);
@ -148,9 +151,9 @@ bool pFlow::twoPartContactSearch::broadSearchPP
auto oldCap = ppPairs.capacity();
ppPairs.increaseCapacityBy(len);
INFORMATION<< "Particle-particle contact pair container capacity increased from "<<
oldCap << " to "<<ppPairs.capacity()<<" in peiodicBoundaryContactSearch."<<END_INFO;
oldCap << " to "<<ppPairs.capacity()<<" in boundary contact search in "<< name <<END_INFO;
}

View File

@ -85,7 +85,8 @@ public:
const deviceScatteredFieldAccess<realx3> &points1,
const deviceScatteredFieldAccess<real> &diams1,
const realx3Vector_D& points2,
const realVector_D& diams2);
const realVector_D& diams2,
const word& name);
const auto& searchCells()const
{

View File

@ -20,9 +20,7 @@ pFlow::twoPartContactSearchKernels::buildNextHead(
deviceViewType1D<uint32>& next
)
{
if (points.empty())
return;
uint32 n = points.size();
Kokkos::parallel_for(