Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
test_particles.cpp
Go to the documentation of this file.
1 #include <catch.hpp>
2 #define BOOST_LOG_DYN_LINK 1
3 #include <boost/log/trivial.hpp>
4 
5 #include "class_particles.hpp"
6 #include "precision.hpp"
7 
8 TEST_CASE( "UNIT TEST: particle class {Particle_x}", "[core]" )
9 {
10  BOOST_LOG_TRIVIAL(info) << "particle class {Particle_x}";
11 
12  Vec_3D<FTYPE_t> position(0., -3.14, 4E5);
13  Particle_x<FTYPE_t> par1(position);
14 
15  CHECK( par1.position[0] == 0. );
16  CHECK( par1.position[1] == (FTYPE_t)-3.14 );
17  CHECK( par1.position[2] == (FTYPE_t)4E5 );
18  CHECK( par1[1] == (FTYPE_t)-3.14 );
19 
20  par1.position[0] = par1.position[1]*2+6.28;
21  CHECK( par1[0] == Approx(0) );
22 
23  // copy constructor
24  Particle_x<FTYPE_t> par3(par1);
25  CHECK( par3[0] == Approx(0) );
26  CHECK( par3[1] == (FTYPE_t)-3.14 );
27  CHECK( par3[2] == (FTYPE_t)4E5 );
28 
29  // assign operator
30  par1 = par3;
31  CHECK( par1[0] == Approx(0) );
32  CHECK( par1[1] == (FTYPE_t)-3.14 );
33  CHECK( par1[2] == (FTYPE_t)4E5 );
34 }
35 
36 TEST_CASE( "UNIT TEST: particle class {Particle_v}", "[core]" )
37 {
38  BOOST_LOG_TRIVIAL(info) << "particle class {Particle_v}";
39 
40  Vec_3D<FTYPE_t> position(0., -3.14, 4E5);
41  Vec_3D<FTYPE_t> velocity(2.3E-6, -4.56E-7, 6.87903E-6);
42  Particle_v<FTYPE_t> par1(position, velocity);
43 
44  CHECK( par1[0] == (FTYPE_t)0. );
45  CHECK( par1[1] == (FTYPE_t)-3.14 );
46  CHECK( par1[2] == (FTYPE_t)4E5 );
47  CHECK( par1(0) == (FTYPE_t)2.3E-6 );
48  CHECK( par1(1) == (FTYPE_t)-4.56E-7 );
49  CHECK( par1(2) == (FTYPE_t)6.87903E-6 );
50 
51  // copy constructor
52  Particle_v<FTYPE_t> par3(par1);
53  CHECK( par3[1] == (FTYPE_t)-3.14 );
54  CHECK( par3(1) == (FTYPE_t)-4.56E-7 );
55 
56  // assign operator
57  par1 = par3;
58  CHECK( par1[1] == (FTYPE_t)-3.14 );
59  CHECK( par1(1) == (FTYPE_t)-4.56E-7 );
60 }
class handling particles (position only)
define container Particle (with and without velocity)
class handling particles (position only)
single / double / long double definitions
Vec_3D< T > position
#define CHECK(...)
Definition: catch.hpp:13860
TEST_CASE("UNIT TEST: particle class {Particle_x}","[core]")