ergo
ergo_scripted.cc File Reference

The main program for the ergo project. More...

#include <dirent.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory>
#include <string>
#include <list>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/times.h>
#include <errno.h>
#include <sstream>
#include "atom_labels.h"
#include "density_description_file.h"
#include "ergo_scripted.h"
#include "grid_reader.h"
#include "dft_common.h"
#include "lin_trans.h"
#include "integrals_2el.h"
#include "integrals_2el_explicit.h"
#include "integrals_2el_boxed.h"
#include "integrals_2el_K.h"
#include "integrals_2el_J.h"
#include "integrals_general.h"
#include "operator_matrix.h"
#include "memorymanag.h"
#include "molecule.h"
#include "output.h"
#include "scf.h"
#include "scf_utils.h"
#include "slr.h"
#include "matrix_utilities.h"
#include "SCF_restricted.h"
#include "SCF_unrestricted.h"
#include "units.h"
#include "ci.h"
#include "license.h"
#include "xyz_file_parser.h"
#include "electron_dynamics.h"
#include "tdhf_dynamics.h"

Classes

class  Ergo
 An object representing the state of the input processor. More...
 
class  ErgoE2Evaluator
 ErgoE2Evaluator implements the linear tranformation of the trial vector/transition density matrix by the E[2] operator. More...
 
class  ErgoOperator
 
struct  filename_or_string_struct
 

Macros

#define SKIP_UNOFFICIAL_INPUT_PARAMS
 
#define KW(kl, vname, type, defval, desc)   kl = variable_new_ ##type(kl, (type), (#vname), (desc), (defval))
 Macro for compact expression of recognized keywords. More...
 
#define variable_new_VAR_STRING   variable_new
 
#define variable_new_VAR_FLOAT(kl, t, n, h, v)   variable_new(kl,t,n,h,double(v))
 
#define variable_new_VAR_INT   variable_new
 
#define variable_new_VAR_LIST   variable_new
 
#define var_get_int(n)   var_get_int_template(NULL, (n))
 
#define var_get_intJK(n)   var_get_int_template(ergo.J_K_params, (n))
 
#define var_get_intLR(n)   var_get_int_template(ergo.lr_params, (n))
 
#define var_get_intED(n)   var_get_int_template(ergo.ed_params, (n))
 
#define var_get_intMA(n)   var_get_int_template(ergo.mat_params, (n))
 
#define var_get_intOU(n)   var_get_int_template(ergo.output_params, (n))
 
#define var_get_intSCF(n)   var_get_int_template(ergo.scf_params, (n))
 
#define var_get_intXC(n)   var_get_int_template(ergo.XC_params, (n))
 
#define var_get_real(n)   var_get_real_template(NULL, (n))
 
#define var_get_realJK(n)   var_get_real_template(ergo.J_K_params, (n))
 
#define var_get_realLR(n)   var_get_real_template(ergo.lr_params, (n))
 
#define var_get_realED(n)   var_get_real_template(ergo.ed_params, (n))
 
#define var_get_realMA(n)   var_get_real_template(ergo.mat_params, (n))
 
#define var_get_realOU(n)   var_get_real_template(ergo.output_params, (n))
 
#define var_get_realSCF(n)   var_get_real_template(ergo.scf_params, (n))
 
#define var_get_realXC(n)   var_get_real_template(ergo.XC_params, (n))
 
#define var_get_stringLR(n)   var_get_string(ergo.lr_params, (n))
 
#define var_get_stringED(n)   var_get_string(ergo.ed_params, (n))
 
#define var_get_stringSCF(n)   var_get_string(ergo.scf_params, (n))
 
#define var_get_stringOU(n)   var_get_string(ergo.output_params, (n))
 
#define var_get_stringXC(n)   var_get_string(ergo.XC_params, (n))
 
#define KL   ergo.J_K_params
 
#define KWJK(n, type, d)   KW(ergo.J_K_params,n,type,jkOptions.n,(d))
 
