KIDS  ver-0.0.1
KIDS : Kernel Integrated Dynamics Simulator
Loading...
Searching...
No Matches
nad_utils.h
Go to the documentation of this file.
1
9#ifndef NAD_UTILS_H
10#define NAD_UTILS_H
11
12#include <cmath>
13#include <map>
14
15#include "types.h"
16
17#ifndef GAMMA_WIGNER
18#define GAMMA_WIGNER(_F) ((sqrt((double) (_F) + 1) - 1) / (double) (_F))
19#endif // GAMMA_WIGNER
20
21
22namespace representation {
24const std::map<std::string, _enum> _dict = {
25 {"#dia", diabatic},
26 {"#adia", adiabatic},
27 {"#otf", onthefly},
28 {"#den", density},
29};
30}; // namespace representation
31
32
33int eac_mvc(num_complex* eac, num_real* mvc, int fdim);
34
35int mvc_eac(num_real* mvc, num_complex* eac, int fdim);
36
37int rho_eac(num_complex* rho, num_complex* eac, int fdim);
38
39int samp_mvc_focus(num_real* mvc, int fdim);
40
41int samp_mvc_gauss(num_real* mvc, num_real variance, int fdim);
42
43int samp_mvc_sphere(num_real* mvc, num_real Rc2, int fdim);
44
46 num_complex* H, num_complex* dH, num_complex* ddH, // backups
47 num_complex* S, num_real* L, num_complex* dL, num_complex* ddL, // eigenproblem in representation::adiabatic
48 num_real* T, num_real* E, num_real* dE, num_real* ddE, // eigenproblem in representation::diabatic
49 num_real* V, num_real* dV, num_real* ddV, // original representation::diabatic
50 num_real* nr, num_real* np, num_real* nm, // phase space
51 int rep_type, int level, // flags
52 int rdim, int fdim, // shapes
53 num_real* workr, num_complex* workc, // temperoray array
54 bool refered);
55
56/*
57 [ref]: J Phys Chem Lett. 2020 Oct 1;11(19):8283-8291. doi: 10.1021/acs.jpclett.0c02533.
58 this transform solves eigen solution for (phase corrected) effective Hamiltonian.
59*/
61 num_complex* H, num_complex* rho, // additional variables
62 num_complex* S, num_real* L, num_complex* dL, num_complex* ddL, // eigenproblem in representation::adiabatic
63 num_real* T, num_real* E, num_real* dE, num_real* ddE, // eigenproblem in representation::diabatic
64 num_real* V, num_real* dV, num_real* ddV, // original representation::diabatic
65 num_real* nr, num_real* np, num_real* nm, // phase space
66 int rep_type, int level, // flags
67 int rdim, int fdim, // shapes
68 num_real* workr, num_complex* workc // temperoray array
69);
70
71int solve_Ut(num_complex* U,
72 num_complex* S, num_real* L, // eigen solution in representation::adiabatic
73 num_real* T, num_real* E, // eigen solution in representation::diabatic
74 num_real dtime, // time step
75 int rep_type, // represation
76 int rdim, int fdim, // shapes
77 num_real* workr, num_complex* workc // temperoray array
78);
79
80int update_eac(num_complex* eac, num_complex* U, int rdim, int fdim, num_real* workr, num_complex* workc);
81
82
83// !> evolution of gamma matrix during dt
84int update_rho(num_complex* rho, num_complex* U, int rdim, int fdim, num_real* workr, num_complex* workc);
85
86int update_drho(num_complex* drho, num_complex* rho, num_complex* U, int rdim, int fdim, num_real* workr,
87 num_complex* workc);
88
89#endif // NAD_UTILS_H
int samp_mvc_focus(num_real *mvc, int fdim)
int mvc_eac(num_real *mvc, num_complex *eac, int fdim)
int samp_mvc_gauss(num_real *mvc, num_real variance, int fdim)
int update_rho(num_complex *rho, num_complex *U, int rdim, int fdim, num_real *workr, num_complex *workc)
int solve_Ut(num_complex *U, num_complex *S, num_real *L, num_real *T, num_real *E, num_real dtime, int rep_type, int rdim, int fdim, num_real *workr, num_complex *workc)
int update_eac(num_complex *eac, num_complex *U, int rdim, int fdim, num_real *workr, num_complex *workc)
int samp_mvc_sphere(num_real *mvc, num_real Rc2, int fdim)
int solve_transform(num_complex *H, num_complex *dH, num_complex *ddH, num_complex *S, num_real *L, num_complex *dL, num_complex *ddL, num_real *T, num_real *E, num_real *dE, num_real *ddE, num_real *V, num_real *dV, num_real *ddV, num_real *nr, num_real *np, num_real *nm, int rep_type, int level, int rdim, int fdim, num_real *workr, num_complex *workc, bool refered)
int eac_mvc(num_complex *eac, num_real *mvc, int fdim)
int rho_eac(num_complex *rho, num_complex *eac, int fdim)
int solve_transform_correctphase(num_complex *H, num_complex *rho, num_complex *S, num_real *L, num_complex *dL, num_complex *ddL, num_real *T, num_real *E, num_real *dE, num_real *ddE, num_real *V, num_real *dV, num_real *ddV, num_real *nr, num_real *np, num_real *nm, int rep_type, int level, int rdim, int fdim, num_real *workr, num_complex *workc)
int update_drho(num_complex *drho, num_complex *rho, num_complex *U, int rdim, int fdim, num_real *workr, num_complex *workc)
const std::map< std::string, _enum > _dict
Definition nad_utils.h:24