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);