ergo
xc_matrix.cc File Reference

The XC matrix evaluator. More...

#include <assert.h>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/times.h>
#include <unistd.h>
#include <pthread.h>
#include "aos.h"
#include "integrator.h"
#include "functionals.h"
#include "dft_common.h"
#include "gblas.h"
#include "output.h"
#include "utilities.h"
#include "matrix_utilities.h"
#include "grid_matrix.h"
#include "xc_evaluators.hpp"

Classes

struct  XCDistributorLdaBlas
struct  XCDistributorGgaBlas
struct  xc_data
struct  uks_data
struct  uxc_data

Macros

#define _XOPEN_SOURCE   500
#define _XOPEN_SOURCE_EXTENDED   1
#define WITH_PTHREAD   1
#define __CVERSION__
#define restrict
#define dft_kohn_sham_sync_slaves(dmat)
#define dft_kohn_sham_collect_info(myksm, ksm, energy)

Functions

void lrao2mo_ (const real *cmo, const int *ksymop, const real *res, real *fmat, real *work, int *lw)
EXTERN_C real dft_get_xc (int nElectrons, const real *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *ksm, real *edfty, int nThreads)
 computes Fock matrix ksm corresponding to given density matrix dmat.
static void * dft_get_xc_worker (void *data)
EXTERN_C real dft_get_xc_mt (int nElectrons, const real *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xc, real *edfty)
 Computes the XC interaction matrix for given density matrix.
EXTERN_C real dft_get_uxc (int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty, int nThreads)
static void * dft_get_uxc_worker (void *data)
EXTERN_C real dft_get_uxc_mt (int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty)

Variables

static pthread_mutex_t dft_prop_mutex = PTHREAD_MUTEX_INITIALIZER
static const int KOHNSH_DEBUG = 0
static const int DFTLR_DEBUG = 0
static const int DFTMAG_DEBUG = 0

Detailed Description

The XC matrix evaluator.

(c) Pawel Salek, pawsa.nosp@m.@the.nosp@m.ochem.nosp@m..kth.nosp@m..se. 2002.04.05

This module evaluates DFT contribution KS matrix.


Macro Definition Documentation

#define __CVERSION__
#define _XOPEN_SOURCE   500
#define _XOPEN_SOURCE_EXTENDED   1
#define dft_kohn_sham_collect_info (   myksm,
  ksm,
  energy 
)
#define dft_kohn_sham_sync_slaves (   dmat)
#define WITH_PTHREAD   1

Function Documentation

EXTERN_C real dft_get_uxc ( int  nElectrons,
const real dmata,
const real dmatb,
const BasisInfoStruct bis,
const Molecule mol,
const Dft::GridParams gss,
real xca,
real xcb,
real edfty,
int  nThreads 
)
EXTERN_C real dft_get_xc ( int  nElectrons,
const real dmat,
const BasisInfoStruct bis,
const Molecule mol,
const Dft::GridParams gss,
real ksm,
real edfty,
int  nThreads 
)

computes Fock matrix ksm corresponding to given density matrix dmat.

fast version - uses memory bandwidth-efficient algorithm.

References mat::axpy(), DFT_MAX_BLLEN, dft_prop_mutex, do_output(), Molecule::getNumberOfElectrons(), Dft::integrate(), Functional_::is_gga, KOHNSH_DEBUG, LOG_AREA_DFT, LOG_CAT_INFO, Dft::FullMatrix::mat, BasisInfoStruct::noOfBasisFuncs, ONEI, ONER, output_matrix(), restrict, and selected_func.

EXTERN_C real dft_get_xc_mt ( int  nElectrons,
const real dmat,
const BasisInfoStruct bis,
const Molecule mol,
const Dft::GridParams gss,
real xc,
real edfty 
)

Computes the XC interaction matrix for given density matrix.

Parameters:
dmat.
Returns:
the integrated number of electrons.
Parameters:
nElectronsnumber of electrons.
bisa structure describing the used basis set.
mola structure describing the molecule.
gssa structure describing the grid settings.
xcresulting XC matrix.
edftyresulting XC energy.

References xc_data::bis, dft_get_num_threads(), dft_get_xc(), dft_get_xc_worker(), xc_data::dmat, do_output(), Molecule::getNumberOfElectrons(), xc_data::gss, LOG_AREA_DFT, LOG_CAT_ERROR, LOG_CAT_INFO, xc_data::mol, xc_data::nElectrons, and xc_data::xc.

Referenced by get_2e_matrix_and_energy_simple_sparse(), get_2e_matrix_and_energy_sparse(), test_mol(), and test_small().

void lrao2mo_ ( const real cmo,
const int *  ksymop,
const real res,
real fmat,
real work,
int *  lw 
)

Variable Documentation

pthread_mutex_t dft_prop_mutex = PTHREAD_MUTEX_INITIALIZER
static

Referenced by dft_get_uxc(), and dft_get_xc().

const int DFTLR_DEBUG = 0
static
const int DFTMAG_DEBUG = 0
static
const int KOHNSH_DEBUG = 0
static

Referenced by dft_get_uxc(), and dft_get_xc().