28 #ifndef _chemistry_qc_libint2_grtquartetdata_h
29 #define _chemistry_qc_libint2_grtquartetdata_h
38 inline void GRTLibint2::grt_quartet_data_(prim_data *Data,
double scale)
46 double P[3], Q[3], PQ[3], W[3];
47 double small_T = 1E-15;
49 int p1 = quartet_info_.p1;
50 int p2 = quartet_info_.p2;
51 int p3 = quartet_info_.p3;
52 int p4 = quartet_info_.p4;
54 double a1 = int_shell1_->
exponent(quartet_info_.p1);
55 double a2 = int_shell2_->
exponent(quartet_info_.p2);
56 double a3 = int_shell3_->
exponent(quartet_info_.p3);
57 double a4 = int_shell4_->
exponent(quartet_info_.p4);
61 if (!quartet_info_.p13p24) {
62 pair12 = quartet_info_.shell_pair12->prim_pair(*quartet_info_.op1,*quartet_info_.op2);
63 pair34 = quartet_info_.shell_pair34->prim_pair(*quartet_info_.op3,*quartet_info_.op4);
66 pair12 = quartet_info_.shell_pair34->prim_pair(*quartet_info_.op3,*quartet_info_.op4);
67 pair34 = quartet_info_.shell_pair12->prim_pair(*quartet_info_.op1,*quartet_info_.op2);
70 Data->twozeta_a = 2.0*a1;
71 Data->twozeta_b = 2.0*a2;
72 Data->twozeta_c = 2.0*a3;
73 Data->twozeta_d = 2.0*a4;
74 double zeta = pair12->gamma;
75 double eta = pair34->gamma;
76 double ooz = 1.0/zeta;
78 double oozn = 1.0/(zeta+eta);
80 double rho = zeta*Data->poz;
87 double pfac = 2.0*sqrt(rho*M_1_PI)*scale*pair12->ovlp*pair34->ovlp*pfac_norm;
98 double PQ2 = PQ[0]*PQ[0];
103 Data->oo2zn = 0.5*oozn;
104 Data->pon = zeta*oozn;
105 Data->oo2z = 0.5/zeta;
106 Data->oo2n = 0.5/eta;
107 W[0] = (zeta*P[0] + eta*Q[0])*oozn;
108 W[1] = (zeta*P[1] + eta*Q[1])*oozn;
109 W[2] = (zeta*P[2] + eta*Q[2])*oozn;
112 for(
int i=0; i<=quartet_info_.am+1; i++)
113 Data->F[i] = oo2np1[i]*pfac;
116 double *fjttable = Fm_Eval_->values(quartet_info_.am+1,T);
117 for(
int i=0;i<=quartet_info_.am+1;i++)
118 Data->F[i] = fjttable[i]*pfac;
121 Data->ss_r12_ss = 2.0*Data->oo2p*Data->F[0] + PQ2*(Data->F[0] - Data->F[1]);
124 Data->U[0][0] = P[0] - quartet_info_.A[0];
125 Data->U[0][1] = P[1] - quartet_info_.A[1];
126 Data->U[0][2] = P[2] - quartet_info_.A[2];
128 Data->U[1][0] = Q[0] - quartet_info_.A[0];
129 Data->U[1][1] = Q[1] - quartet_info_.A[1];
130 Data->U[1][2] = Q[2] - quartet_info_.A[2];
132 Data->U[2][0] = Q[0] - quartet_info_.C[0];
133 Data->U[2][1] = Q[1] - quartet_info_.C[1];
134 Data->U[2][2] = Q[2] - quartet_info_.C[2];
136 Data->U[3][0] = P[0] - quartet_info_.C[0];
137 Data->U[3][1] = P[1] - quartet_info_.C[1];
138 Data->U[3][2] = P[2] - quartet_info_.C[2];
140 Data->U[4][0] = W[0] - P[0];
141 Data->U[4][1] = W[1] - P[1];
142 Data->U[4][2] = W[2] - P[2];
144 Data->U[5][0] = W[0] - Q[0];
145 Data->U[5][1] = W[1] - Q[1];
146 Data->U[5][2] = W[2] - Q[2];