StatMech
Loading...
Searching...
No Matches
generateRM.hpp
Go to the documentation of this file.
1// Generate a random matrix used by all programs in this directory
2#ifndef GENERATE_RM
3#define GENERATE_RM
4
5#include "Headers/mytypes.hpp"
6#include "Headers/mydebug.hpp"
7#include "Headers/LocalRandomMatrix.hpp"
8#include "Headers/mersenne_twister.hpp"
9#include "Headers/matrix_util.hpp"
10#include "Headers/translation.hpp"
11#ifdef GPU
12 #include "magma_v2.h"
13 #include <cuda_runtime_api.h>
14#endif
15
16std::vector<Real_t*> prefactor;
17static inline bool Initialize(int const argc, char const* const* argv, int const Nargs_common) {
18 return true;
19}
20static inline bool Finalize(int const argc, char const* const* argv) { return true; }
21
22static inline Integer_t SectorDimension(TransSector const& Sector) {
23 return (Sector.momentum() == 0) ? Sector.dim() - Sector.parityOp().numPairs : Sector.dim();
24}
25
26template<typename Type>
27static inline void generateLocal_h(matrix<Type>& mat, Integer_t const d_mat, Integer_t const seed) {
28 return;
29}
30template<typename Type>
31static inline void generateLocal_op(matrix<Type>& mat, Integer_t const d_mat,
32 Integer_t const seed) {
33 return;
34}
35
36static inline Integer_t constructGlobal_h(matrix<Complex_t>& global, matrix<Complex_t> const& local,
37 Integer_t const numLoc, TransSector const& Sector,
38 void* GPUconf = nullptr) {
39 RandomMatrix_GUE(global, SectorDimension(Sector));
40 return SectorDimension(Sector);
41};
42
43static inline Integer_t constructGlobal_op(matrix<Complex_t>& global,
44 matrix<Complex_t> const& local, Integer_t const numLoc,
45 TransSector const& Sector, void* GPUconf = nullptr) {
46 return constructGlobal_h(global, local, numLoc, Sector);
47};
48
49#endif
std::vector< Real_t * > prefactor
Definition generateRM.hpp:16
std::vector< TransSector > Sector(n_max+1)
Translation invariant sector of a many-body Hilbert space.
Definition TransSector.hpp:19
GPUconfig GPUconf(dim3(nBlock, nBlock, 1), dim3(nThread, nThread, 1), 0, queue)
MKL_INT Integer_t
Definition mytypes.hpp:359