Chi-Tech
chi_diffusion::Solver Class Reference

#include <diffusion_solver.h>

Inheritance diagram for chi_diffusion::Solver:
chi_physics::Solver ChiObject

Public Types

typedef unsigned int uint
 
typedef std::pair< BoundaryType, std::vector< double > > BoundaryInfo
 
typedef std::map< std::string, BoundaryInfoBoundaryPreferences
 

Public Member Functions

 Solver (const Solver &)=delete
 
Solveroperator= (const Solver &)=delete
 
 Solver (const std::string &in_solver_name)
 
virtual ~Solver ()
 
void GetMaterialProperties (const chi_mesh::Cell &cell, int cell_dofs, std::vector< double > &diffCoeff, std::vector< double > &sourceQ, std::vector< double > &sigmaa, int group=0, int moment=0)
 
void InitializeCommonItems ()
 
void Initialize () override
 
int Initialize (bool verbose)
 
void Execute () override
 
int ExecuteS (bool suppress_assembly=false, bool suppress_solve=false)
 
void CFEM_Assemble_A_and_b (chi_mesh::Cell &cell, int group=0)
 
void PWLD_Assemble_A_and_b (const chi_mesh::Cell &cell, int component=0)
 
void PWLD_Assemble_b (const chi_mesh::Cell &cell, int component=0)
 
double HPerpendicular (const chi_mesh::Cell &cell, const UnitIntegralContainer &fe_intgrl_values, unsigned int f)
 
void UpdateFieldFunctions ()
 
- Public Member Functions inherited from chi_physics::Solver
 Solver (std::string in_text_name)
 
 Solver (std::string in_text_name, std::initializer_list< BasicOption > in_options)
 
 Solver (const chi::InputParameters &params)
 
virtual ~Solver ()=default
 
std::string TextName () const
 
BasicOptionsGetBasicOptions ()
 
const BasicOptionsGetBasicOptions () const
 
std::vector< std::shared_ptr< FieldFunctionGridBased > > & GetFieldFunctions ()
 
const std::vector< std::shared_ptr< FieldFunctionGridBased > > & GetFieldFunctions () const
 
TimeStepperGetTimeStepper ()
 
const TimeStepperGetTimeStepper () const
 
virtual void Initialize ()
 
virtual void Execute ()
 
virtual void Step ()
 
virtual void Advance ()
 
virtual chi::ParameterBlock GetInfo (const chi::ParameterBlock &params) const
 
virtual void SetProperties (const chi::ParameterBlock &params)
 
chi::ParameterBlock GetInfoWithPreCheck (const chi::ParameterBlock &params) const
 
- Public Member Functions inherited from ChiObject
 ChiObject ()
 
 ChiObject (const chi::InputParameters &params)
 
void SetStackID (size_t stack_id)
 
size_t StackID () const
 
virtual void PushOntoStack (std::shared_ptr< ChiObject > &new_object)
 
virtual ~ChiObject ()=default
 

Static Public Member Functions

static uint64_t MapCellLocalNodeIDFromGlobalID (const chi_mesh::Cell &cell, uint64_t node_global_id)
 
static unsigned int MapCellFace (const chi_mesh::Cell &cur_cell, const chi_mesh::Cell &adj_cell, unsigned int f)
 
- Static Public Member Functions inherited from chi_physics::Solver
static chi::InputParameters GetInputParameters ()
 
- Static Public Member Functions inherited from ChiObject
static chi::InputParameters GetInputParameters ()
 

Data Fields

BoundaryPreferences boundary_preferences_
 
std::map< uint64_t, chi_diffusion::Boundary * > boundaries_
 
chi_mesh::MeshContinuumPtr grid_ptr_ = nullptr
 
std::shared_ptr< chi_math::SpatialDiscretizationdiscretization_
 
chi_math::UnknownManager unknown_manager_
 
int material_mode_ = DIFFUSION_MATERIALS_REGULAR
 
bool common_items_initialized_ = false
 
Vec x_ = nullptr
 
Vec b_ = nullptr
 
Mat A_ = nullptr
 
KSP ksp_ = nullptr
 
PC pc_ = nullptr
 
PetscReal norm_ = 0.0
 
PetscErrorCode ierr_ = 0
 
size_t local_dof_count_ = 0
 
size_t global_dof_count_ = 0
 
std::vector< double > pwld_phi_local_
 
int gi_ = 0
 
int G_ = 1
 
std::string options_string_
 
std::map< uint64_t, UnitIntegralContainerunit_integrals_
 

