Chi-Tech
lbs::acceleration::DiffusionMIPSolver Class Reference

#include <diffusion_mip.h>

Inheritance diagram for lbs::acceleration::DiffusionMIPSolver:
lbs::acceleration::DiffusionSolver

Public Member Functions

 DiffusionMIPSolver (std::string text_name, const chi_math::SpatialDiscretization &sdm, const chi_math::UnknownManager &uk_man, std::map< uint64_t, BoundaryCondition > bcs, MatID2XSMap map_mat_id_2_xs, const std::vector< UnitCellMatrices > &unit_cell_matrices, bool verbose)
 
void AssembleAand_b_wQpoints (const std::vector< double > &q_vector)
 
void Assemble_b_wQpoints (const std::vector< double > &q_vector)
 
void AssembleAand_b (const std::vector< double > &q_vector) override
 
void Assemble_b (const std::vector< double > &q_vector) override
 
void Assemble_b (Vec petsc_q_vector) override
 
double HPerpendicular (const chi_mesh::Cell &cell, unsigned int f)
 
int MapFaceNodeDisc (const chi_mesh::Cell &cur_cell, const chi_mesh::Cell &adj_cell, const std::vector< chi_mesh::Vector3 > &cc_node_locs, const std::vector< chi_mesh::Vector3 > &ac_node_locs, size_t ccf, size_t acf, size_t ccfi, double epsilon=1.0e-12)
 
virtual ~DiffusionMIPSolver ()=default
 
- Public Member Functions inherited from lbs::acceleration::DiffusionSolver
 DiffusionSolver (std::string text_name, const chi_math::SpatialDiscretization &sdm, const chi_math::UnknownManager &uk_man, std::map< uint64_t, BoundaryCondition > bcs, MatID2XSMap map_mat_id_2_xs, const std::vector< UnitCellMatrices > &unit_cell_matrices, bool verbose, bool requires_ghosts)
 
std::string TextName () const
 
const VecRHS () const
 
const std::map< uint64_t, BoundaryCondition > & BCS () const
 
const chi_math::UnknownManagerUnknownStructure () const
 
const chi_math::SpatialDiscretizationSpatialDiscretization () const
 
std::pair< size_t, size_t > GetNumPhiIterativeUnknowns ()
 
virtual ~DiffusionSolver ()
 
void Initialize ()
 
virtual void AssembleAand_b (const std::vector< double > &q_vector)=0
 
virtual void Assemble_b (const std::vector< double > &q_vector)=0
 
virtual void Assemble_b (Vec petsc_q_vector)=0
 
void AddToRHS (const std::vector< double > &values)
 
void Solve (std::vector< double > &solution, bool use_initial_guess=false)
 
void Solve (Vec petsc_solution, bool use_initial_guess=false)
 

Static Public Member Functions

static double CallLuaXYZFunction (lua_State *L, const std::string &lua_func_name, const chi_mesh::Vector3 &xyz)
 

Additional Inherited Members

- Data Fields inherited from lbs::acceleration::DiffusionSolver
struct lbs::acceleration::DiffusionSolver::Options options
 
- Protected Types inherited from lbs::acceleration::DiffusionSolver
typedef std::map< int, Multigroup_D_and_sigRMatID2XSMap
 
- Protected Attributes inherited from lbs::acceleration::DiffusionSolver
const std::string text_name_
 
const chi_mesh::MeshContinuumgrid_
 
const chi_math::SpatialDiscretizationsdm_
 
const chi_math::UnknownManager uk_man_
 
const std::map< uint64_t, BoundaryConditionbcs_
 
const MatID2XSMap mat_id_2_xs_map_
 
const std::vector< UnitCellMatrices > & unit_cell_matrices_
 
const int64_t num_local_dofs_
 
const int64_t num_global_dofs_
 
Mat A_ = nullptr
 
Vec rhs_ = nullptr
 
KSP ksp_ = nullptr
 
const bool requires_ghosts_
 

Detailed Description

Generalized diffusion solver for both WGDSA and TGDSA based on the MIP-method of Bruno Turcksin and Jean Ragusa.

Definition at line 31 of file diffusion_mip.h.

Constructor & Destructor Documentation

◆ DiffusionMIPSolver()