#define KL   ergo.XC_params
 
#define KL   ergo.output_params
 
#define KL   ergo.mat_params
 
#define KWMAT(n, type, d)   KW(ergo.mat_params,n,type,matOptions.n,d)
 
#define KL   ergo.lr_params
 
#define KL   ergo.ed_params
 
#define KWED(n, type, d)   KW(ergo.ed_params,n,type,edOptions.n,d)
 
#define KL   ergo.scf_params
 
#define KWSCF(n, type, d)   KW(ergo.scf_params,n,type,scfOptions.n,d)
 
#define KL   ergo.var_list
 

Functions

static void variable_free (struct variable *v)
 release variable data structure and its children. More...
 
static struct variablevariable_new (struct variable *tail, enum VarType type, const char *name, const char *description,...)
 creates new variable item. More...
 
void es_assign_num (struct variable *v, double val)
 es_assign_num assigns given numerical value to the variable. More...
 
void es_assign_str (struct variable *v, const char *str)
 es_assign_str assigns given string to the variable. More...
 
int es_assign_range (MolType mt, int rangeNo, int start, int cnt, const char *name)
 Defines a range of atoms that will be assigned a specific basis set. More...
 
struct variablees_find_var (struct variable *root, const char *name)
 finds the variable struct by More...
 
static int var_get_int_template (struct variable *root, const char *name)
 
static double var_get_real_template (struct variable *root, const char *name)
 
static const char * var_get_string (struct variable *root, const char *name)
 
static void var_print_tree (struct variable *tree, FILE *f, int indent)
 
void es_mol_begin (enum MolType moleculeClass)
 starts processing the inline molecule input. More...
 
void es_add_atom (const char *name, double x, double y, double z)
 adds single atom at given coordinates and given name. More...
 
void es_mol_commit (void)
 Finish the inline definition of the molecule. More...
 
void es_mol_unit_angstrom (void)
 Selects the units for the inline molecule format to be Angtroms, as opposed to default atomic units. More...
 
int es_mol_read_molecule (const char *fname, enum MolType moleculeClass)
 reads molecule data in the MOLECULE.INP (Dalton) or XYZ format. More...
 
int es_set_nthreads (int nThreads)
 
int es_set_nthreads_string (const char *str)
 
static void jkparams_set_from_vars (JK::Params &jkp)
 
void es_print_help ()
 
void es_print_help_var (const struct variable *var)
 
void es_print_list_dft_funcs ()
 
void es_print_is_cht_used ()
 
void es_print_precision ()
 Print precision that was selected for building the program. More...
 
static int es_rmdir_with_content (const char *dirname)
 
int es_run (const char *mode, int save_pot)
 called when an actual calculation is to be commenced. More...
 
int es_getexc (const char *mode, int no_exc)
 Computes the specified number of excited states. More...
 
static const int * getOperatorParams (int opname)
 
static void solveForRHS (LR::SetOfEqSolver &solver, ErgoE2Evaluator &e2, int opName, const char *tmpdir, ergo_real freq)
 
int es_get_polarisability (const char *mode, const char *opName, double freq)
 Computes a dynamical polarizability for an operator specified by the. More...
 
static void benchmark_mm ()
 
int yyparse (void)
 
void * yy_scan_string (const char *str)
 
void * yy_create_buffer (FILE *f, int sz)
 
void yy_switch_to_buffer (void *)
 
void yy_delete_buffer (void *)
 
void yylex_destroy (void)
 
static void ergo_parse_file (FILE *inputFile)
 
static void ergo_parse_string (const char *str)
 
void es_warranty (void)
 
int main (int argc, char *argv[])
 

Variables

static Ergo ergo
 
static IntegralInfoergoIntegralInfo = NULL
 Molecule stores geometry of the current molecule. More...
 
static BasisInfoStructBasis_info = NULL
 