Private Attributes

chi::Timer t_assembly_
 
chi::Timer t_solve_
 
double time_assembly_ = 0.0
 
double time_solve_ = 0.0
 
bool verbose_info_ = true
 

Additional Inherited Members

- Protected Attributes inherited from chi_physics::Solver
BasicOptions basic_options_
 
std::vector< std::shared_ptr< FieldFunctionGridBased > > field_functions_
 
std::shared_ptr< TimeSteppertimestepper_ = nullptr
 

Detailed Description

Solver for the general diffusion problem.

Definition at line 32 of file diffusion_solver.h.

Member Typedef Documentation

◆ BoundaryInfo

typedef std::pair<BoundaryType,std::vector<double> > chi_diffusion::Solver::BoundaryInfo

Definition at line 44 of file diffusion_solver.h.

◆ BoundaryPreferences

Definition at line 45 of file diffusion_solver.h.

◆ uint

typedef unsigned int chi_diffusion::Solver::uint

Definition at line 43 of file diffusion_solver.h.

Constructor & Destructor Documentation

◆ Solver() [1/2]

chi_diffusion::Solver::Solver ( const Solver )
delete

◆ Solver() [2/2]

chi_diffusion::Solver::Solver ( const std::string &  in_solver_name)
explicit

Definition at line 26 of file constrdestr.cc.

◆ ~Solver()

chi_diffusion::Solver::~Solver ( )
virtual

Reimplemented from chi_physics::Solver.

Definition at line 35 of file constrdestr.cc.

Member Function Documentation

◆ CFEM_Assemble_A_and_b()

void chi_diffusion::Solver::CFEM_Assemble_A_and_b ( chi_mesh::Cell cell,
int  group = 0 
)

Assembles PWLC matrix for general cells.

Definition at line 7 of file assemble_pwlc.cc.

◆ Execute()

void chi_diffusion::Solver::Execute ( )
inlineoverridevirtual

Reimplemented from chi_physics::Solver.

Definition at line 104 of file diffusion_solver.h.

◆ ExecuteS()

int chi_diffusion::Solver::ExecuteS ( bool  suppress_assembly = false,
bool  suppress_solve = false 
)

Executes the diffusion solver using the PETSc library.

Definition at line 12 of file main_exec.cc.

◆ GetMaterialProperties()

void chi_diffusion::Solver::GetMaterialProperties ( const chi_mesh::Cell cell,
int  cell_dofs,
std::vector< double > &  diffCoeff,
std::vector< double > &  sourceQ,
std::vector< double > &  sigmaa,
int  group = 0,
int  moment = 0 
)

Gets material properties various sources.

Definition at line 16 of file general.cc.

◆ HPerpendicular()

