You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The parameters $\mu_{0}$, $E_{0}$ and $\beta$ differ for electrons and holes, and $\mu_{n}$ is only relevant for electrons. These parameters were obtained by [B. Bruyneel et al.](https://www.sciencedirect.com/science/article/pii/S0168900206015166) by measuring the drift velocities of electrons and holes in the $\langle$100$\rangle$ and $\langle$111$\rangle$ directions in high purity germanium at a temperature of 78 K. These parameters are stored in a configuration file, "drift\_velocity\_config.yaml", located in `<package_directory>/example/example_config_files/ADLChargeDriftModel`. The configuration file is expressed as following:
47
+
The parameters $\mu_{0}$, $E_{0}$ and $\beta$ differ for electrons and holes, and $\mu_{n}$ is only relevant for electrons. These parameters were obtained by [B. Bruyneel et al.](https://www.sciencedirect.com/science/article/pii/S0168900206015166)in 2006 and by [B. Bruyneel et al.](https://link.springer.com/article/10.1140/epja/i2016-16070-9) in 2016 by measuring the drift velocities of electrons and holes in the $\langle$100$\rangle$ and $\langle$111$\rangle$ directions in high purity germanium at a temperature of 77 K. These parameters are stored in a configuration file, "drift\_velocity\_config.yaml" and "drift\_velocity\_config\_2016.yaml" respectively, located in `<package_directory>/example/example_config_files/ADLChargeDriftModel`. The configuration file is expressed as following:
48
48
49
49
50
50
```yaml
@@ -75,22 +75,61 @@ drift:
75
75
E0: 182V/cm
76
76
```
77
77
78
-
where the parameters are stored under the keys `e100`, `e111`, `h100` and `h111`, in which `e` and `h` stand for electrons and holes, respectively, and `100` and `111`, for the principal axes $\langle$100$\rangle$ and $\langle$111$\rangle$.
78
+
where the parameters are stored under the keys `e100`, `e111`, `h100` and `h111`, in which `e` and `h` stand for electrons and holes, respectively, and `100` and `111`, for the principal axes $\langle$100$\rangle$ and $\langle$111$\rangle$. In the 2016 publication, no `e111` is given, instead the electron inter valley scattering rate is given. With these parameters the drift velocity can be calculated for the other axes.
79
+
80
+
```yaml
81
+
model: ADL2016ChargeDriftModel
82
+
phi110: -45°
83
+
material: HPGe
84
+
drift:
85
+
velocity:
86
+
model: Bruyneel2016
87
+
parameters:
88
+
e100:
89
+
mu0: 37165cm^2/(V*s)
90
+
beta: 0.804
91
+
E0: 507.7V/cm
92
+
mun: -145cm^2/(V*s)
93
+
escattering:
94
+
eta0: 0.496
95
+
b: 0.0296
96
+
Eref: 1200V/cm
97
+
h100:
98
+
mu0: 62934cm^2/(V*s)
99
+
beta: 0.735
100
+
E0: 181.9V/cm
101
+
h111:
102
+
mu0: 62383cm^2/(V*s)
103
+
beta: 0.749
104
+
E0: 143.9V/cm
105
+
```
106
+
79
107
By default, in `SolidStateDetectors.jl` the $\langle$001$\rangle$ axis is aligned with the Z-axis of the coordinate system of the simulation. The crystal orientation can be set through the `phi110` parameter, where the $\langle$001$\rangle$ axis is still aligned with the Z-axis and the angle between the $\langle$110$\rangle$ principal direction of the crystal and the X-axis is given by `phi110`. Alternatively, the crystal orientation can be set by passing a rotation matrix that describes the rotation from the global coordinate system to the crystal orientation system.
80
108
81
109
82
110
If the electric field is not aligned with any of the crystal axes, the charge drift velocity is not necessarily aligned with the electric field. In the [`ADLChargeDriftModel`](@ref), two models are implemented to describe the charge drift of electrons and holes between the axes. Detailed information about the charge drift models is provided in the papers from [L. Mihailescu et al. ](https://www.sciencedirect.com/science/article/pii/S0168900299012863) for electrons and from [B.Bruyneel et al.](https://www.sciencedirect.com/science/article/pii/S0168900206015166) for holes. Find the detailed calculations and modifications from the publications as implemented in SolidStateDetectors.jl [here](../assets/ADLChargeDriftModel.pdf).
83
111
84
112
85
-
In order to perform the calculation of the drift velocities, a configuration file containing the parametrization values like the "drift\_velocity\_config.yaml" (with Bruyneel's data or modified values), has to be passed as an argument to the `ADLChargeDriftModel` function. The precision of the the calculation `T` (`Float32` or `Float64`) has to be given as a keyword `T`. Note that `T` has to be of the same type as the chosen in the simulation:
113
+
In order to perform the calculation of the drift velocities, a configuration file containing the parametrization values like the "drift\_velocity\_config.yaml" (with Bruyneel's data or modified values), has to be passed as an argument to the `ADLChargeDriftModel` or `ADL2016ChargeDriftModel` function. The precision of the calculation `T` (`Float32` or `Float64`) has to be given as a keyword `T`. Note that `T` has to be of the same type as the chosen in the simulation:
86
114
87
115
```julia
88
116
T = SolidStateDetectors.get_precision_type(sim) # e.g. Float32
Default constructors such as `ADL2016ChargeDriftModel()` and `ADL2016ChargeDriftModel(T=T)` are also available. These automatically load the parameters from the files in `<package_directory>/example/example_config_files/ADLChargeDriftModel`
122
+
93
123
The `ÀDLChargeDriftModel` can also be specified already in the configuration file as field `charge_drift_model` of the `semiconductor` of a detector, e.g.
@@ -121,27 +160,57 @@ The `charge_drift_model` needs:
121
160
- `material` (optional): the semiconductor material. If no material is given, the `material` of the semiconductor is taken by default.
122
161
- `drift`: the parameters needed to describe the longitudinal drift velocity along the $\langle$100$\rangle$ and $\langle$111$\rangle$ axes, see above.
123
162
124
-
The values from the default configuration file correspond to germanium at 78 K. Calculations of the drift velocities at other temperatures are also supported by the `ADLChargeDriftModel`. While experimental observations suggest that the charge mobilities of electrons and holes in the crystal are temperature dependent, the dependency law has not yet been established. Several models have been proposed to reproduce the experimental behavior, and some examples of them can be found in the directory `<package_directory>/src/ChargeDriftModels/ADL/`. The examples include a linear model, a Boltzmann model and a power-law model. To use these models in the calculation of the drift velocities, the corresponding configuration file, the temperature and the precision must be given to the function. As an example, in order to use the Boltzmann model at a temperature of 100 K:
163
+
The values from the default configuration file correspond to germanium at 77 K. Calculations of the drift velocities at other temperatures are also supported by the `ADLChargeDriftModel`. A parametrization for the temperature dependence of drift velocity, as a function of the electric
164
+
field strength, $E$, was proposed by [M.A. Omar and L. Reggiani](https://www.sciencedirect.com/science/article/pii/0038110187900633):
The implementation of the model can be found in the directory `<package_directory>/src/ChargeDriftModels/ADLChargeDriftModel/TemperatureModels`. To use this in the calculation of the drift velocities, the corresponding configuration file, the temperature and the precision must be given to the function.
125
179
126
180
```julia
127
181
T = SolidStateDetectors.get_precision_type(sim) # e.g. Float32
128
-
charge_drift_model = ADLChargeDriftModel("<path_to_drift_velocity_config_boltzmann.yaml>", T = T, temperature = 100)
182
+
charge_drift_model = ADL2016ChargeDriftModel("<path_to_ADL_configuration_file>", T = T, temperature = 100u"K")
If no temperature is given as a parameter, the calculations will be performed at a default temperature of 78 K.
187
+
If no temperature is given as a parameter, the calculations will be performed at a default temperature of 77 K. If no configuration file is given, the default config file `<package_directory>/example/example_config_files/ADLChargeDriftModel/drift_velocity_config_2016.yaml` is loaded. In charge drift configuration files, the M.A. Omar and L. Reggiani parametrization can be used by adding the following `temperature_dependence` field like this:
134
188
135
-
It should be noted that the correct model has not yet been identified, and the parameters inside these configuration files -besides the default ADL ones- are just educated guesses.
189
+
```yaml
190
+
temperature_dependence:
191
+
reference_temperature: 77K
192
+
model: Omar1987
193
+
parameters:
194
+
e:
195
+
p: 1.68
196
+
theta: 200K
197
+
h:
198
+
p: 2.4
199
+
theta: 200K
200
+
```
136
201
202
+
For convenience, this model can already be found in the `drift_velocity_config.yaml` and `drift_velocity_config_2016.yaml` example config files.
203
+
204
+
!!! note
205
+
The default parameters used in this model were calculated by [M.A. Omar and L. Reggiani](https://www.sciencedirect.com/science/article/pii/0038110187900633) before the publication of the `ADLChargeDriftModel` parameters, with $\beta = 2$. Thus, the use of this model to scale the drift parameters in `ADLChargeDriftModel` or `ADL2016ChargeDriftModel` is considered experimental.
137
206
138
207
### Inactive Layer Charge Drift Model
139
208
140
209
The [`InactiveLayerChargeDriftModel`](@ref) describes a system in which electrons and holes move along the electric field lines. The mobilities for electrons and holes are scalar ($+$ for holes, and $-$ for electrons), and thus, the velocity field has the same (or opposite) direction as the electric field.
141
210
142
211
The mobilities are calculated considering three major scattering process: scattering off ionized impurities, neutral impurities and acoustic phonons. Thus, the mobilities depend on the impurity concentrations and temperature.
143
212
144
-
The precision of the the calculation `T` (`Float32` or `Float64`) has to be given as a keyword `T`. Note that `T` has to be of the same type as the chosen in the simulation:
213
+
The precision of the calculation `T` (`Float32` or `Float64`) has to be given as a keyword `T`. Note that `T` has to be of the same type as the chosen in the simulation:
145
214
146
215
The `InactiveLayerChargeDriftModel` can be specified in the configuration file as field `charge_drift_model` of the `semiconductor` of a detector, e.g.
147
216
@@ -416,7 +485,7 @@ using SolidStateDetectors #hide
For an [`NBodyChargeCloud`](@ref) consisting of more than around 50 charges, the shells should consist of more than 20 point charges and the approach with using [Platonic Solids](@ref) for the shell structure might not be favored anymore. For this, a [second algorithm](https://www.cmu.edu/biolphys/deserno/pdf/sphere_equi.pdf) was implemented that generates point charges equally distributed on the surface of a regular sphere. The approximate number of charges needs to be passed to the constructor of [`NBodyChargeCloud`](@ref) to use this method.
Diffusion describes the random thermal motion of charge carriers. In SolidStateDetectors.jl, diffusion is simulated using a random walk algorithm. Diffusion is simulated using fixed-step vectors where the magnitude of the step vectors depends on the diffusion constant $D$ and the time steps $\Delta t$.
@@ -478,11 +547,11 @@ After the creation electron-hole pairs, both the electron and the hole clouds re
478
547
SolidStateDetectors.jl does not account for attraction of electron and holes but only for repulsion of charge carriers of the same type. The determination of the electric field vector is calculated pair-wise for each pair of charge carriers.
Copy file name to clipboardExpand all lines: docs/src/man/config_files.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -87,7 +87,7 @@ units:
87
87
```
88
88
will lead to all `length` values to be parsed in units of `mm`, while all `angle` values will be parsed in units of `deg` (degree).
89
89
90
-
The configuration files also allow for directly passing units to the values that will be parsed using `uparse` from the [Unitful.jl](https://github.com/PainterQubits/Unitful.jl) package, e.g.
90
+
The configuration files also allow for directly passing units to the values that will be parsed using `uparse` from the [Unitful.jl](https://github.com/JuliaPhysics/Unitful.jl) package, e.g.
91
91
```yaml
92
92
units:
93
93
length: mm
@@ -114,7 +114,7 @@ tube:
114
114
to: 4cm
115
115
h: 6cm
116
116
```
117
-
In the last example, even if the `length` unit was set to `mm`, the values will be parsed in units of `cm`. Please note to not leave a white space between the value and the unit and to use the [Unitful.jl](https://github.com/PainterQubits/Unitful.jl) notation.
117
+
In the last example, even if the `length` unit was set to `mm`, the values will be parsed in units of `cm`. Please note to not leave a white space between the value and the unit and to use the [Unitful.jl](https://github.com/JuliaPhysics/Unitful.jl) notation.
0 commit comments