FILE * yyin
 file used by the lex-generated parser. More...
 

Detailed Description

The main program for the ergo project.

It enables scripting and more complex input forms.

Author
: Pawel Salek responsible. But feel free to modify the file if you are humbly convinced your ideas are correct.

Macro Definition Documentation

◆ KL [1/8]

#define KL   ergo.J_K_params

◆ KL [2/8]

#define KL   ergo.XC_params

◆ KL [3/8]

#define KL   ergo.output_params

◆ KL [4/8]

#define KL   ergo.mat_params

◆ KL [5/8]

#define KL   ergo.lr_params

◆ KL [6/8]

#define KL   ergo.ed_params

◆ KL [7/8]

#define KL   ergo.scf_params

◆ KL [8/8]

#define KL   ergo.var_list

◆ KW

#define KW (   kl,
  vname,
  type,
  defval,
  desc 
)    kl = variable_new_ ##type(kl, (type), (#vname), (desc), (defval))

Macro for compact expression of recognized keywords.

We make some effort to convert all the floating-point default values to double type so that they can be passed through the stack without problem. The only potential problem is a potential loss of precision if sizeof(ergo_real) > sizeof(double) but this we can hopefully live with for input variables, can we?

Referenced by Ergo::registerInputVariables().

◆ KWED

#define KWED (   n,
  type,
 
)    KW(ergo.ed_params,n,type,edOptions.n,d)

◆ KWJK

#define KWJK (   n,
  type,
 
)    KW(ergo.J_K_params,n,type,jkOptions.n,(d))

◆ KWMAT

#define KWMAT (   n,
  type,
 
)    KW(ergo.mat_params,n,type,matOptions.n,d)

◆ KWSCF

#define KWSCF (   n,
  type,
 
)    KW(ergo.scf_params,n,type,scfOptions.n,d)

◆ SKIP_UNOFFICIAL_INPUT_PARAMS

#define SKIP_UNOFFICIAL_INPUT_PARAMS

◆ var_get_int

#define var_get_int (   n)    var_get_int_template(NULL, (n))

Referenced by es_run().

◆ var_get_intED

#define var_get_intED (   n)    var_get_int_template(ergo.ed_params, (n))

◆ var_get_intJK

#define var_get_intJK (   n)    var_get_int_template(ergo.J_K_params, (n))

Referenced by jkparams_set_from_vars().

◆ var_get_intLR

#define var_get_intLR (   n)    var_get_int_template(ergo.lr_params, (n))

Referenced by es_get_polarisability(), and es_getexc().

◆ var_get_intMA

#define var_get_intMA (   n)    var_get_int_template(ergo.mat_params, (n))

Referenced by es_run().

◆ var_get_intOU

#define var_get_intOU (   n)    var_get_int_template(ergo.output_params, (n))

◆ var_get_intSCF

#define var_get_intSCF (   n)    var_get_int_template(ergo.scf_params, (n))

Referenced by es_run().

◆ var_get_intXC

#define var_get_intXC (   n)    var_get_int_template(ergo.XC_params, (n))

◆ var_get_real

#define var_get_real (   n)    var_get_real_template(NULL, (n))

Referenced by es_run().

◆ var_get_realED

#define var_get_realED (   n)    var_get_real_template(ergo.ed_params, (n))

Referenced by es_run().

◆ var_get_realJK

#define var_get_realJK (   n)    var_get_real_template(ergo.J_K_params, (n))

Referenced by es_run(), and jkparams_set_from_vars().

◆ var_get_realLR

#define var_get_realLR (   n)    var_get_real_template(ergo.lr_params, (n))

Referenced by es_get_polarisability(), and es_getexc().

◆ var_get_realMA

#define var_get_realMA (   n)    var_get_real_template(ergo.mat_params, (n))

Referenced by es_run().

◆ var_get_realOU

#define var_get_realOU (   n)    var_get_real_template(ergo.output_params, (n))

