ergo
ergo_scripted.h File Reference

Go to the source code of this file.

Classes

struct  variable
 describes a variable recognized by the scripting system. More...
 

Macros

#define EXTERN_C
 

Enumerations

enum  VarType { VAR_STRING, VAR_FLOAT, VAR_INT, VAR_LIST }
 VarType defines recognized variable types. More...
 
enum  MolType { MOL_MAIN, MOL_GHOST }
 MolType decides whether molecule data access routines modify the main or the ghost molecule. More...
 

Functions

EXTERN_C void es_assign_num (struct variable *var, double val)
 es_assign_num assigns given numerical value to the variable. More...
 
EXTERN_C void es_assign_str (struct variable *var, const char *str)
 es_assign_str assigns given string to the variable. More...
 
EXTERN_C int es_assign_range (enum 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...
 
EXTERN_C struct variablees_find_var (struct variable *root, const char *name)
 finds the variable struct by More...
 
EXTERN_C void es_mol_begin (enum MolType moleculeClass)
 starts processing the inline molecule input. More...
 
EXTERN_C void es_add_atom (const char *name, double x, double y, double z)
 adds single atom at given coordinates and given name. More...
 
EXTERN_C void es_mol_commit (void)
 Finish the inline definition of the molecule. More...
 
EXTERN_C void es_mol_unit_angstrom (void)
 Selects the units for the inline molecule format to be Angtroms, as opposed to default atomic units. More...
 
EXTERN_C int es_mol_read_molecule (const char *fname, enum MolType moleculeClass)
 reads molecule data in the MOLECULE.INP (Dalton) or XYZ format. More...
 
EXTERN_C void es_print_help ()
 
EXTERN_C void es_print_help_var (const struct variable *root)
 
EXTERN_C void es_print_list_dft_funcs ()
 
EXTERN_C void es_print_is_cht_used ()
 
EXTERN_C void es_print_precision ()
 Print precision that was selected for building the program. More...
 
EXTERN_C int es_run (const char *mode, int save_pot)
 called when an actual calculation is to be commenced. More...
 
EXTERN_C void es_warranty (void)
 
EXTERN_C int es_getexc (const char *mode, int modes)
 Computes the specified number of excited states. More...
 
EXTERN_C int es_get_polarisability (const char *mode, const char *opname, double freq)
 Computes a dynamical polarizability for an operator specified by the. More...
 
EXTERN_C int es_set_nthreads (int nThreads)
 
EXTERN_C int es_set_nthreads_string (const char *str)
 

Variables

int ergo_scanner_lineno
 
int ergo_scanner_reading_stdin
 
int es_quit
 

Detailed Description

contains ergo input processor definitions. Currently it requires access to all the modules. It is trivial to make all the modules to register modifable variables etc settings. It is more complex to expose access to routines because some stub routines placing arguments on stack may be needed. Unless we skip arguments and always require that modules must be set up and then a "run" method is called.

Macro Definition Documentation

◆ EXTERN_C

#define EXTERN_C

Enumeration Type Documentation

◆ MolType

enum MolType

MolType decides whether molecule data access routines modify the main or the ghost molecule.

Enumerator
MOL_MAIN 
MOL_GHOST 

◆ VarType

enum VarType

VarType defines recognized variable types.

Enumerator
VAR_STRING 
VAR_FLOAT 
VAR_INT 
VAR_LIST 

Function Documentation

◆ es_add_atom()

EXTERN_C 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.

◆ es_assign_num()

EXTERN_C void es_assign_num ( struct variable var,
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().

◆ es_assign_range()

EXTERN_C 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, MOL_GHOST, MOL_MAIN, variable::name, Ergo::NO_OF_BASIS_SET_RANGES, and BasissetNameRange::startAtomIndex.

◆ es_assign_str()

EXTERN_C 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, Ergo::GhostBasis, LOG_AREA_MAIN, LOG_CAT_INFO, variable::str, and variable::v.

◆ es_find_var()

EXTERN_C 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, Ergo::var_list, and VAR_LIST.

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

◆ es_get_polarisability()

EXTERN_C 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().

◆ es_getexc()

EXTERN_C 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().

◆ es_mol_begin()

EXTERN_C 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()

EXTERN_C 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.

◆ es_mol_read_molecule()

EXTERN_C 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().

◆ es_mol_unit_angstrom()

EXTERN_C 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()

EXTERN_C void es_print_help ( )

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

Referenced by main().

◆ es_print_help_var()

EXTERN_C void es_print_help_var ( const struct variable root)

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

Referenced by main().

◆ es_print_is_cht_used()

EXTERN_C void es_print_is_cht_used ( )

◆ es_print_list_dft_funcs()

EXTERN_C void es_print_list_dft_funcs ( )

◆ es_print_precision()

EXTERN_C void es_print_precision ( )

Print precision that was selected for building the program.

◆ es_run()

EXTERN_C 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, SCF::Options::go_back_X_iter_proj_method, grid_free_files(), grid_set_tmpdir(), Dft::GridParams::gridType, SCF::MatOptions::inversePermutationHML, Ergo::jkOptions, jkparams_set_from_vars(), SCF::Options::jump_over_X_iter_proj_method, 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::number_of_occupied_eigenvectors, SCF::Options::number_of_unoccupied_eigenvectors, 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(), and es_getexc().

◆ es_set_nthreads()

EXTERN_C int es_set_nthreads ( int  nThreads)

◆ es_set_nthreads_string()

EXTERN_C int es_set_nthreads_string ( const char *  str)

References es_set_nthreads(), and variable::str.

Referenced by main().

◆ es_warranty()

EXTERN_C void es_warranty ( void  )

Variable Documentation

◆ ergo_scanner_lineno

int ergo_scanner_lineno

Referenced by yyerror().

◆ ergo_scanner_reading_stdin

int ergo_scanner_reading_stdin

Referenced by ergo_parse_file(), and yyerror().

◆ es_quit

int es_quit