Beispiel #1
0
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")
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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")
Beispiel #5
0
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)
Beispiel #6
0
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")
Beispiel #7
0
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")
Beispiel #8
0
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)