CCEX-1.0.0
Loading...
Searching...
No Matches
defect.h
1#ifndef __CCEX_DEFECT_H_
2#define __CCEX_DEFECT_H_
3
4#include "utilities.h"
5#include "bath.h"
6
11typedef struct{
12
13 /* Defect information */
14 char dfname[MAX_CHARARRAY_LENGTH];
15 bool apprx;
16
17 /* Defect' spin information */
18 int naddspin;
19 char** types; // spname[n]
20 float* spins; // spin[n]
21 double* gyros; // gyro[n]
22 double* eqs; // eq[n] //quadrupole memomts eq in "milibarn * 10e+1" m^2 = 10e-30 m^2
23
24 /* Defect' spin interaction information */
25 // changes for avaax, spin
26
27 int navaax; // possible number of principal axis
28
29 double*** rxyzs; // rxyz[n+1][m][k] : n: avaax(1~navaax), m : addspin type , k : x,y,z
30 MatrixXcd** hypf; // hypf[n+1][m] // (MHz)
31 MatrixXcd** efg; // quad[n+1][m] // (Hartree/Bohr^2)
32 MatrixXcd* zfs ; // zfs[n+1] // (MHz)
33 double* detuning; // detuning[n+1] // (MHz)
34
35 // n : available axis
36 // m : addspin type
37
38} Defect;
39
40typedef struct{
41
42 int nbathspin;
43 int* naddspins; // naddspin[nbathspin]
44 BathSpin*** subbath; // bspin[nbathspin][naddspin]
45
46 int* paxes; // avaax[nbathspin] (Fix for the configuration)
47
48 int ndefect;
49 Defect** defect;
50
52
53
54
55// Update BathArray (input : Defect_i, paxis(index), BathSpin)
56// (1) mainspinidx = self-index
57// (2) quad (zfs) = check paxis, replace the quad as zfs(axis)
58// (3) detuning = check paxis, add +=detuning(axis)
59void updateMainSpins_fromDefectArray(DefectArray* dfa, BathArray* ba);
60void updateDisorder_main_sub(DefectArray* dfa, BathArray* ba);
61void updateDisorder_sub_sub(DefectArray* dfa);
62void updateOverhaus_qubit_sub(DefectArray* dfa, QubitArray* ba);
63
64/* Low level functions ------------------------------------------------ */
65
66// init
67DefectArray* DefectArray_init();
68
69// set defect information
70void DefectArray_setNdefect(DefectArray* dfa, int ndefect);
71void DefectArray_setDefect_idf_dfname(DefectArray* dfa, int idf, char* dfname);
72void DefectArray_setDefect_idf_apprx(DefectArray* dfa, int idf, bool apprx);
73void DefectArray_setDefect_idf_naddspin(DefectArray* dfa, int idf, int naddspin);
74void DefectArray_setDefect_idf_types(DefectArray* dfa, int idf, char** types);
75void DefectArray_setDefect_idf_spins(DefectArray* dfa, int idf, float* spins);
76void DefectArray_setDefect_idf_gyros(DefectArray* dfa, int idf, double* gyros);
77void DefectArray_setDefect_idf_eqs(DefectArray* dfa, int idf, double* eqs);
78void DefectArray_setDefect_idf_navaax(DefectArray* dfa, int idf, int navaax);
79void DefectArray_setDefect_idf_iax_isp_rxyz(DefectArray* dfa, int idf, int iax, int isp, double* rxyzs);
80void DefectArray_setDefect_idf_iax_isp_hypf(DefectArray* dfa, int idf, int iax, int isp, MatrixXcd hypf);
81void DefectArray_setDefect_idf_iax_isp_efg(DefectArray* dfa, int idf, int iax, int isp, MatrixXcd efg);
82void DefectArray_setDefect_idf_iax_zfs(DefectArray* dfa, int idf, int iax, MatrixXcd zfs);
83void DefectArray_setDefect_idf_iax_detuning(DefectArray* dfa, int idf, int iax, double detuning);
84
85// find defect index from name
86int DefectArray_findDefectIndex(DefectArray* dfa, char* dfname);
87
88// get defect information
89int DefectArray_getNdefect(DefectArray* dfa);
90char* DefectArray_getDefect_idf_dfname(DefectArray* dfa, int idf);
91bool DefectArray_getDefect_idf_apprx(DefectArray* dfa, int idf);
92int DefectArray_getDefect_idf_naddspin(DefectArray* dfa, int idf);
93char* DefectArray_getDefect_idf_isp_types(DefectArray* dfa, int idf, int isp);
94float DefectArray_getDefect_idf_isp_spins(DefectArray* dfa, int idf, int isp);
95double DefectArray_getDefect_idf_isp_gyros(DefectArray* dfa, int idf, int isp);
96double DefectArray_getDefect_idf_isp_eqs(DefectArray* dfa, int idf, int isp);
97int DefectArray_getDefect_idf_navaax(DefectArray* dfa, int idf);
98double* DefectArray_getDefect_idf_iax_isp_rxyz(DefectArray* dfa, int idf, int iax, int isp);
99MatrixXcd DefectArray_getDefect_idf_iax_isp_hypf(DefectArray* dfa, int idf, int iax, int isp);
100MatrixXcd DefectArray_getDefect_idf_iax_isp_efg(DefectArray* dfa, int idf, int iax, int isp);
101MatrixXcd DefectArray_getDefect_idf_iax_zfs(DefectArray* dfa, int idf, int iax);
102double DefectArray_getDefect_idf_iax_detuning(DefectArray* dfa, int idf, int iax);
103
104// alloc defect information
105void DefectArray_allocDefect(DefectArray* dfa); // defect : ndefect
106void DefectArray_allocDefect_idf(DefectArray* dfa, int idf, int navaax, int naddspin);
107
108// set subspin information
109void DefectArray_setPaxes_i(DefectArray* dfa, int ibs, int axis); // paxes
110void DefectArray_setPaxesRandom(DefectArray* dfa, BathArray* ba); // nbathspin (// before calculate)
111void DefectArray_setSubbathStatesRandom(DefectArray* dfa, BathArray* ba); // subbath->staets
112void DefectArray_setNaddspins(DefectArray* dfa, BathArray* ba); // before calculate
113void DefectArray_setSubbath(DefectArray* dfa, BathArray* ba, QubitArray* qa);
114
115// alloc subspin information
116void DefectArray_allocPaxes(DefectArray* dfa, int nbathspin);
117void DefectArray_allocNaddspins(DefectArray* dfa, int nbathspin); // before calculate
118void DefectArray_allocSubbath(DefectArray* dfa, BathArray* ba, int nqubit);
119
120// get subspin information
121int DefectArray_getNbathspin(DefectArray* dfa);
122int DefectArray_getPaxes_i(DefectArray* dfa, int ibs);
123int DefectArray_getNaddspins_i(DefectArray* dfa, int ibs);
124BathSpin* DefectArray_getSubbath_i_isp(DefectArray* dfa, int ibs, int isp); // control this with BathSpin_get/set functions
125
126// free
127void DefectArray_freePaxes(DefectArray* dfa);
128void DefectArray_freeNaddspins(DefectArray* dfa);
129void DefectArray_freeSubbath(DefectArray* dfa);
130void DefectArray_freeAll(DefectArray* dfa);
131
132
133
134
135// report
136void DefectArray_reportAll(DefectArray* dfa);
137
138void DefectArray_reportSubbath_props(DefectArray* dfa); // name, spin, gyro, xyz, mainspidx
139void DefectArray_reportSubbath_states(DefectArray* dfa); // state
140void DefectArray_reportSubbath_hypfs(DefectArray* dfa, int nqubit); // hypf
141void DefectArray_reportSubbath_quads(DefectArray* dfa); //quad
142void DefectArray_reportSubbath_hypf_subs(DefectArray* dfa); // hypf_sub
143void DefectArray_reportSubbath_disorders(DefectArray* dfa); // disorder
144//, detuning (detuning is not implemented yet)
145
146void DefectArray_reportDefect_idf(DefectArray* dfa, int idf);
147void DefectArray_reportPaxes(DefectArray* dfa);
148void DefectArray_reportNaddspins(DefectArray* dfa);
149
150#endif //__CCEX_DEFECT_H_
Definition bath.h:131
BathSpin structure contains each BathSpin's information.
Definition bath.h:17
Definition defect.h:40
Defect structure.
Definition defect.h:11
QubitArray include information of all qubits.
Definition qubit.h:115