lbs::acceleration::DiffusionMIPSolver::DiffusionMIPSolver ( std::string  text_name,
const chi_math::SpatialDiscretization sdm,
const chi_math::UnknownManager uk_man,
std::map< uint64_t, BoundaryCondition bcs,
MatID2XSMap  map_mat_id_2_xs,
const std::vector< UnitCellMatrices > &  unit_cell_matrices,
bool  verbose 
)

Default constructor.

Definition at line 9 of file diffusion_mip_00_constrdestr.cc.

◆ ~DiffusionMIPSolver()

virtual lbs::acceleration::DiffusionMIPSolver::~DiffusionMIPSolver ( )
virtualdefault

Member Function Documentation

◆ Assemble_b() [1/2]

void lbs::acceleration::DiffusionMIPSolver::Assemble_b ( const std::vector< double > &  q_vector)
overridevirtual

Assembles the RHS using unit cell-matrices. These are the routines used in the production versions.

Implements lbs::acceleration::DiffusionSolver.

Definition at line 23 of file diffusion_mip_02d_assemble_b.cc.

◆ Assemble_b() [2/2]

void lbs::acceleration::DiffusionMIPSolver::Assemble_b ( Vec  petsc_q_vector)
overridevirtual

Assembles the RHS using unit cell-matrices. These are the routines used in the production versions.

Implements lbs::acceleration::DiffusionSolver.

Definition at line 171 of file diffusion_mip_02d_assemble_b.cc.

◆ Assemble_b_wQpoints()

void lbs::acceleration::DiffusionMIPSolver::Assemble_b_wQpoints ( const std::vector< double > &  q_vector)

Assembles just the RHS using quadrature points. These routines exist for implementing MMS.

Definition at line 21 of file diffusion_mip_02b_assemble_b.cc.

◆ AssembleAand_b()

void lbs::acceleration::DiffusionMIPSolver::AssembleAand_b ( const std::vector< double > &  q_vector)
overridevirtual

Assembles both the matrix and the RHS using unit cell-matrices. These are the routines used in the production versions.

Implements lbs::acceleration::DiffusionSolver.

Definition at line 23 of file diffusion_mip_02c_assembleAand_b.cc.

◆ AssembleAand_b_wQpoints()

void lbs::acceleration::DiffusionMIPSolver::AssembleAand_b_wQpoints ( const std::vector< double > &  q_vector)

Assembles both the matrix and the RHS using quadrature points. These routines exist for implementing MMS.

Definition at line 21 of file diffusion_mip_02a_assembleAand_b.cc.

◆ CallLuaXYZFunction()

double lbs::acceleration::DiffusionMIPSolver::CallLuaXYZFunction ( lua_State *  L,
const std::string &  lua_func_name,
const chi_mesh::Vector3 xyz 
)
static

Calls a lua function with xyz coordinates.

Parameters
LThe lua state.
lua_func_nameThe name used to define this lua function in the lua state.
xyzThe xyz coordinates of the point where the function is called.
Returns
The function evaluation.

Definition at line 127 of file diffusion_mip_05_utils.cc.

◆ HPerpendicular()

double lbs::acceleration::DiffusionMIPSolver::HPerpendicular ( const chi_mesh::Cell cell,
unsigned int  f 
)

Still searching for a reference for this.

For Polygons: Defined from paper
Turcksin B, Ragusa J, "Discontinuous diffusion synthetic acceleration for S_n transport on 2D arbitrary polygonal meshes", Journal of Computational Physics 274, pg 356-369, 2014.

Nv = Number of vertices. If Nv <= 4 then the perimeter parameter should be replaced by edge length.

Lambda to compute surface area.

Definition at line 22 of file diffusion_mip_05_utils.cc.

◆ MapFaceNodeDisc()

int lbs::acceleration::DiffusionMIPSolver::MapFaceNodeDisc ( const chi_mesh::Cell cur_cell,
const chi_mesh::Cell adj_cell,
const std::vector< chi_mesh::Vector3 > &  cc_node_locs,
const std::vector< chi_mesh::Vector3 > &  ac_node_locs,
size_t  ccf,
size_t  acf,
size_t  ccfi,
double  epsilon = 1.0e-12 
)

Maps a face, in a discontinuous sense, using the spatial discretization.

Definition at line 91 of file diffusion_mip_05_utils.cc.


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