escript  Revision_
AbstractTransportProblem.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 #ifndef __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
18 #define __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
19 
20 #include "system_dep.h"
21 #include "FunctionSpace.h"
23 
24 #include <boost/python/object.hpp>
25 
26 namespace escript {
27 
28 //
29 // Forward declaration
30 class Data;
31 
44 {
45 public:
46 
62 
64  AbstractTransportProblem(const int blocksize,
65  const FunctionSpace& functionspace);
66 
72  virtual ~AbstractTransportProblem();
73 
75  int isEmpty() const;
76 
83  {
84  if (isEmpty())
85  throw TransportProblemException("Error - Transport Problem is empty.");
86  return m_functionspace;
87  }
88 
94  inline int getBlockSize() const
95  {
96  if (isEmpty())
97  throw TransportProblemException("Error - Transport Problem is empty.");
98  return m_blocksize;
99  }
100 
106  Data solve(Data& u0, Data& source, const double dt, boost::python::object& options);
107 
108 
113  virtual void resetTransport() const;
114 
120  void insertConstraint(Data& source, Data& q, Data& r);
121  /*
122  * \brief returns a safe time step size.
123  */
125  virtual double getSafeTimeStepSize() const;
126  /*
127  * \brief returns the value for unlimited time step size.
128  */
130  virtual double getUnlimitedTimeStepSize() const;
131 
132 
133  protected:
134 
135  private:
136 
142  virtual void setToSolution(Data& out, Data& u0, Data& source, double dt,
143  boost::python::object& options);
144 
152  virtual void copyConstraint(Data& source, Data& q, Data& r);
153 
154  int m_empty;
157 
158 };
159 
160 typedef boost::shared_ptr<AbstractTransportProblem> ATP_ptr;
161 
162 } // end of namespace
163 
164 #endif // __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
165 
Definition: FunctionSpace.h:34
int m_empty
Definition: AbstractTransportProblem.h:154
Definition: AbstractContinuousDomain.cpp:22
virtual double getUnlimitedTimeStepSize() const
Definition: AbstractTransportProblem.cpp:117
int m_blocksize
Definition: AbstractTransportProblem.h:155
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:160
AbstractTransportProblem()
Default constructor for AbstractTransportProblem.
Definition: AbstractTransportProblem.cpp:26
Data solve(Data &u0, Data &source, const double dt, boost::python::object &options)
returns the solution u for a time step dt>0 with initial value u0 at time t=0
Definition: AbstractTransportProblem.cpp:49
FunctionSpace m_functionspace
Definition: AbstractTransportProblem.h:156
void insertConstraint(Data &source, Data &q, Data &r)
inserts constraint u_{,t}=r where q>0 into the problem
Definition: AbstractTransportProblem.cpp:72
Definition: TransportProblemException.h:27
int isEmpty() const
Definition: AbstractTransportProblem.cpp:43
Data represents a collection of datapoints.
Definition: Data.h:63
FunctionSpace getFunctionSpace() const
returns the column function space
Definition: AbstractTransportProblem.h:82
virtual void setToSolution(Data &out, Data &u0, Data &source, double dt, boost::python::object &options)
sets solution out by time step dt.
Definition: AbstractTransportProblem.cpp:104
int getBlockSize() const
returns the block size
Definition: AbstractTransportProblem.h:94
virtual ~AbstractTransportProblem()
Destructor.
Definition: AbstractTransportProblem.cpp:40
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:43
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
virtual void copyConstraint(Data &source, Data &q, Data &r)
copy constraint u_{,t}=r where q>0 into the problem it can be assumed that q and r are not empty and ...
Definition: AbstractTransportProblem.cpp:99
virtual double getSafeTimeStepSize() const
Definition: AbstractTransportProblem.cpp:113
virtual void resetTransport() const
resets the transport operator typically as they have been updated.
Definition: AbstractTransportProblem.cpp:109