18 #include "HPhiTrans.h" 20 #include "wrapperMPI.h" 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]);
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);
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;
char * cErrTransfer
Error Message in HPhiTrans.c.
int TransferWithPeierls(struct BindStruct *X, const double time)
Function of getting transfer with peierls.
int childfopenMPI(const char *_cPathChild, const char *_cmode, FILE **_fp)
Only the root process open file in output/ directory.
char * cErrDoubleCounting
int TransferForQuench(struct BindStruct *X, const double time)
Function of getting transfer for quench.
const char * cFileNameWarningOnTransfer
int HPhiTrans(struct BindStruct *X)
Function of checking transfers not to count the same type of operators. .