Class DiffusionMIPSolver

Inheritance Relationships

Base Type

Class Documentation

class DiffusionMIPSolver : public opensn::DiffusionSolver

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

Public Functions

DiffusionMIPSolver(std::string name, const opensn::SpatialDiscretization &sdm, const UnknownManager &uk_man, std::map<uint64_t, BoundaryCondition> bcs, MatID2XSMap map_mat_id_2_xs, const std::vector<UnitCellMatrices> &unit_cell_matrices, bool suppress_bcs, bool verbose)
~DiffusionMIPSolver() override = default
inline void SetSourceFunction(const ScalarSpatialFunction &function)
inline void SetReferenceSolutionFunction(const ScalarSpatialFunction &function)
void 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.

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

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

virtual void AssembleAand_b(const std::vector<double> &q_vector) override

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

virtual void Assemble_b(const std::vector<double> &q_vector) override

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

virtual void Assemble_b(Vec petsc_q_vector) override
double HPerpendicular(const 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.

int MapFaceNodeDisc(const Cell &cur_cell, const Cell &adj_cell, const std::vector<Vector3> &cc_node_locs, const std::vector<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.