Пример #1
0
    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');
Пример #2
0
    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']);