mdp_lattice Class Reference

distributed lattice object More...

#include <mdp_lattice.h>

List of all members.

Public Member Functions

mdp_int global_coordinate (int *x)
void global_coordinate (mdp_int global_idx, int *x)
int compute_parity (int *x)
 mdp_lattice ()
 mdp_lattice (int ndim_, int nx_[], int(*where_)(int *, int, int *)=default_partitioning0, void(*neighbour_)(int, int *, int *, int *, int, int *)=torus_topology, mdp_int random_seed_=0, int next_next_=1, bool local_random_=true)
 mdp_lattice (int ndim_, int ndir_, int nx_[], int(*where_)(int *, int, int *)=default_partitioning0, void(*neighbour_)(int, int *, int *, int *, int, int *)=torus_topology, mdp_int random_seed_=0, int next_next_=1, bool local_random_=true)
 for weird stuff
void allocate_lattice (int ndim_, int nx_[], int(*where_)(int *, int, int *)=default_partitioning0, void(*neighbour_)(int, int *, int *, int *, int, int *)=torus_topology, mdp_int random_seed_=0, int next_next_=1, bool local_random_=true)
void allocate_lattice (int ndim_, int ndir_, int nx_[], int(*where_)(int *, int, int *)=default_partitioning0, void(*neighbour_)(int, int *, int *, int *, int, int *)=torus_topology, mdp_int random_seed_=0, int next_next_=1, bool local_random_=true)
 for weird stuff
virtual ~mdp_lattice ()
void deallocate_memory ()
 dynamically deallocate a lattice
void initialize_random (mdp_int random_seed_=0)
mdp_prngrandom (mdp_site)
 Returns the local object mdp_prng at site x of the lattice.
