From 5b50a43e97b322b0cc100ad990172ed7f98c6603 Mon Sep 17 00:00:00 2001 From: chrisjonesBSU Date: Mon, 10 Mar 2025 16:00:06 -0600 Subject: [PATCH] add ellipsoid chain sim unit test --- flowermd/tests/base/test_simulation.py | 43 ++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/flowermd/tests/base/test_simulation.py b/flowermd/tests/base/test_simulation.py index 9cce6989..148f76b5 100644 --- a/flowermd/tests/base/test_simulation.py +++ b/flowermd/tests/base/test_simulation.py @@ -11,10 +11,14 @@ from flowermd import Simulation from flowermd.base import Pack from flowermd.library import OPLS_AA_PPS -from flowermd.library.forcefields import BeadSpring -from flowermd.library.polymers import LJChain +from flowermd.library.forcefields import BeadSpring, EllipsoidForcefield +from flowermd.library.polymers import EllipsoidChain, LJChain from flowermd.tests import BaseTest -from flowermd.utils import get_target_box_mass_density, set_bond_constraints +from flowermd.utils import ( + create_rigid_ellipsoid_chain, + get_target_box_mass_density, + set_bond_constraints, +) class TestSimulate(BaseTest): @@ -403,6 +407,39 @@ def test_d_constrain_sim(self): sim.run_NVT(n_steps=10, kT=1.0, tau_kt=sim.dt * 100) assert sim.integrator.integrate_rotational_dof is True + def test_ellipsoid_chain_sim(self): + chain = EllipsoidChain( + lengths=15, num_mols=15, bead_mass=1, lpar=1, bond_L=0.0 + ) + system = Pack( + molecules=chain, + density=0.0005, + edge=5, + overlap=1, + fix_orientation=True, + ) + rigid_snap, rigid = create_rigid_ellipsoid_chain(system.hoomd_snapshot) + forces = EllipsoidForcefield( + angle_k=25, + angle_theta0=2.2, + bond_r0=0.0, + lpar=1, + lperp=0.5, + epsilon=1, + r_cut=3.0, + ) + sim = Simulation( + initial_state=rigid_snap, + constraint=rigid, + gsd_file_name="traj.gsd", + gsd_write_freq=100, + forcefield=forces.hoomd_forces, + ) + assert isinstance(sim._rigid_constraint, hoomd.md.constrain.Rigid) + assert sim._distance_constraint is None + sim.run_NVT(n_steps=10, kT=1.0, tau_kt=sim.dt * 100) + assert sim.integrator.integrate_rotational_dof is True + def test_save_restart_gsd(self, benzene_system): sim = Simulation.from_system(benzene_system) sim.save_restart_gsd("restart.gsd")