double chi_diffusion::Solver::HPerpendicular ( const chi_mesh::Cell cell,
const UnitIntegralContainer fe_intgrl_values,
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.

Definition at line 18 of file assemble_utils_plwd.cc.

◆ Initialize() [1/2]

void chi_diffusion::Solver::Initialize ( )
inlineoverridevirtual

Reimplemented from chi_physics::Solver.

Definition at line 100 of file diffusion_solver.h.

◆ Initialize() [2/2]

int chi_diffusion::Solver::Initialize ( bool  verbose)

Initializes the diffusion solver using the PETSc library.

Definition at line 16 of file main_initialize.cc.

◆ InitializeCommonItems()

void chi_diffusion::Solver::InitializeCommonItems ( )

Initialization of common to all solver types.

Definition at line 11 of file initcommon.cc.

◆ MapCellFace()

unsigned int chi_diffusion::Solver::MapCellFace ( const chi_mesh::Cell cur_cell,
const chi_mesh::Cell adj_cell,
unsigned int  f 
)
static

Given the face index on the current cell, finds the corresponding face index on the adjacent cell.

Definition at line 129 of file assemble_utils_plwd.cc.

◆ MapCellLocalNodeIDFromGlobalID()

uint64_t chi_diffusion::Solver::MapCellLocalNodeIDFromGlobalID ( const chi_mesh::Cell cell,
uint64_t  node_global_id 
)
static

Given a global node index, returns the local cell-node it's associated on the referenced cell.

Definition at line 103 of file assemble_utils_plwd.cc.

◆ operator=()

Solver & chi_diffusion::Solver::operator= ( const Solver )
delete

◆ PWLD_Assemble_A_and_b()

void chi_diffusion::Solver::PWLD_Assemble_A_and_b ( const chi_mesh::Cell cell,
int  component = 0 
)

Assembles PWLC matrix for polygon cells.

Definition at line 10 of file assemble_pwld.cc.

◆ PWLD_Assemble_b()

void chi_diffusion::Solver::PWLD_Assemble_b ( const chi_mesh::Cell cell,
int  component = 0 
)

Assembles PWLC matrix for polygon cells.

Definition at line 289 of file assemble_pwld.cc.

◆ UpdateFieldFunctions()

void chi_diffusion::Solver::UpdateFieldFunctions ( )

Update the field functions with the latest data.

Definition at line 185 of file general.cc.

Field Documentation

◆ A_

Mat chi_diffusion::Solver::A_ = nullptr

Definition at line 62 of file diffusion_solver.h.

◆ b_

Vec chi_diffusion::Solver::b_ = nullptr

Definition at line 61 of file diffusion_solver.h.

◆ boundaries_

std::map<uint64_t,chi_diffusion::Boundary*> chi_diffusion::Solver::boundaries_

Definition at line 49 of file diffusion_solver.h.

◆ boundary_preferences_

BoundaryPreferences chi_diffusion::Solver::boundary_preferences_

Definition at line 48 of file diffusion_solver.h.

◆ common_items_initialized_

bool chi_diffusion::Solver::common_items_initialized_ = false

Definition at line 58 of file diffusion_solver.h.

◆ discretization_

std::shared_ptr<chi_math::SpatialDiscretization> chi_diffusion::Solver::discretization_

Definition at line 52 of file diffusion_solver.h.

◆ G_

int chi_diffusion::Solver::G_ = 1

Definition at line 75 of file diffusion_solver.h.

◆ gi_

int chi_diffusion::Solver::gi_ = 0

Definition at line 74 of file diffusion_solver.h.

◆ global_dof_count_

size_t chi_diffusion::Solver::global_dof_count_ = 0

Definition at line 70 of file diffusion_solver.h.

◆ grid_ptr_

chi_mesh::MeshContinuumPtr chi_diffusion::Solver::grid_ptr_ = nullptr

Definition at line 50 of file diffusion_solver.h.

◆ ierr_

PetscErrorCode chi_diffusion::Solver::ierr_ = 0

Definition at line 67 of file diffusion_solver.h.

◆ ksp_

KSP chi_diffusion::Solver::ksp_ = nullptr

Definition at line 63 of file diffusion_solver.h.

◆ local_dof_count_

size_t chi_diffusion::Solver::local_dof_count_ = 0

Definition at line 69 of file diffusion_solver.h.

◆ material_mode_

int chi_diffusion::Solver::material_mode_ = DIFFUSION_MATERIALS_REGULAR

Definition at line 56 of file diffusion_solver.h.

◆ norm_

PetscReal chi_diffusion::Solver::norm_ = 0.0

Definition at line 66 of file diffusion_solver.h.

◆ options_string_

std::string chi_diffusion::Solver::options_string_

Definition at line 76 of file diffusion_solver.h.

◆ pc_

PC chi_diffusion::Solver::pc_ = nullptr

Definition at line 64 of file diffusion_solver.h.

◆ pwld_phi_local_

std::vector<double> chi_diffusion::Solver::pwld_phi_local_

Definition at line 72 of file diffusion_solver.h.

◆ t_assembly_

chi::Timer chi_diffusion::Solver::t_assembly_
private

Definition at line 35 of file diffusion_solver.h.

◆ t_solve_

chi::Timer chi_diffusion::Solver::t_solve_
private

Definition at line 36 of file diffusion_solver.h.

◆ time_assembly_

double chi_diffusion::Solver::time_assembly_ = 0.0
private

Definition at line 38 of file diffusion_solver.h.

◆ time_solve_

double chi_diffusion::Solver::time_solve_ = 0.0
private

Definition at line 39 of file diffusion_solver.h.

◆ unit_integrals_

std::map<uint64_t, UnitIntegralContainer> chi_diffusion::Solver::unit_integrals_

Definition at line 78 of file diffusion_solver.h.

◆ unknown_manager_

chi_math::UnknownManager chi_diffusion::Solver::unknown_manager_

Definition at line 54 of file diffusion_solver.h.

◆ verbose_info_

bool chi_diffusion::Solver::verbose_info_ = true
private

Definition at line 40 of file diffusion_solver.h.

◆ x_

Vec chi_diffusion::Solver::x_ = nullptr

Definition at line 60 of file diffusion_solver.h.


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