94 if( imin != this_box->
box_min()[0] || jmin != this_box->
box_min()[1] || kmin != this_box->
box_min()[2] ||
97 std::cout <<
"min/max params not correct for a sequence." << std::endl;
102 if( ijk2 - ijk1 +
HomCoord( 1, 1, 1, 0 ) != dijk )
104 std::cout <<
"min_params/max_params/param_extents functions returned inconsistent results" << std::endl;
110 std::cout <<
"Start handle for sequence wrong." << std::endl;
125 if( min_params.
i() != this_box->
box_min()[0] || min_params.
j() != this_box->
box_min()[1] ||
126 min_params.
k() != this_box->
box_min()[2] || max_params.
i() != this_box->
box_max()[0] ||
127 max_params.
j() != this_box->
box_max()[1] || max_params.
k() != this_box->
box_max()[2] )
129 std::cout <<
"min/max params not correct for a sequence." << std::endl;
135 std::cout <<
"min_params/max_params/param_extents functions returned inconsistent results" << std::endl;
141 std::cout <<
"Start handle for sequence wrong." << std::endl;
147 std::cout <<
"Element sequence didn't pass boundary_complete test." << std::endl;
166 for(
int i = ijk1[0]; i <= ijk2[0]; i++ )
168 for(
int j = ijk1[1]; j <= ijk2[1]; j++ )
170 for(
int k = ijk1[2]; k <= ijk2[2]; k++ )
173 EntityHandle this_handle = start_handle + ( i - ijk1[0] ) +
174 ( j - ijk1[1] ) * ( ijk2[0] - ijk1[0] + 1 ) +
175 ( k - ijk1[2] ) * ( ijk2[1] - ijk1[1] + 1 ) * ( ijk2[0] - ijk1[0] + 1 );
180 if( this_box->
get_vertex( i, j, k ) != this_handle )
182 std::cout <<
"vertex seq: get_vertex(i, j, k) didn't work, i, j, k = " << i <<
", " << j <<
", "
183 << k <<
"." << std::endl;
188 if( tmp_handle2 != this_handle )
190 std::cout <<
"vertex seq: get_vertex(HomCoord) didn't work, i, j, k = " << i <<
", " << j <<
", "
191 << k <<
"." << std::endl;
195 int itmp, jtmp, ktmp;
196 itmp = jtmp = ktmp = 0xdeadbeef;
198 if(
MB_SUCCESS != tmp_result || i != itmp || j != jtmp || k != ktmp )
200 std::cout <<
"vertex seq: get_params didn't work, i, j, k = " << i <<
", " << j <<
", " << k
201 <<
"; itmp, jtmp, ktmp = " << itmp <<
", " << jtmp <<
", " << ktmp << std::endl;
207 std::cout <<
"vertex seq: contains didn't work, i, j, k = " << i <<
", " << j <<
", " << k <<
"."
229 for(
int i = ijk1[0]; i < ijk2[0] + is_periodic_i; i++ )
231 for(
int j = ijk1[1]; j < ijk2[1] + is_periodic_j; j++ )
233 for(
int k = ijk1[2]; k < ijk2[2]; k++ )
240 if( tmp_handle2 != tmp_handle )
242 std::cout <<
"element seq: get_vertex(HomCoord) and get_vertex(i,j,k) didn't return" << std::endl
243 <<
"consistent results, i, j, k = " << i <<
", " << j <<
", " << k <<
"." << std::endl;
251 if( tmp_handle2 != tmp_handle )
253 std::cout <<
"element seq: get_element(HomCoord) and get_element(i,j,k) didn't return" << std::endl
254 <<
"consistent results, i, j, k = " << i <<
", " << j <<
", " << k <<
"." << std::endl;
259 int itmp, jtmp, ktmp;
260 itmp = jtmp = ktmp = 0xdeadbeef;
262 if(
MB_SUCCESS != tmp_result || i != itmp || j != jtmp || k != ktmp )
264 std::cout <<
"element seq: get_params didn't work, i, j, k = " << i <<
", " << j <<
", " << k
265 <<
"; itmp, jtmp, ktmp = " << itmp <<
", " << jtmp <<
", " << ktmp << std::endl;
271 std::cout <<
"element seq: contains didn't work, i, j, k = " << i <<
", " << j <<
", " << k <<
"."
346 HomCoord TEST_MIN_PARAMS( 0, 0, 0 );
368 tmp_min[1] = tmp_min[2] = tmp_max[1] = tmp_max[2] = 0;
376 CHECK_EQUAL( ( tmp_max[0] - tmp_min[0] ), num_edges );
379 result = ebox->
add_vbox( vbox, tmp_min, tmp_min, tmp_max, tmp_max, tmp_min, tmp_min );
CHECK_ERR( result );
394 tmp_min[2] = tmp_max[2] = 0;
404 HomCoord p2( tmp_max.
i(), tmp_min.
j(), tmp_min.
k() );
405 HomCoord p3( tmp_min.
i(), tmp_max.
j(), tmp_min.
k() );
406 result = ebox->
add_vbox( vbox, tmp_min, tmp_min, p2, p2, p3, p3 );
CHECK_ERR( result );
408 std::vector< EntityHandle > connect;
411 CHECK_EQUAL( (
unsigned int)connect.size(), (
unsigned int)4 );
435 HomCoord p2( tmp_max.
i(), tmp_min.
j(), tmp_min.
k() );
436 HomCoord p3( tmp_min.
i(), tmp_max.
j(), tmp_min.
k() );
437 result = ebox->
add_vbox( vbox, tmp_min, tmp_min, p2, p2, p3, p3 );
CHECK_ERR( result );
454 ScdBox *vbox[3], *ebox[3];
465 for(
int i = 0; i < 3; i++ )
480 ScdBox *ebox[3], *vbox[3];
494 for(
int i = 0; i < 3; i++ )
501 for(
int i = 0; i < 3; i++ )
515 int int1 = 5, int2 = 15, int3 = 25;
516 ScdBox *ebox[3], *vbox[3];
522 for(
int i = 0; i < 3; i++ )
529 for(
int i = 0; i < 3; i++ )
543 int int1 = 10, int2 = 10, int3 = 10, int4 = 10;
544 ScdBox *ebox[3], *vbox[3];
550 for(
int i = 0; i < 3; i++ )
557 for(
int i = 0; i < 3; i++ )
570 HomCoord TEST_MIN_PARAMS( 0, 0, 0 );
575 int lperiodic[2] = { 1, 0 };
576 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
582 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
588 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
595 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
601 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
607 rval = scdi->
construct_box( TEST_MIN_PARAMS, TEST_BOX_MAX, NULL, 0, new_box, lperiodic );
CHECK_ERR( rval );
614 tmp_min[1] = tmp_min[2] = tmp_max[1] = tmp_max[2] = 0;
618 int idiff = ( tmp_max[0] - tmp_min[0] + 1 ) / 6;
624 vbox[0] = vbox[1] = vbox[2] = NULL;
636 ebox[0] = ebox[1] = ebox[2] = NULL;
642 result = ebox[0]->
add_vbox( vbox[0], vseq0_minmax[0], vseq0_minmax[0], vseq0_minmax[1], vseq0_minmax[1],
643 vseq0_minmax[0], vseq0_minmax[0] );
CHECK_ERR( result );
649 HomCoord( vseq0_minmax[1].i(), 0, 0 ),
650 HomCoord( 1 + vseq0_minmax[1].i() + vseq1_minmax[1].i() - vseq1_minmax[0].i(), 0, 0 ),
MBEDGE, 1, ebox[1] );
CHECK_ERR( result );
654 result = ebox[1]->
add_vbox( vbox[0], vseq0_minmax[0], vseq0_minmax[0], vseq0_minmax[1], vseq0_minmax[1],
655 vseq0_minmax[0], vseq0_minmax[0],
true,
HomCoord( ebox[1]->
box_min().i(), 0, 0 ),
667 ebox[1]->
box_max(),
HomCoord( ebox[1]->
box_max().i() + 1 + vseq2_minmax[1].i() - vseq2_minmax[0].i(), 0, 0 ),
694 vbox[0] = vbox[1] = vbox[2] = NULL;
706 ebox[0] = ebox[1] = ebox[2] = NULL;
712 result = ebox[0]->
add_vbox( vbox[0],
714 vbox0_minmax[0], vbox0_minmax[0],
716 HomCoord( vbox0_minmax[1].i(), vbox0_minmax[0].j(), 0 ),
717 HomCoord( vbox0_minmax[1].i(), vbox0_minmax[0].j(), 0 ),
719 HomCoord( vbox0_minmax[0].i(), vbox0_minmax[1].j(), 0 ),
720 HomCoord( vbox0_minmax[0].i(), vbox0_minmax[1].j(), 0 ) );
727 HomCoord( vbox0_minmax[1].i() + 1 + vbox1_minmax[1].i() - vbox1_minmax[0].i(),
736 HomCoord( vbox0_minmax[1].i(), vbox0_minmax[0].j(), 0 ), ebox[1]->
box_min(),
747 result = ebox[1]->
add_vbox( vbox[1],
764 HomCoord( ebox[1]->
box_max().i() + 1 + vbox2_minmax[1].i() - vbox2_minmax[0].i() + 1,
773 vbox1_minmax[1], ebox[2]->
box_min(),
831 vbox[0] = vbox[1] = vbox[2] = NULL;
851 ebox[0] = ebox[1] = ebox[2] = NULL;
857 result = ebox[0]->
add_vbox( vbox[0],
860 vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0],
872 vbox0_minmax[0], ebox0_minmax[0],
876 vbox0_minmax[0], ebox0_minmax[0],
881 result = ebox[1]->
add_vbox( vbox[1],
908 result = ebox[2]->
add_vbox( vbox[0],
910 vbox1_minmax[0], ebox2_minmax[0],
914 vbox1_minmax[0], ebox2_minmax[0],
916 true, ebox2_minmax[0],
HomCoord( ebox2_minmax[1].i(), ebox2_minmax[0].j(), 0 ) );
CHECK_ERR( result );
919 result = ebox[2]->
add_vbox( vbox[2],
957 vbox[0] = vbox[1] = vbox[2] = NULL;
977 ebox[0] = ebox[1] = ebox[2] = NULL;
983 result = ebox[0]->
add_vbox( vbox[0],
986 vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0], vbox0_minmax[0],
995 result = ebox[1]->
add_vbox( vbox[0],
997 vbox0_minmax[0], ebox1_minmax[0],
1007 result = ebox[1]->
add_vbox( vbox[1],
1035 result = ebox[2]->
add_vbox( vbox[0],
1037 vbox0_minmax[0], ebox2_minmax[0],
1043 true, ebox2_minmax[0],
1044 HomCoord( ebox2_minmax[1].i(), ebox2_minmax[0].j(), ebox2_minmax[1].k() ) );
CHECK_ERR( result );
1047 result = ebox[2]->
add_vbox( vbox[2],
1069 bool is_2d = ( box_size.
k() <= 1 );
1072 for(
int dir = 0; dir < 3; dir++ )
1075 if( 2 == dir && is_2d )
continue;
1081 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1085 for(
int dir = 0; dir < 3; dir++ )
1088 if( 2 == dir && is_2d )
continue;
1090 rval =
box->get_adj_edge_or_face( 1,
box_min.i() + .5 * box_size.
i(),
box_min.j() + .5 * box_size.
j(),
1091 box_min.k() + .5 * box_size.
k(), dir, dum_entity, true );
1095 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1100 for(
int dir = 0; dir < 3; dir++ )
1103 if( 2 == dir && is_2d )
continue;
1112 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1119 for(
int dir = 0; dir < 3; dir++ )
1125 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1129 for(
int dir = 0; dir < 3; dir++ )
1132 if( 2 == dir && is_2d )
continue;
1134 rval =
box->get_adj_edge_or_face( 2,
box_min.i() + .5 * box_size.
i(),
box_min.j() + .5 * box_size.
j(),
1135 box_min.k() + .5 * box_size.
k(), dir, dum_entity, true );
1139 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1144 for(
int dir = 0; dir < 3; dir++ )
1147 if( 2 == dir && is_2d )
continue;
1156 rval =
box->sc_impl()->impl()->get_connectivity( dum_entity, connect, num_connect );
1169 int gdims[] = { 0, 0, 0, 48, 40, 18 };
1175 for(
int exp = 2; exp <= maxpow; exp += 2 )
1177 int nprocs = 0.1 + pow( 2.0, (
double)exp );
1206 int pto, pfrom, across_bdy_a[3], across_bdy_b[3], rdims_a[6], rdims_b[6], facedims_a[6], facedims_b[6], ldims[6],
1209 for(
int i = 0; i < 6; i++ )
1211 for(
int i = 0; i < 3; i++ )
1216 for(
int p = 0; p < nprocs / 2; p++ )
1221 for(
int k = -1; k <= 1; k++ )
1223 for(
int j = -1; j <= 1; j++ )
1225 for(
int i = -1; i <= 1; i++ )
1227 int dijka[] = { i, j, k }, dijkb[] = { -i, -j, -k };
1230 if( -1 == pto )
continue;
1233 if( facedims_a[0] < rdims_a[0] || facedims_a[0] > rdims_a[3] || facedims_a[1] < rdims_a[1] ||
1234 facedims_a[1] > rdims_a[4] || facedims_a[2] < rdims_a[2] || facedims_a[2] > rdims_a[5] )
1242 for(
int ind = 0; ind < 3; ind++ )
1243 if( facedims_a[ind] < rdims_b[ind] || facedims_b[ind] > rdims_b[ind + 3] )
fail =
true;
1244 for(
int ind = 0; ind < 6; ind++ )
1246 if( facedims_a[ind] != facedims_b[ind] || rdims_b[ind] != ldims[ind] )
fail =
true;
1248 if( across_bdy_a[0] != across_bdy_b[0] || across_bdy_a[1] != across_bdy_b[1] )
fail =
true;
1249 #define PARRAY( a ) "(" << ( a )[0] << "," << ( a )[1] << "," << ( a )[2] << ")"
1250 #define PARRAY3( a, b, c ) "(" << ( a ) << "," << ( b ) << "," << ( c ) << ")"
1251 #define PARRAY6( a ) PARRAY( a ) << "-" << PARRAY( ( ( a ) + 3 ) )
1255 for(
int l = 0; l < 3; l++ )
1256 spd.
pDims[l] = pijk[l];
1257 std::cerr <<
"partMeth = " << part_method <<
", p/np = " << p <<
"/" << nprocs
1258 <<
", (i,j,k) = " <<
PARRAY3( i, j, k ) <<
", ldims = " <<
PARRAY6( ldims )
1260 <<
"facedims_a = " <<
PARRAY6( facedims_a )
1261 <<
", facedims_b = " <<
PARRAY6( facedims_b ) << std::endl
1262 <<
"rdims_a = " <<
PARRAY6( rdims_a ) <<
", rdims_b = " <<
PARRAY6( rdims_b )
1264 std::cerr <<
"ScdParData: " << spd << std::endl;