openjij
Framework for the Ising model and QUBO.
Loading...
Searching...
No Matches
openjij::graph::Chimera< FloatType > Class Template Reference

chimera lattice graph More...

#include <chimera.hpp>

Inheritance diagram for openjij::graph::Chimera< FloatType >:
Collaboration diagram for openjij::graph::Chimera< FloatType >:

Public Member Functions

Index to_ind (std::int64_t r, std::int64_t c, std::int64_t i) const
 convert from (row x column x in-chimera) index to global index
 
ChimeraIndex to_rci (Index ind) const
 convert from global index to (row x column x in-chimera) index
 
 Chimera (std::size_t num_row, std::size_t num_column, FloatType init_val=0)
 chimera lattice graph constructor
 
 Chimera (const json &j, std::size_t num_row, std::size_t num_column, FloatType init_val=0)
 Square constructor (from nlohmann::json)
 
 Chimera (const Chimera< FloatType > &)=default
 chimera lattice graph copy constructor
 
 Chimera (Chimera< FloatType > &&)=default
 chimera lattice graph move constructor
 
std::size_t get_num_row () const
 get number of rows
 
std::size_t get_num_column () const
 get number of columns
 
std::size_t get_num_in_chimera () const
 get number of spins in each chimera unit
 
FloatTypeJ (std::size_t r, std::size_t c, std::size_t i, ChimeraDir dir)
 access J(row, colum, in-chimera, direction)
 
const FloatTypeJ (std::size_t r, std::size_t c, std::size_t i, ChimeraDir dir) const
 access J(row, colum, in-chimera, direction)
 
FloatTypeh (std::size_t r, std::size_t c, std::size_t i)
 access h(row, colum, in-chimera) (local field)
 
const FloatTypeh (std::size_t r, std::size_t c, std::size_t i) const
 access h(row, colum, in-chimera) (local field)
 
Spinspin (Spins &spins, std::size_t r, std::size_t c, std::size_t i) const
 derive spin value at the index (row x column)
 
const Spinspin (const Spins &spins, std::size_t r, std::size_t c, std::size_t i) const
 derive spin value at the index (row x column)
 
- Public Member Functions inherited from openjij::graph::Sparse< FloatType >
 Sparse (std::size_t num_spins, std::size_t num_edges)
 Sparse constructor.
 
 Sparse (std::size_t num_spins)
 Sparse delegate constructor.
 
 Sparse (const json &j, std::size_t num_edges)
 Sparse constructor (from nlohmann::json)
 
 Sparse (const json &j)
 Sparse constructor (from nlohmann::json)
 
 Sparse (const Sparse< FloatType > &)=default
 Sparse copy constructor.
 
 Sparse (Sparse< FloatType > &&)=default
 Sparse move constructor.
 
const Nodesadj_nodes (Index ind) const
 list of adjacent nodes
 
std::size_t get_num_edges () const
 get number of edges
 
FloatType calc_energy (const Spins &spins) const
 calculate total energy
 
FloatType calc_energy (const Eigen::Matrix< FloatType, Eigen::Dynamic, 1, Eigen::ColMajor > &spins) const
 
FloatType energy (const Spins &spins) const
 calculate total energy
 
FloatType energy (const Eigen::Matrix< FloatType, Eigen::Dynamic, 1, Eigen::ColMajor > &spins) const
 
FloatTypeJ (Index i, Index j)
 access J_{ij}
 
const FloatTypeJ (Index i, Index j) const
 access J_{ij}
 
FloatTypeh (Index i)
 access h_{i} (local field)
 
const FloatTypeh (Index i) const
 access h_{i} (local field)
 
- Public Member Functions inherited from openjij::graph::Graph
 Graph (std::size_t num_spins)
 Graph constructor.
 
template<typename RandomNumberEngine >
const Spins gen_spin (RandomNumberEngine &random_numder_engine) const
 generate spins randomly.
 
template<typename RandomNumberEngine >
const Binaries gen_binary (RandomNumberEngine &random_numder_engine) const
 generate spins randomly.
 
std::size_t get_num_spins () const noexcept
 get number of spins
 
std::size_t size () const noexcept
 get number of spins
 

Private Member Functions

std::size_t mod_r (std::int64_t a) const
 mod function (a mod num_row)
 
