Ejemplo n.º 1
0
 def setUp(self):
     self.wf = HarmOsc1D(nelec=1, ndim=1)
     self.sampler = Metropolis(nwalkers=1000,
                               nstep=1000,
                               step_size=3,
                               nelec=1,
                               ndim=1,
                               domain={
                                   'min': -2,
                                   'max': 2
                               })
     self.optimizer = Minimize(method='bfgs', maxiter=25, tol=1E-4)
Ejemplo n.º 2
0
    def nuclear_potential(self, pos):
        return (0.5 * pos**2).flatten()

    def electronic_potential(self, pos):
        return 0


if __name__ == "__main__":

    wf = HarmOsc1D(nelec=1, ndim=1)
    sampler = Metropolis(nwalkers=1000,
                         nstep=1000,
                         step_size=3,
                         nelec=1,
                         ndim=1,
                         domain={
                             'min': -2,
                             'max': 2
                         })
    # sampler = PYMC3(nwalkers=1000,ndim=1)

    optimizer = Minimize(method='bfgs', maxiter=25, tol=1E-4)
    # optimizer = Swarm( maxiter=25)

    # VMC solver
    vmc = VMC(wf=wf, sampler=sampler, optimizer=optimizer)

    # single point
    opt_param = [0.5]
    pos, e, s = vmc.single_point(opt_param)
Ejemplo n.º 3
0
    #     def __init__(self,model,nelec,ndim):
    #         NeuralWF.__init__(self, model, nelec, ndim)

    #     def nuclear_potential(self,pos):
    #         return torch.sum(0.5*pos**2,1)

    #     def electronic_potential(self,pos):
    #         return 0
    # wf = HarmOsc3D(model=WaveNet,nelec=1, ndim=3)

    wf = NEURAL_PYSCF_WF(atom='O 0 0 0; H 0 1 0; H 0 0 1',
                         basis='dzp',
                         active_space=(2, 2))

    sampler = Metropolis(nwalkers=64,
                         nstep=10,
                         step_size=3,
                         nelec=wf.nelec,
                         ndim=3,
                         domain={
                             'min': -5,
                             'max': 5
                         })

    nn = NN4PYSCF(wf=wf, sampler=sampler)

    pos = nn.sample()
    dataset = QMC_DataSet(pos)
    dataloader = DataLoader(dataset, batch_size=nn.batchsize)
    qmc_loss = QMCLoss(nn.wf, method='variance')