Skip to content

Environ coupling

Edan Bainglass requested to merge edan-bainglass/q-e:environ-coupling into develop

This merge introduces a hard-coded mechanism for coupling Environ to QE. The following Environ-specific modules are implemented in the QE codebase and replace the plugin stubs:

  • Modules/environ_base_module.f90 - a central module for initializing, updating, and collecting Environ quantities
  • PW/src/environ_pw_module.f90 - Environ routines used by the PW package
  • CPV/src/environ_cp_module.f90 - Environ routines used by the CP package
  • TDDFPT/src/environ_td_module.f90 - Environ routines used by the TDDFPT package

Calls to the plugin stubs are replaced by __ENVIRON preprocessor blocks wrapping IF (use_environ) blocks, that in turn wrap direct calls to routines from the above modules. Routine imports and any necessary variables are also protected by similar preprocessor blocks.

Compiling QE with Environ can be done via the configure script using

configure --with-environ=<path-to-Environ-root>

or via CMAKE using

cmake -DENVIRON_ROOT=<path-to-Environ-root>

both assuming Environ has been precompiled.

Upon the release of Environ 3.0 (mid-April), which includes the necessary mechanics for using the new coupling system, the legacy components of the plugin system will be discarded. At such time, full and clear documentation for the above modules and calls will be added to the code. Until then, the plugin system is left in place to support the current patching scheme.

Note that support for XSpectra and NEB has also been tested under this new system.

Merge request reports