/[escript]/branches/domexper/dudley/src/CPPAdapter/finleycpp.cpp
ViewVC logotype

Annotation of /branches/domexper/dudley/src/CPPAdapter/finleycpp.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1807 - (hide annotations)
Thu Sep 25 01:04:51 2008 UTC (10 years, 6 months ago) by ksteube
Original Path: trunk/finley/src/CPPAdapter/finleycpp.cpp
File size: 6899 byte(s)
The new MPI parallel ReadMesh is now the default after having passed
all tests both with and without MPI.
If you have been using ReadMesh you should notice no difference.
If you were using ReadMeshMPI then change to ReadMesh.

1 jgs 102
2 ksteube 1312 /* $Id$ */
3    
4     /*******************************************************
5     *
6     * Copyright 2003-2007 by ACceSS MNRF
7     * Copyright 2007 by University of Queensland
8     *
9     * http://esscc.uq.edu.au
10     * Primary Business: Queensland, Australia
11     * Licensed under the Open Software License version 3.0
12     * http://www.opensource.org/licenses/osl-3.0.php
13     *
14     *******************************************************/
15    
16 ksteube 817 #ifdef PASO_MPI
17     #include <mpi.h>
18 ksteube 1800 #include "paso/Paso_MPI.h"
19 ksteube 817 #endif
20 jgs 102 extern "C" {
21 robwdcock 682 #include "../Finley.h"
22 jgs 102 }
23 jgs 472
24 jgs 203 #include "MeshAdapter.h"
25     #include "MeshAdapterFactory.h"
26     #include "SystemMatrixAdapter.h"
27 gross 1364 #include "TransportProblemAdapter.h"
28 jgs 102
29 gross 727 #include "FinleyAdapterException.h"
30     // #include "esysUtils/EsysException.h"
31 robwdcock 682 #include "esysUtils/esysExceptionTranslator.h"
32 jgs 102
33 robwdcock 682 #include "escript/AbstractContinuousDomain.h"
34 jgs 102
35     #include <boost/python.hpp>
36     #include <boost/python/module.hpp>
37     #include <boost/python/def.hpp>
38     #include <boost/python/detail/defaults_gen.hpp>
39    
40     using namespace boost::python;
41    
42     /**
43 jgs 121 \page finley Finley
44     Finley is the python module name that contains the interfaces
45 jgs 102 to the C++ wrapper to finley.
46    
47 jgs 121 \version 1.0.0
48 jgs 102
49 jgs 121 \section class_desc Class Description:
50 jgs 102 Data
51    
52 jgs 121 \section class_limits Class Limitations:
53 jgs 102 None
54    
55 jgs 121 \section class_conds Class Conditions of Use:
56 jgs 102 None
57    
58 jgs 121 \section throws Throws:
59 jgs 102 None
60    
61     */
62    
63     //
64     // The BOOST_PYTHON_FUNCTION_OVERLOADS macro generates function overloads for optional
65     // arguments to the respective finley functions.
66     // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
67     //
68     // NOTE: If the number of arguments to the finley functions change
69     // the magic numbers in the BOOST_PYTHON_FUNCTION_OVERLOADS call
70     // must change.
71     //
72     // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
73     // BOOST_PYTHON_FUNCTION_OVERLOADS(readMesh_overloads,finley::readMesh,1,2)
74     // BOOST_PYTHON_FUNCTION_OVERLOADS(brick_overloads,finley::brick,0,12)
75     // BOOST_PYTHON_FUNCTION_OVERLOADS(rectangle_overloads,finley::rectangle,0,9)
76     // BOOST_PYTHON_FUNCTION_OVERLOADS(interval_overloads,finley::interval,0,6)
77     // BOOST_PYTHON_FUNCTION_OVERLOADS(glueFaces_overloads,finley::glueFaces,1,3)
78     // BOOST_PYTHON_FUNCTION_OVERLOADS(joinFaces_overloads,finley::joinFaces,1,3)
79    
80     BOOST_PYTHON_MODULE(finleycpp)
81     {
82    
83     //
84     // NOTE: The return_value_policy is necessary for functions that
85     // return pointers.
86 gross 1382 //
87     register_exception_translator<finley::FinleyAdapterException>(&(esysUtils::esysExceptionTranslator));
88 jgs 102
89 ksteube 1345 def("LoadMesh",finley::loadMesh,
90 ksteube 1312 (arg("fileName")="file.nc"),
91     return_value_policy<manage_new_object>());
92 jgs 102 def("ReadMesh",finley::readMesh,
93 ksteube 1312 (arg("fileName")="file.fly",arg("integrationOrder")=-1, arg("reducedIntegrationOrder")=-1, arg("optimize")=true),
94 jgs 102 return_value_policy<manage_new_object>());
95    
96 gross 934 def("ReadGmsh",finley::readGmsh,
97 ksteube 1312 (arg("fileName")="file.msh",arg("numDim"), arg("integrationOrder")=-1, arg("reducedIntegrationOrder")=-1, arg("optimize")=true),
98 gross 934 return_value_policy<manage_new_object>());
99    
100 jgs 102 def ("Brick",finley::brick,
101     (arg("n0")=1,arg("n1")=1,arg("n2")=1,
102     arg("order")=1,
103     arg("l0")=1.0,arg("l1")=1.0,arg("l2")=1.0,
104     arg("periodic0")=false,arg("periodic1")=false,arg("periodic2")=false,
105 gross 1059 arg("integrationOrder")=-1, arg("reducedIntegrationOrder")=-1,
106 ksteube 1312 arg("useElementsOnFace")=false,
107     arg("useFullElementOrder")=false,
108     arg("optimize")=false),
109 jgs 102 return_value_policy<manage_new_object>());
110    
111     def ("Rectangle",finley::rectangle,
112     (arg("n0")=1,arg("n1")=1,arg("order")=1,
113     arg("l0")=1.0,arg("l1")=1.0,
114     arg("periodic0")=false,arg("periodic1")=false,
115 gross 1059 arg("integrationOrder")=-1, arg("reducedIntegrationOrder")=-1,
116 ksteube 1312 arg("useElementsOnFace")=false,
117     arg("useFullElementOrder")=false,
118     arg("optimize")=false),
119 jgs 102 return_value_policy<manage_new_object>());
120    
121 jgs 110 def("Merge",finley::meshMerge,
122     return_value_policy<manage_new_object>());
123    
124 jgs 102 def("GlueFaces",finley::glueFaces,
125     (arg("safetyFactor")=0.2,
126 gross 1062 arg("tolerance")=1.e-8,
127 ksteube 1312 arg("optimize")=true),
128 jgs 102 return_value_policy<manage_new_object>());
129    
130     def("JoinFaces",finley::joinFaces,
131     (arg("safetyFactor")=0.2,
132 gross 1062 arg("tolerance")=1.e-8,
133 ksteube 1312 arg("optimize")=true),
134 jgs 102 return_value_policy<manage_new_object>());
135    
136    
137 gross 1361
138 jgs 102 class_<finley::MeshAdapter, bases<escript::AbstractContinuousDomain> >
139     ("MeshAdapter",init<optional <Finley_Mesh*> >())
140     .def(init<const finley::MeshAdapter&>())
141     .def("write",&finley::MeshAdapter::write)
142 ksteube 1339 .def("print_mesh_info",&finley::MeshAdapter::Print_Mesh_Info,(arg("full")=false))
143 ksteube 1343 .def("dump",&finley::MeshAdapter::dump)
144 jgs 102 .def("getDescription",&finley::MeshAdapter::getDescription)
145     .def("getDim",&finley::MeshAdapter::getDim)
146     .def("getDataShape",&finley::MeshAdapter::getDataShape)
147 ksteube 1754 .def("getNumDataPointsGlobal",&finley::MeshAdapter::getNumDataPointsGlobal)
148 jgs 102 .def("addPDEToSystem",&finley::MeshAdapter::addPDEToSystem)
149 gross 1204 .def("addPDEToLumpedSystem",&finley::MeshAdapter::addPDEToLumpedSystem)
150 jgs 102 .def("addPDEToRHS",&finley::MeshAdapter::addPDEToRHS)
151 gross 1370 .def("addPDEToTransportProblem",&finley::MeshAdapter::addPDEToTransportProblem)
152 jgs 102 .def("newOperator",&finley::MeshAdapter::newSystemMatrix)
153 gross 1370 .def("newTransportProblem",&finley::MeshAdapter::newTransportProblem)
154 jgs 102 .def("getSystemMatrixTypeId",&finley::MeshAdapter::getSystemMatrixTypeId)
155 jgs 110 .def("setX",&finley::MeshAdapter::setNewX)
156 jgs 102 .def("getX",&finley::MeshAdapter::getX)
157     .def("getNormal",&finley::MeshAdapter::getNormal)
158 jgs 153 .def("getSize",&finley::MeshAdapter::getSize)
159     .def("saveDX",&finley::MeshAdapter::saveDX)
160 gross 1044 .def("saveVTK",&finley::MeshAdapter::saveVTK)
161     .def("setTagMap",&finley::MeshAdapter::setTagMap)
162     .def("getTag",&finley::MeshAdapter::getTag)
163     .def("isValidTagName",&finley::MeshAdapter::isValidTagName)
164 ksteube 1312 .def("showTagNames",&finley::MeshAdapter::showTagNames)
165     .def("getMPISize",&finley::MeshAdapter::getMPISize)
166 ksteube 1801 .def("getMPIRank",&finley::MeshAdapter::getMPIRank);
167 jgs 102
168     class_<finley::SystemMatrixAdapter, bases<escript::AbstractSystemMatrix> >
169     ("OperatorAdapter",no_init)
170 ksteube 1339 .def("print_matrix_info",&finley::SystemMatrixAdapter::Print_Matrix_Info,(arg("full")=false))
171 jgs 102 .def("nullifyRowsAndCols",&finley::SystemMatrixAdapter::nullifyRowsAndCols)
172 jgs 149 .def("resetValues",&finley::SystemMatrixAdapter::resetValues)
173 jgs 123 .def("saveMM",&finley::SystemMatrixAdapter::saveMM)
174     .def("saveHB",&finley::SystemMatrixAdapter::saveHB);
175 jgs 102
176 gross 1364 class_<finley::TransportProblemAdapter, bases<escript::AbstractTransportProblem> >
177 gross 1417 ("TransportProblemAdapter",no_init)
178 gross 1407 .def("getSafeTimeStepSize",&finley::TransportProblemAdapter::getSafeTimeStepSize)
179 gross 1364 .def("resetTransport",&finley::TransportProblemAdapter::resetTransport);
180 jgs 102 }

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26