spis.Surf.InteractModel
Class DoublePowerLawRangeFunction

java.lang.Object
  extended byspis.Surf.InteractModel.FunctionOfParticle
      extended byspis.Surf.InteractModel.FunctionOfParticleE
          extended byspis.Surf.InteractModel.RangeFunction
              extended byspis.Surf.InteractModel.DoublePowerLawRangeFunction
All Implemented Interfaces:
ScalFunctionOf4Scal, ScalFunctionOfScal

public class DoublePowerLawRangeFunction
extends RangeFunction

Class Name : DoublePowerLawRangeFunction
Project ref : SPIS project
File name : DoublePowerLawRangeFunction.java
File type : class
Copyright : ONERA, 2 Av. E. Belin, 31055 Toulouse cedex, France http://www.onecert.fr
Status : under development
Creation : May 3, 2004
Modification :

Description : implements the range function l0*(r1*(E/E0)^n1 + r2*(E/E0)^n2).
Also returns the range function derivatives (= energy loss function...), which is used for approximate dose profile computation close to the surface, in particular for secondary emission.
The constructor inputs are in NASCAP units (Angstroms and keV, see below), but the computeXX() functions use SPIS more international units (meters and eVs)
In each ParameterSet (one set per material in ParameterSet[] parameter array), passed to the constructor, parameters must be:
- 0: NASCAP param 7: Range parameter r1 [Angstroms] in the range expression l0*(r1 (E/E0)^n1 + r2 (E/E0)^n2)
- 1: NASCAP param 8: Range parameter n1 [-]
- 2: NASCAP param 9: Range parameter r2 [Angstroms]
- 3: NASCAP param 10: Range parameter n2 [-]
NB: data in NASCAP databases are for E0 = 1000 eV (eV are energy units in SPIS), and l0 = 1e-10 m = 1A (length units are meters in SPIS, but E0 and l0 are defined in the constructors and values different of 1000 and 1e-10 may be used for non-NASCAP-originating parameters.

Versions and anomalies correction :

Version numberAuthor (name, e-mail) Corrections/Modifications
0.1 JF Roussel, roussel@onecert.frCreation


Version:
0.1
Author:
JF Roussel

Constructor Summary
DoublePowerLawRangeFunction(ParameterSet[] params_, float E0_, float l0_, int modelId, int particleId, PartTable partTable)
          Default constructor.
 
Method Summary
 float computeDeriv(float E)
          returns dR/dE as a function of energy
 float computeDeriv(float E, float matModId, float matId, float partId)
          returns dR/dE as a function of energy, depending on material Id (it is used for approximata dose profile computation close to the surface, in particular for secondary emission)
 float computeSecondDeriv(float E)
          returns d2R/dE2 as a function of energy
 float computeSecondDeriv(float E, float matModId, float matId, float partId)
          returns d2R/dE2 as a function of energy, depending on material Id (it may be used for approximata dose profile computation close to the surface, in particular for secondary emission)
 
Methods inherited from class spis.Surf.InteractModel.FunctionOfParticleE
compute, compute, compute, compute
 
Methods inherited from class spis.Surf.InteractModel.FunctionOfParticle
getDefaultParamsId, getMaterialRange, getModelId, getParticleId, getPartTable, setDefaultParams, setDefaultParamsId, setMaterialRange, setModelId, setParticleId, setPartTable
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DoublePowerLawRangeFunction

public DoublePowerLawRangeFunction(ParameterSet[] params_,
                                   float E0_,
                                   float l0_,
                                   int modelId,
                                   int particleId,
                                   PartTable partTable)
Default constructor.
Each parameter set

Parameters:
E0_ - reference energy in l0*(r1*(E/E0)^n1 + r2*(E/E0)^n2 law) (usually 1000 eV in NASCAP databases)
l0_ - reference length in l0*(r1*(E/E0)^n1 + r2*(E/E0)^n2 law) (usually 1e-10 in NASCAP databases)
partTable - particle table the particle Id refers to
Method Detail

computeDeriv

public float computeDeriv(float E,
                          float matModId,
                          float matId,
                          float partId)
Description copied from class: RangeFunction
returns dR/dE as a function of energy, depending on material Id (it is used for approximata dose profile computation close to the surface, in particular for secondary emission)

Specified by:
computeDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV as often)
matModId -
matId -
partId -
Returns:
d(range)/dE [m/eV]
See Also:
RangeFunction.computeDeriv(float, float, float, float)

computeDeriv

public float computeDeriv(float E)
Description copied from class: RangeFunction
returns dR/dE as a function of energy

Specified by:
computeDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV as often)
Returns:
d(range)/dE [m/eV]
See Also:
RangeFunction.computeDeriv(float)

computeSecondDeriv

public float computeSecondDeriv(float E,
                                float matModId,
                                float matId,
                                float partId)
Description copied from class: RangeFunction
returns d2R/dE2 as a function of energy, depending on material Id (it may be used for approximata dose profile computation close to the surface, in particular for secondary emission)

Specified by:
computeSecondDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV as often)
matModId -
matId -
partId -
Returns:
d2(range)/dE2 [m/eV2]
See Also:
RangeFunction.computeSecondDeriv(float, float, float, float)

computeSecondDeriv

public float computeSecondDeriv(float E)
Description copied from class: RangeFunction
returns d2R/dE2 as a function of energy

Specified by:
computeSecondDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV as often)
Returns:
d2(range)/dE2 [m/eV2]
See Also:
RangeFunction.computeSecondDeriv(float)