escript
Revision_
|
#include <FCT_Solver.h>
Public Member Functions | |
FCT_Solver (const_TransportProblem_ptr tp, Options *options) | |
~FCT_Solver () | |
SolverResult | update (double *u, double *u_old, Options *options, Performance *pp) |
SolverResult | updateNL (double *u, double *u_old, Options *options, Performance *pp) |
SolverResult | updateLCN (double *u, double *u_old, Options *options, Performance *pp) |
linear crank-nicolson update More... | |
void | initialize (double dt, Options *options, Performance *pp) |
void | setAntiDiffusionFlux_linearCN (SystemMatrix_ptr flux_matrix) |
void | setAntiDiffusionFlux_BE (SystemMatrix_ptr flux_matrix) |
void | setAntiDiffusionFlux_CN (SystemMatrix_ptr flux_matrix) |
void | setMuPaLu (double *out, const_Coupler_ptr coupler, double a) |
double | getTheta () |
Static Public Member Functions | |
static double | getSafeTimeStepSize (const_TransportProblem_ptr tp) |
static void | setLowOrderOperator (TransportProblem_ptr tp) |
Public Attributes | |
const_TransportProblem_ptr | transportproblem |
escript::JMPI | mpi_info |
FCT_FluxLimiter * | flux_limiter |
index_t | method |
double | omega |
double | dt |
double * | b |
double * | z |
double * | du |
Coupler_ptr | u_coupler |
Coupler_ptr | u_old_coupler |
paso::FCT_Solver::FCT_Solver | ( | const_TransportProblem_ptr | tp, |
Options * | options | ||
) |
References b, du, flux_limiter, method, mpi_info, paso::Options::ode_solver, PASO_BACKWARD_EULER, PASO_CRANK_NICOLSON, PASO_LINEAR_CRANK_NICOLSON, u_coupler, u_old_coupler, and z.
paso::FCT_Solver::~FCT_Solver | ( | ) |
References b, du, flux_limiter, and z.
|
static |
References paso::LARGE_POSITIVE_FLOAT, MPI_DOUBLE, MPI_MIN, and setLowOrderOperator().
Referenced by paso::TransportProblem::getSafeTimeStepSize().
|
inline |
References method, and PASO_BACKWARD_EULER.
Referenced by initialize().
void paso::FCT_Solver::initialize | ( | double | dt, |
Options * | options, | ||
Performance * | pp | ||
) |
References dt, paso::EPSILON, getTheta(), method, omega, PASO_GS, PASO_JACOBI, PASO_LINEAR_CRANK_NICOLSON, PERFORMANCE_PRECONDITIONER_INIT, paso::Performance_startMonitor(), paso::Performance_stopMonitor(), paso::Options::preconditioner, escript::DataTypes::real_t_eps(), paso::solve_free(), paso::Options::sweeps, transportproblem, paso::Options::use_local_preconditioner, and paso::Options::verbose.
Referenced by paso::TransportProblem::solve().
void paso::FCT_Solver::setAntiDiffusionFlux_BE | ( | SystemMatrix_ptr | flux_matrix | ) |
References dt, transportproblem, u_coupler, and u_old_coupler.
Referenced by updateNL().
void paso::FCT_Solver::setAntiDiffusionFlux_CN | ( | SystemMatrix_ptr | flux_matrix | ) |
References dt, transportproblem, u_coupler, and u_old_coupler.
Referenced by updateNL().
void paso::FCT_Solver::setAntiDiffusionFlux_linearCN | ( | SystemMatrix_ptr | flux_matrix | ) |
References dt, flux_limiter, transportproblem, u_old_coupler, and paso::FCT_FluxLimiter::u_tilde_coupler.
Referenced by updateLCN().
|
static |
References MIN3.
Referenced by getSafeTimeStepSize().
void paso::FCT_Solver::setMuPaLu | ( | double * | out, |
const_Coupler_ptr | coupler, | ||
double | a | ||
) |
References paso::M, and transportproblem.
Referenced by updateLCN(), and updateNL().
SolverResult paso::FCT_Solver::update | ( | double * | u, |
double * | u_old, | ||
Options * | options, | ||
Performance * | pp | ||
) |
References paso::InputError, method, paso::NoError, PASO_BACKWARD_EULER, PASO_CRANK_NICOLSON, PASO_LINEAR_CRANK_NICOLSON, updateLCN(), and updateNL().
Referenced by paso::TransportProblem::solve().
SolverResult paso::FCT_Solver::updateLCN | ( | double * | u, |
double * | u_old, | ||
Options * | options, | ||
Performance * | pp | ||
) |
linear crank-nicolson update
References paso::FCT_FluxLimiter::addLimitedFluxes_Complete(), paso::FCT_FluxLimiter::addLimitedFluxes_Start(), paso::FCT_FluxLimiter::antidiffusive_fluxes, b, dt, flux_limiter, paso::util::lsup(), paso::MaxIterReached, paso::FCT_FluxLimiter::mpi_info, paso::NoError, omega, paso::Preconditioner_Smoother_solve_byTolerance(), paso::util::scale(), setAntiDiffusionFlux_linearCN(), setMuPaLu(), paso::FCT_FluxLimiter::setU_tilde(), paso::Options::tolerance, transportproblem, u_old_coupler, paso::FCT_FluxLimiter::u_tilde, paso::util::update(), and paso::Options::verbose.
Referenced by update().
SolverResult paso::FCT_Solver::updateNL | ( | double * | u, |
double * | u_old, | ||
Options * | options, | ||
Performance * | pp | ||
) |
References paso::Options::absolute_tolerance, paso::FCT_FluxLimiter::addLimitedFluxes_Complete(), paso::FCT_FluxLimiter::addLimitedFluxes_Start(), paso::FCT_FluxLimiter::antidiffusive_fluxes, b, paso::util::copy(), paso::Divergence, dt, du, flux_limiter, paso::Options::iter_max, paso::util::l2(), paso::LARGE_POSITIVE_FLOAT, paso::util::lsup(), paso::MaxIterReached, method, paso::FCT_FluxLimiter::mpi_info, paso::NoError, paso::Options::num_iter, omega, PASO_BACKWARD_EULER, paso::Preconditioner_Smoother_solve(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setMuPaLu(), paso::FCT_FluxLimiter::setU_tilde(), paso::Solver_BiCGStab(), paso::Options::tolerance, transportproblem, u_coupler, u_old_coupler, paso::FCT_FluxLimiter::u_tilde, paso::util::update(), paso::Options::verbose, z, and paso::util::zeroes().
Referenced by update().
double* paso::FCT_Solver::b |
Referenced by FCT_Solver(), updateLCN(), updateNL(), and ~FCT_Solver().
double paso::FCT_Solver::dt |
Referenced by initialize(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setAntiDiffusionFlux_linearCN(), updateLCN(), and updateNL().
double* paso::FCT_Solver::du |
Referenced by FCT_Solver(), updateNL(), and ~FCT_Solver().
FCT_FluxLimiter* paso::FCT_Solver::flux_limiter |
Referenced by FCT_Solver(), setAntiDiffusionFlux_linearCN(), updateLCN(), updateNL(), and ~FCT_Solver().
index_t paso::FCT_Solver::method |
Referenced by FCT_Solver(), getTheta(), initialize(), update(), and updateNL().
escript::JMPI paso::FCT_Solver::mpi_info |
Referenced by FCT_Solver().
double paso::FCT_Solver::omega |
Referenced by initialize(), updateLCN(), and updateNL().
const_TransportProblem_ptr paso::FCT_Solver::transportproblem |
Coupler_ptr paso::FCT_Solver::u_coupler |
Referenced by FCT_Solver(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), and updateNL().
Coupler_ptr paso::FCT_Solver::u_old_coupler |
Referenced by FCT_Solver(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setAntiDiffusionFlux_linearCN(), updateLCN(), and updateNL().
double* paso::FCT_Solver::z |
Referenced by FCT_Solver(), updateNL(), and ~FCT_Solver().