/[escript]/trunk/pasowrap/src/TransportProblemAdapter.h
ViewVC logotype

Contents of /trunk/pasowrap/src/TransportProblemAdapter.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3675 - (show annotations)
Thu Nov 17 00:53:38 2011 UTC (9 years, 8 months ago) by jfenwick
File MIME type: text/plain
File size: 3787 byte(s)
pasowrap joins the trunk.

1
2 /*******************************************************
3 *
4 * Copyright (c) 2003-2010 by University of Queensland
5 * Earth Systems Science Computational Center (ESSCC)
6 * http://www.uq.edu.au/esscc
7 *
8 * Primary Business: Queensland, Australia
9 * Licensed under the Open Software License version 3.0
10 * http://www.opensource.org/licenses/osl-3.0.php
11 *
12 *******************************************************/
13
14 /* This file was extracted from finley's CPPAdapter then modified */
15
16 #if !defined TransportProblemAdapter_H
17 #define TransportProblemAdapter_H
18 #include "system_dep.h"
19
20 extern "C" {
21 #include "paso/Transport.h"
22 #include "paso/Options.h"
23 }
24
25 #include "PasoException.h"
26
27 #include "escript/AbstractTransportProblem.h"
28 #include "escript/Data.h"
29 #include "escript/UtilC.h"
30
31 #include <boost/python/object.hpp>
32 #include <boost/shared_ptr.hpp>
33 #include <boost/python/extract.hpp>
34
35 namespace paso {
36
37 class TransportProblemAdapter:public escript::AbstractTransportProblem {
38
39 /**
40 \brief
41 Wrapper for Paso_TransportProblem.
42
43 Description:
44 Wrapper for Paso_TransportProblem.
45 */
46
47 public:
48
49 /**
50 /brief
51 Default Constructor for TransportProblemAdapter.
52 NB: Only throws an exception.
53 */
54 PASOWRAP_DLL_API
55 TransportProblemAdapter();
56
57 /**
58 /brief
59 Constructor for TransportProblemAdapter.
60 */
61 PASOWRAP_DLL_API
62 TransportProblemAdapter(Paso_TransportProblem* transport_problem,
63 const bool useBackwardEuler,
64 const int block_size,
65 const escript::FunctionSpace& functionspace);
66
67 /**
68 \brief
69 Destructor for TransportProblemAdapter. As specified in the constructor
70 this deallocates the pointer given to the constructor.
71 */
72 PASOWRAP_DLL_API
73 ~TransportProblemAdapter();
74
75 /**
76 \brief
77 Returns the pointer to the transport problem.
78 */
79 PASOWRAP_DLL_API
80 Paso_TransportProblem* getPaso_TransportProblem() const;
81
82 /**
83 \brief
84 Returns the transport problem as a const AbstractTransportProblem&.
85 */
86 inline const escript::AbstractTransportProblem& asAbstractTransportProblem() const
87 {
88 return dynamic_cast<const escript::AbstractTransportProblem&>(*this);
89 }
90
91 /**
92 \brief
93 Returns a transport problem as a const TransportProblemAdapter&.
94 */
95 inline static const TransportProblemAdapter& asTransportProblemAdapter(const AbstractTransportProblem& transportproblem)
96 {
97 return dynamic_cast<const TransportProblemAdapter&>(transportproblem);
98 }
99
100 /**
101 * \brief resets the transport operator typically as they have been updated.
102 * */
103 PASOWRAP_DLL_API
104 virtual void resetTransport() const;
105
106 /**
107 * \brief returns a save time step size.
108 */
109 PASOWRAP_DLL_API
110 virtual double getSafeTimeStepSize() const;
111
112 /**
113 * \brief \brief returns the value for unlimited time step size.
114 */
115 PASOWRAP_DLL_API
116 virtual double getUnlimitedTimeStepSize() const;
117
118 protected:
119
120 private:
121
122 /**
123 * \brief
124 * sets solution out by time step dt.
125 * */
126 PASOWRAP_DLL_API
127 virtual void setToSolution(escript::Data& out,escript::Data& u0, escript::Data& source,const double dt, boost::python::object& options) const;
128
129
130 /**
131 * \brief
132 * copy constraint u_{,t}=r where q>0 into the problem
133 * it is assumed that q and r are not empty and has appropriate shape and function space.
134 * */
135 PASOWRAP_DLL_API
136 virtual void copyConstraint(escript::Data& source, escript::Data& q, escript::Data& r, const double factor) const;
137
138
139 //
140 // pointer to the externally created transport_problem.
141 //
142 boost::shared_ptr<Paso_TransportProblem> m_transport_problem;
143
144 };
145
146 } // end of namespace
147 #endif

  ViewVC Help
Powered by ViewVC 1.1.26