Fix tune_pme
[gromacs.git] / src / gromacs / trajectoryanalysis / tests / angle.cpp
blob8b85aba4bd63c5d6694059634ce4fe58b42ae649
1 /*
2 * This file is part of the GROMACS molecular simulation package.
4 * Copyright (c) 2012,2013,2014,2015, by the GROMACS development team, led by
5 * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
6 * and including many others, as listed in the AUTHORS file in the
7 * top-level source directory and at http://www.gromacs.org.
9 * GROMACS is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public License
11 * as published by the Free Software Foundation; either version 2.1
12 * of the License, or (at your option) any later version.
14 * GROMACS is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with GROMACS; if not, see
21 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 * If you want to redistribute modifications to GROMACS, please
25 * consider that scientific software is very special. Version
26 * control is crucial - bugs must be traceable. We will be happy to
27 * consider code for inclusion in the official distribution, but
28 * derived work must not be called official GROMACS. Details are found
29 * in the README & COPYING files - if they are missing, get the
30 * official version at http://www.gromacs.org.
32 * To help us fund GROMACS development, we humbly ask that you cite
33 * the research papers on the package. Check out http://www.gromacs.org.
35 /*! \internal \file
36 * \brief
37 * Tests for functionality of the "angle" trajectory analysis module.
39 * \author Teemu Murtola <teemu.murtola@gmail.com>
40 * \ingroup module_trajectoryanalysis
42 #include "gmxpre.h"
44 #include "gromacs/trajectoryanalysis/modules/angle.h"
46 #include <gtest/gtest.h>
48 #include "testutils/cmdlinetest.h"
50 #include "moduletest.h"
52 namespace
55 using gmx::test::CommandLine;
57 /********************************************************************
58 * Tests for gmx::analysismodules::Angle.
61 //! Test fixture for the angle analysis module.
62 typedef gmx::test::TrajectoryAnalysisModuleTestFixture<gmx::analysismodules::AngleInfo>
63 AngleModuleTest;
65 TEST_F(AngleModuleTest, ComputesSimpleAngles)
67 const char *const cmdline[] = {
68 "angle",
69 "-g1", "angle", "-group1", "resname RA1 RA2 and name A1 A2 A3",
70 "-binw", "60"
72 setTopology("angle.gro");
73 runTest(CommandLine(cmdline));
76 TEST_F(AngleModuleTest, ComputesDihedrals)
78 const char *const cmdline[] = {
79 "angle",
80 "-g1", "dihedral", "-group1", "resname RD1 RD2 RD3 and name A1 A2 A3 A4",
81 "-binw", "120"
83 setTopology("angle.gro");
84 runTest(CommandLine(cmdline));
87 TEST_F(AngleModuleTest, ComputesVectorPairAngles)
89 const char *const cmdline[] = {
90 "angle",
91 "-g1", "vector", "-group1", "resname RV1 RV2 and name A1 A2",
92 "-g2", "vector", "-group2", "resname RV3 RV4 and name A1 A2",
93 "-binw", "60"
95 setTopology("angle.gro");
96 runTest(CommandLine(cmdline));
99 TEST_F(AngleModuleTest, ComputesVectorPlanePairAngles)
101 const char *const cmdline[] = {
102 "angle",
103 "-g1", "vector", "-group1", "resname RV1 RV2 and name A1 A2",
104 "-g2", "plane", "-group2", "resname RP1 RP2 and name A1 A2 A3",
105 "-binw", "60"
107 setTopology("angle.gro");
108 runTest(CommandLine(cmdline));
111 TEST_F(AngleModuleTest, ComputesPlaneZAxisAngles)
113 const char *const cmdline[] = {
114 "angle",
115 "-g1", "plane", "-group1", "resname RP1 RP2 and name A1 A2 A3",
116 "-g2", "z",
117 "-binw", "60"
119 setTopology("angle.gro");
120 runTest(CommandLine(cmdline));
123 TEST_F(AngleModuleTest, ComputesVectorSphereNormalZAxisAngles)
125 const char *const cmdline[] = {
126 "angle",
127 "-g1", "vector", "-group1", "resname RV1 RV2 and name A1 A2",
128 "-g2", "sphnorm", "-group2", "cog of resname RS",
129 "-binw", "60"
131 setTopology("angle.gro");
132 runTest(CommandLine(cmdline));
135 TEST_F(AngleModuleTest, ComputesVectorTimeZeroAngles)
137 const char *const cmdline[] = {
138 "angle",
139 "-g1", "vector", "-group1", "resname RV1 RV2 RV3 RV4 and name A1 A2",
140 "-g2", "t0",
141 "-binw", "60"
143 setTopology("angle.gro");
144 setTrajectory("angle.gro");
145 runTest(CommandLine(cmdline));
148 TEST_F(AngleModuleTest, ComputesMultipleAngles)
150 const char *const cmdline[] = {
151 "angle",
152 "-g1", "vector",
153 "-group1",
154 "resname RV1 RV2 and name A1 A2",
155 "resname RV3 RV4 and name A1 A2",
156 "-g2", "plane",
157 "-group2",
158 "resname RP1 RP2 and name A1 A2 A3",
159 "resname RP1 RP2 and name A1 A2 A3",
160 "-binw", "60"
162 setTopology("angle.gro");
163 runTest(CommandLine(cmdline));
166 TEST_F(AngleModuleTest, HandlesDynamicSelections)
168 const char *const cmdline[] = {
169 "angle",
170 "-g1", "angle", "-group1", "resname RA1 RA2 and name A1 A2 A3 and z < 0.5",
171 "-binw", "60"
173 setTopology("angle.gro");
174 runTest(CommandLine(cmdline));
177 TEST_F(AngleModuleTest, HandlesOneVsMultipleVectorAngles)
179 const char *const cmdline[] = {
180 "angle",
181 "-g1", "vector", "-group1", "resname RV1 RV2 and name A1 A2",
182 "-g2", "vector", "-group2", "resname RV3 and name A1 A2",
183 "-binw", "60"
185 setTopology("angle.gro");
186 runTest(CommandLine(cmdline));
189 TEST_F(AngleModuleTest, HandlesOneVsMultipleVectorGroupsAngles)
191 const char *const cmdline[] = {
192 "angle",
193 "-g1", "vector",
194 "-group1",
195 "resname RV2 and name A1 A2",
196 "resname RV3 RV4 and name A1 A2",
197 "-g2", "plane",
198 "-group2",
199 "resname RP1 RP2 and name A1 A2 A3",
200 "-binw", "60"
202 setTopology("angle.gro");
203 runTest(CommandLine(cmdline));
206 } // namespace