Question: python project help appreciated Monte-Carlo transport project Simulate electron transport in a cylindrical Geiger counter filled with Helium gas. This project attempts to simulate the

python project help appreciated
Monte-Carlo transport project Simulate electron transport in a cylindrical Geiger counter filled with Helium gas. This project attempts to simulate the microscopic transport of electrons in Helium gas under the influence of an electric field. The challenge for this modelling task is to implement the physics of electron-atom scattering with the kinematics of the Lorentz force on an electron in an electric field. Scattering is a quantum process which takes place probabilistically depending on the kinetic energy of the charge. However, this kinetic energy depends on the discrete step in time the program decides to take since the electric field keeps accelerating the electron. The contradiction between the requirement for a constant, discrete time step and a probabilitic waiting time step, i.e. the time to the next scattering reaction as a function of kinetic energy, is solved by the null-collision simulation method. A description of the method can be found below. Find all technical requirements for the code below. - Write a function run(charges, voltage) that starts the simulation and returns (a) a list of lists of arrays of electron interaction locations in 3D in order to draw the required scatterplot, see below and (b) a list of total transport times for every electron. Input charges is a list of a single array with the starting position of the first electron (in 3D) and represents the charge pool container (the list) to store all electron starting locations that have not yet been transported. The voltage input is a number that needs to reach the electric field calculation function (for you to write) for flexibility in the simulation configuration. - Geometry: Let the cylindrical Geiger counter long axis be defined alongsihe z-axis. Set the anode wire with radius 8.0 - 5m at the origin; the cathode cylinder radius is 1.0e2m and the anode bias is set at 1000 Volt. Start a single electron at a radial distance of 3.0m. - Transport should be simulated using the null-collision method. A pseudo-code demonstrating the method is shown and discussed below. - Electrons can scatter elastically or ionize the gas using inelastic scattering. Each ionization should increase the number of electrons to transport by one (store it in the charge pool). The original electron which requires further, subsequent, transport should carry on after ionization (however, see condition below). The two cross section functions have been pre-coded for you. A function randomly choosing between the processes as a function of energy in eV is also given. - In case of elastic scattering, simply change (i.e. rotate) the velocity vector direction randomly in the forward hemisphere, i.e. towards the wire, and leave the magnitude unchanged. The only velocity magnitude (and direction) changes in the entire code should arise from acceleration due to the electric field. That 'forward' scattering statement is an arbitrary, simple, requirement. Forward scattering in electron-atom interactions is dominant but the angular distributions (which we would realistically need here) are complicated hence ignore them here. - The case of an inelastic collision should reset the electron velocity vector to thermal energy (0.025eV ), set the dynamic null collision constant kv=0 (see below) and store the location of the electron in the charge pool (identical to creating an additional electron since the original carries on being transported) for later transport. - Count all interactions for all electrons and store all inelastic collision locations and 1 in 1000 elastic collision locations. Otherwise, there will be too many collisions to store and to draw! The model solution produced between 711 thousand electrons in test runs with the given conditions, each with thousands of interaction locations stored. - Suppress single electron starting positions from the pool of charges closer than 5e4m : if math.hypot (pos [], pos [1])
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
