Chi-Tech
dfem_diffusion::Solver Class Reference

#include <dfem_diffusion_solver.h>

Inheritance diagram for dfem_diffusion::Solver:
chi_physics::Solver ChiObject

Public Types

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

Public Member Functions

 Solver (const std::string &in_solver_name)
 
 ~Solver () override
 
void Initialize () override
 
void Execute () 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)
 
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 double CallLua_iXYZFunction (lua_State *L, const std::string &, int, const chi_mesh::Vector3 &)
 
- 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

chi_mesh::MeshContinuumPtr grid_ptr_ = nullptr
 
chi_math::SDMPtr sdm_ptr_ = nullptr
 
size_t num_local_dofs_ = 0
 
size_t num_globl_dofs_ = 0
 
std::vector< double > field_
 
Vec x_ = nullptr
 
Vec b_ = nullptr
 
Mat A_ = nullptr
 
BoundaryPreferences boundary_preferences_
 
std::map< uint64_t, Boundaryboundaries_
 

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

DFEM diffusion solver

Definition at line 34 of file dfem_diffusion_solver.h.

Member Typedef Documentation

◆ BoundaryInfo

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

Definition at line 50 of file dfem_diffusion_solver.h.

◆ BoundaryPreferences

Definition at line 51 of file dfem_diffusion_solver.h.

Constructor & Destructor Documentation

◆ Solver()

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

Definition at line 19 of file dfem_diffusion_solver.cc.

◆ ~Solver()

dfem_diffusion::Solver::~Solver ( )
overridevirtual

Reimplemented from chi_physics::Solver.

Definition at line 25 of file dfem_diffusion_solver.cc.

Member Function Documentation

◆ CallLua_iXYZFunction()

double dfem_diffusion::Solver::CallLua_iXYZFunction ( lua_State *  L,
const std::string &  lua_func_name,
int  imat,
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.
imatThe material ID of the cell
xyzThe xyz coordinates of the point where the function is called.
Returns
The function evaluation.

Definition at line 130 of file dfem_diffusion_utils.cc.

◆ Execute()

void dfem_diffusion::Solver::Execute ( )
overridevirtual

Reimplemented from chi_physics::Solver.

Definition at line 175 of file dfem_diffusion_solver.cc.

◆ HPerpendicular()

double dfem_diffusion::Solver::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 dfem_diffusion_utils.cc.

◆ Initialize()

void dfem_diffusion::Solver::Initialize ( )
overridevirtual

Reimplemented from chi_physics::Solver.

Definition at line 33 of file dfem_diffusion_solver.cc.

◆ MapFaceNodeDisc()

int dfem_diffusion::Solver::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 92 of file dfem_diffusion_utils.cc.

◆ UpdateFieldFunctions()

void dfem_diffusion::Solver::UpdateFieldFunctions ( )

Updates the field functions with the latest data.

Definition at line 171 of file dfem_diffusion_utils.cc.

Field Documentation

◆ A_

Mat dfem_diffusion::Solver::A_ = nullptr

Definition at line 48 of file dfem_diffusion_solver.h.

◆ b_

Vec dfem_diffusion::Solver::b_ = nullptr

Definition at line 47 of file dfem_diffusion_solver.h.

◆ boundaries_

std::map<uint64_t, Boundary> dfem_diffusion::Solver::boundaries_

Definition at line 53 of file dfem_diffusion_solver.h.

◆ boundary_preferences_

BoundaryPreferences dfem_diffusion::Solver::boundary_preferences_

Definition at line 52 of file dfem_diffusion_solver.h.

◆ field_

std::vector<double> dfem_diffusion::Solver::field_

Definition at line 44 of file dfem_diffusion_solver.h.

◆ grid_ptr_

chi_mesh::MeshContinuumPtr dfem_diffusion::Solver::grid_ptr_ = nullptr

Definition at line 37 of file dfem_diffusion_solver.h.

◆ num_globl_dofs_

size_t dfem_diffusion::Solver::num_globl_dofs_ = 0

Definition at line 42 of file dfem_diffusion_solver.h.

◆ num_local_dofs_

size_t dfem_diffusion::Solver::num_local_dofs_ = 0

Definition at line 41 of file dfem_diffusion_solver.h.

◆ sdm_ptr_

chi_math::SDMPtr dfem_diffusion::Solver::sdm_ptr_ = nullptr

Definition at line 39 of file dfem_diffusion_solver.h.

◆ x_

Vec dfem_diffusion::Solver::x_ = nullptr

Definition at line 46 of file dfem_diffusion_solver.h.


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