Gromacs  2018.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Functions
minimize.cpp File Reference
#include "gmxpre.h"
#include "minimize.h"
#include "config.h"
#include <cmath>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <vector>
#include "gromacs/commandline/filenm.h"
#include "gromacs/domdec/domdec.h"
#include "gromacs/domdec/domdec_struct.h"
#include "gromacs/ewald/pme.h"
#include "gromacs/fileio/confio.h"
#include "gromacs/fileio/mtxio.h"
#include "gromacs/gmxlib/network.h"
#include "gromacs/gmxlib/nrnb.h"
#include "gromacs/imd/imd.h"
#include "gromacs/linearalgebra/sparsematrix.h"
#include "gromacs/listed-forces/manage-threading.h"
#include "gromacs/math/functions.h"
#include "gromacs/math/vec.h"
#include "gromacs/mdlib/constr.h"
#include "gromacs/mdlib/force.h"
#include "gromacs/mdlib/forcerec.h"
#include "gromacs/mdlib/gmx_omp_nthreads.h"
#include "gromacs/mdlib/md_support.h"
#include "gromacs/mdlib/mdatoms.h"
#include "gromacs/mdlib/mdebin.h"
#include "gromacs/mdlib/mdrun.h"
#include "gromacs/mdlib/mdsetup.h"
#include "gromacs/mdlib/ns.h"
#include "gromacs/mdlib/shellfc.h"
#include "gromacs/mdlib/sim_util.h"
#include "gromacs/mdlib/tgroup.h"
#include "gromacs/mdlib/trajectory_writing.h"
#include "gromacs/mdlib/update.h"
#include "gromacs/mdlib/vsite.h"
#include "gromacs/mdtypes/commrec.h"
#include "gromacs/mdtypes/inputrec.h"
#include "gromacs/mdtypes/md_enums.h"
#include "gromacs/mdtypes/state.h"
#include "gromacs/pbcutil/mshift.h"
#include "gromacs/pbcutil/pbc.h"
#include "gromacs/timing/wallcycle.h"
#include "gromacs/timing/walltime_accounting.h"
#include "gromacs/topology/mtop_util.h"
#include "gromacs/topology/topology.h"
#include "gromacs/utility/cstringutil.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/logger.h"
#include "gromacs/utility/smalloc.h"
+ Include dependency graph for minimize.cpp:

Description

This file defines integrators for energy minimization.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se
Erik Lindahl erik@.nosp@m.kth..nosp@m.se

Classes

struct  em_state_t
 Utility structure for manipulating states during EM. More...
 

Functions

static void print_em_start (FILE *fplog, t_commrec *cr, gmx_walltime_accounting_t walltime_accounting, gmx_wallcycle_t wcycle, const char *name)
 Print the EM starting conditions.
 
static void em_time_end (gmx_walltime_accounting_t walltime_accounting, gmx_wallcycle_t wcycle)
 Stop counting time for EM.
 
static void sp_header (FILE *out, const char *minimizer, real ftol, int nsteps)
 Printing a log file and console header.
 
static void warn_step (FILE *fp, real ftol, gmx_bool bLastStep, gmx_bool bConstrain)
 Print warning message.
 
static void print_converged (FILE *fp, const char *alg, real ftol, gmx_int64_t count, gmx_bool bDone, gmx_int64_t nsteps, const em_state_t *ems, double sqrtNumAtoms)
 Print message about convergence of the EM.
 
static void get_f_norm_max (t_commrec *cr, t_grpopts *opts, t_mdatoms *mdatoms, const rvec *f, real *fnorm, real *fmax, int *a_fmax)
 Compute the norm and max of the force array in parallel.
 
static void get_state_f_norm_max (t_commrec *cr, t_grpopts *opts, t_mdatoms *mdatoms, em_state_t *ems)
 Compute the norm of the force.
 
static void init_em (FILE *fplog, const char *title, t_commrec *cr, gmx::IMDOutputProvider *outputProvider, t_inputrec *ir, const MdrunOptions &mdrunOptions, t_state *state_global, gmx_mtop_t *top_global, em_state_t *ems, gmx_localtop_t **top, t_nrnb *nrnb, rvec mu_tot, t_forcerec *fr, gmx_enerdata_t **enerd, t_graph **graph, gmx::MDAtoms *mdAtoms, gmx_global_stat_t *gstat, gmx_vsite_t *vsite, gmx_constr_t constr, gmx_shellfc_t **shellfc, int nfile, const t_filenm fnm[], gmx_mdoutf_t *outf, t_mdebin **mdebin, gmx_wallcycle_t wcycle)
 Initialize the energy minimization.
 
