Coverage for examples/minimal.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-14 15:55 +0200

1""" Minimal example of a running an simulation using gamdpy 

2 

3Simulation of a Lennard-Jones crystal in the NVT ensemble. 

4 

5""" 

6 

7import gamdpy as gp 

8 

9# Setup configuration: FCC Lattice 

10configuration = gp.Configuration(D=3) 

11configuration.make_lattice(gp.unit_cells.FCC, cells=[8, 8, 8], rho=0.973) 

12configuration['m'] = 1.0 

13configuration.randomize_velocities(temperature=0.7) 

14 

15# Setup pair potential: Single component 12-6 Lennard-Jones 

16pair_func = gp.apply_shifted_potential_cutoff(gp.LJ_12_6_sigma_epsilon) 

17sig, eps, cut = 1.0, 1.0, 2.5 

18pair_pot = gp.PairPotential(pair_func, params=[sig, eps, cut], max_num_nbs=1000) 

19 

20# Setup integrator: NVT 

21integrator = gp.integrators.NVT(temperature=0.7, tau=0.2, dt=0.005) 

22 

23# Setup runtime actions, i.e., actions performed during simulation of timeblocks 

24runtime_actions = [gp.TrajectorySaver(), 

25 gp.ScalarSaver(), 

26 gp.RestartSaver(), 

27 gp.MomentumReset(100)] 

28 

29# Setup Simulation.  

30sim = gp.Simulation(configuration, [pair_pot], integrator, runtime_actions, 

31 num_timeblocks=32, steps_per_timeblock=1*1024, 

32 storage='LJ_T0.70.h5') 

33 

34# Run simulation 

35for timeblock in sim.run_timeblocks(): 

36 print(sim.status(per_particle=True)) 

37print(sim.summary()) 

38 

39# Print current status of configuration 

40print(configuration) 

41 

42# Do analysis from the commandline (like computing MSD) with something like, 

43# python -m gamdpy.tools.calc_dynamics -f 4 -o msd.pdf LJ_T*.h5 

44# or with a Python script. See examples.