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

1import numpy as np 

2 

3 

4def test_planar_interactions_old_interface() -> None: 

5 import math 

6 import numpy as np 

7 import gamdpy as gp 

8 

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) 

15 

16 compute_plan = gp.get_default_compute_plan(configuration) 

17 

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) 

28 

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") 

34 

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) 

47 

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') 

61 

62if __name__ == '__main__': 

63 test_planar_interactions_old_interface() 

64 test_planar_interactions()