23 #ifndef _GROWTH_COHESION_HH_
24 #define _GROWTH_COHESION_HH_
30 template<
typename StepperT >
33 ,
const StepperT *stepper0
36 template<
typename StepperT >
39 ,
const StepperT *stepper0
51 template<
typename StepperT >
54 ,
const StepperT *stepper0
70 const Scalar dr = inData0->
dr(), Rmin = stepper0->Id() * stepper0->velocity() [ blIdx0 ] * dr, R = Rmin + stepper0->velocity() [ blIdx0 ] * dr;
71 std :: vector< Scalar > xmin(
dim, 0.0), xmax(
dim, 0.0), dx(
dim, 0.0);
72 for (
int i = 0; i <
dim; ++i ) {
73 xmin [ i ] = ptRef.
pos() [ i ] - R - dr;
74 xmax [ i ] = ptRef.
pos() [ i ] + R + dr;
76 std :: cout <<
"xmin[" << i <<
"] = " << xmin [ i ] <<
" , "
77 <<
"xmax[" << i <<
"] = " << xmax [ i ] <<
" , "
83 for ( Scalar x = xmin [ 0 ]; x <= xmax [ 0 ]; x += dr ) {
84 for ( Scalar y = xmin [ 1 ]; y <= xmax [ 1 ]; y += dr ) {
86 Scalar dist = eucDistance(ptRef, pt1);
89 std :: cout <<
"dist = " << dist <<
"\n";
90 std :: cout <<
"TOLERANCE = " << TOLERANCE <<
"\n";
91 std :: cout <<
"Rmin = " << Rmin <<
"\n";
92 std :: cout <<
"R = " << R <<
"\n";
94 if ( dist > ( Rmin + TOLERANCE ) && dist <= ( R + TOLERANCE ) ) {
100 #if !DESABLE_ROTATION == 1
107 template<
typename StepperT >
110 ,
const StepperT *stepper0
123 const Scalar &dr = inData0->
dr();
125 if ( stepper0->Id() == 0 ) {
129 Rmin = dr / sqrt(2.0) + ( stepper0->Id() - 1 ) * stepper0->velocity() [ blIdx0 ] * dr;
130 R = Rmin + stepper0->velocity() [ blIdx0 ] * dr;
133 std :: vector< Scalar > xmin(
dim, 0.0), xmax(
dim, 0.0), dx(
dim, 0.0);
134 for (
int i = 0; i <
dim; ++i ) {
135 xmin [ i ] = ptRef.
pos() [ i ] - ( ( color0 ==
msbGrid :: Color :: Red ) ? dr / 2.0 : 0.0 ) - stepper0->Id() * stepper0->velocity() [ blIdx0 ] * dr;
136 xmax [ i ] = ptRef.
pos() [ i ] + ( ( color0 ==
msbGrid :: Color :: Red ) ? dr / 2.0 : 0.0 ) + stepper0->Id() * stepper0->velocity() [ blIdx0 ] * dr;
140 for ( Scalar y = xmin [ 1 ]; y <= ( xmax [ 1 ] +
TOLERANCE ); y += dr ) {
141 for ( Scalar x = xmin [ 0 ]; x <= ( xmax [ 0 ] +
TOLERANCE ); x += dr ) {
143 Scalar dist = eucDistance(ptRef, pt1);
144 if ( ( dist - Rmin ) > TOLERANCE && ( dist - R ) <= TOLERANCE ) {
154 #if !DESABLE_ROTATION == 1
176 const Scalar dr = inData0->
dr();
183 std :: cout <<
"dr = " << dr <<
" , "
184 <<
"xMin = " << xMin <<
" , "
185 <<
"xMax = " << xMax <<
" , "
186 <<
"yMin = " << yMin <<
" , "
187 <<
"yMax = " << yMax <<
" , "
188 <<
"TOLERANCE = " << TOLERANCE <<
" , "
189 <<
"bl0.size() = " << bl0.
size() <<
" , "
190 <<
"bl1.size() = " << bl1.
size()
194 for (
int iEnt = 0; iEnt < bl0.
size(); ++iEnt ) {
196 bl0.
vEnt() [ iEnt ].infos(
"bl0");
198 for (
int jEnt = 0; jEnt < bl1.
size(); ++jEnt ) {
200 bl1.
vEnt() [ jEnt ].infos(
"bl1");
203 const bool dist = ( ( eucDistance(bl0.
vEnt() [ iEnt ], bl1.
vEnt() [ jEnt ]) - dr * inData0->
interBlockDistCoeff() ) <= -TOLERANCE );
204 const bool xmin = bl0.
vEnt() [ iEnt ].x() [ 0 ] <= xMin;
205 const bool xmax = bl0.
vEnt() [ iEnt ].x() [ 0 ] >= xMax;
206 const bool ymin = bl0.
vEnt() [ iEnt ].x() [ 1 ] <= yMin;
207 const bool ymax = bl0.
vEnt() [ iEnt ].x() [ 1 ] >= yMax;
209 if ( xmin || xmax || ymin || ymax ) {
210 bl0.
vEnt() [ iEnt ].mark() =
true;
212 std :: cout <<
"(xmin || xmax || ymin || ymax) is true\n";
217 bl0.
vEnt() [ iEnt ].mark() =
true;
219 std :: cout <<
"(dist) is true\n";
240 const Scalar dr = inData0->
dr();
246 for (
int iEnt = 0; iEnt < bl0.
size(); ++iEnt ) {
247 const bool xLInfCond = ( ( bl0.
vEnt() [ iEnt ].x() [ 0 ] - xLInf ) <= ( -TOLERANCE ) );
248 const bool xLSuppCond = ( ( bl0.
vEnt() [ iEnt ].x() [ 0 ] - xLSupp ) >= ( +TOLERANCE ) );
249 const bool yLInfCond = ( ( bl0.
vEnt() [ iEnt ].x() [ 1 ] - yLInf ) <= ( -TOLERANCE ) );
250 const bool yLSuppCond = ( ( bl0.
vEnt() [ iEnt ].x() [ 1 ] - yLSupp ) >= ( +TOLERANCE ) );
252 if ( xLInfCond || xLSuppCond || yLInfCond || yLSuppCond ) {
253 bl0.
vEnt() [ iEnt ].mark() =
true;