static void finish_em (t_commrec *cr, gmx_mdoutf_t outf, gmx_walltime_accounting_t walltime_accounting, gmx_wallcycle_t wcycle)
 Finalize the minimization.
 
static void swap_em_state (em_state_t **ems1, em_state_t **ems2)
 Swap two different EM states during minimization.
 
static void write_em_traj (FILE *fplog, t_commrec *cr, gmx_mdoutf_t outf, gmx_bool bX, gmx_bool bF, const char *confout, gmx_mtop_t *top_global, t_inputrec *ir, gmx_int64_t step, em_state_t *state, t_state *state_global, ObservablesHistory *observablesHistory)
 Save the EM trajectory.
 
static bool do_em_step (t_commrec *cr, t_inputrec *ir, t_mdatoms *md, gmx_bool bMolPBC, em_state_t *ems1, real a, const PaddedRVecVector *force, em_state_t *ems2, gmx_constr_t constr, gmx_localtop_t *top, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_int64_t count)
 Do one minimization step.
 
static void em_dd_partition_system (FILE *fplog, int step, t_commrec *cr, gmx_mtop_t *top_global, t_inputrec *ir, em_state_t *ems, gmx_localtop_t *top, gmx::MDAtoms *mdAtoms, t_forcerec *fr, gmx_vsite_t *vsite, gmx_constr_t constr, t_nrnb *nrnb, gmx_wallcycle_t wcycle)
 Prepare EM for using domain decomposition parallellization.
 
static void evaluate_energy (FILE *fplog, t_commrec *cr, gmx_mtop_t *top_global, em_state_t *ems, gmx_localtop_t *top, t_inputrec *inputrec, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_global_stat_t gstat, gmx_vsite_t *vsite, gmx_constr_t constr, t_fcdata *fcd, t_graph *graph, gmx::MDAtoms *mdAtoms, t_forcerec *fr, rvec mu_tot, gmx_enerdata_t *enerd, tensor vir, tensor pres, gmx_int64_t count, gmx_bool bFirst)
 De one energy evaluation.
 
static double reorder_partsum (t_commrec *cr, t_grpopts *opts, t_mdatoms *mdatoms, gmx_mtop_t *top_global, em_state_t *s_min, em_state_t *s_b)
 Parallel utility summing energies and forces.
 
static real pr_beta (t_commrec *cr, t_grpopts *opts, t_mdatoms *mdatoms, gmx_mtop_t *top_global, em_state_t *s_min, em_state_t *s_b)
 Print some stuff, like beta, whatever that means.
 
double gmx::do_cg (FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, const MdrunOptions &mdrunOptions, gmx_vsite_t *vsite, gmx_constr_t constr, gmx::IMDOutputProvider *outputProvider, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, ObservablesHistory *observablesHistory, gmx::MDAtoms *mdAtoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, t_forcerec *fr, const ReplicaExchangeParameters &replExParams, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting)
 Do conjugate gradients minimization. More...
 
double gmx::do_lbfgs (FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, const MdrunOptions &mdrunOptions, gmx_vsite_t *vsite, gmx_constr_t constr, gmx::IMDOutputProvider *outputProvider, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, ObservablesHistory *observablesHistory, gmx::MDAtoms *mdAtoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, t_forcerec *fr, const ReplicaExchangeParameters &replExParams, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting)
 Do L-BFGS conjugate gradients minimization. More...
 
double gmx::do_steep (FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, const MdrunOptions &mdrunOptions, gmx_vsite_t *vsite, gmx_constr_t constr, gmx::IMDOutputProvider *outputProvider, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, ObservablesHistory *observablesHistory, gmx::MDAtoms *mdAtoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, t_forcerec *fr, const ReplicaExchangeParameters &replExParams, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting)
 Do steepest descents minimization. More...
 
double gmx::do_nm (FILE *fplog, t_commrec *cr, const gmx::MDLogger &mdlog, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, const MdrunOptions &mdrunOptions, gmx_vsite_t *vsite, gmx_constr_t constr, gmx::IMDOutputProvider *outputProvider, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, ObservablesHistory *observablesHistory, gmx::MDAtoms *mdAtoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, t_forcerec *fr, const ReplicaExchangeParameters &replExParams, gmx_membed_t *membed, gmx_walltime_accounting_t walltime_accounting)
 Do normal modes analysis. More...