Pyxaid2
 All Classes
InputStructure.h
1 /***********************************************************
2  * Copyright (C) 2017 Wei Li and Alexey V. Akimov
3  * Copyright (C) 2013-2016 Alexey V. Akimov
4  * This file is distributed under the terms of the
5  * GNU General Public License as published by the
6  * Free Software Foundation; either version 3 of the
7  * License, or (at your option) any later version.
8  * http://www.gnu.org/copyleft/gpl.txt
9 ***********************************************************/
10 
11 #ifndef InputStructure_H
12 #define InputStructure_H
13 
14 #include <string>
15 #include <boost/python.hpp>
16 using namespace boost::python;
17 using namespace std;
18 
20 
21  void init();
22  void echo();
23  void set_default();
24  void error(std::string);
25  void warning(std::string,std::string);
26  void sanity_check();
27 
28 public:
29  std::string Ham_re_prefix; int is_Ham_re_prefix;
30  std::string Ham_re_suffix; int is_Ham_re_suffix;
31  std::string Ham_im_prefix; int is_Ham_im_prefix;
32  std::string Ham_im_suffix; int is_Ham_im_suffix;
33 
34  std::string Haa_re_prefix; int is_Haa_re_prefix;
35  std::string Haa_re_suffix; int is_Haa_re_suffix;
36  std::string Haa_im_prefix; int is_Haa_im_prefix;
37  std::string Haa_im_suffix; int is_Haa_im_suffix;
38 
39  std::string Hab_re_prefix; int is_Hab_re_prefix;
40  std::string Hab_re_suffix; int is_Hab_re_suffix;
41  std::string Hab_im_prefix; int is_Hab_im_prefix;
42  std::string Hab_im_suffix; int is_Hab_im_suffix;
43 
44  std::string Hbb_re_prefix; int is_Hbb_re_prefix;
45  std::string Hbb_re_suffix; int is_Hbb_re_suffix;
46  std::string Hbb_im_prefix; int is_Hbb_im_prefix;
47  std::string Hbb_im_suffix; int is_Hbb_im_suffix;
48 
49  // only real components are non-zero, so below files are for _re
50  std::string Hprime_x_prefix; int is_Hprime_x_prefix;
51  std::string Hprime_y_prefix; int is_Hprime_y_prefix;
52  std::string Hprime_z_prefix; int is_Hprime_z_prefix;
53  std::string Hprime_x_suffix; int is_Hprime_x_suffix;
54  std::string Hprime_y_suffix; int is_Hprime_y_suffix;
55  std::string Hprime_z_suffix; int is_Hprime_z_suffix;
56 
57 // std::string energy_prefix; int is_energy_prefix;
58 // std::string energy_suffix; int is_energy_suffix;
59  std::string energy_units; int is_energy_units;
60 // std::string nac_re_prefix; int is_nac_re_prefix;
61 // std::string nac_re_suffix; int is_nac_re_suffix;
62 // std::string nac_im_prefix; int is_nac_im_prefix;
63 // std::string nac_im_suffix; int is_nac_im_suffix;
64 // std::string overlap_re_prefix; int is_overlap_re_prefix;
65 // std::string overlap_re_suffix; int is_overlap_re_suffix;
66  std::string energy_in_one_file; int is_energy_in_one_file;
67  std::string scratch_dir; int is_scratch_dir;
68 
69  std::string read_couplings; int is_read_couplings;
70  std::string read_overlaps; int is_read_overlaps;
71 // int many_electron_algorithm; int is_many_electron_algorithm;
72  int integrator; int is_integrator; // choose integration algorithm
73  double nucl_dt; int is_nucl_dt; // nuclear time step in fs
74  double elec_dt; int is_elec_dt; // electronic time step in fs
75  int namdtime; int is_namdtime;
76  int sh_algo; int is_sh_algo; // surface hopping algorithm: 0 = FSSH, 1 = GFSH, 2 = MSSH
77  int num_sh_traj; int is_num_sh_traj;
78  int boltz_flag; int is_boltz_flag;
79  double Temp; int is_Temp; // Temperature
80  int debug_flag; int is_debug_flag;
81  std::string runtype; int is_runtype;
82  int alp_bet; int is_alp_bet; // coupling between alpha and beta chanels, 1 - yes, 0 - no
83  int decoherence; int is_decoherence; // choose the decoherence method to use; 0 - no decoherence
84  int regress_mode; int is_regress_mode; // regression mode used during dephasing times calculations
85  int td_pop; int is_td_pop; // whether to output time-dependent population Ci^*Cj, 1 - yes, 0 - no
86  // the diagonal elements are the state population, the off diagonal elements are the coherences
87  // it is basically a N*N complex matrix, with N is the number of desired SDs
88  // the outputs contain the population (real of imag parts) at every time for
89  // different initial condition
90 
91  // Electromagnetic field
92  int is_field; int is_is_field; // flag to include explicit field
93  std::string field_dir; int is_field_dir; // direction of the field
94  int field_protocol; int is_field_protocol; // way the photoexcitation is prepared
95  double field_Tm; int is_field_Tm; // middle of the excitation period
96  double field_T; int is_field_T; // excitation period (e.g. duration of the laser pulse)
97  double field_freq; int is_field_freq; // field frequency
98  std::string field_freq_units; int is_field_freq_units; // units of the excitation frequency
99  double field_fluence; int is_field_fluence; // fluence of the field in mJ/cm^2
100 
101 
102  // Constructor
103  InputStructure(boost::python::dict);
104 
105 };
106 
107 
108 #endif // InputStructure_H
109 
Definition: InputStructure.h:19