Chi-Tech
|
#include <diffusion_mip.h>
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 Vec & | RHS () const |
const std::map< uint64_t, BoundaryCondition > & | BCS () const |
const chi_math::UnknownManager & | UnknownStructure () const |
const chi_math::SpatialDiscretization & | SpatialDiscretization () 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_sigR > | MatID2XSMap |
Protected Attributes inherited from lbs::acceleration::DiffusionSolver | |
const std::string | text_name_ |
const chi_mesh::MeshContinuum & | grid_ |
const chi_math::SpatialDiscretization & | sdm_ |
const chi_math::UnknownManager | uk_man_ |
const std::map< uint64_t, BoundaryCondition > | bcs_ |
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_ |
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.
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.
|
virtualdefault |
|
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.
|
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.
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.
|
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.
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.
|
static |
Calls a lua function with xyz coordinates.
L | The lua state. |
lua_func_name | The name used to define this lua function in the lua state. |
xyz | The xyz coordinates of the point where the function is called. |
Definition at line 127 of file diffusion_mip_05_utils.cc.
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.
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.