paso::FCT_Solver Struct Reference

`#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< real_t > 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< real_t > | u_coupler
Coupler_ptr< real_t > | u_old_coupler

## Constructor & Destructor Documentation

## FCT_Solver()

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.

## ~FCT_Solver()

paso::FCT_Solver::~FCT_Solver | ( |  | ) |

References b, du, flux_limiter, and z.

## Member Function Documentation

## getSafeTimeStepSize()

double paso::FCT_Solver::getSafeTimeStepSize | ( | const_TransportProblem_ptr | tp | ) |

static

References paso::LARGE_POSITIVE_FLOAT, MPI_DOUBLE, MPI_MIN, and setLowOrderOperator().

## getTheta()

double paso::FCT_Solver::getTheta | ( |  | ) |

inline

Referenced by initialize().

## 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.

## setAntiDiffusionFlux_BE()

void paso::FCT_Solver::setAntiDiffusionFlux_BE | ( | SystemMatrix_ptr | flux_matrix | ) |

References dt, transportproblem, u_coupler, and u_old_coupler.

Referenced by updateNL().

## setAntiDiffusionFlux_CN()

void paso::FCT_Solver::setAntiDiffusionFlux_CN | ( | SystemMatrix_ptr | flux_matrix | ) |

References dt, transportproblem, u_coupler, and u_old_coupler.

Referenced by updateNL().

## setAntiDiffusionFlux_linearCN()

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().

## setLowOrderOperator()

void paso::FCT_Solver::setLowOrderOperator | ( | TransportProblem_ptr | tp | ) |

static

References MIN3.

Referenced by getSafeTimeStepSize().

## setMuPaLu()

void paso::FCT_Solver::setMuPaLu | ( | double * | out,
|  | const_Coupler_ptr< real_t > | coupler,
|  | double | a
| ) |  |

References paso::M, and transportproblem.

Referenced by updateLCN(), and updateNL().

## update()

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().

## updateLCN()

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().

## updateNL()

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().

## Member Data Documentation

## b

double* paso::FCT_Solver::b

Referenced by FCT_Solver(), updateLCN(), updateNL(), and ~FCT_Solver().

## dt

double paso::FCT_Solver::dt

Referenced by initialize(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setAntiDiffusionFlux_linearCN(), updateLCN(), and updateNL().

## du

double* paso::FCT_Solver::du

Referenced by FCT_Solver(), updateNL(), and ~FCT_Solver().

## flux_limiter

FCT_FluxLimiter* paso::FCT_Solver::flux_limiter

Referenced by FCT_Solver(), setAntiDiffusionFlux_linearCN(), updateLCN(), updateNL(), and ~FCT_Solver().

## method

index_t paso::FCT_Solver::method

Referenced by FCT_Solver(), initialize(), update(), and updateNL().

## mpi_info

escript::JMPI paso::FCT_Solver::mpi_info

Referenced by FCT_Solver().

## omega

double paso::FCT_Solver::omega

Referenced by initialize(), updateLCN(), and updateNL().

## transportproblem

const_TransportProblem_ptr paso::FCT_Solver::transportproblem

Referenced by initialize(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setAntiDiffusionFlux_linearCN(), setMuPaLu(), updateLCN(), and updateNL().

## u_coupler

Coupler_ptr<real_t> paso::FCT_Solver::u_coupler

Referenced by FCT_Solver(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), and updateNL().

## u_old_coupler

Coupler_ptr<real_t> paso::FCT_Solver::u_old_coupler

Referenced by FCT_Solver(), setAntiDiffusionFlux_BE(), setAntiDiffusionFlux_CN(), setAntiDiffusionFlux_linearCN(), updateLCN(), and updateNL().

## z

double* paso::FCT_Solver::z

Referenced by FCT_Solver(), updateNL(), and ~FCT_Solver().

The documentation for this struct was generated from the following files:

- FCT_Solver.h
- FCT_Solver.cpp