escript Revision_
AbstractTransportProblem.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 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-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18#ifndef __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
19#define __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
20
21#include "system_dep.h"
22#include "FunctionSpace.h"
24
25#include <boost/python/object.hpp>
26
27namespace escript {
28
29//
30// Forward declaration
31class Data;
32
45{
46public:
47
63
65 AbstractTransportProblem(const int blocksize,
66 const FunctionSpace& functionspace);
67
74
76 int isEmpty() const;
77
84 {
85 if (isEmpty())
86 throw TransportProblemException("Error - Transport Problem is empty.");
87 return m_functionspace;
88 }
89
95 inline int getBlockSize() const
96 {
97 if (isEmpty())
98 throw TransportProblemException("Error - Transport Problem is empty.");
99 return m_blocksize;
100 }
101
107 Data solve(Data& u0, Data& source, const double dt, boost::python::object& options);
108
109
114 virtual void resetTransport(bool preserveSolverData) const;
115
121 void insertConstraint(Data& source, Data& q, Data& r);
122 /*
123 * \brief returns a safe time step size.
124 */
126 virtual double getSafeTimeStepSize() const;
127 /*
128 * \brief returns the value for unlimited time step size.
129 */
131 virtual double getUnlimitedTimeStepSize() const;
132
133
134 protected:
135
136 private:
137
143 virtual void setToSolution(Data& out, Data& u0, Data& source, double dt,
144 boost::python::object& options);
145
153 virtual void copyConstraint(Data& source, Data& q, Data& r);
154
158
159};
160
161typedef boost::shared_ptr<AbstractTransportProblem> ATP_ptr;
162
163} // end of namespace
164
165#endif // __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
166
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
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:100
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:50
int m_blocksize
Definition: AbstractTransportProblem.h:156
int m_empty
Definition: AbstractTransportProblem.h:155
void insertConstraint(Data &source, Data &q, Data &r)
inserts constraint u_{,t}=r where q>0 into the problem
Definition: AbstractTransportProblem.cpp:73
FunctionSpace getFunctionSpace() const
returns the column function space
Definition: AbstractTransportProblem.h:83
FunctionSpace m_functionspace
Definition: AbstractTransportProblem.h:157
virtual double getSafeTimeStepSize() const
Definition: AbstractTransportProblem.cpp:114
int getBlockSize() const
returns the block size
Definition: AbstractTransportProblem.h:95
virtual double getUnlimitedTimeStepSize() const
Definition: AbstractTransportProblem.cpp:118
virtual void resetTransport(bool preserveSolverData) const
resets the transport operator typically as they have been updated.
Definition: AbstractTransportProblem.cpp:110
int isEmpty() const
Definition: AbstractTransportProblem.cpp:44
AbstractTransportProblem()
Default constructor for AbstractTransportProblem.
Definition: AbstractTransportProblem.cpp:27
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:105
virtual ~AbstractTransportProblem()
Destructor.
Definition: AbstractTransportProblem.cpp:41
Data represents a collection of datapoints.
Definition: Data.h:64
Definition: FunctionSpace.h:36
Definition: TransportProblemException.h:29
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:30
Definition: AbstractContinuousDomain.cpp:23
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:161