?? dedxintp.f
字號:
*$declare*$debug subroutine rng2ene(range,energy,dedx) real range ! [g/cm2] real energy ! [MeV/A] real dedx ! [MeV/(g/cm2)] include 'stpwtbl.i' integer ierr,m real eps parameter (eps=1e-6, m=6) call interpo(nr,rr,er1,range,energy,ierr,m,eps) call interpo(nr,rr,dedx1r,range,dedx,ierr,m,eps) return end*********************************************************************** subroutine ene2rng(energy,aRANGE,aDEDX) real energy ! [MeV/A] real aRANGE ! [g/cm2] real aDEDX ! [MeV/(g/cm2)] include 'stpwtbl.i' real range,dedx external range,dedx integer ierr,m real eps parameter (eps=1e-6, m=6) if((energy.lt.min(er1(1),er1(nr))) $ .or.(energy.gt.max(er1(1),er1(nr))))then aRANGE=range(pz,pa,energy) aDEDX=dedx(pZ,pA,energy) else call interpo(nr,er1,rr,energy,aRANGE,ierr,m,eps) call interpo(nr,er1,dedx1r,energy,aDEDX,ierr,m,eps) endif return end********************************************************************* subroutine eneloss(energy,thick,eloss,eout) real energy ! [MeV/A] real thick ! [g/cm2] real eloss ! [MeV] real eout ! [MeV/A] include 'stpwtbl.i' integer m real eps,range0,aDEDX real enelast,fullrange save enelast,fullrange parameter (eps=1e-6, m=6) data enelast/0./,fullrange/0./********* call interpo(nr,er1,rr,energy,aRANGE,ierr,m,eps)** if(energy.ne.enelast)then call ene2rng(energy,fullrange,aDEDX) enelast=energy** endif if(thick.ge.fullrange)then******** write(*,*)'the thickness is greater than the range' eout=0 eloss=energy*pa return endif range0=fullrange-thick call rng2ene(range0,eout,aDEDX) eloss=(energy-eout)*pa return end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -