/[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 1059 by gross, Fri Mar 23 11:01:53 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 26  using namespace escript; Line 29  using namespace escript;
29  namespace finley {  namespace finley {
30    
31    AbstractContinuousDomain* readMesh(const std::string& fileName,    AbstractContinuousDomain* readMesh(const std::string& fileName,
32                       int integrationOrder)                       int integrationOrder,
33                                         int reducedIntegrationOrder,
34                                         bool optimizeLabeling)
35    {    {
36      //      //
37      // create a copy of the filename to overcome the non-constness of call      // create a copy of the filename to overcome the non-constness of call
# Line 54  namespace finley { Line 59  namespace finley {
59      return temp;      return temp;
60    }    }
61    
62      AbstractContinuousDomain* readGmsh(const std::string& fileName,
63                                         int numDim,
64                                         int integrationOrder,
65                                         int reducedIntegrationOrder,
66                                         bool optimizeLabeling)
67      {
68        //
69        // create a copy of the filename to overcome the non-constness of call
70        // to Finley_Mesh_read
71        Finley_Mesh* fMesh=0;
72        // Win32 refactor
73        char *fName = ((fileName.size()+1)>0) ? TMPMEMALLOC((fileName.size()+1),char) : (char*)NULL;
74        strcpy(fName,fileName.c_str());
75    
76    #ifndef PASO_MPI
77        fMesh=Finley_Mesh_readGmsh(fName, numDim, integrationOrder, reducedIntegrationOrder, optimizeLabeling);
78    #else
79        {
80          stringstream temp;
81          temp << "Unable to read gmsh meshes from file under MPI yet...";
82          setFinleyError(VALUE_ERROR,temp.str().c_str());
83        }
84    #endif
85        checkFinleyError();
86        AbstractContinuousDomain* temp=new MeshAdapter(fMesh);
87        
88        /* win32 refactor */
89        TMPMEMFREE(fName);
90        
91        return temp;
92      }
93    
94    AbstractContinuousDomain* brick(int n0,int n1,int n2,int order,    AbstractContinuousDomain* brick(int n0,int n1,int n2,int order,
95              double l0,double l1,double l2,              double l0,double l1,double l2,
96              int periodic0,int periodic1,              int periodic0,int periodic1,
97              int periodic2,              int periodic2,
98              int integrationOrder,              int integrationOrder,
99                        int reducedIntegrationOrder,
100              int useElementsOnFace)              int useElementsOnFace)
101    {    {
102  //     cout << "n0=" << n0 << " n1=" << n1 << " n2=" << n2  //     cout << "n0=" << n0 << " n1=" << n1 << " n2=" << n2
# Line 82  namespace finley { Line 120  namespace finley {
120        fMesh=Finley_RectangularMesh_Hex8(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Hex8(numElements,length,periodic,integrationOrder,
121                      useElementsOnFace) ;                      useElementsOnFace) ;
122      }      }
 #ifndef PASO_MPI  
123          else if (order==2) {          else if (order==2) {
124        fMesh=Finley_RectangularMesh_Hex20(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Hex20(numElements,length,periodic,integrationOrder,
125                       useElementsOnFace) ;                       useElementsOnFace) ;
# Line 91  namespace finley { Line 128  namespace finley {
128        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
129        setFinleyError(VALUE_ERROR,temp.str().c_str());        setFinleyError(VALUE_ERROR,temp.str().c_str());
130      }      }
 #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  
131      //      //
132      // Convert any finley errors into a C++ exception      // Convert any finley errors into a C++ exception
133      checkFinleyError();      checkFinleyError();
# Line 108  namespace finley { Line 138  namespace finley {
138              double l0, double l1,              double l0, double l1,
139              int periodic0,int periodic1,              int periodic0,int periodic1,
140              int integrationOrder,              int integrationOrder,
141                            int reducedIntegrationOrder,
142              int useElementsOnFace)              int useElementsOnFace)
143    {    {
144      int numElements[]={n0,n1};      int numElements[]={n0,n1};
# Line 119  namespace finley { Line 150  namespace finley {
150        fMesh=Finley_RectangularMesh_Rec4(numElements, length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Rec4(numElements, length,periodic,integrationOrder,
151                      useElementsOnFace);                      useElementsOnFace);
152      }      }
 #ifndef PASO_MPI  
153      else if (order==2) {      else if (order==2) {
154        fMesh=Finley_RectangularMesh_Rec8(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Rec8(numElements,length,periodic,integrationOrder,
155                      useElementsOnFace);                      useElementsOnFace);
156      }      }
 #endif  
157      else {      else {
158        stringstream temp;        stringstream temp;
159        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
# Line 138  namespace finley { Line 167  namespace finley {
167    }    }
168    AbstractContinuousDomain*  interval(int n0,int order,double l0,int periodic0,    AbstractContinuousDomain*  interval(int n0,int order,double l0,int periodic0,
169                 int integrationOrder,                 int integrationOrder,
170                           int reducedIntegrationOrder,
171                 int useElementsOnFace)                 int useElementsOnFace)
172    {    {
173      int numElements[]={n0};      int numElements[]={n0};
# Line 148  namespace finley { Line 178  namespace finley {
178        fMesh=Finley_RectangularMesh_Line2(numElements, length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Line2(numElements, length,periodic,integrationOrder,
179                       useElementsOnFace);                       useElementsOnFace);
180      }      }
 #ifndef PASO_MPI  
181      else if (order==2) {      else if (order==2) {
182        fMesh=Finley_RectangularMesh_Line3(numElements,length,periodic,integrationOrder,        fMesh=Finley_RectangularMesh_Line3(numElements,length,periodic,integrationOrder,
183                       useElementsOnFace);                       useElementsOnFace);
184      }      }
 #endif  
185      else {      else {
186        stringstream temp;        stringstream temp;
187        temp << "Illegal interpolation order: " << order;        temp << "Illegal interpolation order: " << order;
# Line 181  namespace finley { Line 209  namespace finley {
209      //      //
210      // merge the meshes:      // merge the meshes:
211      fMesh=Finley_Mesh_merge(numMsh,mshes);      fMesh=Finley_Mesh_merge(numMsh,mshes);
212          TMPMEMFREE(mshes);
213  #else  #else
214      {      {
215        stringstream temp;        stringstream temp;
# Line 192  namespace finley { Line 221  namespace finley {
221      // Convert any finley errors into a C++ exception      // Convert any finley errors into a C++ exception
222      checkFinleyError();      checkFinleyError();
223      AbstractContinuousDomain* temp=new MeshAdapter(fMesh);      AbstractContinuousDomain* temp=new MeshAdapter(fMesh);
     TMPMEMFREE(mshes);  
224    
225      return temp;      return temp;
226    }    }
227    AbstractContinuousDomain*  glueFaces(const boost::python::list& meshList,    AbstractContinuousDomain*  glueFaces(const boost::python::list& meshList,
228              double safety_factor,              double safety_factor,
229              double tolerance)              double tolerance,
230                            bool optimizeLabeling)
231    {    {
232      Finley_Mesh* fMesh=0;      Finley_Mesh* fMesh=0;
233  #ifndef PASO_MPI  #ifndef PASO_MPI
# Line 231  namespace finley { Line 260  namespace finley {
260    }    }
261    AbstractContinuousDomain*  joinFaces(const boost::python::list& meshList,    AbstractContinuousDomain*  joinFaces(const boost::python::list& meshList,
262              double safety_factor,              double safety_factor,
263              double tolerance)              double tolerance,
264                            bool optimizeLabeling)
265    {    {
266      Finley_Mesh* fMesh=0;      Finley_Mesh* fMesh=0;
267      //      //

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

  ViewVC Help
Powered by ViewVC 1.1.26