BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
Spinor.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Base/Spin/Spinor.cpp
6 //! @brief Implements class Spinor.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #include "Base/Spin/Spinor.h"
16 
17 Spinor::Spinor(complex_t u_, complex_t v_)
18  : u(u_)
19  , v(v_)
20 {
21 }
22 
24 {
25  return {0, 0};
26 }
27 
29 {
30  return {u + o.u, v + o.v};
31 }
32 
34 {
35  return {u - o.u, v - o.v};
36 }
37 
38 
39 Spinor Spinor::operator*(complex_t f) const
40 {
41  return {u * f, v * f};
42 }
43 
44 Spinor Spinor::operator/(complex_t f) const
45 {
46  return {u / f, v / f};
47 }
48 
49 Spinor operator*(complex_t f, const Spinor& m)
50 {
51  return m * f;
52 }
53 
54 
55 complex_t DotProduct(const Spinor& r, const Spinor& t)
56 {
57  return r.u * t.u + r.v * t.v;
58 }
Spinor operator*(complex_t f, const Spinor &m)
Definition: Spinor.cpp:49
complex_t DotProduct(const Spinor &r, const Spinor &t)
Definition: Spinor.cpp:55
Defines class Spinor.
Definition: Spinor.h:20
Spinor operator-(const Spinor &) const
Definition: Spinor.cpp:33
Spinor operator*(complex_t) const
Definition: Spinor.cpp:39
complex_t v
Definition: Spinor.h:31
Spinor operator/(complex_t) const
Definition: Spinor.cpp:44
static Spinor Zero()
Definition: Spinor.cpp:23
complex_t u
Definition: Spinor.h:31
Spinor(complex_t u_, complex_t v_)
Definition: Spinor.cpp:17
Spinor operator+(const Spinor &) const
Definition: Spinor.cpp:28