openjij
Framework for the Ising model and QUBO.
Loading...
Searching...
No Matches
system.hpp
Go to the documentation of this file.
1// Copyright 2023 Jij Inc.
2
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6
7// http://www.apache.org/licenses/LICENSE-2.0
8
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#pragma once
16
18
19namespace openjij {
20namespace system {
21
25struct mc_system {};
26
31struct classical_system : public mc_system {};
32
38
42struct quantum_system : public mc_system {};
43
49
54
59
65
70
76template <typename System> struct get_system_type {
77 using type = typename System::system_type;
78};
79
87template <typename System> struct get_classical_or_quantum_system_type {
88 using type =
89 typename utility::get_base_class<typename System::system_type,
91};
92
100template <typename System> struct get_base_system_type {
101 using type =
102 typename utility::get_base_class<typename System::system_type, mc_system,
105};
106
110constexpr static bool USE_EIGEN = true;
111
112} // namespace system
113} // namespace openjij
static constexpr bool USE_EIGEN
USE_EIGEN flag.
Definition system.hpp:110
Definition algorithm.hpp:24
classical monte carlo system with a constraint (using beta (inverse temperature) for annealing parame...
Definition system.hpp:37
classical monte carlo system (using beta (inverse temperature) for annealing parameter)
Definition system.hpp:31
meta function to check whether system type is derived from mc_system, single_command_system,...
Definition system.hpp:100
typename utility::get_base_class< typename System::system_type, mc_system, single_command_system, realtime_dynamics_system >::type type
Definition system.hpp:104
meta function to check whether system type is derived from classical_system or quantum_system.
Definition system.hpp:87
typename utility::get_base_class< typename System::system_type, classical_system, quantum_system >::type type
Definition system.hpp:90
meta function for getting system type
Definition system.hpp:76
typename System::system_type type
Definition system.hpp:77
inhomogeneous transverse field system
Definition system.hpp:53
monte carlo system tag
Definition system.hpp:25
nonstoquastic quantum system
Definition system.hpp:58
quantum monte carlo system
Definition system.hpp:42
system tag for solving real time schrodinger dynamics
Definition system.hpp:69
system tag with single command execution (e.g.
Definition system.hpp:64
ordinary homogeneous transverse field system (using beta and annealing schedule (s) for annealing par...
Definition system.hpp:48
meta function for linear-searching base class of "derived_class" from the variadic template list (hea...
Definition type_traits.hpp:48