Chi-Tech
diffusion_mip.h
Go to the documentation of this file.
1#ifndef CHITECH_LBS_DIFFUSION_MIP_H
2#define CHITECH_LBS_DIFFUSION_MIP_H
3
4#include "diffusion.h"
5#include "chi_lua.h"
6
7//############################################### Forward declarations
8namespace chi_mesh
9{
10 class MeshContinuum;
11 class Cell;
12 struct Vector3;
13}
14
15namespace chi_math
16{
17 class SpatialDiscretization;
18}
19
20namespace lbs
21{
22 struct UnitCellMatrices;
23}
24
25//############################################### Namespace lbs::acceleration
26namespace lbs::acceleration
27{
28
29/**Generalized diffusion solver for both WGDSA and TGDSA based on the MIP-method
30 * of Bruno Turcksin and Jean Ragusa.*/
32{
33public:
34 //00
35 DiffusionMIPSolver(std::string text_name,
37 const chi_math::UnknownManager& uk_man,
38 std::map<uint64_t, BoundaryCondition> bcs,
39 MatID2XSMap map_mat_id_2_xs,
40 const std::vector<UnitCellMatrices>& unit_cell_matrices,
41 bool verbose);
42
43 //02a
44 void AssembleAand_b_wQpoints(const std::vector<double>& q_vector);
45 //02b
46 void Assemble_b_wQpoints(const std::vector<double>& q_vector);
47
48 //02c
49 void AssembleAand_b(const std::vector<double>& q_vector) override;
50 //02d
51 void Assemble_b(const std::vector<double>& q_vector) override;
52 void Assemble_b(Vec petsc_q_vector) override;
53
54 //05
55 double HPerpendicular(const chi_mesh::Cell& cell, unsigned int f);
56
57 int MapFaceNodeDisc(const chi_mesh::Cell& cur_cell,
58 const chi_mesh::Cell& adj_cell,
59 const std::vector<chi_mesh::Vector3>& cc_node_locs,
60 const std::vector<chi_mesh::Vector3>& ac_node_locs,
61 size_t ccf, size_t acf,
62 size_t ccfi,
63 double epsilon=1.0e-12);
64 static
65 double CallLuaXYZFunction(lua_State* L, const std::string& lua_func_name,
66 const chi_mesh::Vector3& xyz);
67
68 virtual ~DiffusionMIPSolver() = default;
69};
70
71}//namespace lbs::acceleration
72
73#endif //CHITECH_LBS_DIFFUSION_MIP_H
void AssembleAand_b_wQpoints(const std::vector< double > &q_vector)
void AssembleAand_b(const std::vector< double > &q_vector) override
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)
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)
void Assemble_b(const std::vector< double > &q_vector) override
double HPerpendicular(const chi_mesh::Cell &cell, unsigned int f)
static double CallLuaXYZFunction(lua_State *L, const std::string &lua_func_name, const chi_mesh::Vector3 &xyz)
void Assemble_b_wQpoints(const std::vector< double > &q_vector)
std::map< int, Multigroup_D_and_sigR > MatID2XSMap
Definition: diffusion.h:35
VectorN< 3 > Vector3
struct _p_Vec * Vec