1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#ifndef WEAK_EQUATION_SCHRODINGER_H
#define WEAK_EQUATION_SCHRODINGER_H
#include <set>
#include <string>
#include "WeakEquation.h"
namespace ATC{
/**
* @class WeakEquationSchrodinger
* @brief Schrodinger equation
* -hbar^2 /2 1/m^* psi,xx + phi psi = E psi
* (-c*B^T B + phi N^T N) psi = E N^T N psi
*/
class WeakEquationSchrodinger : public WeakEquation {
public:
// constructor
WeakEquationSchrodinger();
// destructor
virtual ~WeakEquationSchrodinger();
/** RHS stiffness matrix */
virtual bool has_BB_tangent_coefficients(void) const {return true;}
virtual void BB_tangent_coefficients(const FieldName field,
const FIELD_MATS & fields,
const Material * material,
DENS_MAT &coefs) const;
virtual bool has_NN_tangent_coefficients(void) const {return true;}
virtual void NN_tangent_coefficients(const FieldName field,
const FIELD_MATS & fields,
const Material * material,
DENS_MAT &coefs) const;
/** necessary interfaces */
virtual std::set<std::string> needs_material_functions(void) const
{
std::set<std::string> needs;
needs.insert("inv_effective_mass");
needs.insert("band_edge_potential");
return needs;
}
};
};
#endif
|