diff --git a/lib/awpmd/ivutils/include/logexc.h b/lib/awpmd/ivutils/include/logexc.h index 80942f60bf..7bf6125bc6 100644 --- a/lib/awpmd/ivutils/include/logexc.h +++ b/lib/awpmd/ivutils/include/logexc.h @@ -273,7 +273,7 @@ public: }; /// format a string -const char *fmt(const char *format,...); +const char *logfmt(const char *format,...); /// macros with common usage #define LOGFATAL(code,text,lineinfo) ((lineinfo) ? ::message(vblFATAL,(code)," %s at %s:%d",(text),__FILE__,__LINE__) : \ diff --git a/lib/awpmd/systems/interact/TCP/wpmd.cpp b/lib/awpmd/systems/interact/TCP/wpmd.cpp index 1e53f3141c..660d7c21d7 100644 --- a/lib/awpmd/systems/interact/TCP/wpmd.cpp +++ b/lib/awpmd/systems/interact/TCP/wpmd.cpp @@ -170,7 +170,7 @@ int AWPMD::set_pbc(const Vector_3P pcell, int pbc_){ int AWPMD::set_electrons(int s, int n, Vector_3P x, Vector_3P v, double* w, double* pw, double mass, double *q) { if(s < 0 || s > 1) - return LOGERR(-1,fmt("AWPMD.set_electrons: invaid s setting (%d)!",s),LINFO); + return LOGERR(-1,logfmt("AWPMD.set_electrons: invaid s setting (%d)!",s),LINFO); norm_matrix_state[s] = NORM_UNDEFINED; nwp[s]=ne[s]=n; @@ -363,20 +363,20 @@ int AWPMD::interaction(int flag, Vector_3P fi, Vector_3P fe_x, //3. inverting the overlap matrix int info=0; if(nes){ - /*FILE *f1=fopen(fmt("matrO_%d.d",s),"wt"); + /*FILE *f1=fopen(logfmt("matrO_%d.d",s),"wt"); fileout(f1,Y[s],"%15g"); fclose(f1);8*/ - + ZPPTRF("L",&nes,Y[s].arr,&info); // analyze return code here if(info<0) - return LOGERR(info,fmt("AWPMD.interacton: call to ZPTRF failed (exitcode %d)!",info),LINFO); + return LOGERR(info,logfmt("AWPMD.interacton: call to ZPTRF failed (exitcode %d)!",info),LINFO); ZPPTRI("L",&nes,Y[s].arr,&info); if(info<0) - return LOGERR(info,fmt("AWPMD.interacton: call to ZPTRI failed (exitcode %d)!",info),LINFO); + return LOGERR(info,logfmt("AWPMD.interacton: call to ZPTRI failed (exitcode %d)!",info),LINFO); - - /*f1=fopen(fmt("matrY_%d.d",s),"wt"); + + /*f1=fopen(logfmt("matrY_%d.d",s),"wt"); fileout(f1,Y[s],"%15g"); fclose(f1);*/ } @@ -758,7 +758,7 @@ void AWPMD::norm_factorize(int s) { int nes8 = ne[s]*8, info; DGETRF(&nes8, &nes8, Norm[s].arr, &nes8, &ipiv[0], &info); if(info < 0) - LOGERR(info,fmt("AWPMD.norm_factorize: call to DGETRF failed (exitcode %d)!",info),LINFO); + LOGERR(info,logfmt("AWPMD.norm_factorize: call to DGETRF failed (exitcode %d)!",info),LINFO); norm_matrix_state[s] = NORM_FACTORIZED; } @@ -773,7 +773,7 @@ void AWPMD::norm_invert(int s) { DGETRI(&nes8, Norm[s].arr, &nes8, &ipiv[0], (double*)IDD.arr, &IDD_size, &info); // use IDD for work storage if(info < 0) - LOGERR(info,fmt("AWPMD.norm_invert: call to DGETRI failed (exitcode %d)!",info),LINFO); + LOGERR(info,logfmt("AWPMD.norm_invert: call to DGETRI failed (exitcode %d)!",info),LINFO); norm_matrix_state[s] = NORM_INVERTED; } @@ -829,7 +829,7 @@ int AWPMD::step(double dt){ //e gets current electronic coordinates int AWPMD::get_electrons(int spin, Vector_3P x, Vector_3P v, double* w, double* pw, double mass){ if(spin<0 || spin >1) - return -1; // invalid spin: return LOGERR(-1,fmt("AWPMD.get_electrons: invaid spin setting (%d)!",spin),LINFO); + return -1; // invalid spin: return LOGERR(-1,logfmt("AWPMD.get_electrons: invaid spin setting (%d)!",spin),LINFO); if(mass<0) mass=me; for(int i=0;i 1) - return LOGERR(-1,fmt("AWPMD_split.set_electrons: invaid spin setting (%d)!",s),LINFO); + return LOGERR(-1,logfmt("AWPMD_split.set_electrons: invaid spin setting (%d)!",s),LINFO); // calculating the total n nvar[s]=0; @@ -68,22 +68,22 @@ int AWPMD_split::set_electrons(int s, int nel, Vector_3P x, Vector_3P v, double* norm_matrix_state[s] = NORM_UNDEFINED; ne[s]=nel; wp[s].resize(n); - + split_c[s].resize(n); split_c[s].assign(c,c+n); - - + + nspl[s].resize(nel); nspl[s].assign(splits,splits+nel); partition1[s].clear(); for(int i=0;i0){ // width PBC, keeping the width are within [0,Lextra] w[i]=fmod(w[i],Lextra); @@ -107,7 +107,7 @@ int AWPMD_split::set_electrons(int s, int nel, Vector_3P x, Vector_3P v, double* else qe[s].assign(nwp[s],-1); - + return 1; } @@ -121,40 +121,40 @@ void AWPMD_split::eterm_deriv(int ic1,int s1,int c1, int j1,int ic2,int s2, int cdouble ck(split_c[s2][ic2+k2][0],split_c[s2][ic2+k2][1]); int indw1=8*ic1, indw2=8*ic2; int indn1=(nvar[s1]/10)*8+2*ic1, indn2=(nvar[s2]/10)*8+2*ic2; - cdouble part_jk=conj(cj)*ck; + cdouble part_jk=conj(cj)*ck; int M= 1; //(j1==k2 ? 1 : 2); // over a_k_re - E_der[s2][indw2+8*k2]+= M*real(pref*part_jk*(o.da2_re()*v+o.I0*dv_ak)); + E_der[s2][indw2+8*k2]+= M*real(pref*part_jk*(o.da2_re()*v+o.I0*dv_ak)); // over a_k_im - E_der[s2][indw2+8*k2+1]+= M*real(pref*part_jk*(o.da2_im()*v+i_unit*o.I0*dv_ak)); + E_der[s2][indw2+8*k2+1]+= M*real(pref*part_jk*(o.da2_im()*v+i_unit*o.I0*dv_ak)); // over a_j_re - E_der[s1][indw1+8*j1]+= M*real(pref*part_jk*(o.da1_re()*v+o.I0*dv_aj_conj)); + E_der[s1][indw1+8*j1]+= M*real(pref*part_jk*(o.da1_re()*v+o.I0*dv_aj_conj)); // over a_j_im - E_der[s1][indw1+8*j1+1]+= M*real(pref*part_jk*(o.da1_im()*v-i_unit*o.I0*dv_aj_conj)); + E_der[s1][indw1+8*j1+1]+= M*real(pref*part_jk*(o.da1_im()*v-i_unit*o.I0*dv_aj_conj)); for(int i=0;i<3;i++){ // over b_k_re - E_der[s2][indw2+8*k2+2+2*i]+= M*real(pref*part_jk*(o.db2_re(i)*v+o.I0*dv_bk[i])); + E_der[s2][indw2+8*k2+2+2*i]+= M*real(pref*part_jk*(o.db2_re(i)*v+o.I0*dv_bk[i])); // over b_k_im - E_der[s2][indw2+8*k2+2+2*i+1]+= M*real(pref*part_jk*(o.db2_im(i)*v+i_unit*o.I0*dv_bk[i])); + E_der[s2][indw2+8*k2+2+2*i+1]+= M*real(pref*part_jk*(o.db2_im(i)*v+i_unit*o.I0*dv_bk[i])); // over b_j_re - E_der[s1][indw1+8*j1+2+2*i]+= M*real(pref*part_jk*(o.db1_re(i)*v+o.I0*dv_bj_conj[i])); + E_der[s1][indw1+8*j1+2+2*i]+= M*real(pref*part_jk*(o.db1_re(i)*v+o.I0*dv_bj_conj[i])); // over b_j_im - E_der[s1][indw1+8*j1+2+2*i+1]+= M*real(pref*part_jk*(o.db1_im(i)*v-i_unit*o.I0*dv_bj_conj[i])); + E_der[s1][indw1+8*j1+2+2*i+1]+= M*real(pref*part_jk*(o.db1_im(i)*v-i_unit*o.I0*dv_bj_conj[i])); } // over ck_re - E_der[s2][indn2+2*k2]+=M*real(pref*conj(cj)*o.I0*v); + E_der[s2][indn2+2*k2]+=M*real(pref*conj(cj)*o.I0*v); // over ck_im E_der[s2][indn2+2*k2+1]+=M*real(pref*i_unit*conj(cj)*o.I0*v); // over cj_re - E_der[s1][indn1+2*j1]+=M*real(pref*ck*o.I0*v); + E_der[s1][indn1+2*j1]+=M*real(pref*ck*o.I0*v); // over cj_im - E_der[s1][indn1+2*j1+1]+=M*real(-pref*i_unit*ck*o.I0*v); - + E_der[s1][indn1+2*j1+1]+=M*real(-pref*i_unit*ck*o.I0*v); + double t= -M*real(pref*part_jk*o.I0*v); // nonlocal terms: TODO: make a separate global loop for summation of nonlocal terms for(int j=0;j -mu, v -> -v !!! } - - + + for(int k1=j1+1;k1(E_der[s1].begin()+indw1,(double *)&fe_x[iv1+k1],(double *)&fe_p[iv1+k1],&fe_w[iv1+k1],&fe_pw[iv1+k1], 1./one_h); @@ -341,14 +341,14 @@ void AWPMD_split::get_el_forces(int flag, Vector_3P fe_x, ic1+=nspl[s1][c1]; // incrementing block1 wp address iv1+=nspl[s1][c1]; // incrementing global variable address } - } + } } } //e same as interaction, but using Hartee factorization (no antisymmetrization) -int AWPMD_split::interaction_hartree(int flag, Vector_3P fi, Vector_3P fe_x, +int AWPMD_split::interaction_hartree(int flag, Vector_3P fi, Vector_3P fe_x, Vector_3P fe_p, double *fe_w, double *fe_pw, Vector_2P fe_c){ - + // resize arrays if needed enum APPROX tmp=HARTREE; swap(tmp,approx); // do not need large matrices @@ -358,39 +358,39 @@ int AWPMD_split::interaction_hartree(int flag, Vector_3P fi, Vector_3P fe_x, // clearing forces clear_forces(flag,fi,fe_x,fe_p,fe_w,fe_pw,fe_c); // calculate block norms and (optionally) derivatives - calc_norms(flag); + calc_norms(flag); Eee = Ew = 0.; for(int s1=0;s1<2;s1++){ Ee[s1]=0.; Eei[s1]=0.; int ic1=0; // starting index of the wp for current electron - + for(int c1=0;c1 1) - return LOGERR(-1,fmt("AWPMD_split.add_electron: invaid spin setting (%d)!",s),LINFO); + return LOGERR(-1,logfmt("AWPMD_split.add_electron: invaid spin setting (%d)!",s),LINFO); s_add=s; spl_add=0; return ne[s_add]; diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp index 18704deb0b..d492cd082d 100644 --- a/src/USER-AWPMD/pair_awpmd_cut.cpp +++ b/src/USER-AWPMD/pair_awpmd_cut.cpp @@ -237,7 +237,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) etmap[etag[i]].push_back(i); } else - error->all(FLERR,fmt("Invalid spin value (%d) for particle %d !",spin[i],i)); + error->all(FLERR,logfmt("Invalid spin value (%d) for particle %d !",spin[i],i)); } // ion force vector Vector_3 *fi=NULL; @@ -254,7 +254,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) for(size_t k=0;kall(FLERR,fmt("WP splits for one electron should have the same spin (at particles %d, %d)!",el[0],i)); + error->all(FLERR,logfmt("WP splits for one electron should have the same spin (at particles %d, %d)!",el[0],i)); double m= atom->mass ? atom->mass[type[i]] : force->e_mass; Vector_3 xx=Vector_3(x[i][0],x[i][1],x[i][2]); Vector_3 rv=m*Vector_3(v[i][0],v[i][1],v[i][2]);