XGC1
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
Solvers Class Reference

#include <solvers.hpp>

Collaboration diagram for Solvers:
Collaboration graph
[legend]

Public Member Functions

 Solvers ()
 
 Solvers (NLReader::NamelistReader &nlr, const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, ElectricField< DeviceType > &electric_field, Plasma &plasma)
 
void update (const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, Plasma &plasma)
 
View< double *, CLayout, DeviceTypeget_initial_guess_axisym (const Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const View< double *, CLayout, DeviceType > &cden00_1d) const
 
View< double *, CLayout, HostTypesolve_for_E (const Simulation< DeviceType > &sml, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, Plasma &plasma, Smoothing &smoothing, const Charges &charges, SolverSetting solver_setting) const
 
void solve_poisson_axisym (const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, Smoothing &smoothing, Plasma &plasma, const Charges &charges, SolverSetting solver_setting, ElectricField< DeviceType > &electric_field) const
 
void solve_poisson_turb (const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, Smoothing &smoothing, Plasma &plasma, const Charges &charges, int ipc, SolverSetting solver_setting, const ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field) const
 
void solve (const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, Smoothing &smoothing, const View< double *, CLayout, HostType > &rhs, const View< double *, CLayout, HostType > &dpot_double) const
 
void solve_ampere (const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, Plasma &plasma, const Charges &charges, Smoothing &smoothing, int ipc, bool is_cv_solve, ElectricField< DeviceType > &electric_field, const PerturbedBField< DeviceType > &perturbed_B_field) const
 
void solve (const Grid< DeviceType > &grid, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, Smoothing &smoothing, const View< double *, CLayout, HostType > &rhs, const View< double *, CLayout, HostType > &rhs2, const View< double *, CLayout, HostType > &dpot_double, bool is_cv_solve) const
 
void control_variate (int ipc, Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charges &charges, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, Smoothing &smoothing, const PerturbedBField< DeviceType > &perturbed_B_field) const
 
void solve_algorithm (int ipc, Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charges &charges, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, Smoothing &smoothing, const PerturbedBField< DeviceType > &perturbed_B_field) const
 
void solve_for_fields (int ipc, Simulation< DeviceType > &sml, const Grid< DeviceType > &grid, const MagneticField< DeviceType > &magnetic_field, ElectricField< DeviceType > &electric_field, Charges &charges, Plasma &plasma, const VelocityGrid &vgrid, const DomainDecomposition< DeviceType > &pol_decomp, Smoothing &smoothing, const PerturbedBField< DeviceType > &perturbed_B_field) const
 

Public Attributes

Solver axisym_poisson
 
Solver turb_poisson
 
Solver ampere
 
Solver ampere_cv
 

Private Member Functions

void init_solvers (const Simulation< DeviceType > &sml, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, Plasma &plasma)
 

Private Attributes

bool initialized
 
bool poisson_0m_full_geo
 
bool helmholtz_spectral
 Whether to solve Helmholtz-type equations with toroidally spectral solver. More...
 
bool use_pade
 Use Pade approximation for short wavelengths. More...
 
Simple00Solver simple00
 
BiasPotential bias_potential
 

Constructor & Destructor Documentation

◆ Solvers() [1/2]

Solvers::Solvers ( )
inline

◆ Solvers() [2/2]

Solvers::Solvers ( NLReader::NamelistReader nlr,
const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
ElectricField< DeviceType > &  electric_field,
Plasma plasma 
)
Here is the call graph for this function:

Member Function Documentation

◆ control_variate()

void Solvers::control_variate ( int  ipc,
Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charges charges,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Smoothing smoothing,
const PerturbedBField< DeviceType > &  perturbed_B_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_initial_guess_axisym()

View< double *, CLayout, DeviceType > Solvers::get_initial_guess_axisym ( const Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const View< double *, CLayout, DeviceType > &  cden00_1d 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_solvers()

void Solvers::init_solvers ( const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
Plasma plasma 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve() [1/2]

void Solvers::solve ( const Grid< DeviceType > &  grid,
const DomainDecomposition< DeviceType > &  pol_decomp,
const MagneticField< DeviceType > &  magnetic_field,
Smoothing smoothing,
const View< double *, CLayout, HostType > &  rhs,
const View< double *, CLayout, HostType > &  dpot_double 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve() [2/2]

void Solvers::solve ( const Grid< DeviceType > &  grid,
const DomainDecomposition< DeviceType > &  pol_decomp,
const MagneticField< DeviceType > &  magnetic_field,
Smoothing smoothing,
const View< double *, CLayout, HostType > &  rhs,
const View< double *, CLayout, HostType > &  rhs2,
const View< double *, CLayout, HostType > &  dpot_double,
bool  is_cv_solve 
) const
Here is the call graph for this function:

◆ solve_algorithm()

void Solvers::solve_algorithm ( int  ipc,
Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charges charges,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Smoothing smoothing,
const PerturbedBField< DeviceType > &  perturbed_B_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_ampere()

void Solvers::solve_ampere ( const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Plasma plasma,
const Charges charges,
Smoothing smoothing,
int  ipc,
bool  is_cv_solve,
ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_for_E()

View< double *, CLayout, HostType > Solvers::solve_for_E ( const Simulation< DeviceType > &  sml,
const DomainDecomposition< DeviceType > &  pol_decomp,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
Plasma plasma,
Smoothing smoothing,
const Charges charges,
SolverSetting  solver_setting 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_for_fields()

void Solvers::solve_for_fields ( int  ipc,
Simulation< DeviceType > &  sml,
const Grid< DeviceType > &  grid,
const MagneticField< DeviceType > &  magnetic_field,
ElectricField< DeviceType > &  electric_field,
Charges charges,
Plasma plasma,
const VelocityGrid vgrid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Smoothing smoothing,
const PerturbedBField< DeviceType > &  perturbed_B_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_poisson_axisym()

void Solvers::solve_poisson_axisym ( const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Smoothing smoothing,
Plasma plasma,
const Charges charges,
SolverSetting  solver_setting,
ElectricField< DeviceType > &  electric_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_poisson_turb()

void Solvers::solve_poisson_turb ( const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
const DomainDecomposition< DeviceType > &  pol_decomp,
Smoothing smoothing,
Plasma plasma,
const Charges charges,
int  ipc,
SolverSetting  solver_setting,
const ElectricField< DeviceType > &  electric_field,
const PerturbedBField< DeviceType > &  perturbed_B_field 
) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void Solvers::update ( const Simulation< DeviceType > &  sml,
const MagneticField< DeviceType > &  magnetic_field,
const Grid< DeviceType > &  grid,
Plasma plasma 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ ampere

Solver Solvers::ampere

◆ ampere_cv

Solver Solvers::ampere_cv

◆ axisym_poisson

Solver Solvers::axisym_poisson

◆ bias_potential

BiasPotential Solvers::bias_potential
private

◆ helmholtz_spectral

bool Solvers::helmholtz_spectral
private

Whether to solve Helmholtz-type equations with toroidally spectral solver.

◆ initialized

bool Solvers::initialized
private

◆ poisson_0m_full_geo

bool Solvers::poisson_0m_full_geo
private

◆ simple00

Simple00Solver Solvers::simple00
private

◆ turb_poisson

Solver Solvers::turb_poisson

◆ use_pade

bool Solvers::use_pade
private

Use Pade approximation for short wavelengths.


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