Hex  1.0
Hydrogen-electron collision solver
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Data Structures | Macros | Functions | Variables
variables.h File Reference
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <sqlitepp/sqlitepp.hpp>
#include "arrays.h"
#include "hex-db.h"
#include "vec3d.h"
Include dependency graph for variables.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  Variable
 Base class for scatering variables. More...
 
class  VariableList
 List of variables. More...
 

Macros

#define AddNewVariableClass(ClassName)
 Create class for a given variable name. More...
 

Functions

double change_units (eUnit A, eUnit B)
 Energy units change. More...
 
double change_units (lUnit A, lUnit B)
 Lengths units change. More...
 
double change_units (aUnit A, aUnit B)
 Angular units change. More...
 
std::string unit_name (eUnit u)
 Energy unit name. More...
 
std::string unit_name (lUnit u)
 Length unit name. More...
 
std::string unit_name (aUnit u)
 Length unit name. More...
 
std::ostream & operator<< (std::ostream &os, std::pair< vec3d, vec3d > const &p)
 
std::istream & operator>> (std::istream &is, std::pair< vec3d, vec3d > &p)
 
template<typename T >
std::vector< T > readStandardInput ()
 
template<typename T >
As (std::map< std::string, std::string > const &dict, std::string const &keyword, std::string const &name)
 Convert dictionary entry to a numeric type. More...
 
 AddNewVariableClass (TMatrix)
 Create class for T-matrix (tmat) More...
 
 AddNewVariableClass (ScatteringAmplitude)
 Create class for scattering amplitude (scatamp) More...
 
 AddNewVariableClass (DifferentialCrossSection)
 Create class for differential cross section (dcs) More...
 
 AddNewVariableClass (IntegralCrossSection)
 Create class for integral cross section (ics) More...
 
 AddNewVariableClass (CompleteCrossSection)
 Create class for complete cross section (ccs) More...
 
 AddNewVariableClass (ExtrapolatedCrossSection)
 Create class for extrapolated cross section (xcs) More...
 
 AddNewVariableClass (CollisionStrength)
 Create class for collision strength (colls) More...
 
 AddNewVariableClass (MomentumTransfer)
 Create class for momentum transfer (momtf) More...
 
 AddNewVariableClass (TotalCrossSection)
 Create class for total cross section (tcs) More...
 
 AddNewVariableClass (IonizationF)
 Create class for ionization amplitude radial part (ionf) More...
 
 AddNewVariableClass (BornFullTMatrix)
 Create class for the angle dependent full second Born T-matrix (bornf) More...
 
 AddNewVariableClass (IonizationAmplitude)
 Create class for ionization amplitude (ionamp) More...
 
 AddNewVariableClass (TripleDifferentialCrossSection)
 Triple ionization differential cross section (tdcs). More...
 
 AddNewVariableClass (StokesParameters)
 Create class for stokes parameters (stokes) More...
 
 AddNewVariableClass (SpinAsymmetry)
 Create class for spin asymmetry (asy) More...
 

Variables

VariableList vlist
 forward declaration of the variable list "vlist" More...
 

Macro Definition Documentation

#define AddNewVariableClass (   ClassName)
Value:
class ClassName : public Variable \
{ \
public: \
\
bool initialize (sqlitepp::session & db) const; \
\
static const std::string Id; \
std::string const & id () const { return Id; } \
\
static const std::string Description; \
std::string const & description () const { return Description; } \
\
static const std::vector<std::string> Dependencies; \
std::vector<std::string> const & deps () const { return Dependencies; } \
\
static const std::vector<std::string> VecDependencies; \
std::vector<std::string> const & vdeps () const { return VecDependencies; } \
\
std::vector<std::string> const & SQL_CreateTable () const; \
std::vector<std::string> const & SQL_Update () const; \
\
bool run \
( \
sqlitepp::session & db, \
std::map<std::string,std::string> const & params \
) const; \
};
virtual std::vector< std::string > const & vdeps() const =0
List of vectorizable scattering event parameters that have to be specified by user.
virtual std::vector< std::string > const & SQL_Update() const =0
SQL statements that update the table after insetion of new data.
Base class for scatering variables.
Definition: variables.h:146
sqlitepp::session db
Definition: hex-db.cpp:31
int run(std::vector< std::string > const &vars, std::map< std::string, std::string > const &sdata)
Definition: hex-db.cpp:323
virtual std::vector< std::string > const & SQL_CreateTable() const =0
SQL statements that create the required table, or empty vector if not needed.
virtual bool initialize(sqlitepp::session &db) const =0
initialize (e.g.) by defining external routines for SQLite
virtual std::string const & id() const =0
String identification of the variable.
virtual std::string const & description() const =0
Longer description text for use in program help.
virtual std::vector< std::string > const & deps() const =0
List of all scattering event parameters that have to be specified by user.

Creates class declaration so that only definition of the unique members is necessary. This method allows easy addition of new scattering variables; one just needs to add the line

* AddNewVariableClass(NewVariableClassName);
*

at the end of "variables.h", add a line

* new NewVariableClassName,
*

among others into the constructor of VariableList in "variables.cpp" and implement the methods in a new CPP file, which is then linked to the program. It is not necessary to write a custom header which needs to be included by every other source file.

Function Documentation

AddNewVariableClass ( TMatrix  )
AddNewVariableClass ( ScatteringAmplitude  )
AddNewVariableClass ( DifferentialCrossSection  )
AddNewVariableClass ( IntegralCrossSection  )
AddNewVariableClass ( CompleteCrossSection  )
AddNewVariableClass ( ExtrapolatedCrossSection  )
AddNewVariableClass ( CollisionStrength  )
AddNewVariableClass ( MomentumTransfer  )
AddNewVariableClass ( TotalCrossSection  )
AddNewVariableClass ( IonizationF  )
AddNewVariableClass ( BornFullTMatrix  )
AddNewVariableClass ( IonizationAmplitude  )
AddNewVariableClass ( TripleDifferentialCrossSection  )
AddNewVariableClass ( StokesParameters  )
AddNewVariableClass ( SpinAsymmetry  )
template<typename T >
T As ( std::map< std::string, std::string > const &  dict,
std::string const &  keyword,
std::string const &  name 
)

Being given a dictionary (= string-string map) and a keyword, the function finds a correct entry and returns its value converted to the template datatype.

Parameters
dictDictionary to search in.
keywordEntry to look for.
nameIdentification of the calling authority for use in error message if the entry is not find.
double change_units ( eUnit  A,
eUnit  B 
)

Returns factor that can be used to transform from the unit system A to the unit system B.

double change_units ( lUnit  A,
lUnit  B 
)

Returns factor that can be used to transform from the unit system A to the unit system B.

double change_units ( aUnit  A,
aUnit  B 
)

Returns factor that can be used to transform from the unit system A to the unit system B.

std::ostream& operator<< ( std::ostream &  os,
std::pair< vec3d, vec3d > const &  p 
)
inline

Write out std::pair.

std::istream& operator>> ( std::istream &  is,
std::pair< vec3d, vec3d > &  p 
)
inline

Read in std::pair.

template<typename T >
std::vector<T> readStandardInput ( )

Read data from standard input.

std::string unit_name ( eUnit  u)

Return energy unit name as string.

std::string unit_name ( lUnit  u)

Return length unit name as string.

std::string unit_name ( aUnit  u)

Return length unit name as string.

Variable Documentation

VariableList vlist