1 #include "f77func.h" 2 #ifdef blaswrap 3 #define zgemm_ f2c_zgemm 4 #define zcopy_ f2c_zcopy 5 #endif 6 7 #ifndef ___dcomplex_definition___ 8 typedef struct { double r,i; } dcomplex; 9 #define ___dcomplex_definition___ 10 #endif 11 12 #define z_mul_inline(x,y,z) { z.r= x.r*y.r-x.i*y.i; z.i = x.r * y.i + x.i*y.r; } 13 #define z_exp_inline(x,z) {double _t; _t=exp(x.r); z.r = _t*cos(x.i); z.i = _t*sin(x.i); } 14 15 #ifndef __sqr_definition___ 16 #define sqr(x) ( (x)*(x) ) 17 #define __sqr_definition___ 18 #endif 19 20 21 #ifndef Host_ID 22 #define Host_ID 0 23 #endif 24 25 26 #ifndef YOUSO10 27 #define YOUSO10 100 28 #endif 29 30 #ifndef Shift_K_Point 31 #define Shift_K_Point 1.0e-6 /* disturbance for stabilization of eigenvalue routine */ 32 #endif 33 34 35 #ifndef ___Type_Orbs_Grid_definition___ 36 typedef float Type_Orbs_Grid; /* type of Orbs_Grid */ 37 #define ___Type_Orbs_Grid_definition___ 38 #endif 39 40 41 int Lapack_LU_Zinverse(int , dcomplex *); 42 43 44 45 /*** TRAN_PROTOTYPES ***/ 46 47 /* TRAN_Allocate.c */ 48 void TRAN_Allocate_Atoms( 49 int atomnum 50 ); 51 52 /* TRAN_Allocate.c */ 53 void TRAN_Deallocate_Atoms( void ); 54 55 /* TRAN_Allocate.c */ 56 void TRAN_Allocate_Cregion( 57 MPI_Comm mpi_comm_level1, 58 int SpinP_switch, 59 int atomnum, 60 int *WhatSpecies, 61 int *Spe_Total_CNO 62 ) ; 63 64 /* TRAN_Allocate.c */ 65 void TRAN_Deallocate_Cregion(int SpinP_switch); 66 67 /* in TRAN_Allocate.c */ 68 void TRAN_Allocate_Lead_Region( MPI_Comm mpi_comm_level1 ); 69 70 /* in TRAN_Allocate.c */ 71 void TRAN_Deallocate_Lead_Region(); 72 73 /* TRAN_Deallocate_Electrode_Grid.c */ 74 void TRAN_Deallocate_Electrode_Grid(int Ngrid2); 75 76 /* TRAN_Deallocate_RestartFile.c */ 77 void TRAN_Deallocate_RestartFile(char *position); 78 79 80 /* TRAN_Apply_Bias2e.c */ 81 void TRAN_Apply_Bias2e( 82 MPI_Comm comm1, 83 int side, 84 double voltage, 85 double TRAN_eV2Hartree, 86 int SpinP_switch, 87 int atomnum, 88 int *WhatSpecies, 89 int *Spe_Total_CNO, 90 int *FNAN, 91 int **natn, 92 int Ngrid1, 93 int Ngrid2, 94 int Ngrid3, 95 double ****OLP, 96 double *ChemP, 97 double *****H, 98 double *dVHart_Grid 99 ); 100 101 /* TRAN_Calc_CentGreen.c */ 102 void TRAN_Calc_CentGreen( 103 dcomplex w, 104 int nc, 105 dcomplex *sigmaL, 106 dcomplex *sigmaR, 107 dcomplex *HCC, 108 dcomplex *SCC, 109 dcomplex *GC 110 ); 111 112 /* TRAN_Calc_CentGreenLesser.c */ 113 void TRAN_Calc_CentGreenLesser( 114 /* input */ 115 dcomplex w, 116 double ChemP_e[2], 117 int nc, 118 int Order_Lead_Side[2], 119 dcomplex *SigmaL, 120 dcomplex *SigmaR, 121 dcomplex *GC, 122 dcomplex *HCCk, 123 dcomplex *SCC, 124 125 /* work, nc*nc */ 126 dcomplex *v1, 127 dcomplex *v2, 128 129 /* output */ 130 dcomplex *Gless 131 ); 132 133 134 /* TRAN_Calc_GridBound.c */ 135 void TRAN_Calc_GridBound(MPI_Comm mpi_comm_level1, 136 int atomnum, 137 int *WhatSpecies, 138 double *Spe_Atom_Cut1, 139 int Ngrid1, 140 double *Grid_Origin, 141 double **Gxyz, 142 double tv[4][4], 143 double gtv[4][4], 144 double rgtv[4][4], 145 double Left_tv[4][4], 146 double Right_tv[4][4]); 147 148 /* TRAN_Calc_OneTransmission.c */ 149 void TRAN_Calc_OneTransmission( 150 int nc, 151 dcomplex *SigmaL_R, /* at w, changed when exit */ 152 dcomplex *SigmaL_A, /* at w, changed when exit */ 153 dcomplex *SigmaR_R, /* at w, changed when exit */ 154 dcomplex *SigmaR_A, /* at w, changed when exit */ 155 dcomplex *GC_R, /* at w, changed when exit */ 156 dcomplex *GC_A, /* at w, changed when exit */ 157 dcomplex *v1, /* work */ 158 dcomplex *v2, /* work */ 159 dcomplex *value /* output, transmission */ 160 ); 161 162 163 /* TRAN_Calc_OneTransmission2.c */ 164 void TRAN_Calc_OneTransmission2( 165 dcomplex w, 166 int nc, 167 dcomplex *SigmaL, /* at w, changed when exit */ 168 dcomplex *SigmaR, /* at w, changed when exit */ 169 double *HCC, 170 double *SCC, 171 dcomplex *GR, /* at w, changed when exit */ 172 dcomplex *v1, /* work */ 173 dcomplex *v2, /* work */ 174 dcomplex *value /* output, transmission */ 175 ); 176 177 178 /* TRAN_Calc_SelfEnergy.c */ 179 void TRAN_Calc_SelfEnergy( 180 dcomplex w, 181 int ne, 182 dcomplex *gr, 183 int nc, 184 dcomplex *hce, 185 dcomplex *sce, 186 dcomplex *sigma 187 ); 188 189 190 /* TRAN_Calc_Hopping_G.c */ 191 void TRAN_Calc_Hopping_G( 192 /* input */ 193 dcomplex w, 194 int ne, /* size of electrode */ 195 int nc, /* size of central region */ 196 dcomplex *gs, /* surface green function of electrode, size=ne*ne */ 197 dcomplex *gc, /* green function of central region, size=nc*nc */ 198 dcomplex *hce, /* e.g., HCL, size=nc*ne */ 199 dcomplex *sce, /* e.g., SCL, size=nc*ne */ 200 201 /* output */ 202 dcomplex *gh /* e.g., GCL_R , size=nc*ne */ 203 ); 204 205 206 /* TRAN_Calc_SurfGreen.c */ 207 void TRAN_Calc_SurfGreen_direct( 208 dcomplex w, 209 int n, 210 dcomplex *h00, 211 dcomplex *h01, 212 dcomplex *s00, 213 dcomplex *s01, 214 int iteration_max, 215 double eps, 216 dcomplex *gr 217 ); 218 219 /* TRAN_Calc_Transmission.c */ 220 double TRAN_Calc_Transmission( 221 int iter, 222 int SpinP_switch, 223 double *****nh, 224 double *****ImNL, 225 double ****CntOLP, 226 int atomnum, 227 int Matomnum, 228 int *WhatSpecies, 229 int *Spe_Total_CNO, 230 int *FNAN, 231 int **natn, 232 int **ncn, 233 int *M2G, 234 int **atv_ijk, 235 int *List_YOUSO 236 ); 237 238 239 /* TRAN_Connect_Read_Density.c */ 240 void TRAN_Connect_Read_Density( 241 char *filename, 242 int SpinP_switch, 243 int Ngrid1, 244 int Ngrid2, 245 int Ngrid3, 246 double *ChemP, 247 double *minE, 248 double *dVHart_Grid, 249 double **Vpot_Grid, 250 double **Density_Grid 251 ); 252 253 /* TRAN_Connect_Read_Hamiltonian.c */ 254 /* *static 255 * void compare_and_print_error(char *buf,char *str,int val1,int val2);*/ 256 /* TRAN_Connect_Read_Hamiltonian.c */ 257 void TRAN_Connect_Read_Hamiltonian( 258 char *filename, 259 int SpinP_switch, 260 int *WhatSpecies, 261 int *FNAN, 262 int **natn, 263 int **ncn, 264 int *Spe_Total_CNO, 265 double *****H, 266 double ****OLP 267 ); 268 269 /* TRAN_Credit.c */ 270 void TRAN_Credit(MPI_Comm comm1); 271 272 /* TRAN_DFT.c */ 273 /* *static 274 * void TRAN_Set_CDM( 275 * MPI_Comm comm1, 276 * int spin, 277 * int Matomnum, 278 * int *M2G, 279 * int *WhatSpecies, 280 * int *Spe_Total_CNO, 281 * int *MP, 282 * int *FNAN, 283 * int**natn, 284 * dcomplex *v, 285 * int NUM_c, 286 * dcomplex w_weight, 287 * int mode, 288 * double *****CDM, 289 * double *****EDM, 290 * double ***TRAN_DecMulP, 291 * double Eele0[2], double Eele1[2], 292 * double ChemP_e0[2] 293 *);*/ 294 /* TRAN_DFT.c */ 295 double TRAN_DFT( 296 MPI_Comm comm1, 297 int SucceedReadingDMfile, 298 int level_stdout, 299 int iter, 300 int SpinP_switch, 301 double *****nh, 302 double *****ImNL, 303 double ****CntOLP, 304 int atomnum, 305 int Matomnum, 306 int *WhatSpecies, 307 int *Spe_Total_CNO, 308 int *FNAN, 309 int **natn, 310 int **ncn, 311 int *M2G, 312 int *G2ID, 313 int *F_G2M, 314 int **atv_ijk, 315 int *List_YOUSO, 316 double *****CDM, 317 double *****EDM, 318 double ***TRAN_DecMulP, 319 double Eele0[2], double Eele1[2], 320 double ChemP_e0[2]); 321 322 /* TRAN_DFT_Dosout.c */ 323 double TRAN_DFT_Dosout( 324 MPI_Comm comm1, 325 int level_stdout, 326 int iter, 327 int SpinP_switch, 328 double *****nh, 329 double *****ImNL, 330 double ****CntOLP, 331 int atomnum, 332 int Matomnum, 333 int *WhatSpecies, 334 int *Spe_Total_CNO, 335 int *FNAN, 336 int **natn, 337 int **ncn, 338 int *M2G, 339 int *G2ID, 340 int **atv_ijk, 341 int *List_YOUSO, 342 int **Spe_Num_CBasis, 343 int SpeciesNum, 344 char *filename, 345 char *filepath, 346 double *****CDM, 347 double *****EDM, 348 double Eele0[2], double Eele1[2]) ; 349 350 /* TRAN_Distribute_Node.c */ 351 void TRAN_Distribute_Node( 352 int Start,int End, 353 int numprocs, 354 int *IDStart, 355 int *IDEnd 356 ); 357 358 /* TRAN_Distribute_Node.c */ 359 void TRAN_Distribute_Node_Idx( 360 int Start,int End, 361 int numprocs, 362 int eachiwmax, 363 int **Idxlist 364 ); 365 366 367 /* TRAN_Input_std.c */ 368 void TRAN_Input_std( 369 MPI_Comm comm1, 370 int Solver, 371 int SpinP_switch, 372 char *filepath, 373 double kBvalue, 374 double TRAN_eV2Hartree, 375 double Electronic_Temperature, 376 int *output_hks 377 ); 378 379 /* TRAN_Input_std_Atoms.c */ 380 void TRAN_Input_std_Atoms( MPI_Comm comm1, int Solver ); 381 382 383 384 /* TRAN_Output_HKS.c */ 385 int TRAN_Output_HKS(char *fileHKS); 386 387 /* TRAN_Output_HKS_Write_Grid.c */ 388 void TRAN_Output_HKS_Write_Grid( 389 MPI_Comm comm1, 390 int mode, 391 int Ngrid1, 392 int Ngrid2, 393 int Ngrid3, 394 double *data, 395 double *data1, 396 double *data2, 397 FILE *fp 398 ); 399 400 /* TRAN_Output_Trans_HS.c */ 401 /* revised by Y. Xiao for Noncollinear NEGF calculations */ /* iHNL is added */ 402 void TRAN_Output_Trans_HS( 403 MPI_Comm comm1, 404 int Solver, 405 int SpinP_switch, 406 double ChemP , 407 double *****H, 408 double *****iHNL, 409 double *****OLP, 410 double *****H0, 411 int atomnum, 412 int SpeciesNum, 413 int *WhatSpecies, 414 int *Spe_Total_CNO, 415 int *FNAN, 416 int **natn, 417 int **ncn, 418 int *G2ID, 419 int **atv_ijk, 420 int Max_FSNAN, 421 double ScaleSize, 422 int *F_G2M, 423 int TCpyCell, 424 int *List_YOUSO, 425 char *filepath, 426 char *filename, 427 char *fname ); 428 /* until here by Y. Xiao for Noncollinear NEGF calculations */ 429 430 /* TRAN_Output_Transmission.c */ 431 void TRAN_Output_Transmission(int SpinP_switch); 432 433 /* TRAN_Add_Density_Lead.c */ 434 void TRAN_Add_Density_Lead( 435 MPI_Comm comm1, 436 int SpinP_switch, 437 int Ngrid1, 438 int Ngrid2, 439 int Ngrid3, 440 int My_NumGridB_AB, 441 double **Density_Grid_B); 442 443 /* TRAN_Add_ADensity_Lead.c */ 444 void TRAN_Add_ADensity_Lead( 445 MPI_Comm comm1, 446 int SpinP_switch, 447 int Ngrid1, 448 int Ngrid2, 449 int Ngrid3, 450 int My_NumGridB_AB, 451 double *ADensity_Grid_B); 452 453 /* TRAN_Poisson.c */ 454 double TRAN_Poisson(double *ReRhok, double *ImRhok); 455 456 /* FFT2D_Density.c */ 457 double FFT2D_Density(int den_flag, 458 double *ReRhok, double *ImRhok); 459 460 /* added by mari 08.12.2014 */ 461 double FFT1D_Density(int den_flag, 462 double *ReRhok, double *ImRhok, 463 dcomplex ***VHart_Boundary_a, 464 dcomplex **VHart_Boundary_b); 465 466 /* Get_Value_inReal2D.c */ 467 void Get_Value_inReal2D(int complex_flag, 468 double *ReVr, double *ImVr, 469 double *ReVk, double *ImVk); 470 /* added by mari 18.12.2014 */ 471 void Get_Value_inReal1D(int complex_flag, 472 double *ReVr, double *ImVr, 473 double *ReVk, double *ImVk); 474 475 /* TRAN_Print.c */ 476 void TRAN_Print2_set_eps(double e1); 477 478 /* TRAN_Print.c */ 479 void TRAN_Print2_set_max(int m1); 480 481 /* TRAN_Print.c */ 482 void TRAN_Print2_dcomplex(char *name, int n1,int n2,dcomplex *gc); 483 484 /* TRAN_Print.c */ 485 void TRAN_Print2_double(char *name, int n1,int n2,double *gc); 486 487 /* TRAN_Print.c */ 488 void TRAN_Print2_dx_dcomplex(char *name, int n1,int dx1, int n2,int dx2, dcomplex *gc); 489 490 /* TRAN_Print.c */ 491 void TRAN_Print2_dx_double(char *name, int n1,int dx1,int n2,int dx2,double *gc); 492 493 /* TRAN_Print.c */ 494 void TRAN_FPrint2_double(char *name, int n1,int n2,double *gc); 495 496 /* TRAN_Print.c */ 497 void TRAN_FPrint2_dcomplex(char *name, int n1,int n2,dcomplex *gc); 498 499 /* TRAN_Print.c */ 500 void TRAN_FPrint2_binary_double(FILE *fp, int n1,int n2,double *gc); 501 502 /* TRAN_Print_Grid.c */ 503 void TRAN_Print_Grid_Cell1( 504 char *filename, 505 int n1, int n2, int n3, 506 int *My_Cell1, 507 double *realgrid 508 ); 509 510 /* TRAN_Print_Grid.c */ 511 void TRAN_Print_Grid_Cell0( 512 char *filename, 513 double origin[4], 514 double gtv[4][4], 515 int Ngrid1, int Ngrid2, int Ngrid3s, int Ngrid3e, 516 double R[4], 517 int *Cell0, 518 double *grid_value 519 ); 520 521 /* TRAN_Print_Grid.c */ 522 void TRAN_Print_Grid( 523 char *filename, 524 double origin[4], 525 double gtv[4][4], 526 int Ngrid1, int Ngrid2, int Ngrid3s, int Ngrid3e, 527 double R[4], 528 double *grid_value 529 ); 530 531 /* TRAN_Print_Grid.c */ 532 void TRAN_Print_Grid_z( 533 char *filename, 534 double origin[4], 535 double gtv[4][4], 536 int Ngrid1, int Ngrid2, int Ngrid3s, int Ngrid3e, 537 double R[4], 538 double *grid_value 539 ); 540 541 /* TRAN_Print_Grid.c */ 542 void TRAN_Print_Grid_c( 543 char *filenamer, 544 char *filenamei, 545 double origin[4], 546 double gtv[4][4], 547 int Ngrid1, int Ngrid2, int Ngrid3s, int Ngrid3e, 548 double R[4], 549 dcomplex *grid_value 550 ); 551 552 /* TRAN_Print_Grid.c */ 553 void TRAN_Print_Grid_v( 554 char *filename, 555 double origin[4], 556 double gtv[4][4], 557 int Ngrid1, int Ngrid2, int Ngrid3s, int Ngrid3e, 558 double R[4], 559 double ***grid_value 560 ); 561 562 /* TRAN_Print_Grid.c */ 563 void TRAN_Print_Grid_Startv( 564 char *filename, 565 int Ngrid1, int Ngrid2, int Ngrid3, 566 int Start, 567 double ***grid_value 568 ); 569 570 /* TRAN_Read.c */ 571 void TRAN_Read_double(char *str, int n1,int n2, double *a); 572 573 /* TRAN_Read.c */ 574 void TRAN_Read_dcomplex(char *str, int n1,int n2, dcomplex *a); 575 576 /* TRAN_Read.c */ 577 void TRAN_FRead2_binary_double(FILE *fp, int n1, int n2, double *gc); 578 579 /* TRAN_RestartFile.c */ 580 int TRAN_Input_HKS( MPI_Comm comm1, char *fileHKS); 581 582 /* TRAN_RestartFile.c */ 583 int TRAN_RestartFile(MPI_Comm comm1, char *mode, char *position,char *filepath, char *filename); 584 585 /* TRAN_Set_CentOverlap.c */ 586 void TRAN_Set_CentOverlap( 587 MPI_Comm comm1, 588 int job, 589 int SpinP_switch, 590 double k2, 591 double k3, 592 int *order_GA, 593 double **H1, 594 double *S1, 595 double *****H, 596 double ****OLP, 597 int atomnum, 598 int Matomnum, 599 int *M2G, 600 int *G2ID, 601 int *WhatSpecies, 602 int *Spe_Total_CNO, 603 int *FNAN, 604 int **natn, 605 int **ncn, 606 int **atv_ijk 607 ); 608 609 /* TRAN_Set_Electrode_Grid.c */ 610 void TRAN_Set_Electrode_Grid(MPI_Comm comm1, 611 int *TRAN_Poisson_flag2, 612 double *Grid_Origin, /* origin of the grid */ 613 double tv[4][4], /* unit vector of the cell*/ 614 double Left_tv[4][4], /* unit vector left */ 615 double Right_tv[4][4], /* unit vector right */ 616 double gtv[4][4], /* unit vector of the grid point, which is gtv*integer */ 617 int Ngrid1, 618 int Ngrid2, 619 int Ngrid3 /* # of c grid points */ 620 ); 621 622 623 /* TRAN_Set_Electrode_Grid.c */ 624 /* *static 625 * void TRAN_FFT_Electrode_Grid(MPI_Comm comm1, int isign);*/ 626 /* TRAN_Set_IntegPath.c */ 627 void TRAN_Set_IntegPath_Square(void); 628 629 /* TRAN_Set_IntegPath.c */ 630 void TRAN_Set_IntegPath_ThermalArc(void); 631 632 /* TRAN_Set_IntegPath.c */ 633 void TRAN_Set_IntegPath( MPI_Comm comm1, 634 double TRAN_eV2Hartree, 635 double kBvalue, double Electronic_Temperature ); 636 637 /* TRAN_Check_Input.c */ 638 void TRAN_Check_Input( MPI_Comm comm1, int Solver ); 639 640 /* TRAN_Set_MP.c */ 641 void TRAN_Set_MP( 642 int job, 643 int atomnum, int *WhatSpecies, int *Spe_Total_CNO, 644 int *NUM, 645 int *MP 646 ); 647 648 /* TRAN_Set_PathEnergyStr.c */ 649 /* *static 650 * void TRAN_error_and_exit( 651 * char *buf 652 *);*/ 653 /* TRAN_Set_PathEnergyStr.c */ 654 void TRAN_Set_PathEnergyStr_Square( 655 int m, 656 char **str, 657 double default_relative_ene[4], 658 double tran_square_path_ene[4], 659 int tran_square_path_ene_fix[4] 660 ); 661 662 663 /* TRAN_Set_SurfOverlap.c */ 664 void TRAN_Set_SurfOverlap( MPI_Comm comm1, char *position, double k2, double k3 ); 665 666 /* TRAN_Set_Value.c */ 667 void TRAN_Set_Value_double(dcomplex *A, int n, double a, double b); 668 669 /* TRAN_adjust_Ngrid.c */ 670 void TRAN_adjust_Ngrid( MPI_Comm comm1, int *Ngrid1,int *Ngrid2, int *Ngrid3); 671 672 673 /* TRAN_Check_Region_Lead.c */ 674 int TRAN_Check_Region_Lead( 675 int atomnum, 676 int *WhatSpecies, 677 double *Spe_Atom_Cut1, 678 double **Gxyz, 679 double tv[4][4] 680 ); 681 682 /* TRAN_Check_Region.c */ 683 int TRAN_Check_Region( 684 int atomnum, 685 int *WhatSpecies, 686 double *Spe_Atom_Cut1, 687 double **Gxyz 688 ); 689 690 /* TRAN_Main_Analysis.c */ 691 void TRAN_Main_Analysis(MPI_Comm comm1, 692 int argc, char *argv[], 693 int Matomnum, int *M2G, 694 int *GridN_Atom, 695 int **GridListAtom, 696 int **CellListAtom, 697 Type_Orbs_Grid ***Orbs_Grid, 698 int TNumGrid); 699 700 /* TRAN_Main_Analysis_NC.c */ 701 void TRAN_Main_Analysis_NC( MPI_Comm comm1, 702 int argc, char *argv[], 703 int Matomnum, int *M2G, 704 int *GridN_Atom, 705 int **GridListAtom, 706 int **CellListAtom, 707 Type_Orbs_Grid ***Orbs_Grid, 708 int TNumGrid ); 709 710 711 712 /* revised by Y. Xiao for Noncollinear NEGF calculations */ 713 double TRAN_DFT_NC( 714 MPI_Comm comm1, 715 int SucceedReadingDMfile, 716 int level_stdout, 717 int iter, 718 int SpinP_switch, 719 double *****nh, 720 double *****ImNL, 721 double ****CntOLP, 722 int atomnum, 723 int Matomnum, 724 int *WhatSpecies, 725 int *Spe_Total_CNO, 726 int *FNAN, 727 int **natn, 728 int **ncn, 729 int *M2G, 730 int *G2ID, 731 int *F_G2M, 732 int **atv_ijk, 733 int *List_YOUSO, 734 double *koS, 735 dcomplex **S, 736 double *****CDM, 737 double *****iCDM, 738 double *****EDM, 739 double ***TRAN_DecMulP, 740 double Eele0[2], double Eele1[2], 741 double ChemP_e0[2]); 742 743 void TRAN_Allocate_Cregion_NC(MPI_Comm mpi_comm_level1, 744 int SpinP_switch, 745 int atomnum, 746 int *WhatSpecies, 747 int *Spe_Total_CNO 748 ); 749 750 void TRAN_Deallocate_Cregion_NC(int SpinP_switch); 751 752 void TRAN_Allocate_Lead_Region_NC( MPI_Comm mpi_comm_level1 ); 753 754 void TRAN_Deallocate_Lead_Region_NC(); 755 756 void TRAN_Set_CentOverlap_NC( 757 MPI_Comm comm1, 758 int job, 759 int SpinP_switch, 760 double k2, 761 double k3, 762 int *order_GA, 763 double **H1, 764 double **H2, 765 double *S1, 766 double *****H, 767 double ****OLP, 768 int atomnum, 769 int Matomnum, 770 int *M2G, 771 int *G2ID, 772 int *WhatSpecies, 773 int *Spe_Total_CNO, 774 int *FNAN, 775 int **natn, 776 int **ncn, 777 int **atv_ijk 778 ); 779 780 void TRAN_Set_SurfOverlap_NC( MPI_Comm comm1, 781 char *position, 782 double k2, 783 double k3); 784 /* until here by Y. Xiao for Noncollinear NEGF calculations */ 785 786