Open main menu

CDOT Wiki β

Changes

Team NP Complete

2,371 bytes added, 01:54, 21 December 2017
no edit summary
The concept of ''quantum tunneling'' is a subset of the Quantum Mechanics branch of theoretical physics. The core concept of Quantum Mechanics is that on a microscopic level, particles behave strangely, often in counter-intuitive ways. ''Quantum Tunneling'' refers to the phenomenon in which particles pass through barriers if the particles have enough energy and if the barrier is thin enough. In essence, said particles 'ignore' the barrier, continuing on as if nothing were there at all.
[[File:TunnelEffektKling1.png|thumb|fig 1.1 Quantum tunnelling through a barrier. The energy of the tunnelled particle is the same but the probability amplitude is decreased.]]
'''Visualizing'''
Now replace the tennis ball with an electron. The electron, intuitively, would require a specific amount of energy needed to surpass a barrier, such as a gap of air. However, quantum mechanics and intuition tend not to occupy the same space! The electron, instead, always has a ''probability'' of passing through the barrier without ever having come in contact with the barrier in the first place. If this happens, the electron's probability will from there on out be lower than it was prior to tunneling through the barrier.
Keep in mind: this can really only happen happens on the particle level, and not even to all particles. Only particles with low mass and high energy are capable of quantum tunneling, at least consistently.  
==Program==
'''Without Parallel Processes'''
[[File:FFT.png|thumb|fig 2.1 Fourier transformation code block.]]
[[File:FT.png|thumb|fig 2.2 Fourier transformations are called, in which the potential energy half step is calculated, then the full kinetic energy step, then finally the final potential energy half step.]]
 
Originally, this program would calculate the path of a particle using Fourier transformations. These were used in place of the time resource consuming Schrodinger equations because the Schrodinger equations require the simulation to take into account, at each point: the potential energy after a half step, the kinetic energy after a whole step, then finally going back to take the potential energy of the half step. This was even more complicated because, for each particle, every neighboring particle had to be analyzed and accounted for as well. The Fourier transformations converted this into a simple process of multiplication, as shown in the code in figure 1.2:
 
After the values for all the particles' energies are calculated, they are rendered on the screen. Also rendered on the top left are the frames per second being rendered on the screen.
 
 
[[File:NonParallel.png|1000px|center|Non-Parallel Process]]
 
 
 
'''With Optimized Parallel Processes'''
[[File:PFFT.png|thumb|fig 3.1 Fourier transformation code block, with OpenMP parallelization.]]
[[File:PFT.png|thumb|fig 3.2 Fourier transformations called in OpenMP.]]
 
With the introduction of OpenMP into this project, several processes could be done in parallel. In the evolve() function, whenever a for loop was called, it could be parallelized because none of them had external variable dependencies. That eliminated quite a bit of overhead in the runtime. With the inclusion of OpenMP, the Fourier function, itself, was condensed substantially. This was achieved by introducing the Complex type into the program, so that complex calculations could be done in-line. The dynamic call to #pragma omp parallel also cut out a considerable amount of idle time that the CPU spent waiting to initialized all the threads that the program indicated that it required, rather than created threads on a need basis.
 
On this screen, the parallelized version of this code is running. Observe that the framerate is considerably better than the non-OpenMP program.
 
[[File:Parallel.png|1000px|center|Non-Parallel Process]]
'''Palatalization'''
'''==Comparison and Analyisis'''Analysis==
28
edits