Go to the documentation of this file.
19 #ifndef __PASO_TRANSPORT_H__
20 #define __PASO_TRANSPORT_H__
22 #define DT_FACTOR_MAX 100000.
28 #include <escript/AbstractTransportProblem.h>
37 public boost::enable_shared_from_this<TransportProblem>
48 virtual void resetTransport(
bool preserveSolverData)
const;
50 void solve(
double* u,
double dt,
double* u0,
double* q,
Options* options);
52 virtual double getSafeTimeStepSize()
const;
54 virtual double getUnlimitedTimeStepSize()
const;
56 void insertConstraint(
const double* r,
double* source)
const;
58 void setUpConstraint(
const double* q);
62 return transport_matrix->row_block_size;
67 return transport_matrix;
77 return lumped_mass_matrix;
82 return transport_matrix->getTotalNumRows();
87 return transport_matrix->pattern->col_connector;
92 return mass_matrix->mainBlock->borrowMainDiagonalPointer();
95 inline static int getTypeId(
int solver,
int preconditioner,
96 int package,
bool symmetry,
126 boost::python::object& options);
134 #endif // __PASO_TRANSPORT_H__
#define MATRIX_FORMAT_BLK1
Definition: Paso.h:63
static const real_t LARGE_POSITIVE_FLOAT
Definition: FCT_Solver.cpp:43
bool isComplex() const
True if components of this data are stored as complex.
Definition: Data.cpp:1160
#define PASO_ONE
Definition: Paso.h:68
TransportProblem()
Default constructor - throws exception.
void insertConstraint(const double *r, double *source) const
Definition: Transport.cpp:223
double * lumped_mass_matrix
Definition: Transport.h:117
#define PASO_DLL_API
Definition: paso/src/system_dep.h:29
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:52
~TransportProblem()
Definition: Transport.cpp:85
void requireWrite()
Ensures data is ready for write access. This means that the data will be resolved if lazy and will be...
Definition: Data.cpp:1239
void Performance_startMonitor(Performance *pp, int monitor)
switches on a monitor
Definition: performance.cpp:163
this class holds a (distributed) stiffness matrix
Definition: SystemMatrix.h:50
double * reactive_matrix
Definition: Transport.h:118
virtual void setToSolution(escript::Data &out, escript::Data &u0, escript::Data &source, double dt, boost::python::object &options)
sets solution out by time step dt.
Definition: Transport.cpp:94
index_t * borrowMainDiagonalPointer() const
Definition: Transport.h:90
dim_t getTotalNumRows() const
Definition: Transport.h:80
const DataTypes::ShapeType & getDataPointShape() const
Return a reference to the data point shape.
Definition: Data.h:705
ElementType * data()
Definition: DataVectorAlt.h:200
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:40
SystemMatrix_ptr< double > borrowTransportMatrix() const
Definition: Transport.h:65
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
real_t real_t_max()
Returns the maximum finite value for the real_t type.
Definition: DataTypes.h:90
int getDataPointSize() const
Return the size of the data point. It is the product of the data point shape dimensions.
Definition: Data.cpp:1360
@ InputError
Definition: Paso.h:47
double * constraint_mask
Definition: Transport.h:111
Definition: FunctionSpace.h:36
SystemMatrix_ptr< double > transport_matrix
Definition: Transport.h:102
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:463
boost::shared_ptr< SystemMatrix< T > > SystemMatrix_ptr
Definition: SystemMatrix.h:42
Connector_ptr borrowConnector() const
Definition: Transport.h:85
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:88
@ Breakdown
Definition: Paso.h:49
void update(dim_t n, double a, double *x, double b, const double *y)
Definition: PasoUtil.cpp:339
Data represents a collection of datapoints.
Definition: Data.h:64
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:32
double l2(dim_t n, const double *x, escript::JMPI mpiinfo)
returns the global L2 norm of x
Definition: PasoUtil.cpp:501
double dt_max_R
safe time step size for reactive part
Definition: Transport.h:108
virtual void copyConstraint(escript::Data &source, escript::Data &q, escript::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: Transport.cpp:129
index_t dim_t
Definition: DataTypes.h:66
FunctionSpace getFunctionSpace() const
returns the column function space
Definition: AbstractTransportProblem.h:83
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:74
DataTypes::real_t * getSampleDataRW(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0)
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1956
SolverResult
Definition: Paso.h:44
void setUpConstraint(const double *q)
Definition: Transport.cpp:205
SystemMatrix_ptr< double > borrowMassMatrix() const
Definition: Transport.h:70
SystemMatrix_ptr< double > iteration_matrix
Definition: Transport.h:104
@ MaxIterReached
Definition: Paso.h:46
void solve(double *u, double dt, double *u0, double *q, Options *options)
Definition: Transport_solve.cpp:50
void updateEscriptDiagnostics(boost::python::object &options) const
updates SolverBuddy diagnostics from this
Definition: Options.cpp:441
void solve_free(SystemMatrix< T > *A)
Definition: Solver.h:79
dim_t getBlockSize() const
Definition: Transport.h:60
void linearCombination(dim_t n, double *z, double a, const double *x, double b, const double *y)
Definition: PasoUtil.cpp:388
Definition: Transport.h:38
static int getTypeId(int solver, int preconditioner, int package, bool symmetry, const escript::JMPI &mpi_info)
Definition: Transport.h:95
boost::shared_ptr< const TransportProblem > const_TransportProblem_ptr
Definition: Transport.h:34
void copyWithMask(const Data &other, const Data &mask)
Copy other Data object into this Data object where mask is positive.
Definition: Data.cpp:851
PasoException exception class.
Definition: PasoException.h:34
SystemMatrix_ptr< double > mass_matrix
Definition: Transport.h:103
int SystemMatrixType
Definition: SystemMatrix.h:45
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:61
bool valid_matrices
Definition: Transport.h:106
void Performance_stopMonitor(Performance *pp, int monitor)
switches off a monitor
Definition: performance.cpp:182
double * borrowLumpedMassMatrix() const
Definition: Transport.h:75
virtual double getUnlimitedTimeStepSize() const
Definition: Transport.cpp:199
void zeroes(dim_t n, double *x)
fills array x with zeroes
Definition: PasoUtil.cpp:319
escript::JMPI mpi_info
Definition: Transport.h:121
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:38
double * main_diagonal_mass_matrix
Definition: Transport.h:119
double dt_max_T
safe time step size for transport part
Definition: Transport.h:110
DataTypes::RealVectorType & getExpandedVectorReference(DataTypes::real_t dummy=0)
Ensures that the Data is expanded and returns its underlying vector Does not check for exclusive writ...
Definition: Data.cpp:5837
virtual void resetTransport(bool preserveSolverData) const
resets the transport operator typically as they have been updated.
Definition: Transport.cpp:189
Definition: BiCGStab.cpp:25
void expand()
Whatever the current Data type make this into a DataExpanded.
Definition: Data.cpp:1180
@ NoError
Definition: Paso.h:45
An exception class that signals an invalid argument value.
Definition: EsysException.h:100
double innerProduct(dim_t n, const double *x, const double *y, escript::JMPI mpiinfo)
returns the inner product of global arrays x and y
Definition: PasoUtil.cpp:428
#define MATRIX_FORMAT_DEFAULT
Definition: Paso.h:61
double * main_diagonal_low_order_transport_matrix
Definition: Transport.h:113
#define PASO_ZERO
Definition: Paso.h:69
SolverResult Solver_TFQMR(SystemMatrix_ptr< double > A, double *B, double *X, dim_t *iter, double *tolerance, Performance *pp)
Definition: TFQMR.cpp:62