/usr/share/psi/plugin/wavefunction.cc.template is in psi4-data 1:0.3-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /*
*@BEGIN LICENSE
*
* @plugin@ by Psi4 Developer, a plugin to:
*
* PSI4: an ab initio quantum chemistry software package
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*@END LICENSE
*/
#include <libplugin/plugin.h>
#include <psi4-dec.h>
#include <libparallel/parallel.h>
#include <liboptions/liboptions.h>
#include <libmints/mints.h>
#include <libpsio/psio.hpp>
INIT_PLUGIN
using namespace boost;
namespace psi{ namespace @plugin@ {
class @Plugin@ : public Wavefunction
{
public:
@Plugin@(boost::shared_ptr<Wavefunction> reference_wavefunction, Options& options);
virtual ~@Plugin@();
double compute_energy();
private:
Dimension nvirtpi_;
void common_init();
};
@Plugin@::@Plugin@(boost::shared_ptr<Wavefunction> reference_wavefunction, Options& options)
: Wavefunction(options, _default_psio_lib_)
{
Process::environment.set_wavefunction(reference_wavefunction);
reference_wavefunction_ = reference_wavefunction;
common_init();
}
@Plugin@::~@Plugin@()
{
}
void @Plugin@::common_init()
{
nso_ = reference_wavefunction_->nso();
nirrep_ = reference_wavefunction_->nirrep();
nmo_ = reference_wavefunction_->nmo();
soccpi_ = reference_wavefunction_->soccpi();
doccpi_ = reference_wavefunction_->doccpi();
frzcpi_ = reference_wavefunction_->frzcpi();
frzvpi_ = reference_wavefunction_->frzvpi();
nmopi_ = reference_wavefunction_->nmopi();
nsopi_ = reference_wavefunction_->nsopi();
nvirtpi_ = nsopi_ - frzcpi_ - frzvpi_ - doccpi_;
}
double @Plugin@::compute_energy()
{
/* Your code goes here. */
return 0.0;
}
extern "C"
int read_options(std::string name, Options& options)
{
if (name == "@PLUGIN@"|| options.read_globals()) {
/*- The amount of information printed to the output file -*/
options.add_int("PRINT", 1);
}
return true;
}
extern "C"
PsiReturnType @plugin@(Options& options)
{
@Plugin@ wave(Process::environment.wavefunction(), options);
wave.compute_energy();
return Success;
}
}} // End namespaces
|