Psi4 plugins are (shared) module libraries that are not intended to be linked to another target entity. However, modules are created mainly because they can dynamically be imported at runtime by the consuming programs. In our sample input file , we show how to import both v2rdm_casscf and mcpdft modules. This input file assumes that you have chosen the second way below (recommended) for connecting OpenRDM with your plugin. At lines 51 and 53 of this input file, we call two functions that are provided by these modules:
The energy('v2rdm-casscf') call generates a wfn object that is needed by the second energy('mcpdft') call. Be sure to add the corresponding return_wfn and ref_wfn arguments to these function calls, respectively as shown.
There are at least two ways that you can adopt to let OpenRDM talk to your Psi4 plugin:
Before adopting one of these routes, make sure that both Psi4 and OpenRDM are installed on your system in the aforementioned order as the latter becomes dependent on the former in the present case.
When installing OpenRDM, turn on the CMake option WITH_PSI4=ON (see configure file in OpenRDM's main source directory for more details). Activating this option requires that the CMake psi4_DIR variable in the configure script to be set to the directory that contains the psi4Config.cmake file so that CMake's find_packge() function within OpenRDM is able to find the psi4::core IMPORTED target and links it to OpenRDM.
Assuming that you have installed OpenRDM in /home/OpenRDM directory, include the following command in the begining of your Psi4 input file and then import the MCPDFT module:
In the present example, the mcpdft.so module lives in the /home/OpenRDM/build/stage/lib directory.
Check the input file in our v2RDM-CASSCF plugin fork for more details.
If the infrastructure of your software is managed by the CMake build system generator, we recommend that your first take a glance at How to Use section. After finding out about what you need to add to the CMakeLists.txt file residing in the main source directory of your project, CMake's internal find_package() takes care of finding and incorporating all necessary information about the OpenRDM by interrogating the openrdm::openrdm IMPORTED target.