Check the inputted transfer integrals.
More...
#include "Common.h"
#include "HPhiTrans.h"
#include "FileIO.h"
#include "wrapperMPI.h"
Go to the source code of this file.
Check the inputted transfer integrals.
- Version
- 0.1
- Author
- Takahiro Misawa (The University of Tokyo)
-
Kazuyoshi Yoshimi (The University of Tokyo)
Definition in file HPhiTrans.c.
◆ HPhiTrans()
Function of checking transfers not to count the same type of operators.
.
- Note
- The same type transfer integrals such as \( t^{(1)}_{ij}c_i a_j + t^{(2)}_{ij}c_i a_j \) should be summarized as \( t_{ij} c_i a_j \) before calling this function.
- Parameters
-
X | [in] Struct to get the information of the operators of transfer integrals. |
- Return values
-
0 | normally finished |
-1 | unnormally finished |
- Author
- Takahiro Misawa (The University of Tokyo)
-
Kazuyoshi Yoshimi (The University of Tokyo)
Definition at line 45 of file HPhiTrans.c.
References cErrDoubleCounting, cErrTransfer, cFileNameWarningOnTransfer, childfopenMPI(), D_FileNameMax, and X.
Referenced by main().
61 for (i = 0; i <
X->Def.EDNTransfer; i++) {
63 for (k = 0; k < cnt_trans; k++) {
64 if (
X->Def.EDGeneralTransfer[i][1] ==
X->Def.EDGeneralTransfer[k][1]
65 &&
X->Def.EDGeneralTransfer[i][3] ==
X->Def.EDGeneralTransfer[k][3]) {
66 if (
X->Def.EDGeneralTransfer[i][0] ==
X->Def.EDGeneralTransfer[k][0]
67 &&
X->Def.EDGeneralTransfer[i][2] ==
X->Def.EDGeneralTransfer[k][2]) {
70 fprintf(fp_err,
cErrDoubleCounting,
X->Def.EDGeneralTransfer[k][0],
X->Def.EDGeneralTransfer[k][2],
71 X->Def.EDGeneralTransfer[k][1],
X->Def.EDGeneralTransfer[k][3]);
char * cErrTransfer
Error Message in HPhiTrans.c.
int childfopenMPI(const char *_cPathChild, const char *_cmode, FILE **_fp)
Only the root process open file in output/ directory.
char * cErrDoubleCounting
const char * cFileNameWarningOnTransfer
◆ TransferForQuench()
int TransferForQuench |
( |
struct BindStruct * |
X, |
|
|
const double |
time |
|
) |
| |
Function of getting transfer for quench.
- Note
- Not used now and should be delete in ver.2.1.
- Parameters
-
X | data list for calculation |
time | time |
- Return values
-
0 | normally finished |
-1 | unnormally finished |
- Author
- Kota Ido (The University of Tokyo)
Definition at line 181 of file HPhiTrans.c.
References D_FileNameMax, and X.
191 int isigma1, isigma2;
193 const int Mode = (int) (
X->Def.ParaLaser[0]);
194 const double Avp =
X->Def.ParaLaser[1];
195 const double omega =
X->Def.ParaLaser[2];
196 const double time_d =
X->Def.ParaLaser[3];
197 const double time_c =
X->Def.ParaLaser[4];
198 const int Lx = (int) (
X->Def.ParaLaser[5]);
199 const int Ly = (int) (
X->Def.ParaLaser[6]);
200 const double dirX =
X->Def.ParaLaser[7];
201 const double dirY =
X->Def.ParaLaser[8];
202 const double dt = time - time_c;
210 }
else if (dt < time_d) {
211 Bessel = j0(Avp * dt / time_d);
217 for (i = 0; i <
X->Def.EDNTransfer; i++) {
218 ri_x =
X->Def.EDGeneralTransfer[i][0] % Lx;
219 rj_x =
X->Def.EDGeneralTransfer[i][2] % Lx;
220 ri_y =
X->Def.EDGeneralTransfer[i][0] / Lx;
221 rj_y =
X->Def.EDGeneralTransfer[i][2] / Lx;
222 if (ri_x - rj_x > 1) {
224 }
else if (ri_x - rj_x < -1) {
227 if (ri_y - rj_y > 1) {
229 }
else if (ri_y - rj_y < -1) {
232 dir = dirX * (ri_x - rj_x) + dirY * (ri_y - rj_y);
234 X->Def.EDParaGeneralTransfer[i] =
X->Def.ParaGeneralTransfer[i] * Bessel;
◆ TransferWithPeierls()
int TransferWithPeierls |
( |
struct BindStruct * |
X, |
|
|
const double |
time |
|
) |
| |
Function of getting transfer with peierls.
- Note
- Not used now and should be delete in ver.2.1.
- Parameters
-
X | data list for calculation |
time | time |
- Return values
-
0 | normally finished |
-1 | unnormally finished |
- Author
- Kota Ido (The University of Tokyo)
Definition at line 92 of file HPhiTrans.c.
References D_FileNameMax, and X.
Referenced by CalcByTEM().
102 int isigma1, isigma2;
104 const int Mode = (int) (
X->Def.ParaLaser[0]);
105 const double Avp =
X->Def.ParaLaser[1];
106 const double omega =
X->Def.ParaLaser[2];
107 const double time_d =
X->Def.ParaLaser[3];
108 const double time_c =
X->Def.ParaLaser[4];
109 const int Lx = (int) (
X->Def.ParaLaser[5]);
110 const int Ly = (int) (
X->Def.ParaLaser[6]);
111 const double dirX =
X->Def.ParaLaser[7];
112 const double dirY =
X->Def.ParaLaser[8];
113 const double dt = time - time_c;
114 const double dt2 = time - (time_c + time_d);
115 const double td = time_c / 3.0;
121 VecPot = Avp * cos(omega * dt) * exp(-dt * dt / (2.0 * time_d * time_d));
122 }
else if (Mode == 1) {
123 VecPot = Avp * sin(omega * dt);
124 }
else if (Mode == 2) {
126 }
else if (Mode == 3) {
127 VecPot = Avp * exp(-time_d * dt);
128 }
else if (Mode == 4) {
131 }
else if (dt < time_d) {
132 VecPot = Avp * cos(omega * dt) * (dt / time_d);
134 VecPot = Avp * cos(omega * dt);
136 }
else if (Mode == 5) {
139 }
else if (time < time_c) {
140 VecPot = Avp * cos(omega * dt) * exp(-dt * dt / (2.0 * td * td));
141 }
else if (time < time_c + time_d) {
142 VecPot = Avp * cos(omega * dt);
144 VecPot = Avp * cos(omega * dt) * exp(-dt2 * dt2 / (2.0 * td * td));
148 for (i = 0; i <
X->Def.EDNTransfer; i++) {
149 ri_x =
X->Def.EDGeneralTransfer[i][0] % Lx;
150 rj_x =
X->Def.EDGeneralTransfer[i][2] % Lx;
151 ri_y =
X->Def.EDGeneralTransfer[i][0] / Lx;
152 rj_y =
X->Def.EDGeneralTransfer[i][2] / Lx;
153 if (ri_x - rj_x > 1) {
155 }
else if (ri_x - rj_x < -1) {
158 if (ri_y - rj_y > 1) {
160 }
else if (ri_y - rj_y < -1) {
163 dir = dirX * (ri_x - rj_x) + dirY * (ri_y - rj_y);
165 X->Def.EDParaGeneralTransfer[i] =
X->Def.ParaGeneralTransfer[i] * cexp(-I * VecPot * dir);