/[escript]/branches/symbolic_from_3470/dudley/src/CPPAdapter/TransportProblemAdapter.h
ViewVC logotype

Contents of /branches/symbolic_from_3470/dudley/src/CPPAdapter/TransportProblemAdapter.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3471 - (show annotations)
Tue Mar 15 04:23:54 2011 UTC (8 years, 1 month ago) by caltinay
File MIME type: text/plain
File size: 3764 byte(s)
Branch to investigate how to incorporate sympy or other symbolic evaluation
libraries into escript.

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
15 #if !defined dudley_TransportProblemAdapter_H
16 #define dudley_TransportProblemAdapter_H
17 #include "system_dep.h"
18
19 extern "C" {
20 #include "paso/Transport.h"
21 #include "paso/Options.h"
22 }
23
24 #include "DudleyAdapterException.h"
25 #include "DudleyError.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 dudley {
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 DUDLEY_DLL_API
55 TransportProblemAdapter();
56
57 /**
58 /brief
59 Constructor for TransportProblemAdapter.
60 */
61 DUDLEY_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 DUDLEY_DLL_API
73 ~TransportProblemAdapter();
74
75 /**
76 \brief
77 Returns the pointer to the transport problem.
78 */
79 DUDLEY_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 DUDLEY_DLL_API
104 virtual void resetTransport() const;
105
106 /**
107 * \brief returns a save time step size.
108 */
109 DUDLEY_DLL_API
110 virtual double getSafeTimeStepSize() const;
111
112 /**
113 * \brief \brief returns the value for unlimited time step size.
114 */
115 DUDLEY_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 DUDLEY_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 DUDLEY_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 dudley mesh - transport_problem.
141 //
142 boost::shared_ptr<Paso_TransportProblem> m_transport_problem;
143
144 };
145
146 } // end of namespace
147 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26