30 <<
"boundary list is not set yet and you used the objects." <<
endl;
35 boundary(2).boundaryExtensionLength() +
36 boundary(4).boundaryExtensionLength();
39 boundary(3).boundaryExtensionLength() +
40 boundary(5).boundaryExtensionLength();
61 std::array<real, 6> dist;
62 dist[0] = boundary(0).neighborLength();
63 dist[1] = boundary(1).neighborLength();
64 dist[2] = boundary(2).neighborLength();
65 dist[3] = boundary(3).neighborLength();
66 dist[4] = boundary(4).neighborLength();
67 dist[5] = boundary(5).neighborLength();
69 pStruct_.updateFlag(extendedDomain_, dist);
71 const auto& maskD = pStruct_.activePointsMaskDevice();
72 boundary(0).setSize(maskD.leftSize());
73 boundary(1).setSize(maskD.rightSize());
74 boundary(2).setSize(maskD.bottomSize());
75 boundary(3).setSize(maskD.topSize());
76 boundary(4).setSize(maskD.rearSize());
77 boundary(5).setSize(maskD.frontSize());
79 pStruct_.fillNeighborsLists(
80 boundary(0).indexList().deviceViewAll(),
81 boundary(1).indexList().deviceViewAll(),
82 boundary(2).indexList().deviceViewAll(),
83 boundary(3).indexList().deviceViewAll(),
84 boundary(4).indexList().deviceViewAll(),
85 boundary(5).indexList().deviceViewAll()
98 "neighborListUpdateInterval",
108 neighborListUpdate_ =
false;
109 boundaryUpdate_ =
false;
110 iterBeforeBoundaryUpdate_ =
false;
112 if(iter%neighborListUpdateInterval_==0u || iter == 0u || force)
114 if(updateNeighborLists())
116 neighborListUpdate_ =
true;
117 lastNeighborUpdated_ = iter;
127 if( iter%updateInterval_ == 0u || iter == 0u || force )
129 boundaryUpdate_ =
true;
132 if((iter+1)%updateInterval_ == 0u)
134 iterBeforeBoundaryUpdate_ =
true;
146 for (
auto i = 0; i < pStruct_.simDomain().sizeOfBoundaries(); i++)
151 pStruct_.simDomain().boundaryDict(i),
152 pStruct_.simDomain().boundaryPlane(i),
167 const auto& thisBox = pStruct_.thisDomain().domainBox();
169 const realx3 lowerPointDisplacement = {
170 boundary(0).neighborLengthIntoInternal(),
171 boundary(2).neighborLengthIntoInternal(),
172 boundary(4).neighborLengthIntoInternal()
175 const realx3 upperPointDisplacement = {
176 boundary(1).neighborLengthIntoInternal(),
177 boundary(3).neighborLengthIntoInternal(),
178 boundary(5).neighborLengthIntoInternal()
181 return { thisBox.minPoint() + lowerPointDisplacement,
182 thisBox.maxPoint() - upperPointDisplacement };
189 if(!updateNeighborLists(ti.
iter() , force) )
198 while(callAgain.anyElement(
true) && step <= 10u)
200 for(
size_t i=0; i<6ul; i++)
205 if(! boundary(i).beforeIteration(
209 iterBeforeBoundaryUpdate_,
213 boundary(i).name()<<
" at step "<< step<<
endl;
223 for (
auto bdry : *
this)
225 bdry->updataBoundaryData(1);
228 for (
auto bdry : *
this)
230 bdry->updataBoundaryData(2);
239 for (
auto& bdry : *
this)
241 if (!bdry->iterate(ti))
244 << bdry->name() <<
endl;
258 while(callAgain.anyElement(
true)&& step <=10)
260 for(
size_t i=0; i<6; i++)
264 if( !boundary(i).transferData(ti.
iter(), step, callAgain[i]))
267 boundary(i).name()<<
endl;