Environ coupling
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.