escript  Revision_Unversioneddirectory
TransportProblemAdapter.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 /* This file was extracted from finley's CPPAdapter then modified */
18 
19 #ifndef __PASOWRAP_TRANSPORTPROBLEMADAPTER_H__
20 #define __PASOWRAP_TRANSPORTPROBLEMADAPTER_H__
21 
22 #include "system_dep.h"
23 
24 #include "paso/Transport.h"
25 #include "paso/Options.h"
26 
27 #include "PasoException.h"
28 
29 #include "escript/AbstractTransportProblem.h"
30 #include "escript/Data.h"
31 #include "escript/UtilC.h"
32 
33 #include <boost/python/object.hpp>
34 #include <boost/shared_ptr.hpp>
35 #include <boost/python/extract.hpp>
36 
37 namespace paso {
38 
41 {
42 
51 public:
52 
59 
65  int block_size,
66  const escript::FunctionSpace& functionspace);
67 
73 
79 
83  virtual void resetTransport() const;
84 
88  virtual double getSafeTimeStepSize() const;
89 
93  virtual double getUnlimitedTimeStepSize() const;
94 
100  static int getTransportTypeId(const int solver, const int preconditioner,
101  const int package, const bool symmetry, const esysUtils::JMPI& mpiInfo);
102 
103  protected:
104 
105  private:
106 
111  virtual void setToSolution(escript::Data& out, escript::Data& u0,
112  escript::Data& source, double dt,
113  boost::python::object& options) const;
114 
115 
122  virtual void copyConstraint(escript::Data& source, escript::Data& q,
123  escript::Data& r) const;
124 
125 
126  //
127  // shared pointer to the externally created transport_problem.
128  //
130 
131 };
132 
133 } // end of namespace
134 
135 #endif // __PASOWRAP_TRANSPORTPROBLEMADAPTER_H__
136 
Definition: FunctionSpace.h:34
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:28
TransportProblem_ptr m_transport_problem
Definition: TransportProblemAdapter.h:129
virtual void setToSolution(escript::Data &out, escript::Data &u0, escript::Data &source, double dt, boost::python::object &options) const
sets solution out by time step dt.
Definition: TransportProblemAdapter.cpp:45
static int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry, const esysUtils::JMPI &mpiInfo)
returns the identifier of the transport problem type to be used when a particular solver...
Definition: TransportProblemAdapter.cpp:160
Definition: AMG.cpp:38
TransportProblem_ptr getPaso_TransportProblem() const
Returns the pointer to the transport problem.
Definition: TransportProblemAdapter.cpp:40
~TransportProblemAdapter()
Empty destructor for TransportProblemAdapter.
Definition: TransportProblemAdapter.h:72
virtual double getSafeTimeStepSize() const
returns a save time step size.
Definition: TransportProblemAdapter.cpp:148
virtual void copyConstraint(escript::Data &source, escript::Data &q, escript::Data &r) const
copy constraint u_{,t}=r where q>0 into the problem it is assumed that q and r are not empty and has ...
Definition: TransportProblemAdapter.cpp:84
Data represents a collection of datapoints.
Definition: Data.h:68
TransportProblemAdapter()
Wrapper for paso::TransportProblem.
Definition: TransportProblemAdapter.cpp:28
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
virtual void resetTransport() const
resets the transport operator typically as they have been updated.
Definition: TransportProblemAdapter.cpp:78
#define PASOWRAP_DLL_API
Definition: pasowrap/src/system_dep.h:31
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
Definition: TransportProblemAdapter.h:40
virtual double getUnlimitedTimeStepSize() const
returns the value for unlimited time step size.
Definition: TransportProblemAdapter.cpp:155