PhotoElectrochemical Cell Simulator
A Finite Element Based Simulator For Water Splitting Solar Cells
Public Member Functions | Private Attributes
Generation< dim > Class Template Reference

Function for macroscopic generation of electrons and holes. More...

#include <Generation.hpp>

Inheritance diagram for Generation< dim >:
Function< dim > FunctionTime< class > Subscriptor

Public Member Functions

 Generation ()
 Default constructor.
 
void set_dark_params ()
 Sets all the parameter values to zero. More...
 
void set_illuminated_params (const ParameterSpace::Parameters &Params)
 Sets the objects scaled values from the parameters.
 
virtual double value (const Point< dim > &p, const unsigned int component=0) const
 Returns the value of the generation function at this points.
 
- Public Member Functions inherited from Function< dim >
 Function (const unsigned int n_components=1, const doubleinitial_time=0.0)
 
virtual Tensor< 1, dim, double > gradient (const Point< dim > &p, const unsigned int component=0) const
 
virtual void gradient_list (const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim, double > > &gradients, const unsigned int component=0) const
 
virtual double laplacian (const Point< dim > &p, const unsigned int component=0) const
 
virtual void laplacian_list (const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
 
std::size_t memory_consumption () const
 
Functionoperator= (const Function &f)
 
virtual void value_list (const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
 
virtual void vector_gradient (const Point< dim > &p, std::vector< Tensor< 1, dim, double > > &gradients) const
 
virtual void vector_gradient_list (const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim, double > > > &gradients) const
 
virtual void vector_gradients (const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim, double > > > &gradients) const
 
virtual void vector_laplacian (const Point< dim > &p, Vector< double > &values) const
 
virtual void vector_laplacian_list (const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
 
virtual void vector_value (const Point< dim > &p, Vector< double > &values) const
 
virtual void vector_value_list (const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
 
virtual void vector_values (const std::vector< Point< dim > > &points, std::vector< std::vector< double > > &values) const
 
- Public Member Functions inherited from FunctionTime< class >
 FunctionTime (const Number initial_time=Number(0.0))
 
virtual void advance_time (const Number delta_t)
 
Number get_time () const
 
virtual void set_time (const Number new_time)
 
- Public Member Functions inherited from Subscriptor
 Subscriptor (const Subscriptor &)
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier <"<< arg2<< "> subscribes to this object of class "<< arg1<< ". Consequently, it cannot be unsubscribed.")
 
 DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects."<< "\n\n"<< "(Additional information: "<< arg3<< ")\n\n"<< "See the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "a lot more information on what this error means and "<< "how to fix programs in which it happens.")
 
void list_subscribers () const
 
unsigned int n_subscriptions () const
 
Subscriptoroperator= (const Subscriptor &)
 
void serialize (Archive &ar, const unsigned int version)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 

Private Attributes

double scaled_absorption_coeff
 The scaled absorption coefficent.
 
double scaled_incident_location
 The scaled incident location.
 
double scaled_photon_flux
 The scaled photon flux.
 

Additional Inherited Members

- Data Fields inherited from Function< dim >
const unsigned int n_components
 
- Static Public Attributes inherited from Function< dim >
static const unsigned int dimension
 

Detailed Description

template<int dim>
class Generation< dim >

Function for macroscopic generation of electrons and holes.

The generation of electrons and holes is modeled as,

\[ \begin{equation} G(\textbf{x}) \; = \; \left\{ \begin{array}{lr} \alpha (\textbf{x}) \, G_{0} \, e^{- \, \int_{0}^{s} \, \alpha (\, \textbf{x}_{0} \, + \, s' \, \boldsymbol \theta_{0} \, ) \, ds'} \qquad & \qquad \text{if} \quad \textbf{x} \; = \; \textbf{x}_{0} \, + \, s \, \boldsymbol \theta_{0} \\ 0 \qquad & \qquad \text{otherwise} \end{array} \right. \end{equation} \]

The point \(\textbf{x}_{0}\) is the photon's incident location and \(\boldsymbol \theta_{0}\) is the incident direction. The absorption coefficient \(\alpha(\textbf{x}) \) has been averaged over all energy values of light that generate free carriers. The term \(G(\textbf{x}_{0}) \; [ \, \text{cm}^{-2} \, \text{s}^{-1} \, ]\) represents the surface photon flux at the point \(\textbf{x}_{0}\).

Note
The incident direction is always downward in the y-direction for now, so the incident location will always be the the top of the domain.

Member Function Documentation

template<int dim>
void Generation< dim >::set_dark_params ( )

Sets all the parameter values to zero.

This sets all the parameter values to zero so that when you call, this objects value at a point it will always return 0.


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