◆ var_get_realSCF

#define var_get_realSCF (   n)    var_get_real_template(ergo.scf_params, (n))

Referenced by es_run().

◆ var_get_realXC

#define var_get_realXC (   n)    var_get_real_template(ergo.XC_params, (n))

◆ var_get_stringED

#define var_get_stringED (   n)    var_get_string(ergo.ed_params, (n))

Referenced by es_run().

◆ var_get_stringLR

#define var_get_stringLR (   n)    var_get_string(ergo.lr_params, (n))

◆ var_get_stringOU

#define var_get_stringOU (   n)    var_get_string(ergo.output_params, (n))

◆ var_get_stringSCF

#define var_get_stringSCF (   n)    var_get_string(ergo.scf_params, (n))

Referenced by es_run().

◆ var_get_stringXC

#define var_get_stringXC (   n)    var_get_string(ergo.XC_params, (n))

Referenced by es_run().

◆ variable_new_VAR_FLOAT

#define variable_new_VAR_FLOAT (   kl,
  t,
  n,
  h,
 
)    variable_new(kl,t,n,h,double(v))

◆ variable_new_VAR_INT

#define variable_new_VAR_INT   variable_new

◆ variable_new_VAR_LIST

#define variable_new_VAR_LIST   variable_new

◆ variable_new_VAR_STRING

#define variable_new_VAR_STRING   variable_new

Function Documentation

◆ benchmark_mm()

static void benchmark_mm ( )
static

References BETA, and mat::gemm().

Referenced by main().

◆ ergo_parse_file()

static void ergo_parse_file ( FILE *  inputFile)
static

◆ ergo_parse_string()

static void ergo_parse_string ( const char *  str)
static

◆ es_add_atom()

void es_add_atom ( const char *  name,
double  x,
double  y,
double  z 
)

adds single atom at given coordinates and given name.

The charge is specified currently by the name of the element.

References Molecule::addAtom(), charge, do_output(), ergo, get_charge_int_from_atom_label(), Ergo::ghostMolecule, LOG_AREA_MAIN, LOG_CAT_INFO, MOL_GHOST, MOL_MAIN, Ergo::molecule, Ergo::moleculeUnit, variable::name, and Ergo::readingMoleculeClass.

Referenced by yyparse().

◆ es_assign_num()

void es_assign_num ( struct variable v,
double  val 
)

es_assign_num assigns given numerical value to the variable.

References do_output(), LOG_AREA_MAIN, LOG_CAT_ERROR, LOG_CAT_INFO, variable::v, VAR_FLOAT, and VAR_INT.

Referenced by es_set_nthreads(), and yyparse().

◆ es_assign_range()

int es_assign_range ( MolType  mt,
int  rangeNo,
int  start,
int  cnt,
const char *  name 
)

Defines a range of atoms that will be assigned a specific basis set.

The range can be reset by specifying a empty count.

Parameters
mtchooses main or the ghost molecule.
rangeNochoose the range to be assigned (1 to 3).
startthe start index.
cntthe count of atoms in the range.
namethe name of the basis set file.

References BasissetNameRange::basisSetFileName, Ergo::basissetRangeList, Ergo::basissetRangeListGhost, BasissetNameRange::count, ergo, free(), MOL_GHOST, MOL_MAIN, variable::name, Ergo::NO_OF_BASIS_SET_RANGES, and BasissetNameRange::startAtomIndex.

Referenced by yyparse().

◆ es_assign_str()

void es_assign_str ( struct variable v,
const char *  str 
)

es_assign_str assigns given string to the variable.

It additionally clears some local variables if a value is assigned to one of the "special" variables like "output_basis or "basis".

References Ergo::Basis, Basis_info, do_output(), ergo, free(), Ergo::GhostBasis, LOG_AREA_MAIN, LOG_CAT_INFO, variable::str, and variable::v.

Referenced by yyparse().

◆ es_find_var()