int n_dimensions () const
 number of dimensions of the lattice (deprecated_
int n_directions () const
 number of directions one can move on the lattice; usually same as ndim
mdp_int size () const
 number of sites of the lattice
mdp_int size (const int mu) const
 size of the lattice in direction mu
mdp_int local_volume () const
 number of lattice sites stored locally by current process
mdp_int global_volume () const
 total lattice volume (deprecated)
mdp_int move_up (const mdp_int idx, const int mu) const
mdp_int move_down (const mdp_int idx, const int mu) const
mdp_int local (mdp_int idx) const
mdp_int global (mdp_int idx) const
int site_parity (const mdp_int idx) const
mdp_int start_index (const int process, int p=EVENODD) const
mdp_int stop_index (const int process, int p=EVENODD) const

Public Attributes

int ndim
int ndir
int next_next
int * nx
mdp_int nvol
mdp_int nvol_gl
mdp_int nvol_in
mdp_intgl
mdp_intlg
FILE * lg_file
mdp_int ** up
mdp_int ** dw
int ** co
int * wh
int * parity
mdp_int start [_NprocMax_][2]
mdp_int stop [_NprocMax_][2]
mdp_int len_to_send [_NprocMax_][2]
mdp_intto_send [_NprocMax_]
bool local_random_generator
int(* where )(int *, int, int *)
void(* neighbour )(int, int *, int *, int *, int, int *)

Detailed Description

distributed lattice object

Example:

///    int box[]={3,3,3};
///    int seed=0, border_width=1;
///    mdp_lattice lattice(3,box,default_partitioning0,
///                        torus_topology,seed,border_width);
///    mdp_site x(lattice);
///    forallsites(x)
///      cout << lattice.random(x).plain() << endl;
/// 

Constructor & Destructor Documentation

mdp_lattice::mdp_lattice (  )  [inline]
mdp_lattice::mdp_lattice ( int  ndim_,
int  nx_[],
int(*)(int *, int, int *)  where_ = default_partitioning0,
void(*)(int, int *, int *, int *, int, int *)  neighbour_ = torus_topology,
mdp_int  random_seed_ = 0,
int  next_next_ = 1,
bool  local_random_ = true 
) [inline]

declares a lattice object

Parameters:
ndim_ dimensions of the lattice
nx_ size of the lattice
where pointer to a partitioning function neighbour_ pointer to a topology function.
random_seed_ seed to be used by the parallel prng
next_next_ size of the buffer between neighbour processes
local_random_ true is local random generator is required
mdp_lattice::mdp_lattice ( int  ndim_,
int  ndir_,
int  nx_[],
int(*)(int *, int, int *)  where_ = default_partitioning0,
void(*)(int, int *, int *, int *, int, int *)  neighbour_ = torus_topology,
mdp_int  random_seed_ = 0,
int  next_next_ = 1,
bool  local_random_ = true 
) [inline]

for weird stuff

virtual mdp_lattice::~mdp_lattice (  )  [inline, virtual]

Member Function Documentation

void mdp_lattice::allocate_lattice ( int  ndim_,
int  ndir_,
int  nx_[],
int(*)(int *, int, int *)  where_ = default_partitioning0,
void(*)(int, int *, int *, int *, int, int *)  neighbour_ = torus_topology,
mdp_int  random_seed_ = 0,
int  next_next_ = 1,
bool  local_random_ = true 
) [inline]

for weird stuff

void mdp_lattice::allocate_lattice ( int  ndim_,
int  nx_[],
int(*)(int *, int, int *)  where_ = default_partitioning0,
void(*)(int, int *, int *, int *, int, int *)  neighbour_ = torus_topology,
mdp_int  random_seed_ = 0,
int  next_next_ = 1,
bool  local_random_ = true 
) [inline]

reallocate a lattice dynamically

Parameters:
ndim_ dimensions of the lattice
nx_ size of the lattice
where pointer to a partitioning function neighbour_ pointer to a topology function.
random_seed_ seed to be used by the parallel prng
next_next_ size of the buffer between neighbour processes
local_random_ true is local random generator is required
int mdp_lattice::compute_parity ( int *  x  )  [inline]
void mdp_lattice::deallocate_memory (  )  [inline]

dynamically deallocate a lattice

mdp_int mdp_lattice::global ( mdp_int  idx  )  const [inline]
void mdp_lattice::global_coordinate ( mdp_int  global_idx,
int *  x 
) [inline]
mdp_int mdp_lattice::global_coordinate ( int *  x  )  [inline]
mdp_int mdp_lattice::global_volume (  )  const [inline]

total lattice volume (deprecated)

void mdp_lattice::initialize_random ( mdp_int  random_seed_ = 0  )  [inline]
mdp_int mdp_lattice::local ( mdp_int  idx  )  const [inline]
mdp_int mdp_lattice::local_volume (  )  const [inline]

number of lattice sites stored locally by current process

mdp_int mdp_lattice::move_down ( const mdp_int  idx,
const int  mu 
) const [inline]
mdp_int mdp_lattice::move_up ( const mdp_int  idx,
const int  mu 
) const [inline]
int mdp_lattice::n_dimensions (  )  const [inline]

number of dimensions of the lattice (deprecated_

int mdp_lattice::n_directions (  )  const [inline]

number of directions one can move on the lattice; usually same as ndim

mdp_prng & mdp_lattice::random ( mdp_site  x  )  [inline]

Returns the local object mdp_prng at site x of the lattice.

int mdp_lattice::site_parity ( const mdp_int  idx  )  const [inline]
mdp_int mdp_lattice::size ( const int  mu  )  const [inline]

size of the lattice in direction mu

mdp_int mdp_lattice::size (  )  const [inline]

number of sites of the lattice

mdp_int mdp_lattice::start_index ( const int  process,
int  p = EVENODD 
) const [inline]
mdp_int mdp_lattice::stop_index ( const int  process,
int  p = EVENODD 
) const [inline]

Member Data Documentation

void(* mdp_lattice::neighbour)(int, int *, int *, int *, int, int *)
int(* mdp_lattice::where)(int *, int, int *)

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Defines

Generated on Wed Dec 23 14:03:15 2009 for fermiqcd by  doxygen 1.6.1