escript  Revision_
FCT_Solver.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 #ifndef __PASO_FCTSOLVER_H__
18 #define __PASO_FCTSOLVER_H__
19 
20 #include "Transport.h"
21 #include "FluxLimiter.h"
22 #include "Solver.h"
23 
24 namespace paso {
25 
27 struct FCT_Solver
28 {
30 
31  ~FCT_Solver();
32 
33  err_t update(double* u, double* u_old, Options* options, Performance* pp);
34 
35  err_t updateNL(double* u, double* u_old, Options* options, Performance* pp);
36 
37  err_t updateLCN(double* u, double* u_old, Options* options, Performance* pp);
38 
39  void initialize(double dt, Options* options, Performance* pp);
40 
41  static double getSafeTimeStepSize(TransportProblem_ptr tp);
42 
44 
46 
47  void setAntiDiffusionFlux_BE(SystemMatrix_ptr flux_matrix);
48 
49  void setAntiDiffusionFlux_CN(SystemMatrix_ptr flux_matrix);
50 
51  void setMuPaLu(double* out, const_Coupler_ptr coupler, double a);
52 
53  inline double getTheta()
54  {
55  return method == PASO_BACKWARD_EULER ? 1. : 0.5;
56  }
57 
62  double omega;
63  double dt;
64  double* b;
65  double* z;
66  double* du;
68  Coupler_ptr u_old_coupler; /* last time step */
69 };
70 
71 
72 } // namespace paso
73 
74 #endif // __PASO_FCTSOLVER_H__
75 
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:28
err_t updateLCN(double *u, double *u_old, Options *options, Performance *pp)
linear crank-nicolson update
Definition: FCT_Solver.cpp:137
Coupler_ptr u_old_coupler
Definition: FCT_Solver.h:68
#define PASO_DLL_API
Definition: Paso.h:41
boost::shared_ptr< const Coupler > const_Coupler_ptr
Definition: Coupler.h:41
Definition: FluxLimiter.h:26
Definition: Options.h:90
void setAntiDiffusionFlux_BE(SystemMatrix_ptr flux_matrix)
Definition: FCT_Solver.cpp:429
static double getSafeTimeStepSize(TransportProblem_ptr tp)
Definition: FCT_Solver.cpp:538
~FCT_Solver()
Definition: FCT_Solver.cpp:70
double * du
Definition: FCT_Solver.h:66
double * b
Definition: FCT_Solver.h:64
FCT_FluxLimiter * flux_limiter
Definition: FCT_Solver.h:60
const_TransportProblem_ptr transportproblem
Definition: FCT_Solver.h:58
void setAntiDiffusionFlux_linearCN(SystemMatrix_ptr flux_matrix)
Definition: FCT_Solver.cpp:485
Definition: performance.h:54
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:38
double * z
Definition: FCT_Solver.h:65
Definition: AMG.cpp:38
void setAntiDiffusionFlux_CN(SystemMatrix_ptr flux_matrix)
Definition: FCT_Solver.cpp:378
double dt
Definition: FCT_Solver.h:63
static void setLowOrderOperator(TransportProblem_ptr tp)
Definition: FCT_Solver.cpp:591
FCT_Solver(const_TransportProblem_ptr tp, Options *options)
Definition: FCT_Solver.cpp:40
void setMuPaLu(double *out, const_Coupler_ptr coupler, double a)
Definition: FCT_Solver.cpp:658
boost::shared_ptr< const TransportProblem > const_TransportProblem_ptr
Definition: Transport.h:30
int err_t
Definition: types.h:29
esysUtils::JMPI mpi_info
Definition: FCT_Solver.h:59
int index_t
Definition: types.h:24
void initialize(double dt, Options *options, Performance *pp)
Definition: FCT_Solver.cpp:79
boost::shared_ptr< Coupler > Coupler_ptr
Definition: Coupler.h:39
Coupler_ptr u_coupler
Definition: FCT_Solver.h:67
double getTheta()
Definition: FCT_Solver.h:53
err_t update(double *u, double *u_old, Options *options, Performance *pp)
Definition: FCT_Solver.cpp:120
double omega
Definition: FCT_Solver.h:62
err_t updateNL(double *u, double *u_old, Options *options, Performance *pp)
Definition: FCT_Solver.cpp:204
index_t method
Definition: FCT_Solver.h:61
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
#define PASO_BACKWARD_EULER
Definition: Options.h:83
Definition: FCT_Solver.h:27