HILA
Loading...
Searching...
No Matches
field.h File Reference

This files containts definitions for the Field class and the classes required to define it such as field_struct. More...

#include <sstream>
#include <iostream>
#include <string>
#include <cstring>
#include <math.h>
#include <type_traits>
#include "plumbing/defs.h"
#include "plumbing/coordinates.h"
#include "plumbing/lattice.h"
#include "plumbing/field_storage.h"
#include "plumbing/backend_vector/vector_types.h"
#include "plumbing/com_mpi.h"
#include "plumbing/ensure_loop_functions.h"
#include "field_comm.h"
Include dependency graph for field.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Field< T >
 The field class implements the standard methods for accessing Fields. Hilapp replaces the parity access patterns, Field[par] with a loop over the appropriate sites. Since the Field class is one of the more important functionalities of HILA, extensive general instructions on the Field class can be read at HILA Functionality documentation. More...
 

Namespaces

namespace  hila
 Implement hila::swap for gauge fields.
 

Functions

template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_plus< A, B >, A >::value &&!std::is_same< hila::type_plus< A, B >, B >::value, int > = 0>
auto operator+ (const Field< A > &lhs, const Field< B > &rhs) -> Field< hila::type_plus< A, B > >
 operator + (Field + Field) -generic
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_plus< A, B >, A >::value, int > = 0>
auto operator+ (const Field< A > &lhs, const B &rhs) -> Field< hila::type_plus< A, B > >
 operator + (Field + scalar)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_plus< A, B >, B >::value, int > = 0>
auto operator+ (const A &lhs, const Field< B > &rhs) -> Field< hila::type_plus< A, B > >
 operator + (scalar + Field)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_minus< A, B >, A >::value &&!std::is_same< hila::type_minus< A, B >, B >::value, int > = 0>
auto operator- (const Field< A > &lhs, const Field< B > &rhs) -> Field< hila::type_minus< A, B > >
 operator - Field - Field -generic
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_minus< A, B >, A >::value, int > = 0>
auto operator- (const Field< A > &lhs, const B &rhs) -> Field< hila::type_minus< A, B > >
 operator - (Field - scalar)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_minus< A, B >, B >::value, int > = 0>
auto operator- (const A &lhs, const Field< B > &rhs) -> Field< hila::type_minus< A, B > >
 operator - (scalar - Field)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_mul< A, B >, A >::value &&!std::is_same< hila::type_mul< A, B >, B >::value, int > = 0>
auto operator* (const Field< A > &lhs, const Field< B > &rhs) -> Field< hila::type_mul< A, B > >
 
template<typename A , typename B , std::enable_if_t< std::is_same< hila::type_mul< A, B >, A >::value, int > = 0>
Field< A > operator* (Field< A > lhs, const Field< B > &rhs)
 reuse 1st
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_mul< A, B >, A >::value &&std::is_same< hila::type_mul< A, B >, B >::value, int > = 0>
Field< B > operator* (const Field< A > &lhs, Field< B > rhs)
 reuse 2nd
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_mul< A, B >, B >::value, int > = 0>
auto operator* (const A &lhs, const Field< B > &rhs) -> Field< hila::type_mul< A, B > >
 operator * (scalar * field)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_mul< A, B >, A >::value, int > = 0>
auto operator* (const Field< A > &lhs, const B &rhs) -> Field< hila::type_mul< A, B > >
 operator * (field * scalar)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_div< A, B >, A >::value &&!std::is_same< hila::type_div< A, B >, B >::value, int > = 0>
auto operator/ (const Field< A > &l, const Field< B > &r) -> Field< hila::type_div< A, B > >
 
template<typename A , typename B , std::enable_if_t< std::is_same< hila::type_div< A, B >, A >::value, int > = 0>
Field< A > operator/ (Field< A > l, const Field< B > &r)
 reuse 1st
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_div< A, B >, A >::value &&std::is_same< hila::type_div< A, B >, B >::value, int > = 0>
Field< B > operator/ (const Field< A > &l, Field< B > r)
 reuse 2nd
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_div< A, B >, B >::value, int > = 0>
auto operator/ (const A &lhs, const Field< B > &rhs) -> Field< hila::type_div< A, B > >
 operator / (scalar/Field)
 
template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_div< A, B >, A >::value, int > = 0>
auto operator/ (const Field< A > &lhs, const B &rhs) -> Field< hila::type_div< A, B > >
 operator / (Field/scalar)
 
template<typename T >
void hila::swap (Field< T > &A, Field< T > &B)
 Implement hila::swap() for Fields too, equivalent to std::swap()
 

Detailed Description

This files containts definitions for the Field class and the classes required to define it such as field_struct.

Definition in file field.h.

Function Documentation

◆ operator*()

template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_mul< A, B >, A >::value &&!std::is_same< hila::type_mul< A, B >, B >::value, int > = 0>
auto operator* ( const Field< A > &  lhs,
const Field< B > &  rhs 
) -> Field<hila::type_mul<A, B>>

operator * (Field * Field) generic

Definition at line 1621 of file field.h.

◆ operator/()

template<typename A , typename B , std::enable_if_t<!std::is_same< hila::type_div< A, B >, A >::value &&!std::is_same< hila::type_div< A, B >, B >::value, int > = 0>
auto operator/ ( const Field< A > &  l,
const Field< B > &  r 
) -> Field<hila::type_div<A, B>>

operator / (Field / Field) generic

Definition at line 1688 of file field.h.