Esempio n. 1
0
def calculate_kinetic_energy():
    tmp_kin_energy = 0.
    for i in range(system.n_part):
        tmp_kin_energy+=1./2.*numpy.linalg.norm(system.part[i].v)**2.0
    
    print("tmp_kin_energy={}".format(tmp_kin_energy))
    print("analyze.energy(system)['ideal']={}".format(analyze.energy(system)["ideal"]))
Esempio n. 2
0
def main_loop():
    global energies
    print("run %d at time=%f " % (i, system.time))

    integrate.integrate(int_steps)
    mayavi.update()

    energies = analyze.energy(system=system)
    print(energies)
    plot.set_xdata(numpy.append(plot.get_xdata(), system.time))
    plot.set_ydata(numpy.append(plot.get_ydata(), energies['total']))
    obs_file.write('{ time %s } %s\n' % (system.time, energies))
    linear_momentum = analyze.analyze_linear_momentum(system=system)
    print(linear_momentum)
Esempio n. 3
0
def main_loop():
    global energies
    print("run %d at time=%f " % (i, system.time))

    integrate.integrate(int_steps)
    mayavi.update()

    energies = analyze.energy(system=system)
    print(energies)
    plot.set_xdata(numpy.append(plot.get_xdata(), system.time))
    plot.set_ydata(numpy.append(plot.get_ydata(), energies['total']))
    obs_file.write('{ time %s } %s\n' % (system.time, energies))
    linear_momentum = analyze.analyze_linear_momentum(system=system)
    print(linear_momentum)
Esempio n. 4
0
    def runTest(self):
        self.system.box_l = [self.box_l, self.box_l, self.box_l]
        self.system.skin = 0.4
        self.system.time_step = 0.01
        self.system.non_bonded_inter[0, 0].lennard_jones.set_params(
            epsilon=self.lj_eps, sigma=self.lj_sig,
            cutoff=self.lj_cut, shift="auto")

        for i in range(self.n_part):
            self.system.part.add(id=i, pos=np.random.random(3) * self.system.box_l)

        minimize=self.system.minimize_energy
        minimize.init(f_max=0.0, gamma=0.1, max_steps=10000, max_displacement=0.001)

        minimize.minimize()
        minimize.minimize()

        energy = analyze.energy(system=self.system) 

        assert( energy["total"] == 0 )
Esempio n. 5
0
system = espressomd.System()

#if no seed is provided espresso generates a seed

system.time_step = 0.01
system.skin = 0.4
system.box_l = [100, 100, 100]
system.thermostat.set_langevin(1.0, 1.0)
system.cell_system.set_n_square(use_verlet_lists=False)

system.non_bonded_inter[0, 0].lennard_jones.set_params(
    epsilon=1, sigma=1,
    cutoff=2**(1. / 6), shift="auto")

fene = interactions.FeneBond(k=10, d_r_max=2)
system.bonded_inter.add(fene)

poly = system.polymer
poly(N_P = 1, bond_length = 1.0, MPC=50, bond_id=0)


#############################################################
#      Integration                                          #
#############################################################

for i in range(20):
    integrate.integrate(1000)

    energies = analyze.energy(system=system)
    print energies
Esempio n. 6
0
set_file = open("pylj_liquid.set", "w")
set_file.write("box_l %s\ntime_step %s\nskin %s\n" %
               (box_l, system.time_step, system.skin))

#############################################################
#      Integration                                          #
#############################################################
print("\nStart integration: run %d times %d steps" % (int_n_times, int_steps))

# remove force capping
lj_cap = 0
system.nonBondedInter.setForceCap(lj_cap)
print(system.nonBondedInter[0, 0].lennardJones)

# print initial energies
energies = analyze.energy(system=system)
print(energies)

j = 0
for i in range(0, int_n_times):
    print("run %d at time=%f " % (i, system.time))

    integrate.integrate(int_steps)

    energies = analyze.energy(system=system)
    print(energies)
    obs_file.write('{ time %s } %s\n' % (system.time, energies))

# write end configuration
end_file = open("pylj_liquid.end", "w")
end_file.write("{ time %f } \n { box_l %f }\n" % (system.time, box_l))
Esempio n. 7
0
def main_loop():
    global energies, plt1_x_data, plt1_y_data, plt2_x_data, plt2_y_data, old_pressure

    integrate.integrate(int_steps)
    mayavi.update()

    # make sure the parameters are valid
    # not sure if this is necessary after using limit_range
    if controls.volume == 0:
        controls.volume = controls.min_vol
    if controls.number_of_particles == 0:
        controls.number_of_particles = 1
    if controls.pressure == 0:
        controls.pressure = controls.min_press

    pressure = analyze.pressure(system)

    
    # update the parameters set in the GUI
    system.thermostat.set_langevin(kT=controls.temperature, gamma=1.0)
    if controls.ensemble == 'NPT':
        # reset Vkappa when target pressure has changed
        
        if old_pressure != controls.pressure:
            analyze.Vkappa(system, 'reset')
            old_pressure = controls.pressure
            
        newVkappa = analyze.Vkappa(system, 'read')['Vk1']
        newVkappa = newVkappa if newVkappa > 0. else 4.0/(NPTGamma0*NPTGamma0*NPTInitPistonMass)
        pistonMass = limit_range(4.0/(NPTGamma0*NPTGamma0*newVkappa), NPTMinPistonMass, NPTMaxPistonMass)
        integrate.set_integrator_isotropic_npt(controls.pressure, pistonMass, cubic_box=True)
        
        controls.volume = system.box_l[0]**3.

    else:
        integrate.set_integrator_nvt()
        controls.pressure = pressure['total']
        
        new_box = numpy.ones(3) * controls.volume**(1./3.)
        if numpy.any(numpy.array(system.box_l) != new_box):
            for i in range(system.n_part):
                system.part[i].pos *= new_box / system.box_l[0]
        system.box_l = new_box

    new_part = controls.number_of_particles
    if new_part > system.n_part:
        for i in range(system.n_part, new_part):
            system.part.add(id=i, pos=numpy.random.random(3) * system.box_l)
    elif new_part < system.n_part:
        for i in range(new_part, system.n_part):
            system.part[i].delete()
    # There should be no gaps in particle numbers
    assert system.n_part == system.max_part + 1
    
    plt1_x_data = plot1.get_xdata()
    plt1_y_data = plot1.get_ydata()
    plt2_x_data = plot2.get_xdata()
    plt2_y_data = plot2.get_ydata()
    
    plt1_x_data = numpy.append(plt1_x_data[-plot_max_data_len+1:], system.time)
    if show_real_system_temperature:
        plt1_y_data = numpy.append(plt1_y_data[-plot_max_data_len+1:], 2./(3. * system.n_part)*analyze.energy(system)["ideal"])
    else:
        plt1_y_data = numpy.append(plt1_y_data[-plot_max_data_len+1:], system.temperature)
    plt2_x_data = numpy.append(plt2_x_data[-plot_max_data_len+1:], system.time)
    plt2_y_data = numpy.append(plt2_y_data[-plot_max_data_len+1:], pressure['total'])