/[escript]/branches/more_shared_ptrs_from_1812/finley/src/CPPAdapter/MeshAdapterFactory.cpp
ViewVC logotype

Diff of /branches/more_shared_ptrs_from_1812/finley/src/CPPAdapter/MeshAdapterFactory.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 757 by woo409, Mon Jun 26 13:12:56 2006 UTC revision 934 by gross, Tue Jan 23 09:52:45 2007 UTC
# Line 13  Line 13 
13   ******************************************************************************   ******************************************************************************
14  */  */
15    
16    #ifdef PASO_MPI
17    #include <mpi.h>
18    #endif
19  #include "MeshAdapterFactory.h"  #include "MeshAdapterFactory.h"
20  #include "FinleyError.h"  #include "FinleyError.h"
21    
# Line 54  namespace finley { Line 57  namespace finley {
57      return temp;      return temp;
58    }    }
59    
60      AbstractContinuousDomain* readGmsh(const std::string& fileName,
61                                         int numDim,
62                                         int integrationOrder,
63                                         int reducedIntegrationOrder,
64                                         bool optimizeLabeling)
65      {
66        //
67        // create a copy of the filename to overcome the non-constness of call
68        // to Finley_Mesh_read
69        Finley_Mesh* fMesh=0;
70        // Win32 refactor
71        char *fName = ((fileName.size()+1)>0) ? TMPMEMALLOC((fileName.size()+1),char) : (char*)NULL;
72        strcpy(fName,fileName.c_str());
73    
74    #ifndef PASO_MPI
75        fMesh=Finley_Mesh_readGmsh(fName, numDim, integrationOrder, reducedIntegrationOrder, optimizeLabeling);
76    #else
77        {
78          stringstream temp;
79          temp << "Unable to read gmsh meshes from file under MPI yet...";
80          setFinleyError(VALUE_ERROR,temp.str().c_str());
81        }
82    #endif
83        checkFinleyError();
84        AbstractContinuousDomain* temp=new MeshAdapter(fMesh);
85        
86        /* win32 refactor */
87        TMPMEMFREE(fName);
88        
89        return temp;
90      }
91    
92    AbstractContinuousDomain* brick(int n0,int n1,int n2,int order,    AbstractContinuousDomain* brick(int n0,int n1,int n2,int order,
93              double l0,double l1,double l2,              double l0,double l1,double l2,
94              int periodic0,int periodic1,              int periodic0,int periodic1,
# Line 82  namespace finley { Line 117  namespace finley {
117        fMesh=Finley_RectangularMesh_Hex8(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Hex8(numElements,length,periodic,integrationOrder,
118                      useElementsOnFace) ;                      useElementsOnFace) ;
119      }      }
 #ifndef PASO_MPI  
120          else if (order==2) {          else if (order==2) {
121        fMesh=Finley_RectangularMesh_Hex20(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Hex20(numElements,length,periodic,integrationOrder,
122                       useElementsOnFace) ;                       useElementsOnFace) ;
# Line 91  namespace finley { Line 125  namespace finley {
125        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
126        setFinleyError(VALUE_ERROR,temp.str().c_str());        setFinleyError(VALUE_ERROR,temp.str().c_str());
127      }      }
 #else  
         else {  
       stringstream temp;  
       temp << "type of 3D regular mesh requested is unavailable under MPI\nOR\nIllegal interpolation order: " << order;  
       setFinleyError(VALUE_ERROR,temp.str().c_str());  
     }  
 #endif  
128      //      //
129      // Convert any finley errors into a C++ exception      // Convert any finley errors into a C++ exception
130      checkFinleyError();      checkFinleyError();
# Line 119  namespace finley { Line 146  namespace finley {
146        fMesh=Finley_RectangularMesh_Rec4(numElements, length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Rec4(numElements, length,periodic,integrationOrder,
147                      useElementsOnFace);                      useElementsOnFace);
148      }      }
 #ifndef PASO_MPI  
149      else if (order==2) {      else if (order==2) {
150        fMesh=Finley_RectangularMesh_Rec8(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Rec8(numElements,length,periodic,integrationOrder,
151                      useElementsOnFace);                      useElementsOnFace);
152      }      }
 #endif  
153      else {      else {
154        stringstream temp;        stringstream temp;
155        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
# Line 148  namespace finley { Line 173  namespace finley {
173        fMesh=Finley_RectangularMesh_Line2(numElements, length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Line2(numElements, length,periodic,integrationOrder,
174                       useElementsOnFace);                       useElementsOnFace);
175      }      }
 #ifndef PASO_MPI  
176      else if (order==2) {      else if (order==2) {
177        fMesh=Finley_RectangularMesh_Line3(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Line3(numElements,length,periodic,integrationOrder,
178                       useElementsOnFace);                       useElementsOnFace);
179      }      }
 #endif  
180      else {      else {
181        stringstream temp;        stringstream temp;
182        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
# Line 181  namespace finley { Line 204  namespace finley {
204      //      //
205      // merge the meshes:      // merge the meshes:
206      fMesh=Finley_Mesh_merge(numMsh,mshes);      fMesh=Finley_Mesh_merge(numMsh,mshes);
207          TMPMEMFREE(mshes);
208  #else  #else
209      {      {
210        stringstream temp;        stringstream temp;
# Line 192  namespace finley { Line 216  namespace finley {
216      // Convert any finley errors into a C++ exception      // Convert any finley errors into a C++ exception
217      checkFinleyError();      checkFinleyError();
218      AbstractContinuousDomain* temp=new MeshAdapter(fMesh);      AbstractContinuousDomain* temp=new MeshAdapter(fMesh);
     TMPMEMFREE(mshes);  
219    
220      return temp;      return temp;
221    }    }

Legend:
Removed from v.757  
changed lines
  Added in v.934

  ViewVC Help
Powered by ViewVC 1.1.26