Coverage for tests/test_planar_interactions.py: 91%
47 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1import numpy as np
4def test_planar_interactions_old_interface() -> None:
5 import math
6 import numpy as np
7 import gamdpy as gp
9 # Create a configuration object
10 rho, T = 1.5, 1.44
11 configuration = gp.Configuration(D=3, compute_flags={'lapU':True})
12 configuration.make_positions(N=768, rho=rho)
13 configuration['m'] = 1.0
14 configuration.randomize_velocities(temperature=T)
16 compute_plan = gp.get_default_compute_plan(configuration)
18 # Set up a wall
19 wall_dist = 6.31 # Ingebrigtsen & Dyre (2014)
20 A = 4.0*math.pi/3*rho
21 wall_potential = gp.apply_shifted_force_cutoff(gp.make_LJ_m_n(9,3))
22 potential_params_list = [[A/15.0, -A/2.0, 3.0], [A/15.0, -A/2.0, 3.0]] # Ingebrigtsen & Dyre (2014)
23 particles_list = [np.arange(configuration.N), np.arange(configuration.N)] # All particles feel the walls
24 wall_point_list = [[0, 0, wall_dist/2.0], [0, 0, -wall_dist/2.0] ]
25 normal_vector_list = [[0,0,1], [0,0,-1]]
26 walls = gp.setup_planar_interactions(configuration, wall_potential, potential_params_list,
27 particles_list, wall_point_list, normal_vector_list, compute_plan, verbose=True)
29 assert isinstance(walls, dict), "gp.setup_planar_interactions should return a dictionary but has not"
30 try: value = walls['interactions']
31 except KeyError: print("gp.setup_planar_interactions should have 'interactions' key but it hasn't")
32 try: value = walls['interaction_params']
33 except KeyError: print("gp.setup_planar_interactions should have 'interaction_params' key but it hasn't")
35def test_planar_interactions() -> None:
36 import gamdpy as gp
37 # Make planar interaction
38 N = 16
39 potential = gp.harmonic_repulsion
40 eps, sig = 1.0, 1.0
41 params = [[eps, sig], [eps, sig]]
42 indices = [[i, 0] for i in range(N)]
43 indices += [[i, 1] for i in range(N)]
44 normal_vectors = [[1,0,0], [-1,0,0]]
45 points = [[-10,0,0], [10,0,0]]
46 planar = gp.interactions.Planar(potential, params, indices, normal_vectors, points)
48 # Test that it can be passed to sim object
49 rho, T = 1.5, 1.44
50 configuration = gp.Configuration(D=3, compute_flags={'lapU':True})
51 configuration.make_positions(N=768, rho=rho)
52 configuration['m'] = 1.0
53 configuration.randomize_velocities(temperature=T)
54 compute_plan = gp.get_default_compute_plan(configuration)
55 integrator = gp.integrators.NVE(dt=0.01)
56 runtime_actions = [gp.TrajectorySaver(),
57 gp.ScalarSaver(steps_between_output=1)]
58 sim = gp.Simulation(configuration, [planar, ], integrator, runtime_actions,
59 num_timeblocks=2, steps_per_timeblock=16,
60 storage='memory')
62if __name__ == '__main__':
63 test_planar_interactions_old_interface()
64 test_planar_interactions()