48 integer,
parameter ::
n_e0 = 38
52 real(kind=ESPUTR_DP),
dimension(N_E0),
parameter ::
e0 = (/ (
i_,
i_=0,200,10), (
i_,
i_=300,900,100), (
i_,
i_=1000,10000,1000) /)
54 character(10),
dimension(3, N_COMBINATIONS),
parameter ::
combinations = reshape (&
56 "D ",
"Be ",
"Beryllium ", &
57 "T ",
"Be ",
"Beryllium ", &
58 "D ",
"Fe ",
"Iron ", &
59 "T ",
"Fe ",
"Iron ", &
60 "D ",
"Mo ",
"Molybdenum", &
61 "T ",
"Mo ",
"Molybdenum", &
62 "D ",
"W ",
"Tungsten ", &
63 "T ",
"W ",
"Tungsten " &
67 real(kind=ESPUTR_DP),
dimension(N_E0, N_COMBINATIONS),
parameter ::
expected1993 = reshape (&
70 0.000000000e+00, 0.000000000e+00, 1.104103489e-03, 5.412871941e-03, 9.865317449e-03, &
71 1.362015231e-02, 1.666145691e-02, 1.911097532e-02, 2.109086932e-02, 2.270029556e-02, &
72 2.401582971e-02, 2.509606869e-02, 2.598604652e-02, 2.672069140e-02, 2.732738324e-02, &
73 2.782781747e-02, 2.823936384e-02, 2.857606414e-02, 2.884937187e-02, 2.906870654e-02, &
74 2.924187358e-02, 2.947274709e-02, 2.854958532e-02, 2.733847992e-02, 2.609905503e-02, &
75 2.491692942e-02, 2.381836251e-02, 2.280755068e-02, 2.188037090e-02, 1.574763130e-02, &
76 1.251330226e-02, 1.048765264e-02, 9.084401421e-03, 8.047182373e-03, 7.245108871e-03, &
77 6.603895290e-03, 6.078020749e-03, 5.637921894e-03, &
79 0.000000000e+00, 0.000000000e+00, 6.163481396e-04, 4.972985113e-03, 1.020839541e-02, &
80 1.488585322e-02, 1.880155249e-02, 2.202962229e-02, 2.468817158e-02, 2.688523383e-02, &
81 2.870915201e-02, 3.022989306e-02, 3.150250386e-02, 3.257042361e-02, 3.346816812e-02, &
82 3.422339168e-02, 3.485844337e-02, 3.539153839e-02, 3.583764297e-02, 3.620914723e-02, &
83 3.651638116e-02, 3.744791982e-02, 3.664606240e-02, 3.533663840e-02, 3.390936958e-02, &
84 3.250448541e-02, 3.117319558e-02, 2.993157952e-02, 2.878118075e-02, 2.097715208e-02, &
85 1.676289492e-02, 1.409672877e-02, 1.223877094e-02, 1.085992900e-02, 9.790536375e-03, &
86 8.933666020e-03, 8.229639207e-03, 7.639555433e-03, &
88 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 1.737185437e-04, &
89 1.046539046e-03, 2.422094274e-03, 4.030510991e-03, 5.711258056e-03, 7.379122837e-03, &
90 8.991161166e-03, 1.052732180e-02, 1.197988020e-02, 1.334770838e-02, 1.463313703e-02, &
91 1.584021883e-02, 1.697376134e-02, 1.803879011e-02, 1.904025543e-02, 1.998287882e-02, &
92 2.087107955e-02, 2.750974373e-02, 3.158309658e-02, 3.425578892e-02, 3.608011706e-02, &
93 3.735185130e-02, 3.824445425e-02, 3.886676439e-02, 3.929068098e-02, 3.899753173e-02, &
94 3.659592588e-02, 3.413323981e-02, 3.191246470e-02, 2.996087981e-02, 2.825036739e-02, &
95 2.674482709e-02, 2.541138231e-02, 2.422248563e-02, &
97 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 2.748668824e-04, 1.978833967e-03, &
98 4.540618007e-03, 7.352042125e-03, 1.013825575e-02, 1.278839828e-02, 1.526410109e-02, &
99 1.755873052e-02, 1.967924827e-02, 2.163797159e-02, 2.344878690e-02, 2.512542918e-02, &
100 2.668074192e-02, 2.812640767e-02, 2.947290264e-02, 3.072955382e-02, 3.190463841e-02, &
101 3.300549564e-02, 4.106738031e-02, 4.588454289e-02, 4.898419565e-02, 5.105844087e-02, &
102 5.247045440e-02, 5.343087730e-02, 5.407097567e-02, 5.447706650e-02, 5.327729815e-02, &
103 4.976522363e-02, 4.631552934e-02, 4.324915487e-02, 4.057314004e-02, 3.823704097e-02, &
104 3.618611411e-02, 3.437278813e-02, 3.275805393e-02, &
106 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
107 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 6.113259122e-06, &
108 7.256358164e-05, 2.328358848e-04, 4.843020824e-04, 8.127826662e-04, 1.202061715e-03, &
109 1.637256384e-03, 2.105787324e-03, 2.597431521e-03, 3.104056130e-03, 3.619274123e-03, &
110 4.138114139e-03, 9.004279744e-03, 1.287372049e-02, 1.586171980e-02, 1.819622945e-02, &
111 2.005041866e-02, 2.154526339e-02, 2.276543450e-02, 2.377136679e-02, 2.807671072e-02, &
112 2.860035619e-02, 2.811293568e-02, 2.729748580e-02, 2.638574083e-02, 2.546821410e-02, &
113 2.458203050e-02, 2.374178809e-02, 2.295196529e-02, &
115 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
116 0.000000000e+00, 3.483440885e-06, 1.336728845e-04, 5.030419358e-04, 1.081139055e-03, &
117 1.810072022e-03, 2.638605804e-03, 3.527705732e-03, 4.449189325e-03, 5.383205890e-03, &
118 6.315982847e-03, 7.238094468e-03, 8.143200825e-03, 9.027147694e-03, 9.887328317e-03, &
119 1.072223098e-02, 1.769168653e-02, 2.265536772e-02, 2.629792875e-02, 2.905732991e-02, &
120 3.120086984e-02, 3.289801991e-02, 3.426108595e-02, 3.536748555e-02, 3.971780570e-02, &
121 3.979104264e-02, 3.878776201e-02, 3.747362096e-02, 3.610013916e-02, 3.476071376e-02, &
122 3.349023361e-02, 3.229963977e-02, 3.118960080e-02, &
124 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
125 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
126 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
127 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
128 0.000000000e+00, 3.821267303e-04, 1.685035389e-03, 3.317431861e-03, 4.955715436e-03, &
129 6.486075150e-03, 7.877297587e-03, 9.129000154e-03, 1.025163704e-02, 1.691922670e-02, &
130 1.966598612e-02, 2.092588409e-02, 2.148623487e-02, 2.167495227e-02, 2.165167616e-02, &
131 2.150239271e-02, 2.127675440e-02, 2.100489733e-02, &
133 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
134 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, &
135 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 0.000000000e+00, 2.818904489e-07, &
136 1.177025344e-05, 5.166389668e-05, 1.273855286e-04, 2.403441647e-04, 3.888649309e-04, &
137 5.698063547e-04, 3.414252549e-03, 6.724809397e-03, 9.761714767e-03, 1.240583179e-02, &
138 1.468313276e-02, 1.664705632e-02, 1.834942033e-02, 1.983412462e-02, 2.803833028e-02, &
139 3.109099865e-02, 3.232680327e-02, 3.273624940e-02, 3.271953512e-02, 3.246788833e-02, &
146 integer,
dimension(4) :: err
151 print *,
"esputr1993_test_wrong_file:", err
157 integer,
dimension(6) :: err
158 real(kind=ESPUTR_DP) :: crap
165 print *,
"esputr1993_test_wrong_ids:", err
171 integer,
dimension(5) :: err
177 print *,
"esputr1993_test_double_init:", err
183 integer,
dimension(3) :: err
185 real(kind=ESPUTR_DP) :: rcrap
189 print *,
"esputr1993_test_call_uninitialized:", err
195 integer,
dimension(4) :: err
201 print *,
"esputr1993_test_unknown_elements:", err
207 integer,
dimension(5) :: err
208 real(kind=ESPUTR_DP) :: crap
214 print *,
"esputr1993_test_wrong_angle", err
220 logical,
dimension(N_COMBINATIONS) :: results
224 print *,
"FAILURE in esputr1993_test_compare: unexpected err value", err
233 print *,
"FAILURE in esputr1993_test_compare: unexpected err value", err
237 print *,
"esputr1993_test_compare: ", results
244 logical function test_1993(expected, proj, targ)
245 real(kind=ESPUTR_DP),
dimension(N_E0),
intent(in) :: expected
246 character(*),
intent(in) :: proj, targ
247 integer :: projId, targId, err
248 real(kind=ESPUTR_DP),
dimension(N_E0) :: Y
249 logical,
dimension(N_E0) :: passed
253 if(err /= 0)
goto 1000
255 if(err /= 0)
goto 1000
258 if(err /= 0)
goto 1000
264 test_1993 = all(passed)
266 1000 print *,
"FAILURE in esputr1993_test_compare: unexpected err value", err
269 end function test_1993
278 real(kind=ESPUTR_DP) :: Y
280 real(kind=ESPUTR_DP),
parameter :: TH_OPT = 75.*
esputr_pi/180., y_th_opt = 3.390205
282 if(err /= 0)
goto 2500
284 if(err /= 0)
goto 2500
286 print *,
"FAILURE in esputr1993_test_TH: expected 1, got ", y
290 if(err /= 0)
goto 2500
292 print *,
"FAILURE in esputr1993_test_TH: expected", y_th_opt,
", got ", y
296 if(err /= 0)
goto 2500
298 print *,
"FAILURE in esputr1993_test_TH: expected", 0.,
", got ", y
301 if(err /= 0)
goto 2500
303 if(err /= 0)
goto 2500
304 print *,
"esputr1993_test_1993_TH:", .true.
307 2500 print *,
"FAILURE in esputr1993_test_TH: unexpected err value", err
315 integer :: err, proj_id, targ_id
316 real(kind=ESPUTR_DP) :: Eth
319 if(err /= 0)
goto 5100
321 if(err /= 0)
goto 5100
323 if(err /= 0)
goto 5100
325 if(err /= 0)
goto 5100
329 print *,
"FAILURE in esputr1993_test_ETH: ", eth
332 if(err /= 0)
goto 5100
334 5100 print *,
"FAILURE in esputr1993_test_ETH: unexpected err value", err
341 logical :: initialized
344 if(initialized)
goto 7100
346 if(err == 0)
goto 7100
348 if(initialized)
goto 7100
350 if(err /= 0)
goto 7100
352 if(.not. initialized)
goto 7100
354 if(err /= 0)
goto 7100
357 7100 print *,
"FAILURE in esputr1993_test_initialized"
380 print *,
"ESPUTR1993_TEST COMPLETED"
real(esputr_dp) function, public esputr1993_yn(E0, proj_id, targ_id, err)
Calculate sputtering yield for normal incidence with 1993-model for a given incident energy and targe...
integer function, public esputr1993_getprojectileid(proj, err)
Return ID of the projectile for the 1993-model.
logical function, public esputr1993_test_call_uninitialized()
Test for correct error codes if functions are used w/o initialization of the module.
logical function, public esputr1993_test_eth()
Check esputr1993_Eth.
subroutine, public esputr1993_deallocate(err)
Deallocate dynamic arrays used by the module ESPUTR1993.
subroutine, public printfailed(expected, calculated, passed)
Print pairs of values (expected(i),calculated(i)) for which passed(i)=.false.
integer, parameter n_e0
Number of tested values of incident energy.
character(10), dimension(3, n_combinations), parameter combinations
List of projectile-target combinations for which the reference values are defined.
logical function, public esputr1993_test_th()
Check the angular dependence.
subroutine, public esputr1993_init(constantsFile, err)
Initialization of the 1993-model.
logical function, public esputr1993_test_initialized()
Check esputr1993_if_initialized.
real(esputr_dp), parameter, public esputr_pi
Pi number.
logical elemental function, public ispassed(expected, calculated)
integer, parameter n_combinations
Number of tested projectile-target combinations.
logical function, public esputr1993_test_unknown_elements()
Test for correct error codes if ID of an unknown species is requested.
character(*), parameter sputer1993_fitvalues_file
Default path to the input file.
logical function, public esputr1993_test_double_init()
Test for correct error codes if 1993 model is initialized or deallocateted more than once...
integer function, public esputr1993_gettargetid(targ, err)
Return ID of the target for the 1993-model.
real(esputr_dp) function, public esputr1993_yth(theta, err)
Angular dependence of sputtering yield in 1993-model for given incident angle.
real(kind=esputr_dp), dimension(n_e0, n_combinations), parameter expected1993
Reference values for comparison.
logical function, public esputr1993_test_wrong_angle()
Test for correct error codes if incident angle is out of bounds.
logical function, public esputr1993_test_wrong_ids()
Test for correct error codes if projectile/target IDs do not exist.
real(kind=esputr_dp), dimension(n_e0), parameter e0
Values of incident energy for which the yields are tested (eV)
logical function, public esputr1993_if_initialized()
Return .true. if module esputr1993 is initialized.
logical function, public esputr1993_test_wrong_file()
Test for correct error codes if given file does not exist or is corrupted.
integer, save, public esputr_unit
Index of the unit for standard output, default value 6.
real(esputr_dp) function, public esputr1993_eth(proj_id, targ_id, err)
Return threshold energy for the given projectile-target combination.
logical function, public esputr1993_test_compare()
Test that expected values come out of esputr1993_yn.