std::size_t mod_c (std::int64_t a) const
 mod function (a mod num_column)
 
void _checkpair (Index idx1, Index idx2) const
 check if the pair has a valid connection
 

Private Attributes

FloatType _init_val
 initial value to be set to inreactions
 
std::size_t _num_row
 number of rows
 
std::size_t _num_column
 number of columns
 

Static Private Attributes

static constexpr std::size_t _num_in_chimera = 8
 number of spins in each chimera units (8)
 

Additional Inherited Members

- Public Types inherited from openjij::graph::Sparse< FloatType >
using Interactions = std::unordered_map< std::pair< Index, Index >, FloatType, utility::PairHash >
 interaction type
 
using value_type = FloatType
 float type
 

Detailed Description

template<typename FloatType = double>
class openjij::graph::Chimera< FloatType >

chimera lattice graph

Template Parameters
FloatTypefloating-point type (default: double)

Constructor & Destructor Documentation

◆ Chimera() [1/4]

template<typename FloatType = double>
openjij::graph::Chimera< FloatType >::Chimera ( std::size_t  num_row,
std::size_t  num_column,
FloatType  init_val = 0 
)
inline

chimera lattice graph constructor

Parameters
num_rownumber of rows
num_columnnumber of columns
init_valinitial value set to interaction (default: 0)

References openjij::graph::Chimera< FloatType >::_init_val, openjij::graph::Chimera< FloatType >::_num_column, openjij::graph::Chimera< FloatType >::_num_in_chimera, openjij::graph::Chimera< FloatType >::_num_row, openjij::graph::Sparse< FloatType >::J(), and openjij::graph::Chimera< FloatType >::to_ind().

Here is the call graph for this function:

◆ Chimera() [2/4]

template<typename FloatType = double>
openjij::graph::Chimera< FloatType >::Chimera ( const json j,
std::size_t  num_row,
std::size_t  num_column,
FloatType  init_val = 0 
)
inline

Square constructor (from nlohmann::json)

Parameters
jJSON object
num_rownumber of rows
num_columnnumber of columns
init_valinitial value set to interaction (default: 0)

References openjij::graph::Chimera< FloatType >::_checkpair(), openjij::graph::Chimera< FloatType >::_num_in_chimera, openjij::graph::Sparse< FloatType >::h(), openjij::graph::Sparse< FloatType >::J(), and openjij::graph::json_parse().

Here is the call graph for this function:

◆ Chimera() [3/4]

template<typename FloatType = double>
openjij::graph::Chimera< FloatType >::Chimera ( const Chimera< FloatType > &  )
default

chimera lattice graph copy constructor

◆ Chimera() [4/4]

template<typename FloatType = double>
openjij::graph::Chimera< FloatType >::Chimera ( Chimera< FloatType > &&  )
default

chimera lattice graph move constructor

Member Function Documentation

◆ _checkpair()

template<typename FloatType = double>
void openjij::graph::Chimera< FloatType >::_checkpair ( Index  idx1,
Index  idx2 
) const
inlineprivate

check if the pair has a valid connection

Parameters
idx1index1
idx2index2

References openjij::graph::Chimera< FloatType >::to_rci().

Referenced by openjij::graph::Chimera< FloatType >::Chimera().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_num_column()

template<typename FloatType = double>
std::size_t openjij::graph::Chimera< FloatType >::get_num_column ( ) const
inline

get number of columns

Returns
number of columns

References openjij::graph::Chimera< FloatType >::_num_column.

◆ get_num_in_chimera()

template<typename FloatType = double>
std::size_t openjij::graph::Chimera< FloatType >::get_num_in_chimera ( ) const
inline

get number of spins in each chimera unit

Returns
number of spins in each chimera unit

References openjij::graph::Chimera< FloatType >::_num_in_chimera.

◆ get_num_row()

template<typename FloatType = double>
std::size_t openjij::graph::Chimera< FloatType >::get_num_row ( ) const
inline

get number of rows

Returns
number of rows

References openjij::graph::Chimera< FloatType >::_num_row.

◆ h() [1/2]

template<typename FloatType = double>
FloatType & openjij::graph::Chimera< FloatType >::h ( std::size_t  r,
std::size_t  c,
std::size_t  i 
)
inline

