Files
mlpack/fastlib/branches/fastlib-old/u/march/hf/hf_kernel.h
T
Ryan Curtin f6864dd435 Move fastlib-old (originally 'fastlib') to fastlib/branches/fastlib-old where it
will sit until the end of time and nobody will touch it because it's old
2010-01-31 22:31:55 +00:00

103 lines
1.6 KiB
C++

#ifndef HF_KERNEL_H
#define HF_KERNEL_H
/**
* @file hf_kernel.h
*
* Kernels for the Hartree-Fock molecular orbital calculation
*
*/
/**
* Evaluates the kernel given four centers.
*
* Note: currently assuming a global fixed bandwidth
*/
class HFFourBodyKernel {
private:
HFKernel hf_kernel_;
//I believe this is the 4x4 distances matrix;
Matrix distmat_;
public:
/**
* Initializes to a specific bandwidth
*
* @param bandwidth_in the given bandwidth
*/
void Init(double bandwidth_in) {
hf_kernel_.Init(bandwidth_in);
distmat_.Init(3,3);
}
//Need to figure out what this is, exactly . . .
int order() {
return 4;
}
/**
* Evaluates the potential on a given set of distances
*
* Note: why does this need to be a matrix, it only depends on 3 distances
*
* @param sqdists the 4x4 matrix of distances i, j, k, l
*/
double EvalUnnormOnSq(const Matrix &sqdists) const {
double result = 1;
// compute the two Gaussian kernel distances
// then, compute the weird function on the average distance
return result;
}
}
class HFKernel {
//Does Dong's code create one of these for every bounds computation?
// Seems inefficient to do so, can just reuse the same one with different distances
private:
GaussianKernel gauss_kernel_;
double bandwidth;
public:
void Init(double bandwidth_in) {
bandwidth = bandwidth_in;
gauss_kernel_.Init(bandwidth_in);
}
double EvalUnnormOnSq(double sqdist) const {
//Need to return the full computation here
double total;
return(total);
}
}
#endif