/[escript]/trunk/escript/src/AbstractTransportProblem.h
ViewVC logotype

Annotation of /trunk/escript/src/AbstractTransportProblem.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1417 - (hide annotations)
Mon Feb 25 04:45:48 2008 UTC (11 years, 3 months ago) by gross
File MIME type: text/plain
File size: 3716 byte(s)
some more work on the transport solver.
1 elspeth 615
2 gross 1367 /* $Id$ */
3 jgs 480
4 ksteube 1312 /*******************************************************
5     *
6     * Copyright 2007 by University of Queensland
7     *
8     * http://esscc.uq.edu.au
9     * Primary Business: Queensland, Australia
10     * Licensed under the Open Software License version 3.0
11     * http://www.opensource.org/licenses/osl-3.0.php
12     *
13     *******************************************************/
14    
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     inserts constraint u_{,t}=r where q>0 into the problem.
123     */
124     ESCRIPT_DLL_API
125     void insertConstraint(Data& source, Data& q, Data& r) const;
126     /**
127     \brief resets the transport operator typically as they have been updated.
128     */
129    
130     /**
131 gross 1407 * \brief returns a save time step size.
132     * */
133     ESCRIPT_DLL_API
134     virtual double getSafeTimeStepSize() const;
135    
136    
137 jgs 82 protected:
138    
139     private:
140    
141     /**
142     \brief
143 gross 1364 sets solution out by time step dt.
144 jgs 82 */
145 woo409 757 ESCRIPT_DLL_API
146 gross 1364 virtual void setToSolution(Data& out,Data& source,const double dt, const boost::python::dict& options) const;
147 jgs 82
148     /**
149     \brief
150 gross 1364 copies the initial value into the problem
151 jgs 82 */
152 woo409 757 ESCRIPT_DLL_API
153 gross 1364 virtual void copyInitialValue(Data& u) const;
154 gross 1417 /**
155     \brief
156     copy constraint u_{,t}=r where q>0 into the problem
157     it can be assumed that q and r are not empty and have
158     appropriate shape and function space.
159     */
160     ESCRIPT_DLL_API
161     virtual void copyConstraint(Data& source, Data& q, Data& r) const;
162 jgs 82
163     int m_empty;
164 gross 1364 int m_blocksize;
165     double m_theta;
166     FunctionSpace m_functionspace;
167 jgs 82
168     };
169    
170    
171     } // end of namespace
172     #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26