escript  Revision_
Transport.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 
18 #ifndef __PASO_TRANSPORT_H__
19 #define __PASO_TRANSPORT_H__
20 
21 #define DT_FACTOR_MAX 100000.
22 
23 #include "SystemMatrix.h"
24 #include "Options.h"
25 
26 namespace paso {
27 
29 typedef boost::shared_ptr<TransportProblem> TransportProblem_ptr;
30 typedef boost::shared_ptr<const TransportProblem> const_TransportProblem_ptr;
31 
33 struct TransportProblem : boost::enable_shared_from_this<TransportProblem>
34 {
35  TransportProblem(SystemMatrixPattern_ptr pattern, int block_size);
37 
38  void reset();
39 
40  void solve(double* u, double dt, double* u0, double* q, Options* options);
41 
42  double getSafeTimeStepSize();
43 
44  void insertConstraint(const double* r, double* source);
45 
46  void setUpConstraint(const double* q);
47 
48  inline dim_t getBlockSize() const
49  {
50  return transport_matrix->row_block_size;
51  }
52 
54  {
55  return transport_matrix;
56  }
57 
59  {
60  return mass_matrix;
61  }
62 
63  inline double* borrowLumpedMassMatrix() const
64  {
65  return lumped_mass_matrix;
66  }
67 
68  inline dim_t getTotalNumRows() const
69  {
70  return transport_matrix->getTotalNumRows();
71  }
72 
74  {
75  return transport_matrix->pattern->col_connector;
76  }
77 
79  {
80  return mass_matrix->mainBlock->borrowMainDiagonalPointer();
81  }
82 
83  inline static index_t getTypeId(index_t solver, index_t preconditioner,
84  index_t package, bool symmetry,
86  {
88  }
89 
93 
96  double dt_max_R;
98  double dt_max_T;
99  double* constraint_mask;
100 
108 
110 };
111 
112 } // namespace paso
113 
114 #endif // __PASO_TRANSPORT_H__
115 
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:28
#define PASO_DLL_API
Definition: Paso.h:41
static index_t getTypeId(index_t solver, index_t preconditioner, index_t package, bool symmetry, const esysUtils::JMPI &mpi_info)
Definition: Transport.h:83
TransportProblem(SystemMatrixPattern_ptr pattern, int block_size)
Definition: Transport.cpp:35
SystemMatrix_ptr transport_matrix
Definition: Transport.h:90
Definition: Options.h:90
double * constraint_mask
Definition: Transport.h:99
Definition: Transport.h:33
Connector_ptr borrowConnector() const
Definition: Transport.h:73
void reset()
Definition: Transport.cpp:82
dim_t getBlockSize() const
Definition: Transport.h:48
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:38
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:38
esysUtils::JMPI mpi_info
Definition: Transport.h:109
Definition: AMG.cpp:38
double dt_max_T
safe time step size for transport part
Definition: Transport.h:98
double * reactive_matrix
Definition: Transport.h:106
SystemMatrix_ptr borrowTransportMatrix() const
Definition: Transport.h:53
double * main_diagonal_low_order_transport_matrix
Definition: Transport.h:101
index_t * borrowMainDiagonalPointer() const
Definition: Transport.h:78
bool valid_matrices
Definition: Transport.h:94
boost::shared_ptr< const TransportProblem > const_TransportProblem_ptr
Definition: Transport.h:30
SystemMatrix_ptr mass_matrix
Definition: Transport.h:91
dim_t getTotalNumRows() const
Definition: Transport.h:68
#define MATRIX_FORMAT_DEFAULT
Definition: Paso.h:53
double * lumped_mass_matrix
Definition: Transport.h:105
double * borrowLumpedMassMatrix() const
Definition: Transport.h:63
int index_t
Definition: types.h:24
double * main_diagonal_mass_matrix
Definition: Transport.h:107
SystemMatrix_ptr borrowMassMatrix() const
Definition: Transport.h:58
void setUpConstraint(const double *q)
Definition: Transport.cpp:92
SystemMatrix_ptr iteration_matrix
Definition: Transport.h:92
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:35
~TransportProblem()
Definition: Transport.cpp:73
index_t dim_t
Definition: types.h:27
#define MATRIX_FORMAT_BLK1
Definition: Paso.h:55
double getSafeTimeStepSize()
Definition: Transport_solve.cpp:199
void insertConstraint(const double *r, double *source)
Definition: Transport.cpp:111
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
double dt_max_R
safe time step size for reactive part
Definition: Transport.h:96
void solve(double *u, double dt, double *u0, double *q, Options *options)
Definition: Transport_solve.cpp:49