Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef QCAD_POISSONNEUMANN_HPP
00008 #define QCAD_POISSONNEUMANN_HPP
00009
00010 #include "Phalanx_ConfigDefs.hpp"
00011 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00012 #include "Phalanx_Evaluator_Derived.hpp"
00013 #include "Phalanx_MDField.hpp"
00014
00015 #include "Teuchos_ParameterList.hpp"
00016 #include "Epetra_Vector.h"
00017
00018 #include "Sacado_ParameterAccessor.hpp"
00019 #include "PHAL_AlbanyTraits.hpp"
00020 #include "PHAL_Neumann.hpp"
00021
00022 #include "QCAD_MaterialDatabase.hpp"
00023
00024 namespace QCAD {
00025
00029 template<typename EvalT, typename Traits>
00030 class PoissonNeumann
00031 : public PHAL::Neumann<EvalT, Traits> {
00032
00033 public:
00034 typedef typename EvalT::ScalarT ScalarT;
00035
00036 PoissonNeumann(Teuchos::ParameterList& p);
00037 void evaluateFields(typename Traits::EvalData d);
00038 virtual ScalarT& getValue(const std::string &n);
00039
00040 protected:
00041
00043 ScalarT inverseFDIntOneHalf(const ScalarT x);
00044
00046 ScalarT potentialForMBComplIon(const ScalarT &Nc, const ScalarT &Nv,
00047 const ScalarT &Eg, const double &Chi,
00048 const std::string &dopType, const double &dopingConc);
00049
00051 ScalarT potentialForMBIncomplIon(const ScalarT &Nc, const ScalarT &Nv,
00052 const ScalarT &Eg, const double &Chi,
00053 const std::string &dopType, const double &dopingConc, const double &dopantActE);
00054
00056 ScalarT potentialForFDComplIon(const ScalarT &Nc, const ScalarT &Nv,
00057 const ScalarT &Eg, const double &Chi,
00058 const std::string &dopType, const double &dopingConc);
00059
00061 ScalarT potentialForZeroKFDComplIon(const ScalarT &Nc, const ScalarT &Nv,
00062 const ScalarT &Eg, const double &Chi,
00063 const std::string &dopType, const double &dopingConc);
00064
00065
00066 private:
00067 ScalarT user_value;
00068
00069 std::string material;
00070 std::string ebName;
00071 std::string carrierStatistics;
00072 std::string incompIonization;
00073
00074 double dopingDonor;
00075 double dopingAcceptor;
00076 double donorActE;
00077 double acceptorActE;
00078
00079 ScalarT temperature;
00080
00081
00082 ScalarT kbT;
00083 ScalarT V0;
00084 ScalarT qPhiRef;
00085
00086 double energy_unit_in_eV;
00087
00089 Teuchos::RCP<QCAD::MaterialDatabase> materialDB;
00090 };
00091
00092 }
00093
00094 #endif