92 const char* ETSolid45 =
"60045";
93 const char* ETSolid92 =
"60042";
94 const char* ETSolid95 =
"60095";
99 const char* MATDefault =
"1";
102 std::ofstream node_file;
103 std::ofstream elem_file;
104 std::ofstream ans_file;
107 std::string temp_string;
108 std::string base_string;
109 base_string.assign( file_name );
110 base_string.replace( base_string.find_last_of(
".ans" ) - 3, 4,
"" );
113 temp_string = base_string +
".node";
114 node_file.open( temp_string.c_str() );
115 node_file.setf( std::ios::scientific, std::ios::floatfield );
116 node_file.precision( 13 );
119 temp_string = base_string +
".elem";
120 elem_file.open( temp_string.c_str() );
123 ans_file.open( file_name );
124 ans_file <<
"/prep7" << std::endl;
128 if( ent_handles && num_sets > 0 )
130 for(
int i = 0; i < num_sets; i++ )
153 for(
Range::iterator it = node_range.begin(); it != node_range.end(); ++it )
160 node_file.width( 8 );
162 node_file.width( 20 );
163 node_file << coord[0];
164 node_file.width( 20 );
165 node_file << coord[1];
166 node_file.width( 20 );
167 node_file << coord[2] << std::endl;
171 ans_file <<
"nread," << base_string <<
",node" << std::endl;
174 Range node_mesh_sets;
179 for(
Range::iterator ns_it = node_mesh_sets.begin(); ns_it != node_mesh_sets.end(); ++ns_it )
183 std::vector< EntityHandle > node_vector;
187 for( std::vector< EntityHandle >::iterator node_it = node_vector.begin(); node_it != node_vector.end();
191 if( node_it == node_vector.begin() )
194 ans_file <<
"nsel,s,node,," << std::setw( 8 ) << ns_node_id << std::endl;
199 ans_file <<
"nsel,a,node,," << std::setw( 8 ) << ns_node_id << std::endl;
203 ans_file <<
"cm,NS" << ns_id <<
",node" << std::endl;
221 for(
Range::iterator elem_it = tet_range.begin(); elem_it != tet_range.end(); ++elem_it )
225 std::vector< EntityHandle > conn;
229 if( conn.size() != 4 && conn.size() != 10 )
231 std::cout <<
"Support not added for element type. \n";
235 if( conn.size() == 4 )
237 elem_file << std::setw( 8 ) << conn[0] << std::setw( 8 ) << conn[1];
238 elem_file << std::setw( 8 ) << conn[2] << std::setw( 8 ) << conn[2];
239 elem_file << std::setw( 8 ) << conn[3] << std::setw( 8 ) << conn[3];
240 elem_file << std::setw( 8 ) << conn[3] << std::setw( 8 ) << conn[3];
242 elem_file << std::setw( 8 ) << MATDefault << std::setw( 8 ) << ETSolid45;
243 elem_file << std::setw( 8 ) <<
"1" << std::setw( 8 ) <<
"1";
244 elem_file << std::setw( 8 ) <<
"0" << std::setw( 8 ) << elem_id;
245 elem_file << std::endl;
249 if( conn.size() == 10 )
251 elem_file << std::setw( 8 ) << conn[0] << std::setw( 8 ) << conn[1];
252 elem_file << std::setw( 8 ) << conn[2] << std::setw( 8 ) << conn[3];
253 elem_file << std::setw( 8 ) << conn[4] << std::setw( 8 ) << conn[5];
254 elem_file << std::setw( 8 ) << conn[6] << std::setw( 8 ) << conn[7];
256 elem_file << std::setw( 8 ) << MATDefault << std::setw( 8 ) << ETSolid92;
257 elem_file << std::setw( 8 ) <<
"1" << std::setw( 8 ) <<
"1";
258 elem_file << std::setw( 8 ) <<
"0" << std::setw( 8 ) << elem_id;
259 elem_file << std::endl;
261 elem_file << std::setw( 8 ) << conn[8] << std::setw( 8 ) << conn[9];
262 elem_file << std::endl;
270 for(
Range::iterator elem_it = hex_range.begin(); elem_it != hex_range.end(); ++elem_it )
274 std::vector< EntityHandle > conn;
278 if( conn.size() != 8 && conn.size() != 20 )
280 std::cout <<
"Support not added for element type. \n";
285 if( conn.size() == 8 )
287 elem_file << std::setw( 8 ) << conn[0] << std::setw( 8 ) << conn[1];
288 elem_file << std::setw( 8 ) << conn[2] << std::setw( 8 ) << conn[3];
289 elem_file << std::setw( 8 ) << conn[4] << std::setw( 8 ) << conn[5];
290 elem_file << std::setw( 8 ) << conn[6] << std::setw( 8 ) << conn[7];
292 elem_file << std::setw( 8 ) << MATDefault << std::setw( 8 ) << ETSolid45;
293 elem_file << std::setw( 8 ) <<
"1" << std::setw( 8 ) <<
"1";
294 elem_file << std::setw( 8 ) <<
"0" << std::setw( 8 ) << elem_id;
295 elem_file << std::endl;
299 if( conn.size() == 20 )
302 elem_file << std::setw( 8 ) << conn[4] << std::setw( 8 ) << conn[5];
303 elem_file << std::setw( 8 ) << conn[1] << std::setw( 8 ) << conn[0];
304 elem_file << std::setw( 8 ) << conn[7] << std::setw( 8 ) << conn[6];
305 elem_file << std::setw( 8 ) << conn[2] << std::setw( 8 ) << conn[3];
307 elem_file << std::setw( 8 ) << MATDefault << std::setw( 8 ) << ETSolid95;
308 elem_file << std::setw( 8 ) <<
"1" << std::setw( 8 ) <<
"1";
309 elem_file << std::setw( 8 ) <<
"0" << std::setw( 8 ) << elem_id;
310 elem_file << std::endl;
312 elem_file << std::setw( 8 ) << conn[16] << std::setw( 8 ) << conn[13];
313 elem_file << std::setw( 8 ) << conn[8] << std::setw( 8 ) << conn[12];
314 elem_file << std::setw( 8 ) << conn[18] << std::setw( 8 ) << conn[14];
315 elem_file << std::setw( 8 ) << conn[10] << std::setw( 8 ) << conn[15];
316 elem_file << std::setw( 8 ) << conn[19] << std::setw( 8 ) << conn[17];
317 elem_file << std::setw( 8 ) << conn[9] << std::setw( 8 ) << conn[11];
318 elem_file << std::endl;
325 for(
Range::iterator elem_it = prism_range.begin(); elem_it != prism_range.end(); ++elem_it )
329 std::vector< EntityHandle > conn;
333 if( conn.size() != 6 )
335 std::cout <<
"Support not added for element type. \n";
340 if( conn.size() == 6 )
342 elem_file << std::setw( 8 ) << conn[0] << std::setw( 8 ) << conn[3];
343 elem_file << std::setw( 8 ) << conn[4] << std::setw( 8 ) << conn[4];
344 elem_file << std::setw( 8 ) << conn[1] << std::setw( 8 ) << conn[2];
345 elem_file << std::setw( 8 ) << conn[5] << std::setw( 8 ) << conn[5];
347 elem_file << std::setw( 8 ) << MATDefault << std::setw( 8 ) << ETSolid45;
348 elem_file << std::setw( 8 ) <<
"1" << std::setw( 8 ) <<
"1";
349 elem_file << std::setw( 8 ) <<
"0" << std::setw( 8 ) << elem_id;
350 elem_file << std::endl;
355 ans_file <<
"et," << ETSolid45 <<
",SOLID45" << std::endl;
356 ans_file <<
"et," << ETSolid92 <<
",SOLID92" << std::endl;
357 ans_file <<
"et," << ETSolid95 <<
",SOLID95" << std::endl;
362 ans_file <<
"eread," << base_string <<
",elem" << std::endl;
365 Range side_mesh_sets;
370 for(
Range::iterator ss_it = side_mesh_sets.begin(); ss_it != side_mesh_sets.end(); ++ss_it )
374 std::vector< EntityHandle > elem_vector;
379 for( std::vector< EntityHandle >::iterator elem_it = elem_vector.begin(); elem_it != elem_vector.end();
385 std::vector< EntityHandle > conn;
388 if( elem_it == elem_vector.begin() )
390 ans_file <<
"nsel,s,node,," << std::setw( 8 ) << conn[0] << std::endl;
391 for(
unsigned int i = 1; i < conn.size(); i++ )
393 ans_file <<
"nsel,a,node,," << std::setw( 8 ) << conn[i] << std::endl;
398 for(
unsigned int i = 0; i < conn.size(); i++ )
400 ans_file <<
"nsel,a,node,," << std::setw( 8 ) << conn[i] << std::endl;
405 ans_file <<
"cm,SS" << ss_id <<
",node" << std::endl;
414 for(
Range::iterator mat_it = matset.begin(); mat_it != matset.end(); ++mat_it )
419 std::vector< EntityHandle > mat_vector;
423 for( std::vector< EntityHandle >::iterator elem_it = mat_vector.begin(); elem_it != mat_vector.end();
428 if( elem_it == mat_vector.begin() )
430 ans_file <<
"esel,s,elem,," << std::setw( 8 ) << elem_id << std::endl;
434 ans_file <<
"esel,a,elem,," << std::setw( 8 ) << elem_id << std::endl;
438 ans_file <<
"cm,EB" << mat_id <<
",elem" << std::endl;