Implementation of TDHF electron dynamics, explicitly propagating the electron density in time in the precence of a time-dependent electric field. More...
#include <cstring>
#include "tdhf_dynamics.h"
#include "scf_utils.h"
#include "output.h"
#include "pi.h"
#include "integral_matrix_wrappers.h"
#include "integrals_2el_explicit.h"
Classes | |
struct | ComplexMatrix |
Functions | |
static void | get_Fock_matrix_in_ort_basis (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, normalMatrix &F_ort, const normalMatrix &D_ort, const triangMatrix &invCholFactor, const symmMatrix &H_core_Matrix, const mat::SizesAndBlocks &size_block_info, const symmMatrix &refFockMatrix, std::vector< int > const &permutationHML, std::vector< int > const &inversePermutationHML, bool realPart) |
static void | compute_exp_of_matrix (ComplexMatrix &U, const ComplexMatrix &X, mat::SizesAndBlocks size_block_info, int n, std::vector< int > const &inversePermutationHML) |
static void | compute_U_X_Udagger (ComplexMatrix &result, const ComplexMatrix &U, const ComplexMatrix &X, mat::SizesAndBlocks size_block_info) |
static void | get_curr_electric_field (ergo_real *electricField, ergo_real t) |
static ergo_real | vectorLength (ergo_real x, ergo_real y, ergo_real z) |
void | do_tdhf_dynamics (const BasisInfoStruct &basisInfo, const IntegralInfo &integralInfo, const Molecule &molecule, const Molecule &extraCharges, const SCF::MatOptions &matOpts, const JK::ExchWeights &CAM_params, const JK::Params &J_K_params, const symmMatrix &FockMatrix, const symmMatrix &densityMatrix, const symmMatrix &S_symm, const triangMatrix &invCholFactor, const ED::Params ¶ms) |
Implementation of TDHF electron dynamics, explicitly propagating the electron density in time in the precence of a time-dependent electric field.
This implementation was done to reproduce the results in the article by Li et al: Phys. Chem. Chem. Phys., 2005, 7, 233–239.
DOI link for that article: http://dx.doi.org/10.1039/B415849K
static void compute_exp_of_matrix | ( | ComplexMatrix & | U, | |
const ComplexMatrix & | X, | |||
mat::SizesAndBlocks | size_block_info, | |||
int | n, | |||
std::vector< int > const & | inversePermutationHML | |||
) | [static] |
References ComplexMatrix::add(), ComplexMatrix::copy(), ComplexMatrix::im, ComplexMatrix::initialize(), LOG_AREA_ED, Util::TimeMeter::print(), ComplexMatrix::product(), and ComplexMatrix::re.
Referenced by do_tdhf_dynamics().
static void compute_U_X_Udagger | ( | ComplexMatrix & | result, | |
const ComplexMatrix & | U, | |||
const ComplexMatrix & | X, | |||
mat::SizesAndBlocks | size_block_info | |||
) | [static] |
References ComplexMatrix::do_conjugate(), ComplexMatrix::initialize(), and ComplexMatrix::product().
Referenced by do_tdhf_dynamics().
void do_tdhf_dynamics | ( | const BasisInfoStruct & | basisInfo, | |
const IntegralInfo & | integralInfo, | |||
const Molecule & | molecule, | |||
const Molecule & | extraCharges, | |||
const SCF::MatOptions & | matOpts, | |||
const JK::ExchWeights & | CAM_params, | |||
const JK::Params & | J_K_params, | |||
const symmMatrix & | FockMatrix, | |||
const symmMatrix & | densityMatrix, | |||
const symmMatrix & | S_symm, | |||
const triangMatrix & | invCholFactor, | |||
const ED::Params & | params | |||
) |
References Atom::charge, compute_exp_of_matrix(), compute_h_core_matrix_sparse(), compute_operator_matrix_sparse_symm(), compute_U_X_Udagger(), Atom::coords, ComplexMatrix::copy(), do_output(), get_curr_electric_field(), get_Fock_matrix_in_ort_basis(), Molecule::getAtom(), Molecule::getNoOfAtoms(), ComplexMatrix::im, ComplexMatrix::initialize(), SCF::MatOptions::inversePermutationHML, LOG_AREA_ED, LOG_CAT_ERROR, LOG_CAT_INFO, ED::Params::max_time, BasisInfoStruct::noOfBasisFuncs, SCF::MatOptions::permutationHML, Util::TimeMeter::print(), ComplexMatrix::re, ComplexMatrix::rescale_im(), SCF::MatOptions::size_block_info, template_blas_fabs(), ED::Params::timestep, mat::transpose(), and vectorLength().
Referenced by es_run().
References pi, and template_blas_sin().
Referenced by do_tdhf_dynamics().
static void get_Fock_matrix_in_ort_basis | ( | const BasisInfoStruct & | basisInfo, | |
const IntegralInfo & | integralInfo, | |||
const JK::ExchWeights & | CAM_params, | |||
const JK::Params & | J_K_params, | |||
normalMatrix & | F_ort, | |||
const normalMatrix & | D_ort, | |||
const triangMatrix & | invCholFactor, | |||
const symmMatrix & | H_core_Matrix, | |||
const mat::SizesAndBlocks & | size_block_info, | |||
const symmMatrix & | refFockMatrix, | |||
std::vector< int > const & | permutationHML, | |||
std::vector< int > const & | inversePermutationHML, | |||
bool | realPart | |||
) | [static] |
References compute_J_by_boxes_sparse(), compute_K_by_boxes_sparse_nosymm(), do_output(), LOG_AREA_ED, LOG_CAT_INFO, Util::TimeMeter::print(), and mat::transpose().
Referenced by do_tdhf_dynamics().
References template_blas_sqrt().
Referenced by do_tdhf_dynamics().