The main program for the ergo project. It enables scripting and more complex input forms.
More...
|
#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 |
|
|
static void | variable_free (struct variable *v) |
| release variable data structure and its children. More...
|
|
static struct variable * | variable_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 variable * | es_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[]) |
|
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.
int es_get_polarisability |
( |
const char * |
mode, |
|
|
const char * |
opName, |
|
|
double |
freq |
|
) |
| |
Computes a dynamical polarizability for an operator specified by the.
- Parameters
-
opName | and 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. |
mode | is the type of Hamiltonian (HF, or the xc functional). |
freq | tells 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().
int es_getexc |
( |
const char * |
mode, |
|
|
int |
no_exc |
|
) |
| |
Computes the specified number of excited states.
- Parameters
-
no_exc | specifies number of the excited states to be computed, |
mode | specifies 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().
int es_run |
( |
const char * |
mode, |
|
|
int |
save_pot |
|
) |
| |
called when an actual calculation is to be commenced.
- Parameters
-
mode | is the first specified keyword. Some calculation types - like response ones - require the Fock matrix. |
save_pot | tells 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().
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
-
tail | is a tail of the variable list, allowing easy variable list creation. |
type | is the variable type (string, int, or float). |
name | is the variable name. |
description | is 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.