*** /home/muntwiler_m/mnt/pearl_data/software/edac/edac_all.cpp 2011-04-14 23:38:44.000000000 +0200 --- edac_all.cpp 2016-02-11 12:15:45.322049772 +0100 *************** *** 10117,10122 **** --- 10117,10123 ---- void scan_imfp(char *name); void scan_imfp(FILE *fout); numero iimfp_TPP(numero kr); + numero iimfp_SD(numero kr); numero TPP_rho, TPP_Nv, TPP_Ep, TPP_Eg; numero screening_length; int scattering_so; *************** *** 10230,10235 **** --- 10231,10237 ---- int n_th; int n_fi; + int n_ang; numero *th, *fi; numero *th_out, *************** *** 10239,10244 **** --- 10241,10247 ---- void free(void); void init_th(numero thi, numero thf, int nth); void init_phi(numero fii, numero fif, int nfi); + void read_angles(FILE *fin, char *my_file); void init_refraction( numero refraction); void init_transmission( *************** *** 12485,12490 **** --- 12488,12494 ---- else { kr=sqrt(sqr(calc.k[ik])+2*V0); if(iimfp_flag==0) ki=iimfp.val(kr)/2; + else if(iimfp_flag==3) ki=iimfp_SD(kr)/2; else ki=iimfp_TPP(kr)/2; set_k(complex(kr,ki)); } } else if(calc.k_flag==2) set_k(calc.kc[ik]); *************** *** 12507,12512 **** --- 12511,12522 ---- numero imfp=E/(TPP_Ep*TPP_Ep*(beta*log(gamma*E)-C/E+D/(E*E)))/a0_au; return 1/imfp; } + numero propagation::iimfp_SD(numero kr) + { + numero E=sqr(kr)/2*au_eV; + numero imfp = (1.43e3/sqr(E) + 0.54*sqrt(E))/a0_au; + return 1/imfp; + } void propagation::scan_imfp(char *name) { FILE *fout=NULL; *************** *** 13202,13208 **** } final_state::final_state(void) { ! n_th=n_fi=0; n_1=n_2=0; Ylm0_th_flag=Ylm0_fi_flag=0; mesh_flag=0; --- 13212,13218 ---- } final_state::final_state(void) { ! n_th=n_fi=n_ang=0; n_1=n_2=0; Ylm0_th_flag=Ylm0_fi_flag=0; mesh_flag=0; *************** *** 13233,13238 **** --- 13243,13271 ---- if(n_fi==1) fi[0]=fii; else for(j=0; j1) { + delete [] th; delete [] th_out; delete [] transmission; delete [] fi; + n_th=nang; + th=new numero [n_th]; + th_out=new numero [n_th]; + transmission=new numero [n_th]; + n_fi=nang; + fi=new numero [n_fi]; + for(i=0; i