void paw_print_paw_potential_information(FILE *fp) { int i; int *n; int *l; fprintf(fp,"\n"); fprintf(fp," Paw potential information :\n"); fprintf(fp,"\n"); fprintf(fp," reference potential matching radius = %le\n", paw_get_potential_matching_radius()); fprintf(fp," reference potential rcut parameter = %le\n", rc_ref); fprintf(fp," lambda parameter = %le\n", lambda); fprintf(fp," potential tolerance = %le\n", pot_tolerance); fprintf(fp,"\n"); n = paw_get_pointer_paw_n_array(); l = paw_get_pointer_l_array(); fprintf(fp," nl c[i] rcut[i] \n"); for (i=0;i<=nbasis-1;i++) { fprintf(fp," %d%s %f %f \n",n[i],paw_spd_Name(l[i]),c[i], rc_pot[i]); } fprintf(fp,"\n\n"); }
void paw_print_paw_potential_to_file(char* atom_name) { int i; int j; int k; int Ngrid; int *prin_n; int * orb_l; double *rgrid; char data_filename[300]; char script_filename[300]; char nl_name[20]; FILE *fp; if (paw_debug()) { Ngrid = paw_N_LogGrid(); rgrid = paw_r_LogGrid(); prin_n = paw_get_pointer_paw_n_array(); orb_l = paw_get_pointer_paw_l_array(); sprintf(data_filename,"%s%s_pot.dat",paw_sdir(),atom_name); fp = fopen(data_filename,"w+"); for (k=0; k<=Ngrid-1; k++) { fprintf(fp,"%le\t%le\t%le", rgrid[k], V_ref[k], V_pseudo[k]); for (i=0; i<=nbasis-1; i++) fprintf(fp,"\t%le ",V_paw[i][k]); fprintf(fp,"\n"); } fclose(fp); sprintf(script_filename,"%s%s_ref_pot.plt",paw_sdir(),atom_name); fp = fopen(script_filename,"w+"); fprintf(fp,"set data style lines \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set autoscale \n"); fprintf(fp,"set xr[0:%f] \n",2*r_ref); fprintf(fp,"set grid \n"); fprintf(fp,"set nokey \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set xlabel \"r (a0)\" \n"); fprintf(fp,"set title \" %s reference potential\n",atom_name); fprintf(fp,"plot \"%s\" using 1:2 \n",data_filename); fprintf(fp,"\n"); fprintf(fp,"pause -1\n"); fclose(fp); sprintf(script_filename,"%s%s_loc_pot.plt",paw_sdir(),atom_name); fp = fopen(script_filename,"w+"); fprintf(fp,"set data style lines \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set autoscale \n"); fprintf(fp,"set xr[0:%f] \n",2*r_ref); fprintf(fp,"set grid \n"); fprintf(fp,"set nokey \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set xlabel \"r (a0)\" \n"); fprintf(fp,"set title \" %s local potential\n",atom_name); fprintf(fp,"plot \"%s\" using 1:3 \n",data_filename); fprintf(fp,"\n"); fprintf(fp,"pause -1\n"); fclose(fp); /*gnu script file */ for (i=0,j=4; i<=nbasis-1; i++,j=j+1) { sprintf(nl_name,"%d%s",prin_n[i],paw_spd_Name(orb_l[i])); sprintf(script_filename,"%s%s_%s_pot.plt",paw_sdir(),atom_name,nl_name); fp = fopen(script_filename,"w+"); fprintf(fp,"set data style lines \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set autoscale \n"); fprintf(fp,"set xr[0:%f] \n",1.5*r_potential[i]); fprintf(fp,"set grid \n"); fprintf(fp,"set nokey \n"); fprintf(fp,"set nolabel \n"); fprintf(fp,"set xlabel \"r (a0)\" \n"); fprintf(fp,"set title \" %s paw potential for %s orbital\" \n", atom_name,nl_name); fprintf(fp,"plot \"%s\" using 1:%d \n",data_filename,j); fprintf(fp,"\n"); fprintf(fp,"pause -1\n"); fclose(fp); } } }
void paw_generate_basis_file(char *outfile) { char* atom_name; FILE *fp; int i; int k; double tmp; double *Vpseudo; double *rho_core; double *rho_core_ps; int nbasis; int Ngrid; double *rgrid; int* prin_n; int* prin_n_ps; int *l; double* e; double** psi; double** psi_ps0; double** psi_prime; double** psi_ps; double** psi_ps_prime; double** prj_ps; double** prj_ps0; Ngrid = paw_N_LogGrid(); rgrid = paw_r_LogGrid(); atom_name = paw_get_atom_name(); nbasis = paw_get_nbasis(); prin_n = paw_get_pointer_paw_n_array(); prin_n_ps = paw_get_pointer_paw_n_ps_array(); l = paw_get_pointer_paw_l_array(); e = paw_get_pointer_paw_e_array(); psi = paw_get_pointer_paw_psi_array(); psi_ps = paw_get_pointer_paw_psi_ps_array(); psi_prime = paw_get_pointer_paw_psi_prime_array(); psi_ps_prime = paw_get_pointer_paw_psi_ps_prime_array(); prj_ps = paw_get_pointer_paw_prj_ps_array(); prj_ps0 = paw_get_pointer_paw_prj_ps0_array(); rho_core = paw_get_pointer_core_density(); rho_core_ps = paw_get_pointer_ps_core_density(); Vpseudo = paw_get_pointer_pseudopotential(); psi_ps0 = paw_get_pointer_paw_psi_ps_unscr_array(); /* output the basis file */ /*sprintf(output, "%s_basis", atom_name);*/ if (paw_debug()) printf("paw basis file generated: %s\n",outfile); fp = fopen(outfile, "w+"); fprintf(fp,"4\n"); /*dummy tag*/ /* new*/ fprintf(fp,"%s\n",atom_name); /* new*/ fprintf(fp,"%lf\n",paw_get_Zvalence()); /* new*/ fprintf(fp,"%15.11e\n",rgrid[0]); fprintf(fp,"%15.11e\n",rgrid[Ngrid-1]); fprintf(fp,"%d\n",Ngrid); fprintf(fp,"%d\n",nbasis); /* printout cutoff radii */ /* new*/ for (i=0; i<nbasis; ++i) fprintf(fp,"%le ",paw_get_r_orbital(i)); /* new*/ fprintf(fp,"\n"); /* new*/ fprintf(fp,"%d\n",paw_get_max_i_r_orbital()); fprintf(fp,"%s\n",paw_get_comment()); /* new*/ fprintf(fp,"%15.11e\n",paw_get_core_kinetic_energy()); for ( i = 0; i < nbasis; ++i) fprintf(fp, "%d\t %15.11e\t %d\t %d\n",prin_n[i],e[i],prin_n_ps[i],l[i]); for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) fprintf(fp, "%15.11e \n",psi[i][k]); } for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) { tmp = psi_prime[i][k]/(rgrid[k]*paw_log_amesh_LogGrid()); fprintf(fp, "%15.11e \n",psi_prime[i][k]/(rgrid[k]*paw_log_amesh_LogGrid())); } } for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) fprintf(fp, "%15.11e \n",psi_ps[i][k]); } for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) { tmp = psi_ps_prime[i][k]/(rgrid[k]*paw_log_amesh_LogGrid()); fprintf(fp, "%15.11e \n",psi_ps_prime[i][k]/(rgrid[k]*paw_log_amesh_LogGrid())); } } for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) fprintf(fp, "%15.11e \n",prj_ps[i][k]); } for (k = 0; k <= Ngrid-1; k++) { fprintf(fp, "%15.11e \n",rho_core[k]/(4.0*PI)); } for (k = 0; k <= Ngrid-1; k++) { fprintf(fp, "%15.11e \n",rho_core_ps[k]/(4.0*PI)); } for (k = 0; k <= Ngrid-1; k++) { fprintf(fp, "%15.11e \n",Vpseudo[k]); } fprintf(fp,"%15.11e\n",paw_get_sigma_comp()); fprintf(fp,"%15.11e\n",paw_get_ion_charge()); for ( i = 0; i <= nbasis-1; i++) { for (k = 0; k <= Ngrid-1; k++) fprintf(fp, "%15.11e \n",prj_ps0[i][k]); } fclose(fp); }