ScaMaC  0.8.2
A Scalable Matrix Collection
All Files Functions Typedefs Modules Pages
scamac_dof_spins.h
Go to the documentation of this file.
1 
8 #ifndef SCAMAC_DOF_SPINS_H
9 #define SCAMAC_DOF_SPINS_H
10 
11 #include "scamac_error.h"
12 
13 /* quantum mechanical degree of freedom: spins 1/2 */
14 /* either with J_z = const., or without J_z constraint */
15 
16 typedef struct {
17  /* number of sites */
18  int n_sites;
19  /* number of "up" spins
20  negative value indicates "no constraint" */
21  int n_up;
22 
23  /* number of states */
24  ScamacIdx ns;
25 
26  /* count information */
27  ScamacIdx *cnt;
28 
29 } scamac_dof_spins_st;
30 
31 
32 
33 typedef int scamac_rep_spins_st;
34 
35 ScamacErrorCode scamac_dof_spins_alloc(int n_sites, scamac_dof_spins_st ** dof);
36 ScamacErrorCode scamac_dof_spinssz_alloc(int n_sites, int n_up, scamac_dof_spins_st ** dof);
37 void scamac_dof_spins_free(scamac_dof_spins_st * dof);
38 
39 
40 ScamacIdx scamac_dof_spins_ns(const scamac_dof_spins_st * dof);
41 
42 scamac_rep_spins_st * scamac_rep_spins_alloc(const scamac_dof_spins_st *dof);
43 void scamac_rep_spins_free(scamac_rep_spins_st * rep);
44 
45 void scamac_rep_spins_copy(const scamac_dof_spins_st *dof, const scamac_rep_spins_st * rep, scamac_rep_spins_st * repcpy);
46 
47 int scamac_spins_decode(const scamac_dof_spins_st * dof, ScamacIdx idx, scamac_rep_spins_st *rep);
48 ScamacIdx scamac_spins_encode(const scamac_dof_spins_st * dof, const scamac_rep_spins_st *rep);
49 
50 
51 /* operators */
52 double scamac_op_spins_Sz (const scamac_dof_spins_st * dof, const scamac_rep_spins_st *rep, int i);
53 double scamac_op_spins_SzSz (const scamac_dof_spins_st * dof, const scamac_rep_spins_st *rep, int i, int j);
54 double scamac_op_spins_SzSum(const scamac_dof_spins_st * dof, const scamac_rep_spins_st *rep);
55 
56 
57 double scamac_op_spins_Sp (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i);
58 double scamac_op_spins_Sm (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i);
59 double scamac_op_spins_Sx (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i);
60 
61 double scamac_op_spins_SpSp (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i, int j);
62 double scamac_op_spins_SpSm (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i, int j);
63 double scamac_op_spins_SmSm (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i, int j);
64 double scamac_op_spins_SxSx (const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i, int j);
65 /* Sx Sx + Sy Sy = (S+ S- + S- S+)/2 */
66 double scamac_op_spins_Sflip(const scamac_dof_spins_st * dof, scamac_rep_spins_st *rep, int i, int j);
67 
68 #endif /* SCAMAC_DOF_SPINS_H */
ScaMaC data structure and macro definitions.