struct variable* es_find_var ( struct variable root,
const char *  name 
)

finds the variable struct by

Parameters
namestarting in the specified root.
rootmust be of type VAR_LIST.

References do_output(), ergo, es_find_var(), variable::list, LOG_AREA_MAIN, LOG_CAT_ERROR, variable::name, variable::next, variable::type, variable::v, VAR_LIST, and Ergo::var_list.

Referenced by es_find_var(), es_set_nthreads(), main(), var_get_int_template(), var_get_real_template(), var_get_string(), and yyparse().

◆ es_get_polarisability()

int es_get_polarisability ( const char *  mode,
const char *  opName,
double  freq 
)

Computes a dynamical polarizability for an operator specified by the.

Parameters
opNameand frequency
freq- please check what does the literature say about computing multiple operators and/or frequencies at the same time. Consider using enumerated constants for operators instead of arbitrary strings to enforce parameter checking. It can be too early in this place for that - the operator names should be checked down the execution pipeline.
modeis the type of Hamiltonian (HF, or the xc functional).
freqtells the frequency.

References Basis_info, compute_overlap_matrix(), LR::LRSolver::convThreshold, ddf_load_density(), do_output(), ergo, ergo_free(), ergoIntegralInfo, es_run(), Molecule::getNumberOfElectrons(), getOperatorParams(), LR::SetOfEqSolver::increaseSubspaceLimit(), LOG_AREA_MAIN, LOG_CAT_ERROR, LOG_CAT_INFO, Ergo::molecule, BasisInfoStruct::noOfBasisFuncs, solveForRHS(), var_get_intLR, var_get_realLR, and var_get_string().

Referenced by yyparse().

◆ es_getexc()

int es_getexc ( const char *  mode,
int  no_exc 
)

Computes the specified number of excited states.

Parameters
no_excspecifies number of the excited states to be computed,
modespecifies the calculation type (HF, LDA, etc).

FIXME: consider passing callback functions instead of entire matrices. The callback functions fill in specified blocks of data with overlap matrix and the Fock matrix. Current solution keeps these two potentially huge data blocks allocated all the time in memory.

References Basis_info, compute_overlap_matrix(), LR::EigenSolver::computeMoments(), LR::LRSolver::convThreshold, ddf_load_density(), do_output(), ergo, ergo_free(), ergoIntegralInfo, es_run(), LR::EigenSolver::getFreq(), Molecule::getNumberOfElectrons(), LR::EigenSolver::getTransitionMoment2(), grid_free_files(), LR::EigenSolver::increaseSubspaceLimit(), LOG_AREA_MAIN, LOG_CAT_ERROR, Ergo::molecule, BasisInfoStruct::noOfBasisFuncs, LR::LRSolver::solve(), var_get_intLR, var_get_realLR, and var_get_string().

Referenced by yyparse().

◆ es_mol_begin()

void es_mol_begin ( enum MolType  moleculeClass)

starts processing the inline molecule input.

Call to this routine should be followed by calls to es_add_atom and es_mol_commit.

Parameters
moleculeClassselects the main molecule (MOL_MAIN) or the ghost molecule (MOL_GHOST).

References Basis_info, Molecule::clear(), ergo, Ergo::ghostMolecule, MOL_GHOST, MOL_MAIN, Ergo::molecule, Ergo::moleculeUnit, and Ergo::readingMoleculeClass.

◆ es_mol_commit()

void es_mol_commit ( void  )

Finish the inline definition of the molecule.

References ergo, Molecule::getNoOfAtoms(), Ergo::ghostMolecule, MOL_GHOST, Ergo::molecule, and Ergo::readingMoleculeClass.

Referenced by yyparse().

◆ es_mol_read_molecule()

int es_mol_read_molecule ( const char *  fname,
enum MolType  moleculeClass 
)

reads molecule data in the MOLECULE.INP (Dalton) or XYZ format.

