def test_dihedral_harmonic(self): ftl_lambda = espressopp.FixedQuadrupleListLambda(self.system.storage) ftl_lambda.addQuadruples([(1, 2, 3, 4)]) ftl = espressopp.FixedQuadrupleList(self.system.storage) ftl.addQuadruples([(1, 2, 3, 4)]) interactionLambda = espressopp.interaction.FixedQuadrupleListLambdaDihedralRB( self.system, ftl_lambda, self.potential) interaction = espressopp.interaction.FixedQuadrupleListDihedralRB( self.system, ftl, self.potential) self.assertAlmostEqual(interaction.computeEnergy(), interactionLambda.computeEnergy())
def test_dihedral_harmonic_lambda(self): ftl_lambda = espressopp.FixedQuadrupleListLambda(self.system.storage) ftl_lambda.addQuadruples([(1, 2, 3, 4), (2, 1, 3, 4)]) ftl = espressopp.FixedQuadrupleList(self.system.storage) ftl.addQuadruples([(1, 2, 3, 4), (2, 1, 3, 4)]) interactionLambda = espressopp.interaction.FixedQuadrupleListLambdaDihedralRB( self.system, ftl_lambda, self.potential) interaction = espressopp.interaction.FixedQuadrupleListDihedralRB( self.system, ftl, self.potential) self.fixed_dynamic_resolution.register_quadruple_list(ftl_lambda, -0.5) self.integrator.run(1) self.assertAlmostEqual(0.5 * interaction.computeEnergy(), interactionLambda.computeEnergy())
def test_dihedral_harmonic_types_lambda(self): ftl_lambda = espressopp.FixedQuadrupleListLambda(self.system.storage) ftl_lambda.addQuadruples([(1, 2, 3, 4)]) ftl = espressopp.FixedQuadrupleList(self.system.storage) ftl.addQuadruples([(1, 2, 3, 4)]) interactionLambda = espressopp.interaction.FixedQuadrupleListTypesLambdaDihedralRB( self.system, ftl_lambda) interactionLambda.setPotential(0, 0, 1, 1, self.potential) interaction = espressopp.interaction.FixedQuadrupleListTypesDihedralRB( self.system, ftl) interaction.setPotential(0, 0, 1, 1, self.potential) ftl_lambda.setAllLambda(0.5) self.assertEqual(ftl_lambda.getLambda(1, 2, 3, 4), [0.5]) self.assertAlmostEqual(0.5 * interaction.computeEnergy(), interactionLambda.computeEnergy())
def test_dihedral_harmonic_lambda_selective(self): ftl_lambda = espressopp.FixedQuadrupleListLambda(self.system.storage) ftl_lambda.addQuadruples([(1, 2, 3, 4), (2, 1, 3, 4)]) ftl = espressopp.FixedQuadrupleList(self.system.storage) ftl.addQuadruples([(1, 2, 3, 4)]) interactionLambda = espressopp.interaction.FixedQuadrupleListLambdaDihedralRB( self.system, ftl_lambda, self.potential) interaction = espressopp.interaction.FixedQuadrupleListDihedralRB( self.system, ftl, self.potential) self.assertEqual(ftl_lambda.getLambda(1, 2, 3, 4), [1.0]) self.assertEqual(ftl_lambda.getLambda(2, 1, 3, 4), [1.0]) ftl_lambda.setLambda(1, 2, 3, 4, 1.0) ftl_lambda.setLambda( 2, 1, 3, 4, 0.0) # Switch completely this tuple by setting lambda=0.0 self.assertAlmostEqual(interaction.computeEnergy(), interactionLambda.computeEnergy()) self.assertEqual(ftl_lambda.getLambda(1, 2, 3, 4), [1.0]) self.assertEqual(ftl_lambda.getLambda(2, 1, 3, 4), [0.0])
def test_set_lambda_single(self): ftl_lambda = espressopp.FixedQuadrupleListLambda(self.system.storage) ftl_lambda.addQuadruples([(1, 2, 3, 4)]) self.assertEqual(ftl_lambda.getLambda(1, 2, 3, 4), [1.0]) ftl_lambda.setLambda(1, 2, 3, 4, 0.0) self.assertEqual(ftl_lambda.getLambda(1, 2, 3, 4), [0.0])