83 int main(
int argc,
char** argv )
87 if( NULL == mbImpl )
return 1;
93 opts.
addOpt<
int >( string(
"nquads,n" ), string(
"Number of quads in the mesh (default = 1000" ), &nquads );
106 Tag tag1, tag2, tag3;
108 "Trouble creating tag1" );
109 double def_val[3] = { 0.0, 0.0, 0.0 };
111 "Trouble creating tag2" );
115 "Trouble creating tag3" );
123 "Error in connect_iterate" );
124 assert( count == (
int)quads.
size() );
126 double *x_ptr, *y_ptr, *z_ptr;
128 "Error in coords_iterate" );
129 assert( count == (
int)verts.
size() );
131 double *tag1_ptr, *tag2_ptr;
134 "Error in tag1_iterate" );
135 assert( count == (
int)quads.
size() );
137 "Error in tag2_iterate" );
138 assert( count == (
int)quads.
size() );
140 "Error in tag3_iterate" );
141 assert( count == (
int)quads.
size() );
143 const vector< EntityHandle >** adjs_ptr;
145 "Error in adjacencies_iterate" );
146 assert( count == (
int)verts.
size() );
152 for(
int i = 0; i < nquads; i++ )
154 tag1_ptr[3 * i + 0] = tag1_ptr[3 * i + 1] = tag1_ptr[3 * i + 2] = 0.0;
155 for(
int j = 0; j < vpere; j++ )
157 int v_index = conn_ptr[vpere * i + j] - start_vert;
158 tag1_ptr[3 * i + 0] += x_ptr[v_index];
159 tag1_ptr[3 * i + 1] += y_ptr[v_index];
160 tag1_ptr[3 * i + 2] += z_ptr[v_index];
162 tag1_ptr[3 * i + 0] /= vpere;
163 tag1_ptr[3 * i + 1] /= vpere;
164 tag1_ptr[3 * i + 2] /= vpere;
169 for(
int v = 0; v < count; v++ )
171 const vector< EntityHandle >* avec = *( adjs_ptr + v );
172 for( vector< EntityHandle >::const_iterator ait = avec->begin(); ait != avec->end(); ++ait )
175 int a_ind = *ait - start_quad;
176 tag2_ptr[3 * a_ind + 0] += x_ptr[v];
177 tag2_ptr[3 * a_ind + 1] += y_ptr[v];
178 tag2_ptr[3 * a_ind + 2] += z_ptr[v];
188 int i = *q_it - start_quad;
189 for(
int j = 0; j < 3; j++ )
190 tag2_ptr[3 * i + j] /= (
double)tag3_ptr[i];
191 if( tag1_ptr[3 * i] != tag2_ptr[3 * i] || tag1_ptr[3 * i + 1] != tag2_ptr[3 * i + 1] ||
192 tag1_ptr[3 * i + 2] != tag2_ptr[3 * i + 2] )
194 cout <<
"Tag1, tag2 disagree for element " << *q_it + i << endl;
198 if( !n_dis ) cout <<
"All tags agree, success!" << endl;
212 vector< double* > coords;
217 "Error in get_node_arrays" );
220 "Error in get_element_connect" );
221 for(
int i = 0; i < nquads; i++ )
223 coords[0][2 * i] = coords[0][2 * i + 1] = (double)i;
224 coords[1][2 * i] = 0.0;
225 coords[1][2 * i + 1] = 1.0;
226 coords[2][2 * i] = coords[2][2 * i + 1] = (double)0.0;
228 connect[4 * i + 0] = quad_v;
229 connect[4 * i + 1] = quad_v + 2;
230 connect[4 * i + 2] = quad_v + 3;
231 connect[4 * i + 3] = quad_v + 1;
236 coords[0][2 * nquads] = coords[0][2 * nquads + 1] = (double)nquads;
237 coords[1][2 * nquads] = 0.0;
238 coords[1][2 * nquads + 1] = 1.0;
239 coords[2][2 * nquads] = coords[2][2 * nquads + 1] = (double)0.0;
244 assert( !dum_range.
empty() );