Coder Social home page Coder Social logo

molgw / molgw Goto Github PK

View Code? Open in Web Editor NEW
37.0 8.0 23.0 11.04 MB

Accurate many-body perturbation theory calculations of the electronic structure of molecules and clusters

Home Page: http://www.molgw.org

License: GNU General Public License v3.0

Forth 8.76% Fortran 83.65% Python 4.47% Makefile 0.98% C++ 1.98% C 0.02% Shell 0.07% Roff 0.08%
quantum-mechanics molecule fortran scalapack bethe-salpeter mpi tddft dft hartree-fock greens-functions

molgw's Issues

Installation issues

Dear Developers,

I am new to molgw. I am trying to install molgw in my windows pc with wsl-ubuntu installed in it. However, I am facing few troubles in installing molgw. It will of great favor if you kindly help me installing the code.

The following error message shows up when I issue the command make -j:


make prepare_sourcecode
make[1]: Entering directory '/home/tamal/molgw/src'
chmod 777 ./noft/gitversion.sh
./noft/gitversion.sh > /dev/null
mv gitver.F90 ./noft
python3 prepare_sourcecode.py
make[1]: Leaving directory '/home/tamal/molgw/src'
make level000
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level000'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level005
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level005'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level008
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level008'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level010
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level010'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level015
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level015'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level020
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level020'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level022
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level022'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level025
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level025'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level030
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level030'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level040
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level040'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level050
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level050'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level060
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level060'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level065
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level065'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level070
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level070'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make level100
make[1]: Entering directory '/home/tamal/molgw/src'
make[1]: Nothing to be done for 'level100'.
make[1]: Leaving directory '/home/tamal/molgw/src'
make ../molgw
make[1]: Entering directory '/home/tamal/molgw/src'
mpif90 -cpp -m64 -I/include -O3 -fexternal-blas -march=native -mtune=native -DHAVE_MPI -DHAVE_SCALAPACK -DHAVE_MKL
m_definitions.o m_warning.o m_lbfgs.o m_elements.o m_cart_to_pure.o
m_mpi.o m_mpi_tools.o
m_libxc_tools.o m_scalapack.o m_timing.o m_memory.o m_inputparam.o
m_string_tools.o m_numerical_tools.o m_linear_algebra.o m_scf.o m_selfenergy_tools.o m_atoms.o m_ecp.o
m_gaussian.o m_block_diago.o m_basis_set.o m_eri.o m_dft_grid.o m_libint_tools.o m_libcint_tools.o
m_eri_calculate.o m_eri_ao_mo.o m_density_tools.o m_tddft_fxc.o m_dm_mbpt.o m_spectra.o
m_spectral_function.o m_ci.o
libint_onebody.o libint_onebody_grad.o libint_twobody.o libint_twobody_grad.o
boys_function.o lebedev_quadrature.o m_virtual_orbital_space.o pt_selfenergy.o m_pt_density_matrix.o
m_nofoutput.o m_lbfgs_intern.o m_integd.o m_rdmd.o m_elag.o m_gammatodm2.o m_diagf.o
m_e_grad_occ.o m_e_grad_occ_cpx.o m_optocc.o m_optorb.o m_noft_driver.o gitver.o
mp2.o m_noft.o gw_selfenergy.o m_gw_selfenergy_grid.o gwgamma_selfenergy.o m_build_bse.o
m_linear_response.o m_acfd.o static_polarizability.o m_multipole.o m_io.o m_restart.o
m_hamiltonian_tools.o m_hamiltonian_twobodies.o m_hamiltonian_onebody.o m_scf_loop.o m_dm_analysis.o
m_hamiltonian_wrapper.o m_fourier_quadrature.o
pdbssolver1.o m_selfenergy_evaluation.o real_spherical_harmonics.o force.o m_tddft_propagator.o
molgw.o
-o ../molgw
-L /usr/lib/x86_64-linux-gnu/ -lscalapack-openmpi -L/usr/lib/x86_64-linux-gnu/mkl/ -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
-L/usr/lib/x86_64-linux-gnu//lib/libxc.a -I-L/usr/lib/x86_64-linux-gnu//include


