ESPUTR
calculation of sputtering yields
Functions/Subroutines | Variables
esputr2001 Module Reference

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...
 

Function/Subroutine Documentation

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

Parameters
[in]filennameName of the input file with the data for normal incidence
[in]filethnameName of the input file with the data for angular dependence
[out]errError 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().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public esputr2001::esputr2001_initn ( character(*), intent(in)  fileNName,
integer, intent(out)  err 
)
Parameters
[in]filennameName 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().

Here is the caller graph for this function:

subroutine, public esputr2001::esputr2001_initth ( character(*), intent(in)  fileTHName,
integer, intent(out)  err 
)
Parameters
[in]filethnameName 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().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public esputr2001::esputr2001_check ( integer, intent(out)  res,
integer, intent(out)  err 
)

Check integrity and validity of data in the module.

Parameters
[out]resCode of the result
  • 0: module fully initialized and the data in both arrays are valid
  • 1: the data arrays are not allocated
  • 2: inconsistent array size
  • 3: lambda <= 0
  • 4: q <= 0
  • 5: E_th <= 0
  • 6: eps < 0
  • 7: E0 < 0
  • 8: E_sp < 0
  • 9: non monotonically increasing energies in the data for angular dependence
Parameters
[out]errError 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().

Here is the caller graph for this function:

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().

Here is the caller graph for this function:

subroutine, public esputr2001::esputr2001_deallocate ( integer, intent(out)  err)
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

Parameters
[in]projString with the name of the projectile
[in]targString with the name of the target
[out]errError code
  • 151: requested projectile-target combination is not found

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().

Here is the caller graph for this function:

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

Parameters
[in]projString with the name of the projectile
[in]targString with the name of the target
[out]thlowerFirst ID (first entry in table for this projectile-target combination)
[out]thupperSecond ID (last entry in table for this projectile-target combination)
[out]errError code
  • 152 : requested projectile-target combination is not found

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().

Here is the caller graph for this function:

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

Parameters
[in]e0Incident energy, eV
[in]projectiletarget_idID of the projectile-target combination returned by esputr2001_getProjectileTargetIdN
[out]errError 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().

Here is the caller graph for this function:

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.

Parameters
[in]thetaAngle of incidence, radian

Angle between surface normal and the incident velocity: 0 for normal incidence

Parameters
[in]projtargstartidFirst index returned by esputr2001_getProjectileTargetIdsTh
[in]projtargendidSecond index returned by esputr2001_getProjectileTargetIdsTh
[out]errError code
  • 153: projTargStartId is out of bounds
  • 154: projTargEndId is out of bounds
  • 155: inconsistent projTargStartId and projTargEndId
  • 156: incident energy < 0
  • 157: incident angle < 0 or > pi/2
  • 158: no data available for specified incident energy

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().

Here is the caller graph for this function:

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.

Parameters
[in]projectiletarget_idID of the projectile-target combination returned by esputr2001_getProjectileTargetIdN
[out]errError 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().

Here is the caller graph for this function:

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.

Parameters
[in,out]combinations(:,1) are the projectiles, (:,2) are the targets
[out]errError code

Definition at line 718 of file esputr2001.f90.

References esputr::esputr_unit, and projectiles_targets_names_n.

Referenced by sendavailablecombinations().

Here is the caller graph for this function:

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.

Parameters
[in,out]combinations(:,1) are the projectiles, (:,2) are the targets
[out]errError code

Definition at line 740 of file esputr2001.f90.

References esputr::esputr_unit, nprojectilestargetsth, and projectiles_targets_names_th.

Referenced by sendavailablecombinations().

Here is the caller graph for this function:

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.

Parameters
[in]projtargstartidFirst index returned by esputr2001_getProjectileTargetIdsTh
[in]projtargendidSecond index returned by esputr2001_getProjectileTargetIdsTh
[out]eminMinimum energy for which the data for angular dependence is available
[out]emaxMaximum energy for which the data for angular dependence is available
[out]errError 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().

Here is the caller graph for this function:

Variable Documentation

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

  • FITVALUES_N(1,:) is lambda
  • FITVALUES_N(2,:) is q
  • FITVALUES_N(3,:) is mu
  • FITVALUES_N(4,:) is E_th
  • FITVALUES_N(5,:) is eps (E_tf)

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

  • FITVALUES_TH(1,:) is the incident energy E0
  • FITVALUES_TH(2,:) is f
  • FITVALUES_TH(3,:) is b
  • FITVALUES_TH(4,:) is c
  • FITVALUES_TH(5,:) is Y(E0,0)
  • FITVALUES_TH(6,:) is E_sp

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().