Escript
Revision_4320
Main Page
Namespaces
Classes
Files
File List
File Members
paso
src
FCT_Solver.h
Go to the documentation of this file.
1
2
/*****************************************************************************
3
*
4
* Copyright (c) 2003-2013 by University of Queensland
5
* http://www.uq.edu.au
6
*
7
* Primary Business: Queensland, Australia
8
* Licensed under the Open Software License version 3.0
9
* http://www.opensource.org/licenses/osl-3.0.php
10
*
11
* Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12
* Development since 2012 by School of Earth Sciences
13
*
14
*****************************************************************************/
15
16
17
#ifndef INC_PASOFCT_SOLVER
18
#define INC_PASOFCT_SOLVER
19
20
#include "
Transport.h
"
21
#include "
FluxLimiter.h
"
22
#include "
Solver.h
"
23
24
25
26
27
28
typedef
struct
Paso_FCT_Solver
{
29
Paso_TransportProblem
*
transportproblem
;
30
Esys_MPIInfo
*
mpi_info
;
31
Paso_FCT_FluxLimiter
*
flux_limiter
;
32
index_t
method
;
33
double
omega
;
34
double
dt
;
35
double
*
b
;
36
double
*
z
;
37
double
*
du
;
38
Paso_Coupler
*
u_coupler
;
39
Paso_Coupler
*
u_old_coupler
;
/* last time step */
40
41
}
Paso_FCT_Solver
;
42
43
PASO_DLL_API
44
Paso_FCT_Solver
*
Paso_FCT_Solver_alloc
(
Paso_TransportProblem
*fctp,
Paso_Options
* options);
45
46
PASO_DLL_API
47
void
Paso_FCT_Solver_free
(
Paso_FCT_Solver
*in);
48
49
PASO_DLL_API
50
err_t
Paso_FCT_Solver_update
(
Paso_FCT_Solver
*fct_solver,
double
*u,
double
*u_old,
Paso_Options
* options,
Paso_Performance
*pp) ;
51
52
53
PASO_DLL_API
54
void
Paso_FCT_setLowOrderOperator
(
Paso_TransportProblem
* fc);
55
56
PASO_DLL_API
57
err_t
Paso_FCT_Solver_updateNL
(
Paso_FCT_Solver
*fct_solver,
double
* u,
double
*u_old,
Paso_Options
* options,
Paso_Performance
*pp) ;
58
59
PASO_DLL_API
60
err_t
Paso_FCT_Solver_update_LCN
(
Paso_FCT_Solver
*fct_solver,
double
* u,
double
*u_old,
Paso_Options
* options,
Paso_Performance
*pp) ;
61
62
void
Paso_FCT_setAntiDiffusionFlux_linearCN
(
Paso_SystemMatrix
*flux_matrix,
const
Paso_TransportProblem
* fct,
63
const
double
dt,
const
Paso_Coupler
* u_tilde_coupler,
64
const
Paso_Coupler
* u_old_coupler);
65
66
void
Paso_FCT_setAntiDiffusionFlux_BE
(
Paso_SystemMatrix
*flux_matrix,
67
const
Paso_TransportProblem
* fct,
68
const
double
dt,
69
const
Paso_Coupler
* u_coupler,
70
const
Paso_Coupler
* u_old_coupler);
71
72
void
Paso_FCT_setAntiDiffusionFlux_CN
(
Paso_SystemMatrix
*flux_matrix,
73
const
Paso_TransportProblem
* fct,
74
const
double
dt,
75
const
Paso_Coupler
* u_coupler,
76
const
Paso_Coupler
* u_old_coupler);
77
78
void
Paso_FCT_Solver_initialize
(
const
double
dt,
Paso_FCT_Solver
*fct_solver,
Paso_Options
* options,
Paso_Performance
* pp) ;
79
double
Paso_FCT_Solver_getSafeTimeStepSize
(
Paso_TransportProblem
* fctp);
80
void
Paso_FCT_Solver_setMuPaLu
(
double
* out,
const
double
*
M
,
const
Paso_Coupler
* u_coupler,
const
double
a,
const
Paso_SystemMatrix
*L);
81
82
#define Paso_FCT_Solver_getTheta(_fct_) ( ( (_fct_)->method == PASO_BACKWARD_EULER ) ? 1. : 0.5 )
83
84
#endif
/* #ifndef INC_PASOFCT_SOLVER */
85
Generated on Fri Mar 15 2013 14:07:50 for Escript by
1.8.1.2