ESPUTR
calculation of sputtering yields
|
Functions/Subroutines | |
subroutine, public | esputr2001_init (fileNName, fileThName, err) |
Initialization of the 2001-model. More... | |
subroutine, public | esputr2001_initn (fileNName, err) |
subroutine, public | esputr2001_initth (fileTHName, err) |
subroutine, public | esputr2001_check (res, err) |
Check integrity and validity of data in the module. More... | |
logical function, public | esputr2001_if_initialized () |
Return .true. if module esputr2001 is initialized. More... | |
subroutine, public | esputr2001_deallocate (err) |
Deallocate dynamic arrays used by this module. More... | |
integer function, public | esputr2001_getprojectiletargetidn (proj, targ, err) |
Return ID for a projectile-target combination for 2001-model for normal incidence. More... | |
subroutine, public | esputr2001_getprojectiletargetidsth (proj, targ, thLower, thUpper, err) |
Return two IDs for a projectile-target combination for 2001-model for angular dependence. More... | |
real(esputr_dp) function, public | esputr2001_yn (E0, projectileTarget_id, err) |
Calculate sputtering yield for normal incidence with 2001-model for given incident energy and target-projectile combination. More... | |
real(esputr_dp) function, public | esputr2001_yth (E0, theta, projTargStartId, projTargEndId, err) |
Angular dependence of sputtering yield in 2001-model for given incident angle and energy, projectile-target combination. More... | |
real(esputr_dp) function, public | esputr2001_eth (projectileTarget_id, err) |
Return the threshold energy E_th for the given projectile-target combination. More... | |
subroutine, public | esputr2001_availablecombinationsn (combinations, err) |
Return the list of available projectile-target combinations for normal incidence. More... | |
subroutine, public | esputr2001_availablecombinationsth (combinations, err) |
Return the list of available projectile-target combinations for angular dependence. More... | |
subroutine, public | esputr2001_getavailableenergyrange (projTargStartId, projTargEndId, Emin, Emax, err) |
Get the minimum and maximum energies for which the angular dependency factor is defined. More... | |
Variables | |
logical, save, public | esputr2001_extrapolate_angular =.FALSE. |
Switch for extrapolation of the angular dependency to energies for which no data are defined. More... | |
integer, parameter, public | esputr2001_max_name_length = 16 |
Maximum length of the names of (chemical) elements. More... | |
integer, parameter, private | nconstants_n = 5 |
Number of parameters read from the input file for 2001-model for normal incidence (for one target/projectile combination) More... | |
integer, parameter, private | nconstants_th = 6 |
Number of parameters read from the input file for 2001-model for angular dependence (for one target/projectile combination) More... | |
integer, save, private | ncombinations_n |
Number of entries loaded for 2001-model for normal incidence. More... | |
integer, save, private | ncombinations_th |
Number of entries loaded for 2001-model for angular dependence. More... | |
real(esputr_dp), dimension(:,:), allocatable, save, private | fitvalues_n |
Array with parameters of fitting formula for normal incidence for 2001-model. More... | |
real(esputr_dp), dimension(:,:), allocatable, save, private | fitvalues_th |
Array with parameters read for angular dependence for 2001-model. More... | |
character(esputr2001_max_name_length), dimension(:,:), allocatable, save, private | projectiles_targets_names_n |
Array of strings which contains the names of the target-projectile combinations defined for 2001-model (for normal incidence) More... | |
character(esputr2001_max_name_length), dimension(:,:), allocatable, save, private | projectiles_targets_names_th |
Array of strings which contains the names of the target-projectile combinations defined for 2001-model for the angular dependence. More... | |
integer, save, private | nprojectilestargetsth = 0 |
Number of projectile-target combinations loaded for angular dependence. More... | |
subroutine, public esputr2001::esputr2001_init | ( | character(*), intent(in) | fileNName, |
character(*), intent(in) | fileThName, | ||
integer, intent(out) | err | ||
) |
Initialization of the 2001-model.
This subroutine allocates arrays and reads data from the input files which contain tables (csv format) in the form adopted from [W. Eckstein, "Sputtering Yields", Top. Appl. Phys. vol. 110 (2007) p. 33] : Tables 2-9 for normal incidence and Tables 10-24 for angular dependence
[in] | filenname | Name of the input file with the data for normal incidence |
[in] | filethname | Name of the input file with the data for angular dependence |
[out] | err | Error code |
Definition at line 128 of file esputr2001.f90.
References esputr2001_check(), esputr2001_initn(), esputr2001_initth(), and esputr::esputr_unit.
Referenced by esputr2001_init_wrapper(), esputr2001_test::esputr2001_test_availableenergyrange(), esputr2001_test::esputr2001_test_double_init(), esputr2001_test::esputr2001_test_extrapolate_angular(), esputr2001_test::esputr2001_test_initialized(), esputr2001_test::esputr2001_test_n(), esputr2001_test::esputr2001_test_negative_energy(), esputr2001_test::esputr2001_test_theta(), esputr2001_test::esputr2001_test_unknown_elements(), esputr2001_test::esputr2001_test_wrong_angle(), esputr2001_test::esputr2001_test_wrong_file(), esputr2001_test::esputr2001_test_wrong_ids(), and initesputr().
subroutine, public esputr2001::esputr2001_initn | ( | character(*), intent(in) | fileNName, |
integer, intent(out) | err | ||
) |
[in] | filenname | Name of the input file in csv format (ASCII-table) |
Definition at line 152 of file esputr2001.f90.
References esputr::esputr_unit, fitvalues_n, ncombinations_n, nconstants_n, and projectiles_targets_names_n.
Referenced by esputr2001_init(), esputr2001_initn_wrapper(), esputr2001_test::esputr2001_test_eth(), esputr2001_test::esputr2001_test_initialized(), and mexfunction().
subroutine, public esputr2001::esputr2001_initth | ( | character(*), intent(in) | fileTHName, |
integer, intent(out) | err | ||
) |
[in] | filethname | Name of the input file in csv format (ASCII-table) |
Definition at line 170 of file esputr2001.f90.
References esputr2001_deallocate(), esputr::esputr_comment_start, esputr::esputr_unit, fitvalues_th, ncombinations_th, nconstants_th, nprojectilestargetsth, esputr::numberoflines(), and projectiles_targets_names_th.
Referenced by esputr2001_init(), esputr2001_initth_wrapper(), and mexfunction().
subroutine, public esputr2001::esputr2001_check | ( | integer, intent(out) | res, |
integer, intent(out) | err | ||
) |
Check integrity and validity of data in the module.
[out] | res | Code of the result |
[out] | err | Error code |
Definition at line 306 of file esputr2001.f90.
References esputr::esputr_unit, fitvalues_n, fitvalues_th, ncombinations_n, ncombinations_th, projectiles_targets_names_n, and projectiles_targets_names_th.
Referenced by esputr2001_init().
logical function, public esputr2001::esputr2001_if_initialized | ( | ) |
Return .true. if module esputr2001 is initialized.
Definition at line 421 of file esputr2001.f90.
References fitvalues_n, and fitvalues_th.
Referenced by esputr2001_test::esputr2001_test_initialized().
subroutine, public esputr2001::esputr2001_deallocate | ( | integer, intent(out) | err | ) |
Deallocate dynamic arrays used by this module.
[out] | err | Error code |
Definition at line 426 of file esputr2001.f90.
References esputr::esputr_unit, fitvalues_n, fitvalues_th, projectiles_targets_names_n, and projectiles_targets_names_th.
Referenced by esputr2001_initth(), esputr2001_test::esputr2001_test_availableenergyrange(), esputr2001_test::esputr2001_test_double_init(), esputr2001_test::esputr2001_test_eth(), esputr2001_test::esputr2001_test_extrapolate_angular(), esputr2001_test::esputr2001_test_initialized(), esputr2001_test::esputr2001_test_n(), esputr2001_test::esputr2001_test_negative_energy(), esputr2001_test::esputr2001_test_theta(), esputr2001_test::esputr2001_test_unknown_elements(), esputr2001_test::esputr2001_test_wrong_angle(), esputr2001_test::esputr2001_test_wrong_file(), esputr2001_test::esputr2001_test_wrong_ids(), esputr_cgi(), esputr_deallocate(), esputr_yn(), esputr_yth(), and mexfunction().
integer function, public esputr2001::esputr2001_getprojectiletargetidn | ( | character(*), intent(in) | proj, |
character(*), intent(in) | targ, | ||
integer, intent(out) | err | ||
) |
Return ID for a projectile-target combination for 2001-model for normal incidence.
The ID is to be used in function esputr2001_yn
[in] | proj | String with the name of the projectile |
[in] | targ | String with the name of the target |
[out] | err | Error code |
Definition at line 450 of file esputr2001.f90.
References esputr::esputr_unit, and projectiles_targets_names_n.
Referenced by esputr2001_test::esputr2001_test_call_uninitialized(), esputr2001_test::esputr2001_test_eth(), esputr2001_test::esputr2001_test_n(), esputr2001_test::esputr2001_test_unknown_elements(), esputr_yn(), and writejsonarray().
subroutine, public esputr2001::esputr2001_getprojectiletargetidsth | ( | character(*), intent(in) | proj, |
character(*), intent(in) | targ, | ||
integer, intent(out) | thLower, | ||
integer, intent(out) | thUpper, | ||
integer, intent(out) | err | ||
) |
Return two IDs for a projectile-target combination for 2001-model for angular dependence.
The IDs are to be used in function esputr2001_yth
[in] | proj | String with the name of the projectile |
[in] | targ | String with the name of the target |
[out] | thlower | First ID (first entry in table for this projectile-target combination) |
[out] | thupper | Second ID (last entry in table for this projectile-target combination) |
[out] | err | Error code |
Definition at line 482 of file esputr2001.f90.
References esputr::esputr_unit, and projectiles_targets_names_th.
Referenced by esputr2001_getavailableenergyrangebyname(), esputr2001_test::esputr2001_test_availableenergyrange(), esputr2001_test::esputr2001_test_call_uninitialized(), esputr2001_test::esputr2001_test_extrapolate_angular(), esputr2001_test::esputr2001_test_negative_energy(), esputr2001_test::esputr2001_test_theta(), esputr2001_test::esputr2001_test_unknown_elements(), esputr2001_test::esputr2001_test_wrong_angle(), esputr_yth(), and writejsonarray().
real(esputr_dp) function, public esputr2001::esputr2001_yn | ( | real(esputr_dp), intent(in) | E0, |
integer, intent(in) | projectileTarget_id, | ||
integer, intent(out) | err | ||
) |
Calculate sputtering yield for normal incidence with 2001-model for given incident energy and target-projectile combination.
[W. Eckstein et al., Atomic as plasma-material interaction data for fusion, vol. 7, Part B (2001)] Chapter 2, last Equation on Page 18
[in] | e0 | Incident energy, eV |
[in] | projectiletarget_id | ID of the projectile-target combination returned by esputr2001_getProjectileTargetIdN |
[out] | err | Error code |
Definition at line 525 of file esputr2001.f90.
References esputr::esputr_unit, fitvalues_n, and ncombinations_n.
Referenced by esputr2001_test::esputr2001_test_call_uninitialized(), esputr2001_test::esputr2001_test_n(), esputr2001_test::esputr2001_test_wrong_ids(), and esputr_yn().
real(esputr_dp) function, public esputr2001::esputr2001_yth | ( | real(esputr_dp), intent(in) | E0, |
real(esputr_dp), intent(in) | theta, | ||
integer, intent(in) | projTargStartId, | ||
integer, intent(in) | projTargEndId, | ||
integer, intent(out) | err | ||
) |
Angular dependence of sputtering yield in 2001-model for given incident angle and energy, projectile-target combination.
[W. Eckstein et al., Atomic as plasma-material interaction data for fusion, vol. 7, Part B (2001)] Chapter 2, first Second on Page 19.
[in] | theta | Angle of incidence, radian |
Angle between surface normal and the incident velocity: 0 for normal incidence
[in] | projtargstartid | First index returned by esputr2001_getProjectileTargetIdsTh |
[in] | projtargendid | Second index returned by esputr2001_getProjectileTargetIdsTh |
[out] | err | Error code |
Definition at line 575 of file esputr2001.f90.
References esputr2001_extrapolate_angular, esputr::esputr_pi, esputr::esputr_pi2, esputr::esputr_unit, fitvalues_th, and ncombinations_th.
Referenced by esputr2001_test::esputr2001_test_call_uninitialized(), esputr2001_test::esputr2001_test_extrapolate_angular(), esputr2001_test::esputr2001_test_negative_energy(), esputr2001_test::esputr2001_test_theta(), esputr2001_test::esputr2001_test_wrong_angle(), esputr2001_test::esputr2001_test_wrong_ids(), and esputr_yth().
real(esputr_dp) function, public esputr2001::esputr2001_eth | ( | integer, intent(in) | projectileTarget_id, |
integer, intent(out) | err | ||
) |
Return the threshold energy E_th for the given projectile-target combination.
[in] | projectiletarget_id | ID of the projectile-target combination returned by esputr2001_getProjectileTargetIdN |
[out] | err | Error code |
Definition at line 702 of file esputr2001.f90.
References esputr::esputr_unit, and fitvalues_n.
Referenced by esputr2001_test::esputr2001_test_eth(), and writejsonarray().
subroutine, public esputr2001::esputr2001_availablecombinationsn | ( | character(esputr2001_max_name_length), dimension(:,:), intent(inout), allocatable | combinations, |
integer, intent(out) | err | ||
) |
Return the list of available projectile-target combinations for normal incidence.
[in,out] | combinations | (:,1) are the projectiles, (:,2) are the targets |
[out] | err | Error code |
Definition at line 718 of file esputr2001.f90.
References esputr::esputr_unit, and projectiles_targets_names_n.
Referenced by sendavailablecombinations().
subroutine, public esputr2001::esputr2001_availablecombinationsth | ( | character(esputr2001_max_name_length*2), dimension(:,:), intent(inout), allocatable | combinations, |
integer, intent(out) | err | ||
) |
Return the list of available projectile-target combinations for angular dependence.
[in,out] | combinations | (:,1) are the projectiles, (:,2) are the targets |
[out] | err | Error code |
Definition at line 740 of file esputr2001.f90.
References esputr::esputr_unit, nprojectilestargetsth, and projectiles_targets_names_th.
Referenced by sendavailablecombinations().
subroutine, public esputr2001::esputr2001_getavailableenergyrange | ( | integer, intent(in) | projTargStartId, |
integer, intent(in) | projTargEndId, | ||
real(kind=esputr_dp), intent(out) | Emin, | ||
real(kind=esputr_dp), intent(out) | Emax, | ||
integer, intent(out) | err | ||
) |
Get the minimum and maximum energies for which the angular dependency factor is defined.
[in] | projtargstartid | First index returned by esputr2001_getProjectileTargetIdsTh |
[in] | projtargendid | Second index returned by esputr2001_getProjectileTargetIdsTh |
[out] | emin | Minimum energy for which the data for angular dependence is available |
[out] | emax | Maximum energy for which the data for angular dependence is available |
[out] | err | Error code |
Definition at line 776 of file esputr2001.f90.
References esputr::esputr_unit, and fitvalues_th.
Referenced by esputr2001_getavailableenergyrangebyname(), esputr2001_test::esputr2001_test_availableenergyrange(), esputr2001_test::esputr2001_test_extrapolate_angular(), and writejsonarray().
logical, save, public esputr2001::esputr2001_extrapolate_angular =.FALSE. |
Switch for extrapolation of the angular dependency to energies for which no data are defined.
If .TRUE. then for energies E which are smaller than the minimum energy Emin for which the angular dependence data are specified the data for Emin are taken, Sobsequently, for E larger than the the maximum Emax the data for Emax are taken.
Default value is .FALSE.: no extrapolation, E<Emin and E>Emax produce error
WARNING: be careful with this option!!! Alwas whatch out how far the data are extrapolated. Using this extrapolation for E<<Emin or="" e>="">>Emax can lead to large error in the results.
Definition at line 49 of file esputr2001.f90.
Referenced by esputr2001_test::esputr2001_test_extrapolate_angular(), and esputr2001_yth().
integer, parameter, public esputr2001::esputr2001_max_name_length = 16 |
Maximum length of the names of (chemical) elements.
Definition at line 51 of file esputr2001.f90.
integer, parameter, private esputr2001::nconstants_n = 5 |
Number of parameters read from the input file for 2001-model for normal incidence (for one target/projectile combination)
Definition at line 55 of file esputr2001.f90.
Referenced by esputr2001_initn().
integer, parameter, private esputr2001::nconstants_th = 6 |
Number of parameters read from the input file for 2001-model for angular dependence (for one target/projectile combination)
Definition at line 58 of file esputr2001.f90.
Referenced by esputr2001_initth().
integer, save, private esputr2001::ncombinations_n |
Number of entries loaded for 2001-model for normal incidence.
Definition at line 60 of file esputr2001.f90.
Referenced by esputr2001_check(), esputr2001_initn(), and esputr2001_yn().
integer, save, private esputr2001::ncombinations_th |
Number of entries loaded for 2001-model for angular dependence.
Definition at line 62 of file esputr2001.f90.
Referenced by esputr2001_check(), esputr2001_initth(), and esputr2001_yth().
real(esputr_dp), dimension(:,:), allocatable, save, private esputr2001::fitvalues_n |
Array with parameters of fitting formula for normal incidence for 2001-model.
FITVALUES_N(nCombinations,NCONSTANTS_N)
2nd index stands for the target-projectile combination
Definition at line 75 of file esputr2001.f90.
Referenced by esputr2001_check(), esputr2001_deallocate(), esputr2001_eth(), esputr2001_if_initialized(), esputr2001_initn(), and esputr2001_yn().
real(esputr_dp), dimension(:,:), allocatable, save, private esputr2001::fitvalues_th |
Array with parameters read for angular dependence for 2001-model.
FITVALUES_TH(nCombinations,NCONSTANTS_TH)
2nd index stands for the target-projectile combination and incident energy
Here Y(E0,0) is the sputtering yield for normal incidence which came out of calculations - in general, this coefficient is not exactly equal to the one given by the fit.
Definition at line 93 of file esputr2001.f90.
Referenced by esputr2001_check(), esputr2001_deallocate(), esputr2001_getavailableenergyrange(), esputr2001_if_initialized(), esputr2001_initth(), and esputr2001_yth().
character(esputr2001_max_name_length), dimension(:,:), allocatable, save, private esputr2001::projectiles_targets_names_n |
Array of strings which contains the names of the target-projectile combinations defined for 2001-model (for normal incidence)
PROJECTILES_TARGETS_NAMES_N(NCOMBINATIONS_N,2)
1st index stands for the projectile/target combination, (:,1) is the projectile and (:,2) is the target
Definition at line 101 of file esputr2001.f90.
Referenced by esputr2001_availablecombinationsn(), esputr2001_check(), esputr2001_deallocate(), esputr2001_getprojectiletargetidn(), and esputr2001_initn().
character(esputr2001_max_name_length), dimension(:,:), allocatable, save, private esputr2001::projectiles_targets_names_th |
Array of strings which contains the names of the target-projectile combinations defined for 2001-model for the angular dependence.
PROJECTILES_TARGETS_NAMES_TH(NCOMBINATIONS_TH,2)
1st index stands for the projectile/target combination and incident energy, (:,1) is the projectile and (:,2) is the target
Definition at line 109 of file esputr2001.f90.
Referenced by esputr2001_availablecombinationsth(), esputr2001_check(), esputr2001_deallocate(), esputr2001_getprojectiletargetidsth(), and esputr2001_initth().
integer, save, private esputr2001::nprojectilestargetsth = 0 |
Number of projectile-target combinations loaded for angular dependence.
Same combination for different energies is counted only once.
Definition at line 113 of file esputr2001.f90.
Referenced by esputr2001_availablecombinationsth(), and esputr2001_initth().