ATC version 2.0, date: Aug7
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10561 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
73
lib/atc/ElectronDragPower.h
Normal file
73
lib/atc/ElectronDragPower.h
Normal file
@ -0,0 +1,73 @@
|
||||
#ifndef ELECTRON_DRAG_POWER_H
|
||||
#define ELECTRON_DRAG_POWER_H
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
using std::map;
|
||||
using std::string;
|
||||
|
||||
#include "Material.h"
|
||||
#include "ATC_TypeDefs.h"
|
||||
|
||||
namespace ATC {
|
||||
|
||||
/**
|
||||
* @class ElectronDragPower
|
||||
* @brief Base class for defining the lattice drag power from electrons
|
||||
*/
|
||||
|
||||
class ElectronDragPower
|
||||
{
|
||||
public:
|
||||
ElectronDragPower() {};
|
||||
virtual ~ElectronDragPower() {};
|
||||
/** computes drag power */
|
||||
virtual bool electron_drag_power(const FIELD_MATS &fields,
|
||||
const GRAD_FIELD_MATS &gradFields,
|
||||
DENS_MAT & flux)
|
||||
{
|
||||
return false;
|
||||
};
|
||||
virtual void electron_drag_velocity_coefficient(const FIELD_MATS &fields,
|
||||
DENS_MAT & dragCoef)
|
||||
{
|
||||
FIELD_MATS::const_iterator t_field = fields.find(TEMPERATURE);
|
||||
dragCoef.reset((t_field->second).nRows(),1); // zero out matrix, resize if necessary
|
||||
};
|
||||
};
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @class ElectronDragPowerLinear
|
||||
* @brief Class for electron drag that linearly depends on the difference between the electron and lattice velocities
|
||||
*/
|
||||
|
||||
class ElectronDragPowerLinear : public ElectronDragPower
|
||||
{
|
||||
public:
|
||||
ElectronDragPowerLinear(fstream &matfile,
|
||||
map<string,double> & parameters,
|
||||
Material * material_);
|
||||
virtual ~ElectronDragPowerLinear() {};
|
||||
virtual bool electron_drag_power(const FIELD_MATS &fields,
|
||||
const GRAD_FIELD_MATS &gradFields,
|
||||
DENS_MAT & flux);
|
||||
virtual void electron_drag_velocity_coefficient(const FIELD_MATS &fields,
|
||||
DENS_MAT & dragCoef);
|
||||
|
||||
protected:
|
||||
|
||||
double electronDragInvTau_;
|
||||
Material * material_;
|
||||
|
||||
// used to avoid unnecessary resizing
|
||||
DENS_MAT dragCoefWorkspace_;
|
||||
DENS_MAT invEffMassWorkspace_;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user