HEXC1
Fit Function | \[\begin{align*} & \sigma (pe) = \text{pcf}(0) \cdot (c_1 + c_2 + c_3) \\ \text{where} \quad & c_1 = \begin{cases} \frac{\exp\left(\frac{-\text{pcf}(2)}{pe}\right)}{\text{pe}} & \text{if } \left|\frac{\text{pcf}(2)}{pe}\right| < 700 \\ 0 & \text{otherwise} \end{cases} \\ & c_2 = \begin{cases} \frac{\text{pcf}(3) \cdot \exp\left(-\text{pcf}(4) \cdot pe\right)}{pe^{\text{pcf}(5)}} & \text{if } \left|\text{pcf}(4) \cdot pe\right| < 700 \\ 0 & \text{otherwise} \end{cases} \\ & c_3 = \begin{cases} \frac{\text{pcf}(6) \cdot \exp\left(\frac{-\text{pcf}(7)}{pe}\right)}{1 + \text{pcf}(8) \cdot pe^{\text{pcf}(9)}} & \text{if } \left|\frac{\text{pcf}(7)}{pe}\right| < 700 \\ 0 & \text{otherwise} \end{cases} \end{align*}\] |
Comments | Python code requires NumPy imported as `np`. |
Arguments |
|
||||||||||||||||||||||||
Return values |
|
||||||||||||||||||||||||
Code | c c################################################################### c subroutine hexc1(pe, pcf, kncf, pxs, kermsg) c c this is a subroutine to calculate cross sections (cm[2]) c versus projectile energy (ev) for heavy particle collisions. c c pe = collision energy in kev/amu c c pcf(1-9) = parameters for fit to the cross section c c kermsg = blank if no errors c c pxs = cross section in 10e-16 cm[2] c------------------------------------------------------------------------ c double precision pe, pcf, pxs double precision e, a1, a2, a3, a4, a5, a6, arg1, arg2, arg3 double precision a7, a8, a9, c1, c2, c3, dexpr, zero, one c dimension pcf(9) character*(*) kermsg data dexpr/7.00d+02/ data zero/0.00d+00/ data one/1.00d+00/ c c generate e, the energy in kev c e = pe c a1= pcf(1) a2= pcf(2) a3= pcf(3) a4= pcf(4) a5= pcf(5) a6= pcf(6) a7= pcf(7) a8= pcf(8) a9= pcf(9) arg1=-a2/e c1=zero if (dabs(arg1) .lt. dexpr) c1=dexp(arg1) /e c arg2=-a4*e c2=zero if (dabs(arg2) .lt. dexpr) c2=a3*dexp(arg2)/(e**a5) c arg3=-a7/e c3=zero if (dabs(arg3) .lt. dexpr) c3= a6*dexp(arg3)/ 1 (one + a8*(e**a9)) c pxs=a1*(c1 + c2 + c3) return end |
Arguments |
|
||||||||||||
Return values |
|
||||||||||||
Code | def hexc1(pe, pcf): """ This function calculates the cross-section for heavy particle collisions. pe: collision energy in keV/amu pcf: parameter data array pcf[0:8]: parameters for fit to the cross section """ dexpr = 700.0 arg1 = -pcf[1]/pe c1 = np.where(np.abs(arg1) < dexpr, np.exp(arg1)/pe, 0.0) arg2 = -pcf[3] * pe c2 = np.where(np.abs(arg2) < dexpr, pcf[2] * np.exp(arg2)/(pe**pcf[4]), 0.0) arg3 = -pcf[6]/pe c3 = np.where(np.abs(arg3) < dexpr, pcf[5] * np.exp(arg3)/(1 + pcf[7] * (pe**pcf[8])), 0.0) pxs = pcf[0] * (c1 + c2 + c3) return pxs |