Parameters
fnamecontains the file name to be opened and read.
moleculeClassdetermines whether it is the main molecule (MOL_MAIN) or the ghost molecule (MOL_GHOST) to be read.

References Ergo::Basis, Basis_info, do_output(), ergo, ergo_free(), Ergo::GhostBasis, Ergo::ghostMolecule, LOG_AREA_MAIN, LOG_CAT_INFO, MOL_GHOST, MOL_MAIN, Ergo::molecule, and Molecule::setFromMoleculeFile().

Referenced by main(), and yyparse().

◆ es_mol_unit_angstrom()

void es_mol_unit_angstrom ( void  )

Selects the units for the inline molecule format to be Angtroms, as opposed to default atomic units.

References ergo, Ergo::moleculeUnit, and UNIT_one_Angstrom.

◆ es_print_help()

void es_print_help ( )

References ergo, Ergo::var_list, and var_print_tree().

Referenced by main(), and yyparse().

◆ es_print_help_var()

void es_print_help_var ( const struct variable var)

References variable::description, and variable::name.

Referenced by main(), and yyparse().

◆ es_print_is_cht_used()

void es_print_is_cht_used ( )

Referenced by yyparse().

◆ es_print_list_dft_funcs()

void es_print_list_dft_funcs ( )

References dftlistfuncs_(), and dftlistfuncs_using_printf_().

Referenced by yyparse().

◆ es_print_precision()

void es_print_precision ( )

Print precision that was selected for building the program.

Referenced by yyparse().

◆ es_rmdir_with_content()

static int es_rmdir_with_content ( const char *  dirname)
static

Referenced by es_run().

◆ es_run()

int es_run ( const char *  mode,
int  save_pot 
)

called when an actual calculation is to be commenced.

Parameters
modeis the first specified keyword. Some calculation types - like response ones - require the Fock matrix.
save_pottells whether saving it is required: The save_final_potential configuration parameter will be overriden if save_pot is true.

