/[escript]/branches/arrexp_2137_win_merge/escript/src/AbstractTransportProblem.h
ViewVC logotype

Annotation of /branches/arrexp_2137_win_merge/escript/src/AbstractTransportProblem.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2219 - (hide annotations)
Wed Jan 14 04:31:34 2009 UTC (10 years, 8 months ago) by jfenwick
File MIME type: text/plain
File size: 3839 byte(s)
Merging changes from trunk 2098:2218
1 elspeth 615
2 ksteube 1312 /*******************************************************
3 ksteube 1811 *
4     * Copyright (c) 2003-2008 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 ksteube 1312
14 ksteube 1811
15 gross 1364 #if !defined escript_AbstractTransportProblem_H
16     #define escript_AbstractTransportProblem_H
17 woo409 757 #include "system_dep.h"
18 jgs 82
19 jgs 474 #include "FunctionSpace.h"
20 gross 1364 #include "TransportProblemException.h"
21 jgs 474
22 jgs 82 #include <boost/python/dict.hpp>
23    
24 jgs 480 //
25     // Forward declaration
26     class Data;
27    
28 jgs 82 namespace escript {
29    
30     /**
31     \brief
32 gross 1364 Give a short description of what AbstractTransportProblem does.
33 jgs 82
34     Description:
35 gross 1364 Give a detailed description of AbstractTransportProblem
36 jgs 82
37     Template Parameters:
38     For templates describe any conditions that the parameters used in the
39     template must satisfy
40     */
41 gross 1364 class AbstractTransportProblem {
42 jgs 82
43     public:
44    
45     /**
46     \brief
47 gross 1364 Default constructor for AbstractTransportProblem
48 jgs 82
49     Description:
50 gross 1364 Default constructor for AbstractTransportProblem
51 jgs 82
52     Preconditions:
53     Describe any preconditions
54    
55     Throws:
56     Describe any exceptions thrown
57     */
58 woo409 757 ESCRIPT_DLL_API
59 gross 1364 AbstractTransportProblem();
60 jgs 82
61 woo409 757 ESCRIPT_DLL_API
62 gross 1364 AbstractTransportProblem(const double theta,
63     const int blocksize,
64     const FunctionSpace& functionspace);
65    
66 jgs 82 /**
67     \brief
68     Destructor.
69     */
70 woo409 757 ESCRIPT_DLL_API
71 gross 1364 virtual ~AbstractTransportProblem();
72 jgs 82
73 woo409 757 ESCRIPT_DLL_API
74 jgs 82 int isEmpty() const;
75    
76     /**
77     \brief
78     returns the column function space
79     */
80 woo409 757 ESCRIPT_DLL_API
81 gross 1364 inline FunctionSpace getFunctionSpace() const
82 jgs 82 {
83     if (isEmpty())
84 gross 1367 throw TransportProblemException("Error - Transport Problem is empty.");
85 gross 1364 return m_functionspace;
86 jgs 82 }
87    
88     /**
89     \brief
90 gross 1364 returns the block size
91 jgs 82 */
92 woo409 757 ESCRIPT_DLL_API
93 gross 1364 inline int getBlockSize() const
94 jgs 82 {
95     if (isEmpty())
96 gross 1367 throw TransportProblemException("Error - Transport Problem is empty.");
97 gross 1364 return m_blocksize;
98 jgs 82 }
99    
100     /**
101 gross 1364 \brief
102     returns the solution u for a time step dt>0
103 jgs 82 */
104 woo409 757 ESCRIPT_DLL_API
105 gross 1364 Data solve(Data& source, const double dt, const boost::python::dict& options) const;
106 jgs 82
107     /**
108     \brief
109 gross 1364 sets the value for u at time t=0.
110 jgs 82 */
111 woo409 757 ESCRIPT_DLL_API
112 gross 1364 void setInitialValue(Data& u) const;
113 gross 1417
114 jgs 102 /**
115 gross 1364 \brief resets the transport operator typically as they have been updated.
116 jgs 102 */
117 woo409 757 ESCRIPT_DLL_API
118 gross 1364 virtual void resetTransport() const;
119 jgs 123
120 gross 1407 /**
121 gross 1417 \brief
122 jfenwick 2219 inserts constraint u_{,t}=r where q>0 into the problem using a weighting factor
123 gross 1417 */
124     ESCRIPT_DLL_API
125 jfenwick 2219 void insertConstraint(Data& source, Data& q, Data& r, const double factor) const;
126 gross 1859 /*
127     * \brief returns a safe time step size.
128     */
129 gross 1407 ESCRIPT_DLL_API
130     virtual double getSafeTimeStepSize() const;
131 gross 1859 /*
132     * \brief returns the value for unlimited time step size.
133     */
134     ESCRIPT_DLL_API
135     virtual double getUnlimitedTimeStepSize() const;
136 gross 1407
137    
138 jgs 82 protected:
139    
140     private:
141    
142     /**
143     \brief
144 gross 1364 sets solution out by time step dt.
145 jgs 82 */
146 woo409 757 ESCRIPT_DLL_API
147 gross 1364 virtual void setToSolution(Data& out,Data& source,const double dt, const boost::python::dict& options) const;
148 jgs 82
149     /**
150     \brief
151 gross 1364 copies the initial value into the problem
152 jgs 82 */
153 woo409 757 ESCRIPT_DLL_API
154 gross 1364 virtual void copyInitialValue(Data& u) const;
155 gross 1417 /**
156     \brief
157     copy constraint u_{,t}=r where q>0 into the problem
158     it can be assumed that q and r are not empty and have
159     appropriate shape and function space.
160     */
161     ESCRIPT_DLL_API
162 jfenwick 2219 virtual void copyConstraint(Data& source, Data& q, Data& r, const double factor) const;
163 jgs 82
164     int m_empty;
165 gross 1364 int m_blocksize;
166     double m_theta;
167     FunctionSpace m_functionspace;
168 jgs 82
169     };
170    
171    
172     } // end of namespace
173     #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26