00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <cassert>
00030 #include "AbstractMeshWriter.hpp"
00031 #include "PetscTools.hpp"
00032
00034
00036
00037 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00038 AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::AbstractMeshWriter(const std::string &rDirectory,
00039 const std::string &rBaseName,
00040 const bool clearOutputDir)
00041 : mBaseName(rBaseName),
00042 mpMeshReader(NULL)
00043 {
00044 mpOutputFileHandler = new OutputFileHandler(rDirectory, clearOutputDir);
00045 }
00046
00047 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00048 AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::~AbstractMeshWriter()
00049 {
00050 delete mpOutputFileHandler;
00051 }
00052
00053 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00054 std::string AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetOutputDirectory()
00055 {
00056 return mpOutputFileHandler->GetOutputDirectoryFullPath();
00057 }
00058
00059 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00060 unsigned AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNumNodes()
00061 {
00062 return mNumNodes;
00063 }
00064
00065 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00066 unsigned AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNumElements()
00067 {
00068 return mNumElements;
00069 }
00070
00071 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00072 unsigned AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNumBoundaryFaces()
00073 {
00074 return mNumBoundaryElements;
00075 }
00076
00077 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00078 unsigned AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNumCableElements()
00079 {
00080 return mNumCableElements;
00081 }
00082
00083
00084 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00085 std::vector<double> AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNextNode()
00086 {
00087 assert(mpMeshReader!=NULL);
00088 return mpMeshReader->GetNextNode();
00089 }
00090
00091 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00092 ElementData AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNextElement()
00093 {
00094 assert(mpMeshReader!=NULL);
00095 return mpMeshReader->GetNextElementData();
00096 }
00097
00098 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00099 ElementData AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNextBoundaryElement()
00100 {
00101 assert(mpMeshReader!=NULL);
00102 return mpMeshReader->GetNextFaceData();
00103 }
00104
00105 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00106 ElementData AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::GetNextCableElement()
00107 {
00108 assert(mpMeshReader!=NULL);
00109 return mpMeshReader->GetNextCableElementData();
00110 }
00111
00112
00113 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00114 void AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>::WriteFilesUsingMeshReader(
00115 AbstractMeshReader<ELEMENT_DIM, SPACE_DIM>& rMeshReader)
00116 {
00117 mpMeshReader = &rMeshReader;
00118 mNumNodes = mpMeshReader->GetNumNodes();
00119 mNumElements = mpMeshReader->GetNumElements();
00120 mNumBoundaryElements = mpMeshReader->GetNumFaces();
00121
00123 mNumCableElements = mpMeshReader->GetNumCableElements();
00124
00125 if (!PetscTools::AmMaster())
00126 {
00127 return;
00128 }
00129
00130 WriteFiles();
00131 }
00132
00134
00136
00137 template class AbstractMeshWriter<1,1>;
00138 template class AbstractMeshWriter<1,2>;
00139 template class AbstractMeshWriter<1,3>;
00140 template class AbstractMeshWriter<2,2>;
00141 template class AbstractMeshWriter<2,3>;
00142 template class AbstractMeshWriter<3,3>;