References ED::Params::ac_pulse_max, ED::Params::ac_pulse_omega, mat::FileWritable::activate(), BasisInfoStruct::addBasisfuncsForMolecule(), JK::ExchWeights::alpha, Ergo::Basis, Basis_info, Ergo::basissetRangeList, Ergo::basissetRangeListGhost, JK::ExchWeights::beta, SCF::Options::box_size_for_V_and_T, SCF::Options::break_on_energy_increase, SCF::Options::calculation_identifier, Atom::charge, SCF::Options::checkpoint_IDstr, SCF::Options::cht_blocksize, SCF::Options::cht_leavesSizeMax, SCF::Options::compute_core_density, SCF::Options::compute_gradient_fixeddens, JK::ExchWeights::computeRangeSeparatedExchange, SCF::Options::convergence_threshold, SCF::Options::create_2el_integral_m_file, SCF::Options::create_basis_func_coord_file, SCF::Options::create_checkpoints, SCF::Options::create_mtx_file_H_core, SCF::Options::create_mtx_file_S, SCF::Options::create_mtx_files_D, SCF::Options::create_mtx_files_dipole, SCF::Options::create_mtx_files_F, SCF::Options::create_mtx_files_S_and_quit, ED::Params::dc_pulse_strength, ED::Params::dc_pulse_time, dft_setfunc(), dftreport_(), SCF::Options::do_acc_scan_J, SCF::Options::do_acc_scan_K, SCF::Options::do_acc_scan_Vxc, do_CI(), SCF::Options::do_f_thresh_verification, do_output(), do_output_time(), SCF::Options::do_report_density_diff, do_tdhf_dynamics(), Ergo::edOptions, SCF::Options::eigensolver_accuracy, SCF::Options::eigensolver_maxiter, SCF::Options::eigenvectors_iterative_method, SCF::Options::eigenvectors_method, SCF::Options::electric_field, SCF::Options::electronic_temperature, enable_memory_usage_output(), ergo, ergoIntegralInfo, SCF::Options::error_maxabs_for_diis, es_rmdir_with_content(), Ergo::extraChargesMolecule, ED::Params::field_type, SCF::Options::force_restricted, SCF::Options::force_unrestricted, SCF::Options::gap_expected_lower_bound, Dft::GridParams::GC2, get_hf_weight_and_cam_params(), Molecule::getAtom(), Molecule::getNoOfAtoms(), mat::getNormType(), Molecule::getNumberOfElectrons(), Ergo::GhostBasis, Ergo::ghostMolecule, grid_free_files(), grid_set_tmpdir(), Dft::GridParams::gridType, SCF::MatOptions::inversePermutationHML, Ergo::jkOptions, jkparams_set_from_vars(), Dft::GridParams::LMG, LOG_AREA_MAIN, LOG_AREA_SCF, LOG_CAT_ERROR, LOG_CAT_INFO, LOG_CAT_RESULTS, Ergo::matOptions, SCF::Options::max_no_of_diis_matrices, SCF::Options::max_number_of_iterations, SCF::Options::max_restart_count, ED::Params::max_time, SCF::Options::method_and_basis_set, SCF::Options::min_number_of_iterations, Ergo::molecule, JK::ExchWeights::mu, Ergo::NO_OF_BASIS_SET_RANGES, SCF::MatOptions::no_of_buffers_per_allocator, SCF::Options::no_of_careful_first_scf_steps, SCF::Options::no_of_core_electrons, SCF::Options::no_of_impr_req_for_diis, SCF::Options::no_of_threads_for_V, BasisInfoStruct::noOfBasisFuncs, SCF::Options::output_density_at_every_step, SCF::Options::output_density_images, SCF::Options::output_density_images_boxwidth, SCF::Options::output_density_images_only, SCF::Options::output_expected_values_pos_operator, SCF::Options::output_homo_and_lumo_eigenvectors, SCF::Options::output_mulliken_pop, SCF::Options::output_statistics_mfiles, SCF::MatOptions::parallelLevel, SCF::MatOptions::prepare(), SCF::Options::puri_compute_eigv_in_each_iteration, SCF::Options::puri_eig_acc_factor_for_guess, SCF::Options::purification_create_m_files, SCF::Options::purification_eigvalue_err_limit, SCF::Options::purification_ignore_failure, SCF::Options::purification_maxmul, SCF::Options::purification_stop_crit_norm, SCF::Options::purification_subspace_err_limit, SCF::Options::purification_truncation_norm, SCF::Options::purification_use_rand_perturbation_for_alleigsint, SCF::Options::purification_with_acceleration, Dft::GridParams::radialGridScheme, Molecule::replaceAtom(), SCF::Options::run_shift_and_square_method_on_F, SCF::Options::save_final_potential, SCF::Options::save_permuted_F_matrix_in_bin, SCF::Options::scan_no_of_steps, SCF::Options::scan_start_thresh, SCF::Options::scan_step_factor, Ergo::scfOptions, Molecule::setNetCharge(), mat::FileWritable::setPath(), SCF::Options::shift_using_prev_density_matrix, SCF::Options::skip_H_core, SCF::MatOptions::sparse_matrix_block_factor_1, SCF::MatOptions::sparse_matrix_block_factor_2, SCF::MatOptions::sparse_matrix_block_factor_3, SCF::MatOptions::sparse_matrix_block_size, SCF::MatOptions::sparse_threshold, SCF::Options::sparse_threshold_for_S, SCF::Options::sparse_threshold_for_Z, SCF::Options::starting_guess_disturbance, SCF::Options::step_length_giveup, SCF::Options::step_length_start, SCF::Options::store_all_eigenvalues_to_file, SCF::MatOptions::threads, SCF::MatOptions::threshold_inch, ED::Params::timestep, SCF::Options::try_eigv_on_next_iteration_if_fail, Dft::GridParams::TURBO, Dft::GridParams::TYPE_HICU, SCF::MatOptions::use_allocator_manager, SCF::Options::use_dft, SCF::Options::use_diag_on_error, SCF::Options::use_diag_on_error_guess, SCF::Options::use_diagonalization, SCF::Options::use_diis_always, SCF::Options::use_new_stopping_criterion, SCF::Options::use_prev_vector_as_initial_guess, SCF::Options::use_simple_dense_H_core, SCF::Options::use_simple_starting_guess, Vector3D::v, var_get_int, var_get_intMA, var_get_intSCF, var_get_intXC, var_get_real, var_get_realED, var_get_realJK, var_get_realMA, var_get_realSCF, var_get_realXC, var_get_string(), var_get_stringED, var_get_stringSCF, var_get_stringXC, SCF::Options::verify_gradient_fixeddens, SCF::Options::write_guess_density_only, and SCF::Options::write_overlap_matrix.

