ZhuGroup-Yale / fcdmft

Ab initio full cell dynamical mean-field theory (DMFT) and GW+DMFT for solids
GNU General Public License v3.0
32 stars 4 forks source link

issue with DMRG as the solver #1

Open vamshimohank opened 1 year ago

vamshimohank commented 1 year ago

First of all, I would like to thank the developers for making this piece of code open.

I was trying to run the NiO example using DMRG as the solver (from block2). It seems like there is a memory allocation bug in the FCIDUMP routine in block2 as I come across the following Assertion error:

Traceback (most recent call last): File "run_dmft.py", line 387, in dmft_abinitio() File "run_dmft.py", line 309, in dmft_abinitio mydmft.kernel(mu0=mu, wl=wl0, wh=wh0, delta=delta, occupancy=nelectron, opt_mu=opt_mu) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/dmft/gwdmft.py", line 1270, in kernel conv_tol=conv_tol, opt_mu=opt_mu, dump_chk=dump_chk) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/dmft/gwdmft.py", line 275, in kernel gf_imp = dmft.get_gf_imp(freqs, delta) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/dmft/gwdmft.py", line 1361, in get_gf_imp extra_delta=extra_delta, load_cas=self.load_cas, thresh2=self.thresh2) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/dmft/dmft_solver.py", line 1191, in udmrg_gf verbose=dmrg_verbose, mo_basis=False, ignore_ecore=False, n_off_diag_cg=n_off_diag_cg, mpi=True) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/solver/gfdmrg_sz.py", line 1369, in dmrg_mo_gf save_fcidump=save_fd) File "/home/katukuri/Codes/DMET/fcdmft/fcdmft/solver/gfdmrg_sz.py", line 253, in init_hamiltonian assert abs(xh1e[i, j] - xh1e[j, i]) < tol AssertionError python: /home/katukuri/Codes/AMD/block2-preview/src/instantiation/core/../../core/integral.hpp:1413: void block2::FCIDUMP::deallocate() [with FL = double]: Assertion 'total_memory != 0' failed. [alnode258:216761] Process received signal [alnode258:216761] Signal: Aborted (6) [alnode258:216761] Signal code: (-6) [alnode258:216761] [ 0] /lib64/libpthread.so.0(+0x132d0)[0x7fe86794b2d0] [alnode258:216761] [ 1] /lib64/libc.so.6(gsignal+0x110)[0x7fe8675b6420] [alnode258:216761] [ 2] /lib64/libc.so.6(abort+0x151)[0x7fe8675b7a01] [alnode258:216761] [ 3] /lib64/libc.so.6(+0x31a1a)[0x7fe8675aea1a] [alnode258:216761] [ 4] /lib64/libc.so.6(+0x31a92)[0x7fe8675aea92]

Am I missing something or is there a bug in assigning the memory.

Thanks for looking into it.

Regards Vamshi

hczhai commented 1 year ago

The default tol=1E-13 defined in Line 224 in https://github.com/ZhuGroup-Yale/fcdmft/blob/main/fcdmft/solver/gfdmrg_sz.py#L224 might be too small. You can change it to tol=1E-10 or tol=1E-8 to solve this problem.