Hamiltonian EnsembleCCE::create_spin_hamiltonian(const cSPIN& espin, const PureState& center_spin_state, const vector<cSPIN>& spin_list) { SpinDipolarInteraction dip(spin_list); SpinZeemanInteraction zee(spin_list, _magB); DipolarField hf_field(spin_list, espin, center_spin_state); Hamiltonian hami(spin_list); hami.addInteraction(dip); hami.addInteraction(zee); hami.addInteraction(hf_field); hami.make(); return hami; }
Hamiltonian SingleSampleCCE::create_spin_hamiltonian(const cSPIN& espin, const PureState& center_spin_state, const vector<cSPIN>& spin_list, const cClusterIndex& clstIndex ) {/*{{{*/ SpinDipolarInteraction dip(spin_list); SpinZeemanInteraction zee(spin_list, _magB); DipolarField hf_field(spin_list, espin, center_spin_state); DipolarField bath_field(spin_list, _bath_spins.getSpinList(), _bath_state_list, clstIndex.getIndex() ); Hamiltonian hami(spin_list); hami.addInteraction(dip); hami.addInteraction(zee); hami.addInteraction(hf_field); hami.addInteraction(bath_field); hami.make(); return hami; }/*}}}*/
/* return the total record length */ int hf_record_length(HFILE *hfp){ int sum=0; int i; for (i=1;i<=hf_fields(hfp);i++){ if (!strcmp(hf_field(hfp, i),"i1")) sum+=1; else if (!strcmp(hf_field(hfp, i),"i2")) sum+=2; else if (!strcmp(hf_field(hfp, i),"i4")) sum+=4; else if (!strcmp(hf_field(hfp, i),"i8")) sum+=8; else if (!strcmp(hf_field(hfp, i),"r4")) sum+=4; else if (!strcmp(hf_field(hfp, i),"r8")) sum+=8; else sum += atoi(hf_field(hfp, i)+1); } return sum; }