def prepare(self, prefix, in_data): print 'Prepare running solver for ' + prefix; self.prefix = prefix; parms = in_data['parms']; BETA = float(parms['BETA']); NCOR = int(parms['FLAVORS']) / 2; self.beta = BETA; self.Ntau = int(parms['N_TAU']) + 1; self.Ncor = NCOR; self.measure = int(parms['MEASURE']) hyb_mat = in_data['hybmat']; hyb_tail = in_data['hybtail']; wn = (2*arange(size(hyb_mat, 0))+1)*pi/BETA; savetxt(prefix+'.hybmat.real', c_[wn, hyb_mat.real]); savetxt(prefix+'.hybmat.imag', c_[wn, hyb_mat.imag]); savetxt(prefix+'.hybmat.tail', hyb_tail); savetxt(prefix+'.MUvector', in_data['MU']); Umatrix = generate_Umatrix(float(parms['U']), float(parms['J']), NCOR, val_def(parms, 'INTERACTION_TYPE', 'SlaterKanamori')); savetxt(prefix+'.Umatrix', Umatrix); # prepare parms file for CTQMC QMC_parms = { 'SWEEPS_EACH_NODE' : int(val_def(parms, 'SWEEPS', 500000))/self.args['np'], 'THERMALIZATION' : val_def(parms, 'THERMALIZATION', 50000), 'N_MEAS' : val_def(parms, 'N_MEAS', 100), 'BETA' : parms['BETA'], 'U_MATRIX' : prefix+'.Umatrix', 'MU_VECTOR' : prefix + '.MUvector', 'HYB_MAT' : prefix + '.hybmat', 'NCOR' : NCOR, 'HDF5_OUTPUT' : prefix + '.solution.h5', 'N_LEGENDRE' : val_def(parms, 'TRIQS_N_LEGENDRE', 50), 'ACCUMULATION' : val_def(parms, 'TRIQS_ACCUMULATION', 'legendre'), 'SPINFLIP' : val_def(parms, 'TRIQS_SPINFLIP', 1), 'MEASURE' : self.measure, }; solver_parms_file = open(prefix + '.parms', 'w'); for k, v in QMC_parms.iteritems(): solver_parms_file.write(k + ' = ' + str(v) + ';\n');
def prepare(self, prefix, in_data): # prepare hybtau file for CTQMC print 'Prepare running solver for ' + prefix; self.prefix = prefix; self.list_obs = None; self.parms = in_data['parms']; self.MEASURE_freq = int(val_def(in_data['parms'], 'MEASURE_freq', 1)); parms = in_data['parms']; FLAVORS = int(parms['FLAVORS']); # prepare parms file for CTQMC QMC_parms = { 'SEED' : random.random_integers(10000), 'SWEEPS' : int(val_def(parms, 'SWEEPS', 500000)), 'THERMALIZATION' : int(val_def(parms, 'THERMALIZATION', 300)), 'N_TAU' : int(parms['N_TAU']), 'N_HISTOGRAM_ORDERS' : int(val_def(parms, 'N_ORDER', 50)), 'N_MEAS' : int(val_def(parms, 'N_MEAS', 100)), 'N_CYCLES' : int(val_def(parms, 'N_CYCLES', 30)), 'BETA' : float(parms['BETA']), 'U_MATRIX' : self.prefix+'.Umatrix', 'MU_VECTOR' : self.prefix+'.MUvector', 'BASENAME' : prefix, 'DELTA' : prefix + '.hybtau', 'N_ORBITALS' : FLAVORS, 'MEASURE_freq' : self.MEASURE_freq, 'N_MATSUBARA' : int(parms['N_CUTOFF']), 'MAX_TIME' : val_def(parms, 'MAX_TIME', 80000), }; self.Norder = QMC_parms['N_HISTOGRAM_ORDERS']; solver_parms_file = open(prefix + '.parms', 'w'); for k, v in QMC_parms.iteritems(): solver_parms_file.write(k + ' = ' + str(v) + ';\n'); # Umatrix: either Slater-Kanamori form or using Slater integrals Umatrix = generate_Umatrix(float(parms['U']), float(parms['J']), FLAVORS/2, val_def(parms, 'INTERACTION_TYPE', 'SlaterKanamori')); hyb_tau = in_data['hybtau']; hyb_tau = c_[linspace(0, float(parms['BETA']), int(parms['N_TAU']) + 1), hyb_tau]; savetxt(prefix+'.hybtau', hyb_tau); savetxt(self.prefix+'.Umatrix', Umatrix); savetxt(self.prefix+'.MUvector', in_data['MU']);