access h(row, colum, in-chimera) (local field)

Parameters
rrow index
ccolumn index
iin-chimera index
Returns
corresponding interaction value

References openjij::graph::Chimera< FloatType >::_num_column, openjij::graph::Chimera< FloatType >::_num_in_chimera, openjij::graph::Chimera< FloatType >::_num_row, openjij::graph::Sparse< FloatType >::h(), openjij::graph::json_parse(), and openjij::graph::Chimera< FloatType >::to_ind().

Referenced by openjij::declare_Chimera().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ h() [2/2]

template<typename FloatType = double>
const FloatType & openjij::graph::Chimera< FloatType >::h ( std::size_t  r,
std::size_t  c,
std::size_t  i 
) const
inline

access h(row, colum, in-chimera) (local field)

Parameters
rrow index
ccolumn index
iin-chimera index
Returns
corresponding interaction value

References openjij::graph::Chimera< FloatType >::_num_column, openjij::graph::Chimera< FloatType >::_num_in_chimera, openjij::graph::Chimera< FloatType >::_num_row, openjij::graph::Sparse< FloatType >::h(), openjij::graph::json_parse(), and openjij::graph::Chimera< FloatType >::to_ind().

Here is the call graph for this function:

◆ J() [1/2]

template<typename FloatType = double>
FloatType & openjij::graph::Chimera< FloatType >::J ( std::size_t  r,
std::size_t  c,
std::size_t  i,
ChimeraDir  dir 
)
inline

◆ J() [2/2]

◆ mod_c()

template<typename FloatType = double>
std::size_t openjij::graph::Chimera< FloatType >::mod_c ( std::int64_t  a) const
inlineprivate

mod function (a mod num_column)

Parameters
aparameter ([-1:num_column])
Returns
(a mod num_column)

References openjij::graph::Chimera< FloatType >::_num_column.

Referenced by openjij::graph::Chimera< FloatType >::to_ind().

Here is the caller graph for this function:

◆ mod_r()

template<typename FloatType = double>
std::size_t openjij::graph::Chimera< FloatType >::mod_r ( std::int64_t  a) const
inlineprivate

mod function (a mod num_row)

Parameters
aparameter ([-1:num_row])
Returns
(a mod num_row)

References openjij::graph::Chimera< FloatType >::_num_row.

Referenced by openjij::graph::Chimera< FloatType >::to_ind().

Here is the caller graph for this function:

◆ spin() [1/2]

template<typename FloatType = double>
const Spin & openjij::graph::Chimera< FloatType >::spin ( const Spins spins,
std::size_t  r,
std::size_t  c,
std::size_t  i 
) const
inline

derive spin value at the index (row x column)

Parameters
spinsspin array
rrow index
ccolumn index
iin-chimera index
Returns
corresponding spin

References openjij::graph::json_parse(), and openjij::graph::Chimera< FloatType >::to_ind().

Here is the call graph for this function:

◆ spin() [2/2]

template<typename FloatType = double>
Spin & openjij::graph::Chimera< FloatType >::spin ( Spins spins,
std::size_t  r,
std::size_t  c,
std::size_t  i 
) const
inline

derive spin value at the index (row x column)

Parameters
spinsspin array
rrow index
ccolumn index
iin-chimera index
Returns
corresponding spin

References openjij::graph::json_parse(), and openjij::graph::Chimera< FloatType >::to_ind().

Here is the call graph for this function:

◆ to_ind()

template<typename FloatType = double>
Index openjij::graph::Chimera< FloatType >::to_ind ( std::int64_t  r,
std::int64_t  c,
std::int64_t  i 
) const
inline

◆ to_rci()

template<typename FloatType = double>
ChimeraIndex openjij::graph::Chimera< FloatType >::to_rci ( Index  ind) const
inline

convert from global index to (row x column x in-chimera) index

Parameters
ind
Returns

References openjij::graph::Chimera< FloatType >::_num_column, openjij::graph::Chimera< FloatType >::_num_in_chimera, and openjij::graph::Graph::get_num_spins().

Referenced by openjij::graph::Chimera< FloatType >::_checkpair().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _init_val

◆ _num_column

◆ _num_in_chimera

◆ _num_row


The documentation for this class was generated from the following file: