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 
27 namespace escript {
28 
29 //
30 // Forward declaration
31 class Data;
32 
45 {
46 public:
47 
63 
65  AbstractTransportProblem(const int blocksize,
66  const FunctionSpace& functionspace);
67 
73  virtual ~AbstractTransportProblem();
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 
155  int m_empty;
158 
159 };
160 
161 typedef boost::shared_ptr<AbstractTransportProblem> ATP_ptr;
162 
163 } // end of namespace
164 
165 #endif // __ESCRIPT_ABSTRACTTRANSPORTPROBLEM_H__
166 
ESCRIPT_DLL_API
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:30
AbstractTransportProblem.h
escript::Data::getDataPointShape
const DataTypes::ShapeType & getDataPointShape() const
Return a reference to the data point shape.
Definition: Data.h:705
escript::NotImplementedError
An exception class for features which are not (yet) implemented.
Definition: EsysException.h:80
escript::TransportProblemException
Definition: TransportProblemException.h:29
escript::AbstractTransportProblem::m_empty
int m_empty
Definition: AbstractTransportProblem.h:155
escript::AbstractTransportProblem::AbstractTransportProblem
AbstractTransportProblem()
Default constructor for AbstractTransportProblem.
Definition: AbstractTransportProblem.cpp:27
escript::AbstractTransportProblem
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
escript::Data::getDataPointSize
int getDataPointSize() const
Return the size of the data point. It is the product of the data point shape dimensions.
Definition: Data.cpp:1360
escript::FunctionSpace
Definition: FunctionSpace.h:36
escript::Data::getFunctionSpace
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:463
escript::AbstractTransportProblem::m_functionspace
FunctionSpace m_functionspace
Definition: AbstractTransportProblem.h:157
escript::AbstractTransportProblem::insertConstraint
void insertConstraint(Data &source, Data &q, Data &r)
inserts constraint u_{,t}=r where q>0 into the problem
Definition: AbstractTransportProblem.cpp:73
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:64
escript::AbstractTransportProblem::getBlockSize
int getBlockSize() const
returns the block size
Definition: AbstractTransportProblem.h:95
escript::DataTypes::ShapeType
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:43
escript::AbstractTransportProblem::getFunctionSpace
FunctionSpace getFunctionSpace() const
returns the column function space
Definition: AbstractTransportProblem.h:83
escript::ATP_ptr
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:161
escript::AbstractTransportProblem::m_blocksize
int m_blocksize
Definition: AbstractTransportProblem.h:156
escript::AbstractTransportProblem::getUnlimitedTimeStepSize
virtual double getUnlimitedTimeStepSize() const
Definition: AbstractTransportProblem.cpp:118
escript::AbstractTransportProblem::setToSolution
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
escript::AbstractTransportProblem::resetTransport
virtual void resetTransport(bool preserveSolverData) const
resets the transport operator typically as they have been updated.
Definition: AbstractTransportProblem.cpp:110
TransportProblemException.h
escript::Data::isEmpty
bool isEmpty() const
Definition: Data.cpp:1132
escript::AbstractTransportProblem::~AbstractTransportProblem
virtual ~AbstractTransportProblem()
Destructor.
Definition: AbstractTransportProblem.cpp:41
escript::AbstractTransportProblem::solve
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
escript::AbstractTransportProblem::getSafeTimeStepSize
virtual double getSafeTimeStepSize() const
Definition: AbstractTransportProblem.cpp:114
escript
Definition: AbstractContinuousDomain.cpp:23
DataTypes.h
escript::AbstractTransportProblem::isEmpty
int isEmpty() const
Definition: AbstractTransportProblem.cpp:44
Data.h
system_dep.h
escript::Data::expand
void expand()
Whatever the current Data type make this into a DataExpanded.
Definition: Data.cpp:1180
ESYS_ASSERT
#define ESYS_ASSERT(a, b)
EsysAssert is a MACRO that will throw an exception if the boolean condition specified is false.
Definition: Assert.h:79
escript::AbstractTransportProblem::copyConstraint
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
escript::ValueError
An exception class that signals an invalid argument value.
Definition: EsysException.h:90
FunctionSpace.h
escript::Data::getDataPointRank
unsigned int getDataPointRank() const
Return the rank of the point data.
Definition: Data.h:512