-L/home/tamal/libcint/lib/ -lcint
-lstdc++ -lm
/usr/bin/ld: m_libxc_tools.o: in function __m_libxc_tools_MOD_destroy_libxc_info': m_libxc_tools.f90:(.text+0x66): undefined reference to xc_func_end'
/usr/bin/ld: m_libxc_tools.f90:(.text+0x87): undefined reference to xc_func_free' /usr/bin/ld: m_libxc_tools.o: in function __m_libxc_tools_MOD_init_libxc_info':
m_libxc_tools.f90:(.text+0x381): undefined reference to xc_func_alloc' /usr/bin/ld: m_libxc_tools.f90:(.text+0x3a5): undefined reference to xc_func_init'
/usr/bin/ld: m_libxc_tools.f90:(.text+0x454): undefined reference to xc_func_set_ext_params_name' /usr/bin/ld: m_libxc_tools.f90:(.text+0x514): undefined reference to xc_func_set_ext_params_name'
/usr/bin/ld: m_libxc_tools.f90:(.text+0x5d4): undefined reference to xc_func_set_ext_params_name' /usr/bin/ld: m_libxc_tools.f90:(.text+0x6c8): undefined reference to xc_family_from_id'
/usr/bin/ld: m_inputparam.o: in function __m_inputparam_MOD_init_dft_type': m_inputparam.f90:(.text+0x4ef1): undefined reference to xc_hyb_cam_coef'
/usr/bin/ld: m_tddft_fxc.o: in function __m_tddft_fxc_MOD_prepare_tddft': m_tddft_fxc.f90:(.text+0x4017): undefined reference to xc_gga_vxc'
/usr/bin/ld: m_tddft_fxc.f90:(.text+0x4061): undefined reference to xc_gga_fxc' /usr/bin/ld: m_tddft_fxc.f90:(.text+0x40b8): undefined reference to xc_lda_fxc'
/usr/bin/ld: m_io.o: in function __m_io_MOD_header': m_io.f90:(.text+0x23d66): undefined reference to xc_version'
/usr/bin/ld: m_hamiltonian_twobodies.o: in function __m_hamiltonian_twobodies_MOD_dft_exc_vxc_batch': m_hamiltonian_twobodies.f90:(.text+0x34c4): undefined reference to xc_lda_exc_vxc'
/usr/bin/ld: m_hamiltonian_twobodies.f90:(.text+0x352d): undefined reference to `xc_gga_exc_vxc'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:148: ../molgw] Error 1
make[1]: Leaving directory '/home/tamal/molgw/src'
make: *** [Makefile:79: molgw] Error 2


I am using the follwing configuration settings:


OPENMP=
PYTHON=python3

Parallel MPI/SCALAPACK compilation with MKL

FC=mpif90

CPPFLAGS=-DHAVE_MPI -DHAVE_SCALAPACK -DHAVE_MKL

CXX=g++
FCFLAGS= -cpp -m64 -I${MKLROOT}/include -O3 -fexternal-blas -march=native -mtune=native
CXXFLAGS= -O3 -march=native -mtune=native

MKL without threads

LAPACK= -L/usr/lib/x86_64-linux-gnu/mkl/ -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl

SCALAPACK=-L /usr/lib/x86_64-linux-gnu/ -lscalapack-openmpi

LIBXC_ROOT=-L/usr/lib/x86_64-linux-gnu/

#LIBINT_ROOT=${HOME}/src/libint-2.4.2/

LIBCINT= -L/home/tamal/libcint/lib/ -lcint

FFTW_ROOT=


Please let me know if you need more information.

Thanks in advance,

Tamal

GTH-potential support

Dear Bruneval,

I would like to suggest molgw to support GTH-potential as like the CP2K package.

There are a lot of corresponding gaussian basis sets with the GTH-potential in CP2K almost acrossing the whole elements. And also the LIBCINT/PYSCF support the GTH-potential.

test error

when i compile molgw and it is worked, but i test ../../molgw helium.in STOP: check_capability_libcint: your LIBCINT compilation has incompatible p-orbital ordering. Please recompile it with -DPXPZPY=1, i have compiled LIBCINT5.3.0 used -DCMAKE_C_FLAGS="-DPXPZPY=1",it is confused

"STOP: diagonalize_inplace_dp: diago failure 2" when including point charges

Dear molgw developers,

Recently I am using molgw-2.F version, which added a new feature -- adding point charges in calculations.

However, when I tried to use this new feature, I have met some errors:

  1. the atom type of some point charges is recognized as Hydrogen (When the value of charge is greater than 0.5 or less than -0.5)
  2. before SCF calculations, the program stopped with error:
    "STOP: diagonalize_inplace_dp: diago failure 2"

How to solve these issues? Thank you

Best,
Wen-Kai

See attached for the input and output files
input.txt
output.txt

Dichroism in molwg

Hi Fabien,
with Elena we are currently using molGW to do some checks against calculations with yambo in molecules.

We are interested in different level of approximations (IP, TDDFT, BSE) and in two different physical quantities, namely absorption (alpha) and dichroism (beta).

While alpha is defined in terms of the dipole , for beta we need both and <m=x ^ v>
Just a warning. Possible issues could arise when rotating from IP to the space of the transitions
(for example if one rotates errors are introduced, since the v operator depends on the underlying hamiltonian)

In short, it would be nice to have the and the dichroism implemented in MolGW as well.
In general, for molecules, it is a very useful feature, and it would not require much coding I think.

Best,
D.

P.S.: thanks for the fix for the absorption with nexcitonation, it works fine.

LibXC

Dear Dr. Bruneval,

is it possible to bind exchange-correlation functional of interest from LibXC (e.g. wB97X) to MolGW ? What is needed to do for that ?

Thanks in advance,
Anton

Problem with "move_nuclei" input variable

Dear Fabian

I need to use gradient terms of onebody integral such as overlap and kinetic energy. Unfortunately, it seems I'm not able to use them despite their implementations in the 'force.f90' file.
By tracing back the problem it seems a simple relax calculation (using "move_nuclei" variable) is not possible in my case. I get an error that says: "LIBINT does not contain the gradients of the integrals that are needed when move_nuclei is different from no" although LIBINT does and the condition "LIBINT2_DRIVE_ONEBODY_ORDER > 0" correctly applied in files "libint_onebody_grad.cc" and "force.f90".

I'm using MOLGW 3.0 and "h2_relax.in" file from the test folder of the code for this purpose.
I also tried compiling the code with LIBCINT or a newer version of LIBINT but I still get the same error.

I will appreciate it if you can help me in this matter and guide me on how should I fix this problem.

Best,
Parisa

Compilation error

Dear molgw developers,

I'm a new user of molgw and I have been trying to compile the code without success at the moment. As indicated in the installation guide, I'm using a recent version of the GNU compiler (9.2). However, I get a compiler internal error

gfortran -cpp -ffree-line-length-none -O2 -fexternal-blas -march=native -mtune=native  -fopenmp -DFORTRAN2008 -DHAVE_LIBXC  -c m_linear_algebra.f90 -I/home/marc-pc/.local/libxc/include
f951: internal compiler error: in gfc_enforce_clean_symbol_state, at fortran/symbol.c:4273
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
make[1]: *** [Makefile:379: m_linear_algebra.o] Error 1
make[1]: Leaving directory '/media/marc-pc/HDD1/programs/molgw/src'
make: *** [Makefile:53: molgw] Error 2

The error should probably be communicated to the GNU compiler developers.

Furthermore, could you indicate to me a compiler version that you know works for molgw? I tried also with version 7.5, but then I get the following error

gfortran -cpp -ffree-line-length-none -O2 -fexternal-blas -march=native -mtune=native  -fopenmp -DFORTRAN2008 -DHAVE_LIBXC  -c m_hamiltonian_twobodies.f90 -I/media/marc-pc/HDD1/.local/libxc//include
m_hamiltonian_twobodies.f90:335:43:
pmat(ipair) = SUM(p_matrix(kbf,lbf,:)%re) * 2.0_dp
Error: Unexpected ‘%’ for nonderived-type variable ‘__tmp_COMPLEX_8’ at (1)

TDDFT with "nexcitation": no polarizablity output

Dear MolGW developers,
I am trying to run TDDFT calculations, to obtain absorption spectra, with MolGW on a molecule (27 atoms). The calculation is very slow.
I have then tried to run it using the "nexcitation" variable to choose a limited number of excitations: in this case the calculation takes less time, but it does not generate the dynamical_dipole_polarizability.dat file, in spite of having calc_spectrum='yes' in the input file.

How does one obtain a dynamical_dipole_polarizability.dat file out of a TDDFT run with a specified number of excitations?

Thanks in advance
Regards
Elena Molteni

ISM-CNR and Università degli Studi di Milano, Italy

implementation of QM electric field

Dear Fabian

I'm using MOLGW for calculating the excitation spectrum of biomolecules and previously succeed to implement the Transition Density calculations to the code.
At the current stage, I'm interested to implement the calculation of QM electric field at a MM classic charge in each SCF iteration and adding up coupling with point charges (QM/MM interaction) to the total DFT energy.
For this purpose, in the first step, I call 'p_matrix' (density) in each iteration which is not a problem.
In the second step, for evaluating QM electric field energy I need standard one-electron integrals which can be called from Libint in MOLGW.
In my subroutine, I follow a similar framework as subroutine 'setup_nucleus' in the 'm_hamiltonian_onebody.f90' file, due to the similarity of formalism in my calculation and nuclear potential (nuclear-electron interaction).
The new subroutine reads an external file including MM point charges and their coordinates. Coordinates save in a similar format as 'xatom(:,iatom)' of QM part and 'zvalence' replaces with the value of the charges.
Also, I understood how in part 'libint_elecpot' of the file 'libint_onebody.cc', pure atomic orbital and basis function overlap matrix constructed by code.
Now I'm a little bit confused about which of these files ('libint_onebody.cc' and 'm_hamiltonian_onebody.f90') should be modified to can replace the coordinate of QM nuclear (R) with MM point charges.
Is that enough if in subroutine 'setup_nucleus', replace 'C(:) = xatom(:,iatom)' with 'C(:) = xcharges(:,katom)' or more basic defination are needed in 'libint_onebody.cc' file?
I will appreciate any guidance and help in this regard or even more insight about the implementation of this calculation in the code.

Many thanks in advance for your time.

Difficulty compiling from source on Perlmutter

Hi,

My name is Erik and I am a software integration engineer at NERSC. I have been working on installing MolGW on our systems following the directions here: http://www.molgw.org/tuto_compilation/ but have run into a few issues.

Do you know if anyone is running MolGW on Perlmutter and can share their successful install method? I have tried several approaches unsuccessfully (Spack, container, source).

One issue I ran into, was with gfortan v 11.2 not liking the lines 20-24 of m_definitions.f90. I commented them out and was able to continue.

Another issue, that came up seemed like a dependency on the ELPA package. Unfortunately, I was unable to install ELPA following their directions. Is this a real dependency, or is there an option I can use to turn it off?

Thanks for any suggestions!

Erik

Diagonalization solvers

Hi Fabien,
thanks again for your tips on my previous issue: we have tried TDDFT with "nexcitation" on a small test system, and indeed it works correctly. i.e. it also outputs the spectrum. I can also confirm that, as you mentioned, reducing the grid quality for TDDFT from high to low has a very small effect on the obtained absorption spectra, at least in the molecules I am studying.

I have a further question, again on TDDFT calculations: you mentioned that, by setting "nexcitation", one uses a Davidson partial diagonalization. For one of the molecules I am studying (27 atoms) I am able to run a TDDFT calculation, using a "low" grid, and without even needing to set "nexcitation", indeed. For another molecule (45 atoms) instead, TDDFT runs are crashing due to memory issues, on 32 processors, even with a "low" grid and using "nexcitation" (in particular, setting it to 50).

Are there (further) approximated diagonalization methods, different diagonalization solvers, or other strategies one may use in order to save memory for TDDFT calculations on relatively large systems?

Thanks again in advance
Regards
Elena Molteni

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.