Add IsotropicMobilityChargeDriftModel
This model was called as IsotropicMobilityChargeDriftModel because it uses identity-like mobility tensor:
$$v_{i}^{e,h} = \mu_{ij}^{e,h}\cdot E_{i}^{e,h}=\mu^{e,h}\cdot E_{i}^{e,h}$$
The semiconductor should have material properties μ_e and μ_h. Like in example:
...
μ_e = 1350u"cm^2/V/s",
μ_h = 120u"cm^2/V/s"
The usage example is the following:
μ_e = sim.detector.semiconductor.material.μ_e
μ_h = sim.detector.semiconductor.material.μ_h
sim.detector = SolidStateDetector(sim.detector, IsotropicMobilityChargeDriftModel{T}(μ_e,μ_h))
I did not implement overload for configs or other type of args for the model, cause it is not needed for now.
@fhagemann can we add a short test for this to CI without adding to much testing time?
@Padniuk do not worry about the failing tests: these are because the tests are running on julia-1.11 instead of julia-1.10. There is a PR addressing this already: #419
Downgrade fails because some package versions are not allowed by julia-1.11 anymore. The x86 tests fail because Geant4 does not run on 32bit.
- I would maybe opt for a shorter name, something like
IsotropicChargeDriftModel? - Am I correct in assuming that you don't expect any saturation at higher electric fields?
If yes, does it make sense to build a model based on the
Vlmethods inADLChargeDriftModel,just without the drift anisotropy (basciallygetVe(...) = Vl(...)andgetVh(...) = Vl(...))? - For ADLChargeDriftModel, we are reading parameters from a configuration file (see
examples/example_config_files/ADLChargeDriftModel). I guess the mobility values in CdZnTe are temperature-dependent, so it would probably be best to feed these values via a configuration file as well or in code as you proposed:sim.detector = SolidStateDetector(sim.detector, IsotropicChargeDriftModel{T}(1350u"cm^2/(V*s)", 120u"cm^2/(V*s)"))
@oschulz
- Yes, that name suits better
- The question is not easy. I use this model for temperatures 293K and voltages around 500V, or it is better to say, voltages with order around 500V. For such purposes, model shows realistic results. Of course, this model does not cover full temperature and electric field value ranges. It was implemented just to add the easiest description of semiconductor drift.
- Yes, such functionality can be implemented
Do you wanna add this or should I push changes to your PR?
I will add these changes but a little bit later.
Alright, thanks and no rush! :)
The tests should not fail anymore with the next commit you push (#424)
I just pushed a fix for the naming issue of CdZnTe in the Geant4 material list to main (#429).
As a consequence, you now have a merge conflict in that file. Could you remove the part in your commit that updates the Geant4 extension?