50 const std::string& rBaseName,
101 out_stream p_node_file = OpenNodeFile();
102 WriteNodeFileHeader(p_node_file);
105 for (
unsigned item_num=0; item_num<this->GetNumNodes(); item_num++)
107 std::vector<double> current_item = this->GetNextNode();
109 *p_node_file <<
"Node:\t" << item_num+1 <<
"\t";
110 for (
unsigned i=0; i<SPACE_DIM; i++)
112 *p_node_file << current_item[i] <<
"\t";
115 *p_node_file <<
"\n";
117 p_node_file->close();
123 std::vector<boost::shared_ptr<std::ofstream> > elem_files = OpenElementFiles();
124 WriteElementsFileHeader(elem_files);
127 for (
unsigned item_num=0; item_num<this->GetNumElements(); item_num++)
130 std::vector<unsigned> current_element = elem.
NodeIndices;
135 *elem_files[elem.
AttributeValue] <<
"Element:\t" << item_num+1 <<
" 0 0 Nodes:\t";
136 for (
unsigned i=0; i<mNumNodesPerElement; i++)
138 *elem_files[elem.
AttributeValue] << current_element[mReordering[i]]+1 <<
"\t";
145 for (
unsigned region_index=0; region_index<mRegionNames.size(); region_index++)
147 elem_files[region_index]->close();
174 std::vector<boost::shared_ptr<std::ofstream> > elem_files;
176 if (mRegionNames.size() == 0)
178 mRegionNames.push_back(this->mBaseName);
180 elem_files.resize(mRegionNames.size());
182 std::string directory = this->mpOutputFileHandler->GetOutputDirectoryFullPath();
183 for (
unsigned region_index=0; region_index<mRegionNames.size(); region_index++)
185 std::string elem_file_name = mRegionNames[region_index] +
".exelem";
186 fs::path elem_file_path(directory);
187 elem_file_path /= elem_file_name;
189 boost::shared_ptr<std::ofstream> p_output_file(
new std::ofstream(elem_file_path, GetOpenMode(append)));
191 if (!p_output_file->is_open())
193 EXCEPTION(
"Could not open file \"" + elem_file_name +
"\" in " + directory);
204 elem_files[region_index] = p_output_file;
246 for (
unsigned region_index=0; region_index<mRegionNames.size(); region_index++)
252 *rElemFiles[region_index] << comment;
254 *rElemFiles[region_index] <<
"Group name: " << mGroupName <<
"\n";
255 *rElemFiles[region_index] << mElementFileHeader;
258 unsigned number_of_fields = mAdditionalFieldNames.size();
259 std::stringstream string_of_number_of_fields;
262 string_of_number_of_fields << number_of_fields+1;
265 *rElemFiles[region_index] <<
" #Fields="<<string_of_number_of_fields.str()<<
"\n";
268 *rElemFiles[region_index] << mCoordinatesFileHeader;
271 for (
unsigned i = 0; i < number_of_fields; i++)
274 std::stringstream i_string;
276 *rElemFiles[region_index]<<i_string.str()<<
") "<<mAdditionalFieldNames[i]<<
" ,";
277 *rElemFiles[region_index] << mAdditionalFieldHeader;
308 out_stream p_node_file = OpenNodeFile(
true);
312 for (NodeIterType iter = this->mpDistributedMesh->GetNodeIteratorBegin();
313 iter != this->mpDistributedMesh->GetNodeIteratorEnd();
316 const c_vector<double, SPACE_DIM>& r_current_item = iter->rGetLocation();
317 *p_node_file <<
"Node:\t" << iter->GetIndex()+1 <<
"\t";
319 for (
unsigned i=0; i<SPACE_DIM; i++)
321 *p_node_file << r_current_item[i] <<
"\t";
324 *p_node_file <<
"\n";
326 p_node_file->close();
330 std::vector<boost::shared_ptr<std::ofstream> > elem_files = OpenElementFiles(
true);
333 for (ElemIterType iter = this->mpDistributedMesh->GetElementIteratorBegin();
334 iter != this->mpDistributedMesh->GetElementIteratorEnd();
337 if (this->mpDistributedMesh->CalculateDesignatedOwnershipOfElement(iter->GetIndex()))
339 assert(iter->GetUnsignedAttribute() < mRegionNames.size());
341 *elem_files[iter->GetUnsignedAttribute()] <<
"Element:\t" << iter->GetIndex()+1 <<
" 0 0 Nodes:\t";
342 for (
unsigned i=0; i<this->mNodesPerElement; i++)
344 *elem_files[iter->GetUnsignedAttribute()] << iter->GetNodeGlobalIndex(i)+1 <<
"\t";
347 *elem_files[iter->GetUnsignedAttribute()] <<
"\n";
351 for (
unsigned region_index=0; region_index<mRegionNames.size(); region_index++)
353 elem_files[region_index]->close();