Referenced by es_get_polarisability(), es_getexc(), and yyparse().

◆ es_set_nthreads()

int es_set_nthreads ( int  nThreads)

◆ es_set_nthreads_string()

int es_set_nthreads_string ( const char *  str)

References es_set_nthreads(), and variable::str.

Referenced by main(), and yyparse().

◆ es_warranty()

void es_warranty ( void  )

References ERGO_LICENSE_TEXT_LONG.

Referenced by yyparse().

◆ getOperatorParams()

static const int* getOperatorParams ( int  opname)
static

◆ jkparams_set_from_vars()

◆ main()

◆ solveForRHS()

◆ var_get_int_template()

static int var_get_int_template ( struct variable root,
const char *  name 
)
inlinestatic

◆ var_get_real_template()

static double var_get_real_template ( struct variable root,
const char *  name 
)
inlinestatic

◆ var_get_string()

static const char* var_get_string ( struct variable root,
const char *  name 
)
inlinestatic

◆ var_print_tree()

static void var_print_tree ( struct variable tree,
FILE *  f,
int  indent 
)
static

◆ variable_free()

static void variable_free ( struct variable v)
static

release variable data structure and its children.

References do_output(), ergo_free(), free(), LOG_AREA_MAIN, LOG_CAT_ERROR, variable::v, VAR_FLOAT, VAR_INT, VAR_LIST, and VAR_STRING.

Referenced by Ergo::~Ergo().

◆ variable_new()

static struct variable* variable_new ( struct variable tail,
enum VarType  type,
const char *  name,
const char *  description,
  ... 
)
static

creates new variable item.

Such variable can be later assigned values etc.

Parameters
tailis a tail of the variable list, allowing easy variable list creation.
typeis the variable type (string, int, or float).
nameis the variable name.
descriptionis a string with a few sentences describing what the variable is for.

References variable::description, do_output(), ergo_new, LOG_AREA_MAIN, LOG_CAT_ERROR, variable::name, variable::type, variable::v, VAR_FLOAT, VAR_INT, VAR_LIST, and VAR_STRING.

◆ yy_create_buffer()

void* yy_create_buffer ( FILE *  f,
int  sz 
)

Referenced by ergo_parse_file().

◆ yy_delete_buffer()

void yy_delete_buffer ( void *  )

◆ yy_scan_string()

void* yy_scan_string ( const char *  str)

Referenced by ergo_parse_string().

◆ yy_switch_to_buffer()

void yy_switch_to_buffer ( void *  )

◆ yylex_destroy()

void yylex_destroy ( void  )

Referenced by main().

◆ yyparse()

Variable Documentation

◆ Basis_info

◆ ergo

◆ ergoIntegralInfo

IntegralInfo* ergoIntegralInfo = NULL
static

Molecule stores geometry of the current molecule.

Referenced by es_get_polarisability(), es_getexc(), es_run(), main(), and ErgoE2Evaluator::transform().

◆ yyin

FILE* yyin

file used by the lex-generated parser.