def Task2c_i(): print("TASK : Task2c_i") maxTime = 5 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler Cromer) 1.5 sigma", "2ci_allEnergiesCromer095") particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([0.95, 0.0, 0.0]), v0, N, constants.mass) ] MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler Cromer) 0.95 sigma", "2ci_allEnergiesCromer15")
def Task2FasterCompare2(): print("TASK : Task2FasterCompare2") maxTime = 0.7 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] #particles = [MDParticle.Particle('left', 'Ar', np.array([0.0,0.0,0.0] ), v0, N, constants.mass)] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.velocityVerlet, particles, T, N) #MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Test slow", "testSlow") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVerSlow", N, 50) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] #particles = [MDParticle.Particle('left', 'Ar', np.array([0.0,0.0,0.0] ), v0, N, constants.mass)] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solveFaster(MDSolver.velocityVerletFast2, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Test fast", "testFast") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVerFast", N, 50)
def Task3b_i(): print("TASK : Task3b_i") maxTime = 5 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) print("Verification by reproduction of the two atom simulation") ## Create particless #createParticles(3, "AR", 1, particles, T, N) # solveFaster(velocityVerletFast2, particles, T, N, constants.cutOffRange) #WriteXYZFile(particles,"threeparticlesVelFast") particles = [ MDParticle.Particle('left', 'Ar', np.array([0., 0., 0.]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDSolver.solve(MDSolver.velocityVerlet, particles, T, N) #MDPlot.plotAllEnergies(particles, t, "Total Energy (Velocity Verlet) 1.5 sigma", "allEnergies15velocityVerlet15") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVer15", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0., 0., 0.]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDSolver.solveFaster(MDSolver.velocityVerletFast2, particles, T, N) #MDPlot.plotAllEnergies(particles, t, "Total Energy (Velocity Verlet)(fast) 1.5 sigma", "allEnergies15velocityVerlet15fast") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVer15Fast", N)
def Task2b_iv(): print("TASK : Task2b_iv") maxTime = 5 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([0.95, 0.0, 0.0]), v0, N, constants.mass) ] MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotDistanceBetween(t, "Distance, sig = 0.95", particles[0], particles[1], "two-particle-distance-095")
def Task2b_i(): print("TASK : Task2b_i") maxTime = 5 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0., 0.]), v0, N, constants.mass) ] MDSolver.solve(MDSolver.eulerCromer, particles, T, N)
def Task4a_ii(): print("TASK : Task4a_ii") maxTime = 10 t, N, T = SetTime(maxTime, increments) t_initial = 300 particles = MDGenerators.PopulateCreateCrystalStructure( 3, "Ar", 1.7, N, constants.mass, t_initial) MDFileWriter.WriteFirstFrame(particles, "firstFrame", N) #MDFunctions.MoveToCentreOfBox(particles) #MDSolver.solveFaster(MDSolver.velocityVerletFast2, particles, maxTime, N) MDSolver.solve(MDSolver.velocityVerlet, particles, maxTime, N, constants.eps, constants.sig) MDFileWriter.WriteXYZFile(particles, "checkthis_slow", N) chartName = f"4a) ii Temp ({t_initial} K) (slow)" MDPlot.plotTemperature(particles, t, N, chartName, "4a_ii")
def Task4a_iii(): print("TASK : Task4a_iii") maxTime = 10 t_initial = 250 t, N, T = SetTime(maxTime, increments) particles = MDGenerators.PopulateCreateCrystalStructure( 3, "Ar", 1.7, N, constants.mass, t_initial) MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.velocityVerlet, particles, maxTime, N, constants.eps, constants.sig) #temp = MDFunctions.ComputeTemperatureReduced(N-1, particles, constants.eps) #print(f"AT time {maxTime} temperature is {temp} kelvin") chartName = f"4a) iii Temp ({t_initial} K) (slow)" MDPlot.plotTemperature(particles, t, N, chartName, "4a_iii_slow")
def Task2c_iv(): print("TASK : Task2c_iv") maxTime = 5 t, N, T = SetTime(maxTime, increments) v0 = np.array([0, 0, 0]) particles = [ MDParticle.Particle('left', 'Ar', np.array([0., 0., 0.]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.euler, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler) 1.5 sigma", "2civ_allEnergiesEuler15") MDFileWriter.WriteXYZFile(particles, "twoparticlesEuler15", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0., 0., 0.]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler Cromer) 1.5 sigma", "2civ_allEnergiesEulerCromer15") MDFileWriter.WriteXYZFile(particles, "twoparticlesEulerCromer15", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0., 0., 0.]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([1.5, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.velocityVerlet, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Velocity Verlet) 1.5 sigma", "2civ_allEnergiesVelocityVerlet15") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVer15", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([0.95, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.eulerCromer, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler) 0.95 sigma", "2civ_allEnergiesEuler095") MDFileWriter.WriteXYZFile(particles, "twoparticlesEuler095", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([0.95, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDFileWriter.WriteXYZFile(particles, "twoparticlesEulerCromer095", N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Euler Cromer) 0.95 sigma", "2civ_allEnergiesEulerCromer095") MDFileWriter.WriteXYZFile(particles, "twoparticlesEulerCromer095", N) particles = [ MDParticle.Particle('left', 'Ar', np.array([0.0, 0.0, 0.0]), v0, N, constants.mass), MDParticle.Particle('right', 'Ar', np.array([0.95, 0.0, 0.0]), v0, N, constants.mass) ] MDFunctions.MoveToCentreOfBox(particles) MDSolver.solve(MDSolver.velocityVerlet, particles, T, N) MDPlot.plotAllEnergies(particles, t, "Total Energy (Velocity Verlet) 0.95 sigma", "2civ_allEnergiesVelocityVerlet095") MDFileWriter.WriteXYZFile(particles, "twoparticlesVelVer095", N)