From 2b9c65855aa34fd9d12c149d9815f49034c9160e Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 16 May 2023 16:38:12 -0600 Subject: [PATCH 01/12] swap 3d array indices in fix ttm/mod --- src/EXTRA-FIX/fix_ttm_mod.cpp | 225 ++++++++++++++++------------------ src/EXTRA-FIX/fix_ttm_mod.h | 3 - 2 files changed, 105 insertions(+), 123 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 1aa07b6781..1fcc0d54ff 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -75,10 +75,8 @@ static constexpr double SHIFT = 0.0; FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), - random(nullptr), nsum(nullptr), nsum_all(nullptr), - gfactor1(nullptr), gfactor2(nullptr), ratio(nullptr), flangevin(nullptr), - T_electron(nullptr), T_electron_old(nullptr), sum_vsq(nullptr), sum_mass_vsq(nullptr), - sum_vsq_all(nullptr), sum_mass_vsq_all(nullptr), net_energy_transfer(nullptr), + random(nullptr), gfactor1(nullptr), gfactor2(nullptr), ratio(nullptr), flangevin(nullptr), + T_electron(nullptr), T_electron_old(nullptr), net_energy_transfer(nullptr), net_energy_transfer_all(nullptr) { if (lmp->citeme) lmp->citeme->add(cite_fix_ttm_mod); @@ -166,21 +164,15 @@ FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) : gfactor2 = new double[atom->ntypes+1]; // allocate 3d grid variables - - memory->create(nsum,nxgrid,nygrid,nzgrid,"ttm/mod:nsum"); - memory->create(nsum_all,nxgrid,nygrid,nzgrid,"ttm/mod:nsum_all"); - memory->create(sum_vsq,nxgrid,nygrid,nzgrid,"ttm/mod:sum_vsq"); - memory->create(sum_mass_vsq,nxgrid,nygrid,nzgrid,"ttm/mod:sum_mass_vsq"); - memory->create(sum_vsq_all,nxgrid,nygrid,nzgrid,"ttm/mod:sum_vsq_all"); - memory->create(sum_mass_vsq_all,nxgrid,nygrid,nzgrid, - "ttm/mod:sum_mass_vsq_all"); - memory->create(T_electron_old,nxgrid,nygrid,nzgrid,"ttm/mod:T_electron_old"); - memory->create(T_electron_first,nxgrid,nygrid,nzgrid,"ttm/mod:T_electron_first"); - memory->create(T_electron,nxgrid,nygrid,nzgrid,"ttm/mod:T_electron"); - memory->create(net_energy_transfer,nxgrid,nygrid,nzgrid, + + memory->create(T_electron_old,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron_old"); + memory->create(T_electron_first,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron_first"); + memory->create(T_electron,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron"); + memory->create(net_energy_transfer,nzgrid,nygrid,nxgrid, "ttm/mod:net_energy_transfer"); - memory->create(net_energy_transfer_all,nxgrid,nygrid,nzgrid, + memory->create(net_energy_transfer_all,nzgrid,nygrid,nxgrid, "ttm/mod:net_energy_transfer_all"); + flangevin = nullptr; grow_arrays(atom->nmax); @@ -203,10 +195,10 @@ FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) : // initialize electron temperatures on grid int ix,iy,iz; - for (ix = 0; ix < nxgrid; ix++) + for (iz = 0; iz < nzgrid; iz++) for (iy = 0; iy < nygrid; iy++) - for (iz = 0; iz < nzgrid; iz++) - T_electron[ix][iy][iz] = tinit; + for (ix = 0; ix < nxgrid; ix++) + T_electron[iz][iy][ix] = tinit; // if specified, read initial electron temperatures from file @@ -221,18 +213,13 @@ FixTTMMod::~FixTTMMod() delete[] gfactor1; delete[] gfactor2; - memory->destroy(nsum); - memory->destroy(nsum_all); - memory->destroy(sum_vsq); - memory->destroy(sum_mass_vsq); - memory->destroy(sum_vsq_all); - memory->destroy(sum_mass_vsq_all); memory->destroy(T_electron_first); memory->destroy(T_electron_old); memory->destroy(T_electron); - memory->destroy(flangevin); memory->destroy(net_energy_transfer); memory->destroy(net_energy_transfer_all); + + memory->destroy(flangevin); } /* ---------------------------------------------------------------------- */ @@ -265,10 +252,10 @@ void FixTTMMod::init() sqrt(24.0*force->boltz*gamma_p/update->dt/force->mvv2e) / force->ftm2v; } - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - net_energy_transfer_all[ix][iy][iz] = 0; + for (int ix = 0; ix < nxgrid; ix++) + net_energy_transfer_all[iz][iy][ix] = 0; if (utils::strmatch(update->integrate_style,"^respa")) nlevels_respa = (dynamic_cast(update->integrate))->nlevels; @@ -320,10 +307,10 @@ void FixTTMMod::post_force(int /*vflag*/) while (iy < 0) iy += nygrid; while (iz < 0) iz += nzgrid; - if (T_electron[ix][iy][iz] < 0) + if (T_electron[iz][iy][ix] < 0) error->all(FLERR,"Electronic temperature dropped below zero"); - double tsqrt = sqrt(T_electron[ix][iy][iz]); + double tsqrt = sqrt(T_electron[iz][iy][ix]); gamma1 = gfactor1[type[i]]; double vsq = v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]; @@ -348,14 +335,14 @@ void FixTTMMod::post_force(int /*vflag*/) if (left_x == -1) left_x = nxgrid - 1; if (left_y == -1) left_y = nygrid - 1; if (left_z == -1) left_z = nzgrid - 1; - double T_i = T_electron[ix][iy][iz]; - double T_ir = T_electron[right_x][iy][iz]; - double T_iu = T_electron[ix][right_y][iz]; - double T_if = T_electron[ix][iy][right_z]; - double C_i = el_properties(T_electron[ix][iy][iz]).el_heat_capacity; - double C_ir = el_properties(T_electron[right_x][iy][iz]).el_heat_capacity; - double C_iu = el_properties(T_electron[ix][right_y][iz]).el_heat_capacity; - double C_if = el_properties(T_electron[ix][iy][right_z]).el_heat_capacity; + double T_i = T_electron[iz][iy][ix]; + double T_ir = T_electron[right_z][iy][ix]; + double T_iu = T_electron[iz][right_y][ix]; + double T_if = T_electron[iz][iy][right_x]; + double C_i = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; + double C_ir = el_properties(T_electron[right_z][iy][ix]).el_heat_capacity; + double C_iu = el_properties(T_electron[iz][right_y][ix]).el_heat_capacity; + double C_if = el_properties(T_electron[iz][iy][right_x]).el_heat_capacity; double diff_x = (x_at - x_surf)*(x_at - x_surf); diff_x = pow(diff_x,0.5); double len_factor = diff_x/(diff_x+free_path); @@ -587,7 +574,7 @@ void FixTTMMod::read_electron_temperatures(const std::string &filename) if (comm->me == 0) { int ***T_initial_set; - memory->create(T_initial_set,nxgrid,nygrid,nzgrid,"ttm/mod:T_initial_set"); + memory->create(T_initial_set,nzgrid,nygrid,nxgrid,"ttm/mod:T_initial_set"); memset(&T_initial_set[0][0][0],0,ngridtotal*sizeof(int)); // read initial electron temperature values from file @@ -614,8 +601,8 @@ void FixTTMMod::read_electron_temperatures(const std::string &filename) if (T_tmp < 0.0) throw TokenizerException("Fix ttm electron temperatures must be > 0.0",""); - T_electron[ix][iy][iz] = T_tmp; - T_initial_set[ix][iy][iz] = 1; + T_electron[iz][iy][ix] = T_tmp; + T_initial_set[iz][iy][ix] = 1; } } catch (std::exception &e) { error->one(FLERR, e.what()); @@ -626,7 +613,7 @@ void FixTTMMod::read_electron_temperatures(const std::string &filename) for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) for (int ix = 0; ix < nxgrid; ix++) - if (T_initial_set[ix][iy][iz] == 0) + if (T_initial_set[iz][iy][ix] == 0) error->all(FLERR,"Fix ttm/mod infile did not set all temperatures"); memory->destroy(T_initial_set); @@ -656,9 +643,9 @@ void FixTTMMod::write_electron_temperatures(const std::string &filename) for (ix = 0; ix < nxgrid; ix++) for (iy = 0; iy < nygrid; iy++) for (iz = 0; iz < nzgrid; iz++) { - if (movsur == 1 && T_electron[ix][iy][iz] == 0.0) - T_electron[ix][iy][iz] = electron_temperature_min; - fprintf(fp,"%d %d %d %20.16g\n",ix+1,iy+1,iz+1,T_electron[ix][iy][iz]); + if (movsur == 1 && T_electron[iz][iy][ix] == 0.0) + T_electron[iz][iy][ix] = electron_temperature_min; + fprintf(fp,"%d %d %d %20.16g\n",ix+1,iy+1,iz+1,T_electron[iz][iy][ix]); } fclose(fp); @@ -700,20 +687,21 @@ void FixTTMMod::end_of_step() int nlocal = atom->nlocal; if (movsur == 1) { - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) { - double TTT = T_electron[ix][iy][iz]; + for (int ix = 0; ix < nxgrid; ix++) { + double TTT = T_electron[iz][iy][ix]; if (TTT > 0) { if (ix < t_surface_l) t_surface_l = ix; } } } - for (int ix = 0; ix < nxgrid; ix++) + + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - net_energy_transfer[ix][iy][iz] = 0; + for (int ix = 0; ix < nxgrid; ix++) + net_energy_transfer[iz][iy][ix] = 0; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -731,7 +719,7 @@ void FixTTMMod::end_of_step() while (iz < 0) iz += nzgrid; if (ix >= t_surface_l) { if (ix < surface_r) - net_energy_transfer[ix][iy][iz] += + net_energy_transfer[iz][iy][ix] += (flangevin[i][0]*v[i][0] + flangevin[i][1]*v[i][1] + flangevin[i][2]*v[i][2]); } @@ -747,18 +735,19 @@ void FixTTMMod::end_of_step() double del_vol = dx*dy*dz; double el_specific_heat = 0.0; double el_thermal_conductivity = el_properties(electron_temperature_min).el_thermal_conductivity; - for (int ix = 0; ix < nxgrid; ix++) + + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) + for (int ix = 0; ix < nxgrid; ix++) { - if (el_properties(T_electron[ix][iy][iz]).el_thermal_conductivity > el_thermal_conductivity) - el_thermal_conductivity = el_properties(T_electron[ix][iy][iz]).el_thermal_conductivity; + if (el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity > el_thermal_conductivity) + el_thermal_conductivity = el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity; if (el_specific_heat > 0.0) { - if ((T_electron[ix][iy][iz] > 0.0) && (el_properties(T_electron[ix][iy][iz]).el_heat_capacity < el_specific_heat)) - el_specific_heat = el_properties(T_electron[ix][iy][iz]).el_heat_capacity; + if ((T_electron[iz][iy][ix] > 0.0) && (el_properties(T_electron[iz][iy][ix]).el_heat_capacity < el_specific_heat)) + el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; } - else if (T_electron[ix][iy][iz] > 0.0) el_specific_heat = el_properties(T_electron[ix][iy][iz]).el_heat_capacity; + else if (T_electron[iz][iy][ix] > 0.0) el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; } // num_inner_timesteps = # of inner steps (thermal solves) // required this MD step to maintain a stable explicit solve @@ -767,17 +756,15 @@ void FixTTMMod::end_of_step() double inner_dt = update->dt; double stability_criterion = 0.0; - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - T_electron_first[ix][iy][iz] = - T_electron[ix][iy][iz]; + for (int ix = 0; ix < nxgrid; ix++) + T_electron_first[iz][iy][ix] = T_electron[iz][iy][ix]; do { - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - T_electron[ix][iy][iz] = - T_electron_first[ix][iy][iz]; + for (int ix = 0; ix < nxgrid; ix++) + T_electron[iz][iy][ix] = T_electron_first[iz][iy][ix]; stability_criterion = 1.0 - 2.0*inner_dt/el_specific_heat * @@ -792,16 +779,15 @@ void FixTTMMod::end_of_step() error->warning(FLERR,"Too many inner timesteps in fix ttm/mod"); for (int ith_inner_timestep = 0; ith_inner_timestep < num_inner_timesteps; ith_inner_timestep++) { - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - T_electron_old[ix][iy][iz] = - T_electron[ix][iy][iz]; + for (int ix = 0; ix < nxgrid; ix++) + T_electron_old[iz][iy][ix] = T_electron[iz][iy][ix]; // compute new electron T profile duration = duration + inner_dt; - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) { + for (int ix = 0; ix < nxgrid; ix++) { int right_x = ix + 1; int right_y = iy + 1; int right_z = iz + 1; @@ -821,50 +807,50 @@ void FixTTMMod::end_of_step() if (duration < width) { if (ix >= t_surface_l) mult_factor = (intensity/(dx*skin_layer_d))*exp((-1.0)*(ix_d - surface_d)/skin_layer_d); } - if (ix < t_surface_l) net_energy_transfer_all[ix][iy][iz] = 0.0; + if (ix < t_surface_l) net_energy_transfer_all[iz][iy][ix] = 0.0; double cr_vac = 1; - if (T_electron_old[ix][iy][iz] == 0) cr_vac = 0; + if (T_electron_old[iz][iy][ix] == 0) cr_vac = 0; double cr_v_l_x = 1; - if (T_electron_old[left_x][iy][iz] == 0) cr_v_l_x = 0; + if (T_electron_old[left_z][iy][ix] == 0) cr_v_l_x = 0; double cr_v_r_x = 1; - if (T_electron_old[right_x][iy][iz] == 0) cr_v_r_x = 0; + if (T_electron_old[right_z][iy][ix] == 0) cr_v_r_x = 0; double cr_v_l_y = 1; - if (T_electron_old[ix][left_y][iz] == 0) cr_v_l_y = 0; + if (T_electron_old[iz][left_y][ix] == 0) cr_v_l_y = 0; double cr_v_r_y = 1; - if (T_electron_old[ix][right_y][iz] == 0) cr_v_r_y = 0; + if (T_electron_old[iz][right_y][ix] == 0) cr_v_r_y = 0; double cr_v_l_z = 1; - if (T_electron_old[ix][iy][left_z] == 0) cr_v_l_z = 0; + if (T_electron_old[iz][iy][left_x] == 0) cr_v_l_z = 0; double cr_v_r_z = 1; - if (T_electron_old[ix][iy][right_z] == 0) cr_v_r_z = 0; + if (T_electron_old[iz][iy][right_x] == 0) cr_v_r_z = 0; if (cr_vac != 0) { - T_electron[ix][iy][iz] = - T_electron_old[ix][iy][iz] + - inner_dt/el_properties(T_electron_old[ix][iy][iz]).el_heat_capacity * - ((cr_v_r_x*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[right_x][iy][iz]/2.0).el_thermal_conductivity* - (T_electron_old[right_x][iy][iz]-T_electron_old[ix][iy][iz])/dx - - cr_v_l_x*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[left_x][iy][iz]/2.0).el_thermal_conductivity* - (T_electron_old[ix][iy][iz]-T_electron_old[left_x][iy][iz])/dx)/dx + - (cr_v_r_y*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[ix][right_y][iz]/2.0).el_thermal_conductivity* - (T_electron_old[ix][right_y][iz]-T_electron_old[ix][iy][iz])/dy - - cr_v_l_y*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[ix][left_y][iz]/2.0).el_thermal_conductivity* - (T_electron_old[ix][iy][iz]-T_electron_old[ix][left_y][iz])/dy)/dy + - (cr_v_r_z*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[ix][iy][right_z]/2.0).el_thermal_conductivity* - (T_electron_old[ix][iy][right_z]-T_electron_old[ix][iy][iz])/dz - - cr_v_l_z*el_properties(T_electron_old[ix][iy][iz]/2.0+T_electron_old[ix][iy][left_z]/2.0).el_thermal_conductivity* - (T_electron_old[ix][iy][iz]-T_electron_old[ix][iy][left_z])/dz)/dz); - T_electron[ix][iy][iz]+=inner_dt/el_properties(T_electron[ix][iy][iz]).el_heat_capacity* + T_electron[iz][iy][ix] = + T_electron_old[iz][iy][ix] + + inner_dt/el_properties(T_electron_old[iz][iy][ix]).el_heat_capacity * + ((cr_v_r_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[right_z][iy][ix]/2.0).el_thermal_conductivity* + (T_electron_old[right_z][iy][ix]-T_electron_old[iz][iy][ix])/dx - + cr_v_l_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[left_z][iy][ix]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][ix]-T_electron_old[left_z][iy][ix])/dx)/dx + + (cr_v_r_y*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][right_y][ix]/2.0).el_thermal_conductivity* + (T_electron_old[iz][right_y][ix]-T_electron_old[iz][iy][ix])/dy - + cr_v_l_y*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][left_y][ix]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][ix]-T_electron_old[iz][left_y][ix])/dy)/dy + + (cr_v_r_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[ix][iy][right_z]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][right_x]-T_electron_old[iz][iy][ix])/dz - + cr_v_l_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][left_x]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][ix]-T_electron_old[iz][iy][left_x])/dz)/dz); + T_electron[iz][iy][ix]+=inner_dt/el_properties(T_electron[iz][iy][ix]).el_heat_capacity* (mult_factor - - net_energy_transfer_all[ix][iy][iz]/del_vol); + net_energy_transfer_all[iz][iy][ix]/del_vol); } - else T_electron[ix][iy][iz] = - T_electron_old[ix][iy][iz]; - if ((T_electron[ix][iy][iz] > 0.0) && (T_electron[ix][iy][iz] < electron_temperature_min)) - T_electron[ix][iy][iz] = T_electron[ix][iy][iz] + 0.5*(electron_temperature_min - T_electron[ix][iy][iz]); + else T_electron[iz][iy][ix] = T_electron_old[iz][iy][ix]; + + if ((T_electron[iz][iy][ix] > 0.0) && (T_electron[iz][iy][ix] < electron_temperature_min)) + T_electron[iz][iy][ix] = T_electron[iz][iy][ix] + 0.5*(electron_temperature_min - T_electron[iz][iy][ix]); - if (el_properties(T_electron[ix][iy][iz]).el_thermal_conductivity > el_thermal_conductivity) - el_thermal_conductivity = el_properties(T_electron[ix][iy][iz]).el_thermal_conductivity; - if ((T_electron[ix][iy][iz] > 0.0) && (el_properties(T_electron[ix][iy][iz]).el_heat_capacity < el_specific_heat)) - el_specific_heat = el_properties(T_electron[ix][iy][iz]).el_heat_capacity; + if (el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity > el_thermal_conductivity) + el_thermal_conductivity = el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity; + if ((T_electron[iz][iy][ix] > 0.0) && (el_properties(T_electron[iz][iy][ix]).el_heat_capacity < el_specific_heat)) + el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; } } stability_criterion = 1.0 - @@ -913,12 +899,11 @@ double FixTTMMod::compute_vector(int n) double dz = domain->zprd/nzgrid; double del_vol = dx*dy*dz; - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) { - e_energy += el_sp_heat_integral(T_electron[ix][iy][iz])*del_vol; - transfer_energy += - net_energy_transfer_all[ix][iy][iz]*update->dt; + for (int ix = 0; ix < nxgrid; ix++) { + e_energy += el_sp_heat_integral(T_electron[iz][iy][ix])*del_vol; + transfer_energy += net_energy_transfer_all[iz][iy][ix]*update->dt; } if (n == 0) return e_energy; @@ -933,7 +918,7 @@ double FixTTMMod::compute_vector(int n) void FixTTMMod::write_restart(FILE *fp) { double *rlist; - memory->create(rlist,nxgrid*nygrid*nzgrid+4,"ttm/mod:rlist"); + memory->create(rlist,nzgrid*nygrid*nxgrid + 4,"ttm/mod:rlist"); int n = 0; rlist[n++] = nxgrid; @@ -941,10 +926,10 @@ void FixTTMMod::write_restart(FILE *fp) rlist[n++] = nzgrid; rlist[n++] = seed; - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - rlist[n++] = T_electron[ix][iy][iz]; + for (int ix = 0; ix < nxgrid; ix++) + rlist[n++] = T_electron[iz][iy][ix]; if (comm->me == 0) { int size = n * sizeof(double); @@ -982,10 +967,10 @@ void FixTTMMod::restart(char *buf) // restore global frid values - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) - T_electron[ix][iy][iz] = rlist[n++]; + for (int ix = 0; ix < nxgrid; ix++) + T_electron[iz][iy][ix] = rlist[n++]; } /* ---------------------------------------------------------------------- diff --git a/src/EXTRA-FIX/fix_ttm_mod.h b/src/EXTRA-FIX/fix_ttm_mod.h index 28c3209697..469a641d56 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.h +++ b/src/EXTRA-FIX/fix_ttm_mod.h @@ -64,11 +64,8 @@ class FixTTMMod : public Fix { int nxgrid, nygrid, nzgrid; int ngridtotal; - int ***nsum, ***nsum_all; double *gfactor1, *gfactor2, *ratio, **flangevin; double ***T_electron, ***T_electron_old, ***T_electron_first; - double ***sum_vsq, ***sum_mass_vsq; - double ***sum_vsq_all, ***sum_mass_vsq_all; double ***net_energy_transfer, ***net_energy_transfer_all; double gamma_p, gamma_s, v_0, v_0_sq; From 0d31ab9c88ac50c2ab5b32c7e2b43a4951fd2662 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 16 May 2023 16:51:00 -0600 Subject: [PATCH 02/12] one more change --- src/EXTRA-FIX/fix_ttm_mod.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 1fcc0d54ff..69d403edfa 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -834,7 +834,7 @@ void FixTTMMod::end_of_step() (T_electron_old[iz][right_y][ix]-T_electron_old[iz][iy][ix])/dy - cr_v_l_y*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][left_y][ix]/2.0).el_thermal_conductivity* (T_electron_old[iz][iy][ix]-T_electron_old[iz][left_y][ix])/dy)/dy + - (cr_v_r_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[ix][iy][right_z]/2.0).el_thermal_conductivity* + (cr_v_r_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][right_x]/2.0).el_thermal_conductivity* (T_electron_old[iz][iy][right_x]-T_electron_old[iz][iy][ix])/dz - cr_v_l_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][left_x]/2.0).el_thermal_conductivity* (T_electron_old[iz][iy][ix]-T_electron_old[iz][iy][left_x])/dz)/dz); From 05b8082e3c231472d79ab039c6ace01a901d5434 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 16 May 2023 17:03:34 -0600 Subject: [PATCH 03/12] code cleanup --- src/EXTRA-FIX/fix_ttm_mod.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 69d403edfa..e7ad9735cf 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -738,16 +738,13 @@ void FixTTMMod::end_of_step() for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int ix = 0; ix < nxgrid; ix++) - { + for (int ix = 0; ix < nxgrid; ix++) { if (el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity > el_thermal_conductivity) el_thermal_conductivity = el_properties(T_electron[iz][iy][ix]).el_thermal_conductivity; - if (el_specific_heat > 0.0) - { + if (el_specific_heat > 0.0) { if ((T_electron[iz][iy][ix] > 0.0) && (el_properties(T_electron[iz][iy][ix]).el_heat_capacity < el_specific_heat)) el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; - } - else if (T_electron[iz][iy][ix] > 0.0) el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; + } else if (T_electron[iz][iy][ix] > 0.0) el_specific_heat = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; } // num_inner_timesteps = # of inner steps (thermal solves) // required this MD step to maintain a stable explicit solve From 2e58a9ecf80b488d886c10a213692d3e5f089738 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 16 May 2023 21:13:48 -0400 Subject: [PATCH 04/12] whitespace --- src/EXTRA-FIX/fix_ttm_mod.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index e7ad9735cf..d75f5915ba 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -164,7 +164,7 @@ FixTTMMod::FixTTMMod(LAMMPS *lmp, int narg, char **arg) : gfactor2 = new double[atom->ntypes+1]; // allocate 3d grid variables - + memory->create(T_electron_old,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron_old"); memory->create(T_electron_first,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron_first"); memory->create(T_electron,nzgrid,nygrid,nxgrid,"ttm/mod:T_electron"); @@ -735,7 +735,7 @@ void FixTTMMod::end_of_step() double del_vol = dx*dy*dz; double el_specific_heat = 0.0; double el_thermal_conductivity = el_properties(electron_temperature_min).el_thermal_conductivity; - + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) for (int ix = 0; ix < nxgrid; ix++) { @@ -840,7 +840,7 @@ void FixTTMMod::end_of_step() net_energy_transfer_all[iz][iy][ix]/del_vol); } else T_electron[iz][iy][ix] = T_electron_old[iz][iy][ix]; - + if ((T_electron[iz][iy][ix] > 0.0) && (T_electron[iz][iy][ix] < electron_temperature_min)) T_electron[iz][iy][ix] = T_electron[iz][iy][ix] + 0.5*(electron_temperature_min - T_electron[iz][iy][ix]); From e044ccbbb34076a4b8bafd33de5878ee57ff1668 Mon Sep 17 00:00:00 2001 From: Shern Tee Date: Wed, 17 May 2023 16:41:21 +1000 Subject: [PATCH 05/12] Bugfix fix_efield.cpp for atom-style energy --- src/fix_efield.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index d1765ed536..7880655973 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -395,7 +395,7 @@ void FixEfield::post_force(int vflag) } f[i][2] += fz; fsum[3] += fz; - if (estyle == ATOM) fsum[0] += efield[0][3]; + if (estyle == ATOM) fsum[0] += efield[i][3]; } } From d98b1e9f0418714d81950e667d2dc0d11439a6f5 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 17 May 2023 08:15:42 -0600 Subject: [PATCH 06/12] fix left/right indices --- src/EXTRA-FIX/fix_ttm_mod.cpp | 38 +++++++++++++++-------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index e7ad9735cf..16248ccbd7 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -329,20 +329,14 @@ void FixTTMMod::post_force(int /*vflag*/) if (right_x == nxgrid) right_x = 0; if (right_y == nygrid) right_y = 0; if (right_z == nzgrid) right_z = 0; - int left_x = ix - 1; - int left_y = iy - 1; - int left_z = iz - 1; - if (left_x == -1) left_x = nxgrid - 1; - if (left_y == -1) left_y = nygrid - 1; - if (left_z == -1) left_z = nzgrid - 1; double T_i = T_electron[iz][iy][ix]; - double T_ir = T_electron[right_z][iy][ix]; + double T_ir = T_electron[iz][iy][right_x]; double T_iu = T_electron[iz][right_y][ix]; - double T_if = T_electron[iz][iy][right_x]; + double T_if = T_electron[right_z][iy][ix]; double C_i = el_properties(T_electron[iz][iy][ix]).el_heat_capacity; - double C_ir = el_properties(T_electron[right_z][iy][ix]).el_heat_capacity; + double C_ir = el_properties(T_electron[iz][iy][right_x]).el_heat_capacity; double C_iu = el_properties(T_electron[iz][right_y][ix]).el_heat_capacity; - double C_if = el_properties(T_electron[iz][iy][right_x]).el_heat_capacity; + double C_if = el_properties(T_electron[right_z][iy][ix]).el_heat_capacity; double diff_x = (x_at - x_surf)*(x_at - x_surf); diff_x = pow(diff_x,0.5); double len_factor = diff_x/(diff_x+free_path); @@ -808,33 +802,33 @@ void FixTTMMod::end_of_step() double cr_vac = 1; if (T_electron_old[iz][iy][ix] == 0) cr_vac = 0; double cr_v_l_x = 1; - if (T_electron_old[left_z][iy][ix] == 0) cr_v_l_x = 0; + if (T_electron_old[iz][iy][left_x] == 0) cr_v_l_x = 0; double cr_v_r_x = 1; - if (T_electron_old[right_z][iy][ix] == 0) cr_v_r_x = 0; + if (T_electron_old[iz][iy][right_x] == 0) cr_v_r_x = 0; double cr_v_l_y = 1; if (T_electron_old[iz][left_y][ix] == 0) cr_v_l_y = 0; double cr_v_r_y = 1; if (T_electron_old[iz][right_y][ix] == 0) cr_v_r_y = 0; double cr_v_l_z = 1; - if (T_electron_old[iz][iy][left_x] == 0) cr_v_l_z = 0; + if (T_electron_old[left_z][iy][ix] == 0) cr_v_l_z = 0; double cr_v_r_z = 1; - if (T_electron_old[iz][iy][right_x] == 0) cr_v_r_z = 0; + if (T_electron_old[right_z][iy][ix] == 0) cr_v_r_z = 0; if (cr_vac != 0) { T_electron[iz][iy][ix] = T_electron_old[iz][iy][ix] + inner_dt/el_properties(T_electron_old[iz][iy][ix]).el_heat_capacity * - ((cr_v_r_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[right_z][iy][ix]/2.0).el_thermal_conductivity* - (T_electron_old[right_z][iy][ix]-T_electron_old[iz][iy][ix])/dx - - cr_v_l_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[left_z][iy][ix]/2.0).el_thermal_conductivity* - (T_electron_old[iz][iy][ix]-T_electron_old[left_z][iy][ix])/dx)/dx + + ((cr_v_r_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][right_x]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][right_x]-T_electron_old[iz][iy][ix])/dx - + cr_v_l_x*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][left_x]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][ix]-T_electron_old[iz][iy][left_x])/dx)/dx + (cr_v_r_y*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][right_y][ix]/2.0).el_thermal_conductivity* (T_electron_old[iz][right_y][ix]-T_electron_old[iz][iy][ix])/dy - cr_v_l_y*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][left_y][ix]/2.0).el_thermal_conductivity* (T_electron_old[iz][iy][ix]-T_electron_old[iz][left_y][ix])/dy)/dy + - (cr_v_r_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][right_x]/2.0).el_thermal_conductivity* - (T_electron_old[iz][iy][right_x]-T_electron_old[iz][iy][ix])/dz - - cr_v_l_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[iz][iy][left_x]/2.0).el_thermal_conductivity* - (T_electron_old[iz][iy][ix]-T_electron_old[iz][iy][left_x])/dz)/dz); + (cr_v_r_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[right_z][iy][ix]/2.0).el_thermal_conductivity* + (T_electron_old[right_z][iy][ix]-T_electron_old[iz][iy][ix])/dz - + cr_v_l_z*el_properties(T_electron_old[iz][iy][ix]/2.0+T_electron_old[left_z][iy][ix]/2.0).el_thermal_conductivity* + (T_electron_old[iz][iy][ix]-T_electron_old[left_z][iy][ix])/dz)/dz); T_electron[iz][iy][ix]+=inner_dt/el_properties(T_electron[iz][iy][ix]).el_heat_capacity* (mult_factor - net_energy_transfer_all[iz][iy][ix]/del_vol); From 377c652a830a9041b71c115ea38fb0700e9cff29 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Wed, 17 May 2023 13:29:00 -0400 Subject: [PATCH 07/12] Update Colvars library to version 2023-05-01 This update consists exclusively of bugfixes or maintenance-related changes. The following is a list of pull requests in the Colvars repository since the previous update to LAMMPS: - 532 Add XYZ trajectory reading feature https://github.com/Colvars/colvars/pull/532 (@jhenin, @giacomofiorin) - 531 Delete objects quietly, unless explicitly requested via script (including VMD) https://github.com/Colvars/colvars/pull/531 (@giacomofiorin) - 530 Append newline to log and error messages if not already present https://github.com/Colvars/colvars/pull/530 (@giacomofiorin) - 528 Forward-declare OpenMP lock https://github.com/Colvars/colvars/pull/528 (@giacomofiorin) - 527 Remove unneeded STL container https://github.com/Colvars/colvars/pull/527 (@giacomofiorin) - 526 Allow collecting configuration files and strings before setting up interface https://github.com/Colvars/colvars/pull/526 (@giacomofiorin, @jhenin) - 523 Fallback to linearCombination when customFunction is missing in customColvar https://github.com/Colvars/colvars/pull/523 (@HanatoK, @giacomofiorin) - 522 Use iostream::fail() to check for I/O error https://github.com/Colvars/colvars/pull/522 (@jhenin) - 520 Fix ref count https://github.com/Colvars/colvars/pull/520 (@giacomofiorin) - 513 Set target temperature through a common code path https://github.com/Colvars/colvars/pull/513 (@giacomofiorin, @jhenin) - 509 Safer detection of Windows with recent Microsoft Visual Studio versions https://github.com/Colvars/colvars/pull/509 (@akohlmey) - 508 Update LAMMPS patching method to reflect Lepton availability https://github.com/Colvars/colvars/pull/508 (@giacomofiorin) - 497 Increase the precision of write_multicol https://github.com/Colvars/colvars/pull/497 (@HanatoK) - 496 Only perform MTS automatic enable/disable for timeStepFactor > 1 https://github.com/Colvars/colvars/pull/496 (@giacomofiorin) - 493 Remove unused branch of quaternion input function https://github.com/Colvars/colvars/pull/493 (@giacomofiorin) - 489 Ensure there are spaces between the fields in the header https://github.com/Colvars/colvars/pull/489 (@HanatoK) - 487 Use map of output streams, and return references to its elements https://github.com/Colvars/colvars/pull/487 (@giacomofiorin, @jhenin) - 486 Remember first step of moving restraint https://github.com/Colvars/colvars/pull/486 (@jhenin) - 485 Add decoupling option for moving restraints https://github.com/Colvars/colvars/pull/485 (@jhenin) - 483 Update Lepton via patching procedure https://github.com/Colvars/colvars/pull/483 (@giacomofiorin) - 481 Make file-reading operations of input data abstractable https://github.com/Colvars/colvars/pull/481 (@giacomofiorin) Authors: @akohlmey, @giacomofiorin, @HanatoK, @jhenin --- doc/src/PDF/colvars-refman-lammps.pdf | Bin 1492597 -> 1498869 bytes lib/colvars/Makefile.common | 2 + lib/colvars/Makefile.deps | 504 ++++------------ lib/colvars/colvar.cpp | 78 +-- lib/colvars/colvar.h | 2 - lib/colvars/colvar_UIestimator.h | 91 +-- lib/colvars/colvar_arithmeticpath.h | 1 - lib/colvars/colvar_geometricpath.h | 2 - lib/colvars/colvar_neuralnetworkcompute.cpp | 32 +- lib/colvars/colvar_neuralnetworkcompute.h | 10 +- lib/colvars/colvaratoms.cpp | 28 +- lib/colvars/colvarbias.cpp | 96 ++-- lib/colvars/colvarbias.h | 2 +- lib/colvars/colvarbias_abf.cpp | 77 ++- lib/colvars/colvarbias_abf.h | 2 +- lib/colvars/colvarbias_alb.cpp | 24 +- lib/colvars/colvarbias_histogram.cpp | 22 +- .../colvarbias_histogram_reweight_amd.cpp | 102 ++-- .../colvarbias_histogram_reweight_amd.h | 12 +- lib/colvars/colvarbias_meta.cpp | 185 +++--- lib/colvars/colvarbias_meta.h | 11 +- lib/colvars/colvarbias_restraint.cpp | 167 ++++-- lib/colvars/colvarbias_restraint.h | 8 +- lib/colvars/colvarcomp.h | 2 +- lib/colvars/colvarcomp_combination.cpp | 173 +++--- lib/colvars/colvarcomp_coordnums.cpp | 14 +- lib/colvars/colvarcomp_distances.cpp | 1 + lib/colvars/colvarcomp_gpath.cpp | 7 +- lib/colvars/colvarcomp_protein.cpp | 13 +- lib/colvars/colvarcomp_rotations.cpp | 8 +- lib/colvars/colvargrid.cpp | 121 +++- lib/colvars/colvargrid.h | 311 ++++------ lib/colvars/colvargrid_def.h | 261 +++++++++ lib/colvars/colvarmodule.cpp | 279 ++++----- lib/colvars/colvarmodule.h | 28 +- lib/colvars/colvarmodule_refs.h | 46 +- lib/colvars/colvarproxy.cpp | 537 +++--------------- lib/colvars/colvarproxy.h | 352 ++---------- lib/colvars/colvarproxy_io.cpp | 310 ++++++++++ lib/colvars/colvarproxy_io.h | 167 ++++++ lib/colvars/colvarproxy_system.cpp | 203 +++++++ lib/colvars/colvarproxy_system.h | 177 ++++++ lib/colvars/colvarproxy_tcl.cpp | 1 + lib/colvars/colvarproxy_volmaps.cpp | 8 +- lib/colvars/colvarproxy_volmaps.h | 2 +- lib/colvars/colvars_version.h | 2 +- lib/colvars/colvarscript_commands.h | 95 +++- lib/colvars/colvartypes.cpp | 85 +-- lib/colvars/colvartypes.h | 128 ++--- src/COLVARS/colvarproxy_lammps.cpp | 34 +- src/COLVARS/colvarproxy_lammps.h | 13 +- src/COLVARS/colvarproxy_lammps_version.h | 2 +- src/COLVARS/fix_colvars.cpp | 10 +- 53 files changed, 2575 insertions(+), 2273 deletions(-) create mode 100644 lib/colvars/colvargrid_def.h create mode 100644 lib/colvars/colvarproxy_io.cpp create mode 100644 lib/colvars/colvarproxy_io.h create mode 100644 lib/colvars/colvarproxy_system.cpp create mode 100644 lib/colvars/colvarproxy_system.h diff --git a/doc/src/PDF/colvars-refman-lammps.pdf b/doc/src/PDF/colvars-refman-lammps.pdf index 59d12f925349e610767d251b9a71dffcaf0d9d24..4f85537b35d994f8d7e75d00545d15224a55d384 100644 GIT binary patch delta 362034 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 h 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%0D(&W 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Ċs^)-JOV2~ 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

|(CM8{Efk~#kp#_^pL^n_ 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

%-^nm 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%0A3f8rNl{^2Z>m4I2a6Oz8MVg<<*<-Xms5@Bhht4 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 ~Xd`?KO|~DyjixpME^O%rLkPC;{_x)()izAt zbcjR8sKn(odX6#e_n{r?(y@0mW^jY(E0#{42+-B|v6Ii;$;Qu^ogC4B$&#GFt;)$- zF!(QSg2hTb;&CszrXj36ddWYK*@_V%+{?jc@dpw@1>PNrKx_XpjhOIvYh}kq6AK9()QJI!_sS&5kC`4riK8^)l=&tD>j+753T! z1N1&nM*v*JmTdXWZ>P4=%VHHgW}z5S!YMb9llKJiLI1Oa385}Q3Dp_^HDSri<-i0J z0Gq|Z54cU9fm-aW>>&j}#SmUG_ym7>dVX;DvIhr(DHcF~XLoD?*4erXe4SmiA>y0{ z`nJc~q@~#{0wR^bG2*A=Q9uB(8tEPWw2}!$%tR{Z#}^W!Z}bJ)kg+(+X4>E)i7j?}nXs#@=R3 zf~?`djGfVLRHF)EHtD#J`5|6e*R@6E923lP#WTlzq4GIuGCBg4*$Gygm3IozxPJ4F z8rCM@|K?}>PXfEky6TRY{h>-+qewj!9Ah1FX8=uwg?+cm$hjb4K?`igT3J=vOdfh{ zoe&m(fgM7q>>ZtT)#sbDf>}7(OiVW7n)5p8y@)&(m*AFsVTJy0etu4kg;FHl(<0{J zGarPd_uSy4PXtN9U-IL&%>PIq&z?PF&z@1ceD$JS8eCA)i}Sw1X9-k4`|@G~7iQn| zkfEIZVE?&bES-C1a4#F7jUy0m`U<;E?a1hV@Ypg_HOiFKMUN$SBf z=bj2aiCu~it>1tG7NB|}=;*a8Os8e$?@zda>HR5=0=t|Hs@)@MFur?{9^3$fYxh8Z za<^Pb5KJn0?$QAnTbB-v#7Z1Ha@Rjph)?fmumh{CX<+o^76U-U>D`2}c#^o{NsK}# zsK`O?gdX%{CI)ZTjrND!@j1&Pk=1C88-IX@jWUzxx@TjSa!xaI4?OTcDu5le+Kt`X zX3_|63-By`?PuK)p>-Y^zOI&)ft#X#FVljveeNH{;A?*%aJZYS@BE4ZsYwc>|IKWf9x-4& zL_pt~EuSOo@0cx*%g*A+s2TWlyeaibHzj$;2cEIaQi15PY1&zBK~ z5)=VAm%%Fo6azUmGnerg5-ERLOOxBU5x)CZ=%}fTU_ANQsvI`4Y*IN9guq4v=>GcahMwR2{F7Mi+h=^WU-8u+`{y5S zo;`mR#Vf&C%2Tnr*{#x)$ylvoo-(eXXS@1k{nGBTbJ<;Oq~Yt2SAu`9v+``eyZZah zpW*Xp{CO;y<_d(n4+Z0X&}5E{AGHyR8J&hn+Po=FT~Sv-vK)UDB`i&Kko?AW?bSw^ zc-t9cGWvlL*B*YU5Nd!ykC1gvJ#4JwIFyb2ICVE{|C_fq|+MTN$)ugv` zYqwsLnw}r8q*-Up{Y-zqUESoqnb%d@WmQLlGry8-CLZ*IEs7*dWIWxgdIv*Oz3z&m zWmlV6tM!eW2KvG@&@5VddW8z7XbR0dubXXA?Y)$mo*6yz`g|(;A5U469c^cur5%;2 zW<2eWyIkHPoUulA@0Mo-^VEsB{0x7+DaB$Ugqf(9@xGrX zW@*gb0L>CGl#OH}5tF3}GnFHZT#ZKkerYyXv1HPS=@Gu~Ri93aUcn+2(M6t0&)g5bJn2lk>!sNM z+e~_)P0L5z)v(0q)o7GoW>#&Nrj>?qDL?NF#In~$fbOGF8SLstB0wBm!vGK$U6GYu zq5Rx54(WUK+#oO(S!E@CO27xPs-<_tO&PF84qz!A>=Az^GmpEm0;l!3Ye*%Bu~Nv# zK`}B+q{*Y0n6gOsn`Ti-(3G$1@*~DDr!C9^AZ)Xyyr;KaQy;M!-8>>Hb* zg?jN}AW|~dfHUZt;uh`h+*vQVSHtd5`JK%j&4P}gXi;@dy*=kd5WMENK0aMoV?lgY zpf*zJ^|5yDtkhtduD?dT$?6;GK~6&>NonlM=s^xaKW^>GR$E);77a(m9syvKt=e{o)KZd~$-_r(w?ep_2?1%uh+N{+{{T`d0I(LtO zRrFs5E1gIdf!zeKf&_vq{ab*QPT<($FT<*bWa%rADuHyK%gcf4&A{_UP(>BTRuKI)pj86do9-E~!;)Hr zAb#I&ZFlFH0(Xgq;htGRLwtWTXoDO-sP@|BWB^(~cYxv+2y@P9p|7hUEK*VfZ=M{b z9OI=!3ERCwFu+57;g8ehg91~4){muJ54%2`kuOqr?WgTik%df7sfZaFKbp!xv$vB` zy6M1C!=8wF?anh&gV~P| z9wa26P~^eKMkS2%_)E6r0i+Jtm|$hhtW=z^I6x|7yjL5+IR`j6LXhdqz*Bp$>`M$!mrJ>HgP%S5gYUvpQ zcB6(=_I6`nh3C30@2O)b5YDphG-mNoEV`t|U?3od@sPE64zzXkIX73~RV#waan6*O z5lNtIZPDWE=sKj=~QP-G>hhUVK1-}=5 z%Efdmg)@z#$C-bNAM^h}TyE>Sv{`jI@%X}<%6hkZ@}|;UoVW4emf-bnX>w>r(X86~ z!ejAL`B4L?^}ty-iy}eOnZ#FPVzf+NP}lw|!gnFpJ%HrXFzc&ibFx8S%4zj^PhH< zM8^SIu&93;MqS9m~tXU^!eM9Dlpc~8&zR1dwZjAkJ?m`)H7zSwW%LP>d-bFelzE}>2op+zE z^TP21bYn(x^w1AIKmGU$8@|LVs4@+YwzE_(!QX#=d`X>oR_4Qjzz=9NcX)0~^Dd?X4>?r2JkPHT$E}Ej+de0D^iWm-;t*?4Iw#;`$Qx5 ziN=4QLQp31nuW}Al0CE+r4K;lfKv1qo=c%7g?uoc^MSW8DVU)KSNs=a?BB})$GE>j zgy>$l>j|mIfZ>^!b!*+_5WF-turBHEDx?Q%Y#fFq!`mPVy{xrVnW6&$!blAuimPAT zAV}<|+?+1`o!=y((lE@1wESti8N3ml1{%6aqOmml5R<6ah1r@zM?}e{FBu zI1>JzU!jiovDC8c>>|@V)6^0w;c1!u zJS#W5wcEID+nmn1qO&6Wtcvx;e|%Ncn`&DwLf5WpVOUwL|8)B6**{*s(QG^~34PypeS&Z;Ztwf9>tmMWB0uoYJoLQ^0)kOAf3cbd`4lm* z7$J$`(JTyyo&0om^4ke2i)Jk2(hvc%=0*^f+ibBp`T19xE#W16gh-I&+7I1if>^Kx z&DPoblmGN67(UofrE`+&s1iP9RIt>xnn-z&TDc`m z^Hi^(u904~220CSuh+f!gLDeipQCh!nq&=oz*U5Eh4{@op90OY2?*sxF_FzV$rVe? znR-8yu+|(=FY{=D@?y#XEfIF#0Rh&@2xd$-;`^yNuzAx&gUp}=f9*}wJ5g_O#GrHZqrnvNwsljs zuROD_JUu|1tAppcWdS!dh??Tw%5!i`%k%qrMS^>ZXj1>w&GQJvehemxcD#in0d6CTU>yL3P?eCw9DKxJpucKs#1X%@x0s6#t^ zxGszHwTpjTe|X8Daqhw|h>RLl+AsF}l+)Q&8(zUsP*t3Fd$l=tao+0U(D`*LY2FzS z2B3wzRCl!ckuhOga9$R1>ri&T+qN#ZO$o~kOQy5U)w(U`%MvykO<8S=H5!aWi|N!8 zJ&Dh`Ce%j$`Zw%6UQMFY5NTCs-gbo&Fx$z5t=jF@f5pPZCl6U{e8eRz1w&KtiQ`2GY!fs6VW3_GCV%ttlYB|wdA3mw~x!WWJ zm9xB$ZasbMEm?b(+n?_)A?K3fLv)fDs(Vy*pa{PaQ~O`dG068{T~zB&#UvjIMWm9$ zIB;IHf8ytsoX!Op@@!Rk2UoY)IP7ujIArN|HE=@fmLzz)p+IyZh5OmG#JKtES+?6L zfABmoA-5JV@jyg_&+Ki#1F1seqFP5@Ew`7UtJ<~TJB{~*ev1$BmJ^O?9_NIb=rOKbA2u*bS`JO})I$*U*od5sjbi8N<)+Euk| zf4cBELJhDWFdGuB!n)1#qDI1ATgx6b(2F~7pnj_CQBfm}A>ID}Yhe>esCg`M6i~@9 z>CuoQ_r$ytJkmFh2Ohu)VaWIJtGbff^Pxu>U>Vb)hvC*qX-_)rxTGU<0sA-hF#J?k z?e41mY3u6CFOLNg_=_CK;`ksM%X%l0e{i2<_z{t0P}AZY(U9Oom;p$T`XH*Gf`^2L zF!?|rUDsvn&i?-PUvC}@Bh83>LMj>ry%R%9d+i?&LkcSj_8Vac3zMP`WlSpV~OM*gVgAJFDZ0wn_B(P-7pChmdf0IK9 zeIS;a*6sf1>gsjT7QgqvHkS2|6WD|T6zfr7gN;AvmNr~@nlbfBj{p>wvWX>0;Q>g8O;oZ!-Uaf z=l=43MjO@s9($sPy9l0~f9Rc8SS1gqZb6=&(PUsWvCn8SWi%NXtzVMZV>B5VO^z8& zCX6O?`;8e*_-*7fGaAKfDm|eI$RdO%Gy&U>qY@e&UAy{PM!Tr$h3k%h9-Z@BB8M}z zYeA~kYT)?8)e~%vrnSlh~%10*n zsWl!P4;h7+Ak^Uj@eOhs!lC1lC`LSDs}D>3Cu1XCbk+Lq*eJl~!eyKxU>qJBrw$dL zHbm}x{xDp@NFw6lIsQd)wQl#mKDk~E%uU6uetY9=X?0RzH$G4zkmwBga;US5(nO^5P7_xfNv&_ zrsJ2oL*F@G8+fzr(u9P5rFS+VN+lvEZ ztb~kFn+L?$fBmyZ2C$P%`g;|S1gajb&>Ud_o@%$N>X53#Q<-L%Djr&ew!cpSzYu`M z)QiEntrj; zhQ$JZg!Mv4vjC@bFTz0Y2+$cm0UejF+PJp%xd}XOJ)FPCB~46|_U#4olYB^u4!X!= zA$Shq^|lK_m@f0Ln>V?|L~fiWTiD3pRRl{+cZ0>`$tcKy{twyd6oHqq3lbCoIhTMq z6DSTiFbXeBWo~D5Xdp5(HkT1u6)AtkTHB5rxecIYp_*k|m9LHEoSyjHsZ;EZTB8e&i#TByRii5f zza_ay5K<7w!Om26Qlbgs5}9sQmy?>1Tn*KP>|&5|1qrvr+SGA@IoMDbQ!;;>1U-!y zxjjp(o!UGMf9z20hG>54O>_}Bj z5=W`p9kDnnY_hic+>mh&ttFx+F-+43_Lv+L{aW@LXGSTusu3D^5$aCBp^yS=Jtb zYnl`-0GdQDab`S2+2Oq13+0rWQCeKeZ9?#HDs1NxMk&of38U25o~wV5k{O@aW&AY> zu|;i>ahN&il?0sPw#JDdRWmO~m$ey>S>;sPt;OX+Hpx_7u5CC(U5TOHA&{^Ra1w-O zT~=4j-S8HK=52Tj_O?3%q_$+ZP_!)>!lk74gn~O-4kQF(DTr{3xl+t!=G9V~ry*2{ zSf+x}YO@mN*Qn;j0*QaQje$IZyG_cjrse=-NX;#JOLet02biNnXdz$|2(cxV1xH|_ ztLy8l(JS{JNt}_|Z`|n5fB7pW;VXubRDE{yyU(9LTs?dCu&T1pSgD7VkuY4Uhlh9c ze*b0l!`sz(HNCzby?gUI;%72;arE-Ji_h@yYIL)huiW*u8{L1vodUPCA#bqMO7{nd zNTk;K08x`-?hX(=2)E4vf)8l0IY3OtZU8KyEu$USGhZ(kleg2Ad+$cCU){LTyXlve zySMq>|Nb?_h4D|*tI(~K zAxA&pLE|Ov2DX2(tQDWn=L?MXehs8%PXp48pq-F9A$LOQgxZ8}jBUeSjo#jUT(#pr z&F25O8ogL7KTVg-r0`+%htVHLFL3~z|6sG2VE!!CBYw1!XG69`-arHR>5JL_ym{uW z8~w0&w{YRI*T)`(Uw z!4MRS6AXau7u7FfaYDL)J+U3!`zlu-tmtU;0g%r%`f3FSPRpepv}gM7yYXtanET`@ z54SV`A#dfCLh;4$r$le1G!{fty!gs!076+|Mc@eR(3pI(;zGp(G*7Nf8O{``!K*P6 z1Wg8nML~aJp+ewS4=2>^-ADV6yUiL*#LKoh2DHY9z5=b4y6jPS_7QnUaRc8d$DSnj zRA%)AV0u^?JkE=8113b^si6s80aY{p;{~kXVQs)R46uYhtr)ZVT6L(3vt49%%Fj-b z*(xR96q((^v|WpU=cRON)ffUlt`@Byvs;Uz_N#wIDb{amkum31UW_ zdT)vdBE0mrWJn;R=o#&VFsh)DR~EpCvB3r>mo!CV02@h;a{}yPad^!W&^7vWKB#ut z`4E4oes}u1gC9p>2KkXG?jy_D_(63aKPaD%AJpLob@)LYeo%)Wo8@Rt@_<0XXiq8{ zMs#SPYv8asqw=Ep1SiQN=Y+>&!xcG;W zw-vj-zkuCwU*&{?m2*GksF>)X9fgC+T)b^go{!5ryzVGSAKzBkf#Mx1Hv|;(0V;pT zkDzjthTI@9nig#94Zsml{wYbz;2aU0EXSkrX0|}Dhdz(@f|9>$;oYgV+ipDO?Xx{6 zwC_0y=X;LpkaaPN5$TFfG$YxpSpxRj#yW`IF)le-eE!dP`OAN2pH@HbxlLkEEZJ7v zBrzl7LySF@k?}#(31w3Cwtr3%0OEhAhPG}It$8V_hoVGpd&W<y)jq|+HphexS@93P&;m@1NWBd?WKY3zSt%`+0I#RZ$CVj!vt(P`Q1AD zKhDOt!;wMC>|@O+rs!3)IF1Y=hF%ktBZqoXTR5P(ELN*g*b#gT#;o=#ssw+Z%7xd( zsFrn?pbbcM7I5QK&|RtzAzyY`!1jQPf-bYNy}x6>elJ(hdZ#Dx5ElfnAz|mC0FNcT zs4W_RuYhc}`T?6Xf-D<%kJXEw+>7A2S3orNEFjy8L=_2RNU4Y4LhTM~Z=ullA(T!k zM)XF7(?Br4`y%SdyQiMpg5Q6XhGQF(XJdYneauhv>o9+NVH5Xs?6zXJ<1E!%9q6ab zj28Mam3gNaALosIUNN4%{P_TH%zb%d&U+;{ZC(-@fNq3gnIy`mz-XX=x6cgFX?pvR z!Zs;^mZvu~Vi>SzH@auVE1`hc+c-smMU6M8%=|!`{AxP?36|I4Ord`qeL-|YAfmm@ zCp7NafCZ3+jQ@3}w2;qzDR$mx&Dr)=O6jMZ;5sBzKV`xEVu?MKQNoDQ31!1+I8KT_ zSuUTQzU4srmPe#-9yD16WjfgBC<=aMA9JxsWH|V{6g{1)x)+nBZ%md$!LVkUy_9Xg zE0FY4jv`=0JD%6hdC-vOTA7bxe{e{SG5LP)q2+QWv6Z`gPBXm`zbXBEv z9bN4@y4rPgmA*^=7SJ@=r+i)iX1mydo~VH%Z(rbjZQz107q;cTfkO`3mdAa2kdX{Z zPt(9faDe!=fdicrp(knJ(6Fej%6$XJUMoFO17~lu>E1(JGrCNdOWT610f{!c7TWuS z2*{N6S314g{lEP@UjB12pG}4{Dl)i|qSYa9A6*hiOHupW(RTa}n$+3w%ikBkIY8j; zYCKr#9E2elGKi;^5@fy2Ptwm^4Rlm_9B5G&}ejj=m(nLUBCY) zOSbJ5O|}V5{(A5K&(~Mq{h0EEQDUfJ$@L~NG||)$D&c9J{Cn|{bG7`>_1}iM#HfUl zEOCuyf18Xu-alra}Y zi;uRZ&$q@XCmeP=+TY)oTrKR~?UK<&-K=q|FfUCQ1A>a7J#1eLH4pq_63E zE6xpJoI^vAG<#(&ry5vSy4SLX!JuoRS@x_tPBV~d`jtBF@@8whAM2*D&!%NALD(j) z&|14(F{2l2`;k&!m0ej^zNg-}rM%o=3Ez0{NRB|D8R1!af#-`bU=)O&sW|;3Rdkm( ze}}p%3(rSm+pfvWs%zmL8_`NuLKz}V#L#P-id1nT^#Gz&5(9vK2^cBepOI%k(HDbA zXJbvI~t3GUS^@U<;M+wH$2@?9}ZuZ`RQe?aI*l z9pC2rllAM5S>#j$tYqY%3_Om6yAm1fe-`Gg!1O6;0<(41*-!qUO`$F|5vqrJ#3`D* zc6Na;q|`X`=^K&IiMx1RwGAV9ATAi$rk0o65L#}3fplaP<~H8 zfr%5T@oQnD$Xgq`@@`J^8swRVYI6@ zKZI6)RNla|IU90g!~7C7;=~1}e;nc+F@_8(M=%)TTIN zF$o&i14AJo`ZE)u6v3)N(6nfaon4>y;mONDEb`-VU)uG#1Vog8SZr;5f3RJHehwcG zHm`ikOIr-G>by97Z-hTtt|X}P!_LNO)&9Pm9~xEPfRlDNe+e+o+z>nsClsFo zPJECNdg7~1Pv<};;U>fjEW>D%gId)qN1KXfgt8$ql?)zVB-&J<7!HB#6T;1(PlsPR zdu*SYuNWYmjj|OV@tkKXL2Hl9RsF>F3hK@KkGDUjtbuD?;9A~R0J z*_FmiCA%`yV8x!Ef9$^d1aX1=VfPe7ZpxJpa9zOu;EW z$@;we?Nsic#r`nJBZW}UZh_Q83}3_#1iHqUueCv3!)*4gY>=QN73tu;AkD~L#tI2V zGGU(Vz4EPn2KX={lzwUW^!#2%&opZOBJ{vPS8&k3k@2Bmf5{=@n#MjaV0@?{8T-ns zwtarMS?9lmQ1kyh_8Bw#8nMr}K#tHEWLUCC4unFPdXaLD$OO?we;sn_Q+GUdZ;Rq| zIPLS!u0PbxuTQo<0y2gnT5%8(+)N;ZJ&%VF_zuP|a(y`hVi{rL0V9N*GL|c0&jh~&J11LlzHo0n2Fv4d)E)4sLQ$Q4D1!!z%3j--iEfmWok9q!EvU z{(}Zo60nq!#>SN`kjqfgKqdjd)`8OiIFa2`Hzy@SA<*q9m7OQF_Nr)u$pd9!e1Cp1 z77OpNf0OZLX(}(Pg-tKagj9=DwJ(=_DF+O0>Mz&f-(NDqS=-vmHtyaYdR=8?Mt|VY z30FM}WVup8gC0+9Sn1}@Q-d8kguyPun+I<3(ZU(3E}f!rOd^RqI|9y(AjkgFz4fcR zd&*&RX*4e3Rv$b}Y9_b(V~dkzi?;R`$*wdMe_G*gd0m1-DudPoZbK<6^L3~=av$D~{F{IUy8tYJ_)B=-c#AkoVZamd6&h`qKo2B+;6UO!c8& zmz!x7V#Y*_iwvQF5rQ87ImDT*7=7sA9zFC%v(KP6=b+J6_pxzc_T8uaaE!qQf1CBu zDkYNLtE!F{?7!uhR8hhP$|0b+EnTS}*^ad$FQ0H;8(Vb`ei_n|NgR)m#$Okv#)oNi zu6dGS;dZ$B2KOow1Mv#P>@h6=EX^~5!VzE^??PClDpQCOK(3zpge>#XGYhebZ_g1O za~f$v*dW2peg&@zlRv7zL;|y4US*EV38c8jWzYC8=Zwlqfl2zWJ0u|jIX@zm`y>H} z9PVx(szZC%5J=(qnH$vCo5MK3Hk})HR!DZ^P%0Pc^`BmNvVQb~5hADlGIgauUnb<8 znI6pnO#Tl{M{nepVIKn%0yi<2K|B!@128xfvef!J5 zS+s9&Xta-L^z+yf1+Dwv?4$AHm!EGw-7xnNu_)n@HYpK8M)~o^(@2_%NKm4+jv5=? z-~4Bg2!FFks$d!j9Qt#4!cSkwlv)zX)Du##)-xeO@=>M#E3c!ezr~3`(~6d0#i!>HI*AAD=f|#aUBiccl%Cm!dmhFT8M)^aNCDK{#bgRIZ}vYN#(%9fVQ_$|f(wy3&*| z&40ct)}Le3MZ1E1BRnRx0%xIOj& zIvtA8X^SbdLf*2zpyvhlEi=yPe82a;h4{f)+mQ|3)jTo7V|?z~>Uz&!wvS*Bry<5; z$0L%GDDl(@J%*!H#6Xa^2IG_%>AJ326Mr?=rWYkS=wq%>$nA%L1oLeeKbky%_SqJh zV-^Cb51xF2S;aKrCd6w^%mz*l&hcMGWwQ_mn+-FuZM!Bbs;*r|=UJ4MBsC0Tb4sKP zGH(wy#N(OEu$1U@2*@Qaw-UF7B2uZI@1u*zcEeQsfWf)hp^iKIJEgqpLvsko<$q)s zr@FIMS7c>K4+)#817=8t0M#`~1jp6hA*T;uqpuS>sPj8jG)P;RfrG5T^kq#7tfIw4 z34e;ao;r2Pi(%FER67@+2MgqjX(X zIv(Md;q(%cCKQt{5g>NUi0&%_FMnt5>H5QTbHg$TWtNDzA`DdQ zEi2ZL$`U|5obq;l4B)iFAFvOLQl`Xkx3IHtIDyNdZXcHoMcY>uP}@9Ue}7-NGUT&! z09zsHE(~>tMY*vGrBo1U*aAz5m{m%I^5N)L0XcKYXBl^HF*r?#NfWN3Yi)VI>Y!T& z^&UWS%Nb#eg#@(bS`rRkU*n-#E z`o&GgZnkC$4qH%WIK%!_T_v+c5607Ju5As|l31?@*}h zuMuc0w6jgS zicTn{&9zR?uX6gpwR3A8iwZ7Ji%8bk5>PWnJft48eFb>h*~N9uS&f7h=T}Cp!THR5 zx8cgTdRLT&2s)tejeip_!J2Jb+~M`kqa4Y3)&`RE6-ViwD0m<(q*`BB@uUNU(es>K z%m*Sq7RMt07_23+)DaUOaYS3%9DtMKn8TzkcY#0e!d!v)9A&g8n-`8b4>f$6LJ(As zVA2(NXz=6VrDSTfWnuU8i%bWGi)t@iyZ%u_O@li5%B;f0Sd4DK{+yuF17g9NHg zqyLXr7@k4^)!+FQW})jKRKqd6?AgQ{z?o5f*H@Tl8GrTaXBcjv0M}yrXmb7g%O7hI zVRZ8+4d`OvjKltF8&KH9ktpBhfK zDUPtKEPt%#gJXEcKpE9+HMnY>ORvnUuzB|?pl22jWm=+r)`TWxCAT}CsJN=Dt^IT^ z%Hpmm&PU`4j};&Bt2_9*5qg&F2~L|lNdtYXIPv>^FgQi;#}4KRL6=G51BetRaW5~v z%7pnvkb_C1^w-IL2g(J`Pv^i1>taY5EL}?{rY}w zqsS`#W*|nz1i$cx*e_C5}+qe~e_pi_+H4`Ja5cr(Mf+$O8L?DUPthTd@lYiZ(@5#vIcw_`qL}9R# z;r)G1MPhHR=L9EJy>KIicF->Yfr7erTp%VvsIOm|m3B-JyLA}sWy z;wDuv%Yr=&H(6C&nYuX?I)WiF2z@l@@GUj>qKEtBKDY|mYYl@9+UhNvCW+)|HS8r^VuS~JCuTXK)f7Kg%VKzm()z8i$NeT?c zx_$`4JNt;WwmNCDI$t|(**Sm|ToTgb0M@PIPDC>(vVs?Ur!_Md_r3rZ3 z(I0~(pKOWHM>g6R+p4B%V$ky%Ch^xQt@lnM{)vtYyB)S0D&x4q)JOYumK7$;-BR z0U3%Vc^eA+M8kKHJ07{p7k+=b0zh^R?Tef6|0RCIU?9<~0cUPSvRzPNSi;8Z;eVYk z+T|S!LDgV7E`n@pvSmnJIkilk$E^T4jvuaX6-wKsX+sJI9TMZtqe$ac#w9=&6kgb@g_(1D5}w!s)~@TUTLNg> zwRHx~CEPIGH>*~z(xx_Tl-lI~vuGFiI5_Pr9qkYshTr8+#((9RqBr9H8}SN;YAiJc z;_D&(f2Um?1A&Xa+v`{ZPEklp95GLUU{5J*4jO8G+a(8VJs@OM%Xt2d{AP-4a}zaQ z*A9EpOk6K*^hV+?!bxZccy?RDVLD`Y{y|3*3$)kyIE7;aCeB%Kry>5t&Vs-xc=EhI zwJ=0Lts|Uv1^5Ay$p@ZVtRsQuKraF8n-KbUf4zj>{=RoUs3$I1&4DuUKw{Bt7_{5& zl7I)OhjH9t(Wyf04`9!mwaM&hW7o#<#G;#*rk!qZcXkVW)pg;1JQ4hkCm`-^qZuAE zP~!%}Rp3O*rFYb;%WBhv{I-hUKvwrSND!i6-S|%Y-F+NYg8}*K=GA&z*`wU+;AaU` ze+(=F8B0^Isxr^QUk@#3lCe%+7jVefTrP)3BlAmxlQCJ~MHObftm3km-abTHx+%>n z&%FJOZ01FV%5}uW(srrRW?(o>9c#2vzBd;gX-0~)MRD4*URMp=W1@QZIQk+Z79DS_ z;EPNTQ-P;ou!t-A#O%o7?4(2=(;-Cqe+a=5f;yZDkf|O%tx!AJiaP z9UVte*}YhjFeREi9+nsuK)UjoqJ&H;Gz#rVsC$eMA@c#12ZoqiQ(xNl-8j5+e<+*? zSh{pL@_IlKy$vXrbALd=E*xB&9Xjtt6~WF!o&=x&+S_rb$8gTwg(2W0>_RxtgCRkY zkn9#89RWr__v<9+u?oZ=1Y$6apd` zPUB1*@3wtg;k^J-8fmQ`Nin%20CyY`VZvw!ygFlNgPF^p}y3O4txC)VVPZvLr zV#hz_rg;h8v#s5QXAE|~$$j+MX8nD|S?&?$0J}Gu4-5ky4g-|RxDzL`6@O0_dELo{ zzh;o@|IK<`V~w7LWR_I-YzHAvZX06Lxc+cx<>(OcocxMi>u)kt^12D-)p}huHYyQrW<7MsMo_{XDd3X1-O+$Ec^R(}EfZHqm>%t@a$^|Rlp3vjen3dP_3BgxN_Ch0z9fLx*8#k9zbU~=g_|D#LV<*v zB3H$PPY3?4y&D=$6LaDE@VVhJg>Rcj6|Qst1j03mUAI98oUHQFzb^8*0I4STmztgU zsPcd2#2L;_C|H?rbz_FN_C(Qm9BMEN)jFgi?(}G5zlbH~YezxjdMmrgO&QYRl5bSl zgID*<)`VYYxZb(h>tm1JB*j*nuv>MKms=9YOBqUP^Izbjs-C`e4BiBHr+tl7=QSxk zsRYLE|8}@baF<~p0}}!_G?(F;5fcM5GcuPEC=n}v$#Uez5xw&(`Upmd5NgAs2p`6> zBrjowJVBo%AJ9Ot8x|Vq0np-5U+>JyENleD5r;F@rBQojW##fRtG~Q``-9jW`m1Pn z*hRbV#_ykRufF^?mOBxJS(J(0?cFYsyCllONJFjM{TTcdMY6VET;Iqn3i76eLMnsd zXd5bj<>zz#fJG7H)KXWC%{waZtGuVueKj2Y+7SX{h!;vUkNyBwCfH#D!l#fYWJfX6^E%C z;JLxgc*rN_MY|iJLZdU{O&pp>3nXe}2^5ciwzE`ne1Px0t?LkH0ppW7<3*%GnHgBf zt$ll}c!vK1Gk7Wb{BkYeM(V1hYG0i$b&kiTdV9yC8>Z!)cSBXcn2sk5FuI4Pyru@* z^!8c=r+w{dZptMIZ371b+JOyB?SdaUZf&BVJrC8X`qdL-kjz8dfdrhWdTEBLrXt;c zH56D>pmg*FkdJE}(Lrs8zXw|~?-oKUjSAyPc;1D}Te*?Sxb7P%Lm|CjOS!x~SPr-! zraM=FdtWxZ{g4sg++Mw7!4bPG3xR37*yu18>8?0kVS6etQ_gFDR$E^EMv4^po-G~a*DWmie)wwQ&f+M_jEm;=esftK zwOI8{QP}e^kqB*~Ci%lwN ziv^K?aft1V`n*Y1tivddClrKdkud_js&jNfh3*8)#%Za2cd6=X-&L1?6AhTia$4!y z?vGV*R5@|6~ju}Uu(>FTEovK~k5dDcMF#cX;sPVayPws#kYL#Au$dGl{_Jp5uO zs#ZNs$*Ee}qB;Q}#3QYL(5~NCW;&=)9x}uHfrg^(I@_PyrX=3ErkSk3*v<}@uIZ^W zr%w;y6Z&Ceh%i(X`*tvrYD+n!)&M)xxru%cGfgIg2lrLMuig+pG5`XM@hDlagQmR( z5XagML?j&y4mi+vMzrz7Vf;ZQl7(VuSq5NGr~v^j_|`gIp`)39cs_@YEluiO%Q)z% z^QSUQMkDqv!Xpb6yc514eL+3N1z16W&fkb@gP%h>6Os9UR7Y z0R*i9df7k=NS%^d@VC3g_@(uT9nhy}0+c69S4Q$|yQ(d#0(`#<0%2myO5Z=6!0UF< zj{H*~#RHEh>bAFk&T2sgB>BLaI<)-t3Juaaba~bA(78#e{8|t}R;6XLW59yApci}c zx^Tf3*$G;9LuJNL7)<3EVp#}#@_HSekhca$0Zugi%osr@D6qm~1ffM33Hd27rcNUl z9J~l5T+Ss(*0;{eHO0e6f(1}gm3}x@xb+b#IEH+ILn)Sjb+l~*1Vms;JOdCQJXFGb zN`PQK9v{5nQ-i`-G++nYy_&~QLuuk=-h({T7tB<#2r?7!v&s+uerv@f%*FxeS7H?m z*CKfAe;25udHWx=sUMY*R+-J-R@60Hn{{sHJbVL5dW03Z_2bVR_{LnERN8uB}5=UkCK z#W8OV+=~e`{K63nZt_Vw+66uC=B>cR>r}6<1uV?!T1J8T(-V4U#x*3mFuXpgM@Bf- z=?HLlykZ@5M<-KW%iSON*3ME#L7<;NQtGcUacL`m{8qr3Q3ReoszBQ*KgmfG%04=3 zrn?7P;1-LYF{y|>w!vgr8XO*|lN1KdQI?h`lMJR_1`{tSgi?eAQ@pY`c-q`SP92=u ze%RDK4Kh2KgsqduVH}%hPd<*2Te~cH^Q3}{g@z~Sojd!4!4OKXs9vrIMJ=X4t|vCI zQ-6eiK_Q@vM%Uyt<*n18t;4PpQUVP@CW3!c2Gnok3SQ~7o-3VJln~`+PKcU-Wx$qv z{&5+~N3fO2(l8Ur!VS3WYL+f?=NU;6eq9n5zN;iIw4A%Pu;2u(AILK)F+H0)I*D#J z+xbfz#EZ?d(NJGzqoDz_(U^)3w}92(+>U~OiH7g#+;+q;tnw2Bl*mM52`xI8j_su` zsq6wk_+APrS}#HS1la?io<f1{a57A z+-q2e78!1l%(pV&{#GCh^EM|$4~R5>WR?X#ba~;l3A{#Zf=%HP5rkb++U)x$Ory+3 zrqI)jNPv153qfh%yn_^R&|d&z_Wj+Zb`N0C>qHN}eRXImOy$D)2j2;o-BHvfFx8U# z6`io)jSPujyjAi_?Sa0c2KO)SFK@~Ikf;i9luJ>n# zirCT-Lf(`w_S!5I?6oOW@{gUAotRCYnW>GiQJN%7bn@F_qe>tS(rV$^|9ENTH>@}x zmR9G9Wvl!FN#E~TY@$Ml%t zClmla8RnQASa&FGhIaDH(mzNSIHQBjHQ?-J(B#7Yf2Sih7*O zx>3r9(PH@r2PHIT@v+ANP;A<=$_Til$dQLbs)6P>kPr27=VNs^a?|rW-ZP%CJj1yk z>|nmst$Rb*fP3>qKe#cEATdem5F<7rN!T)8p-ZR6q)qWWgO9^oPO@$avWOx2$@Fug ztUf}NAHjuLaxLdmvi1Le+5MA)Q{DJa80sZU>0eunVU)zRecu?1KgGEhk4Ffr-ELb95OY$2S2qaSE4ADaBcu*r207$bm_1ub5$7cbYsU?m0F zyL7$fVRt;4s*@ZsI3rgBJ$vv3c!GhdL`CX_LS(c;8tii>-~fVu({IU@%Vx;L>vN*# zj?~p1^2Ea4HxN>>C5l%ngTIpQ*$F9)PZVk7^?JS##1kcN+Hy-iVIipIr}okeJdOU4 zq!$>S$RX5)<6Q=0<8&*&qyHTdpWA!xkx6>+P#|r$*FZau07;t8=G`=(3*8Uh{XDJv z1tY+++{^^TDd0GNHA#C{emi42nw^L7Wpt$`SRVDn|KTZTI!D=DqDPgap^5eX2|o&m zMWbx%{{-T7|4$$c{kQBz@DTyVKlAsW`TqnXc0A?pLD^3pHV!M)=yR>}wk-g;g$g75 z=f*RS2`a+uxc;O6+u+Sp2yhc9cJ{@X@EHh|%-=%!(4>gn0x(Q%+GM7m*i9{sCKhAJNI)5-@i8S@jQt27pLFGvP(a4mv?dmL|4?~8G=6D(+{ z(3b40x*8sQ0}tTG>KkDo5=vL>nS+&u`;n30>_rw2rr!Hx(P9wzjsF255UCTFVIKn% zmvQ$J6$3FiG?&pB6Dfb)7|D*~MD*TY;Tw)LDQfjH#}SJ_0s+d6;o!uT#KN&d*`A?6 z^Y6T>SLN7lcTbq%gw$%+^7eXbzTExt6N^sW1C34*jlO;M`^N)=FO67~@+e6KVObI# zE)VXEJqod=)&oAK%2cEKwP?`oBGLeKbY|&jYMY|oY`LQGx$64%WQt3-`EB?8NFHeOh*6T$oLSnE$ zf)fSibfkA@ZBc&!GMPfMoMeIn5eGDq_n_LU^GaTh`8$TJ9N6lRo~** z=tFD5+1Z1az{OM>7VkHl#zPPK;YEAIZ-Jjq_w(~ZTi5!~R~xS4cN?Z+Pw<^RC`?uC zYwbm;ng!EiYc5MJpk%ZK`=>mMwoDKubJXs~?cDM*xtV{4Y_@{t@mKmSrM#({6W({j z;fyOQy-X*zbf?Zn@IC29o1(5CaSJ9p4mDzch@Jv)ee43pbuibq)7>kC@~OlAFYLsU^{dpXK?tUbzsp|m!U4~OA!C`>GbIrIR{gnZ0f8s6I>-~JwR0Y0^q{WvWVRNTXJJuV)Qp_fWB#B+-usLn$ zA-Hr8k&daD$NOT;%I%VV|9I8&q<9>f1EztkkXiiQh=DntL&}A`i}C*oK7DnsszAYcoWSlBOvqjMfS&WKj)fAK@ z8J}d;zF5FW6@IgkG`3H{cu0T1-X(v^F#z#s;&E_+PeVfp zz{$kpUNAi8oJjt0|58tl-ht8ks;+U@XkGdza83mh>^<*kZggHElmNTsb1%6R&EPx~ zYmb0(x(m^BGF9p8`L#Geq3dvmT2FuLy|2T#S+-AbR2UB!o>R=MAt_;OtnRA~fFP8Q zp2|HHHigKbnI0i(-JJR}@*E(&t$IgFZcKf>ps`q$5L`&8j|#{F#G2RQd*0`?vuJpQ zfc>ffm-wRZa%>9RD%9uK7IfrB4qM(ntG1vlgWQdfom&% z-;f5VFth+J)=AJbfKLlz}Uud4)qn>|SYB$!b7c>;l$$i$Pu|@W?htN zA~`ZG;8kw3nAK-K%tF8Aq!GTbWucsB{PwKlSOT}cF2V}yS~m94SZbG*3F;DI$yjQ% z)%4G6T^*{veq1d9oMb8=e;c_;Re1@fQz1xMH5h_+c%->4;6?+MGi}b+@Vq+MJ#y$C zc`~<(*OBFZ=wefo!ybQBIGXl?H)t+cz;k-o$?!J=b*~Xj4tot_XIW~`%S|jCUwyS- zg_14DwkhNa$)t^62|nrK*X}>8*)>%V1>Z358oU+F^~k=jU((~ z<2_Kr)(jC2IUzYxgoXe6R&_O>L&@?;_CkQz)2yzpuJ_mc?&|$NMX+ryc(4t4@NRfA z15f;4Z-e2-`*#ig?wuDGHO(uRkvZU)f7xR`+)}tm>@6H_7VS7S(^HG^;xzOl!aX z*jT@|t?0R_%C@cwKS}!}gDJkbG-lOwr2E6MP20RGJ==1|tg(gNv@>3}CgcPT7XG9h7c(4_lAVKWBG*3s&B>!;JAshk2SKq$W94}vE6!%>7xpht|A z?BCo}H8ELM9ljwI;Rt_Eh0n}>;9Qn|dv`7zY{5&veMAuL1(A;mQXN}RDvb{*Xxz58 z_M)JEAK*XpRJW0uZzK(;jc~B9oD;w(&B!F>#yJDbENO#HxrrFEgkjwH9Y08ECKN8k zau!prb?Iz8@%||kKU|ISUXm~wsX)h|LM6Mj7Yq0WiOsNx$9;d=`}E$E#2Ag^O>oI1 zgrJTM)5^Q!&!{2WYXeV82~}Vgl`c*VgFMQIT=dp~P`%#xg#dd87u9>d8NF!>{wS$;++xn=s4=jdv{D?y9T-@>$5O z1tiFrht6^0NPd59$1$2Ia98g*Fe}0Y3a0bn7j+zyFcYft9LE>P=lTxz8w1l9^Bp}C z^YOw(mF~sd2OI^`nsn}C)K_;O8M9ap?UqcyaUz#^#0w`L1udr%=lM_5+QYwXUA;}) z^tnz1EutRM#mhUxlj|EOMX*yO~fjsdO<9@5YF$@dm3C@&!MicZ@SGh>v_69cFdx%c$ixxvjx3_02#l`|$?Kxp{5d3 z#X9U_aE{F)1=tK8dd0{Z)5k~8a$*S~0dd8Be#w8qnwcdr2rN7#Bx;MO@@84qnCVcS z$hstihBTgtjugbzS~`5?)TklcG{ombkJSN1@s8O5D6DE!s$(9BiN|y3;KGvw8cw3S z5o-KWV$Z!G9pr+LtBwI6p;z;k3Sgl`IQf6+#bq2a!$qGTG~jI^zeGZTzG>3F!*Nw$g+;)I8vzvSmK!1NxCSo`d>8))xb?)MHQ3hxzbT7k|i$$fC zk8B+49_9O2l$l|^80?AjV|(Ijm&wQUbS*$x-c<&d_iLDSbq;CM(m`#ar!0@!qnDi= zbe*;)$;US(*Y}tWsdg+_SaE1jIg#NfOO7Xh>xrQmR7)6I@%5D`#;!Yh9w zOr&79U#r#HR7;oZ)bi&-0>JSG#r^)`hA)&H`awyNI@Xyc@aK*NPtvI~plg20&> zbWoMcjK*jMEyiOy9#sONS!iZ%Mz%x=JI@~~G|hBbK0UV89!l6IEsA>|@wFWsJniUw z5C9!0Qgak!+TwZwaGoLFyvO)gyXt>fc78DA32mUj(H~4(^tmiLz!l!OsO+0%TF9=Z-L@+Ez#J6K%ER(+0{x6hB(x9@uRy zMZ^SXh3;Y0*EVs4(P;X67{vt0^#v>}BEsfpS(v^jJlC*LE{#dPkX;|bv4VeVW@Pd# z94j=|nfN7u>`a_9fGipmZ?nz^vS+B|(?C{;1eiu6AS*qP{fEEAcYVzmEu6yG^$X%y z_gP3q@haVHj=-JD3*hYuYK8Z%-+|{{owt`_)!Nd}`zJLou>pfm8u+h%Ac74=wdrmmXiVZ@3bqw@0D)vWqhHqclo2;tXR=I)rkV(ZQzUO!XSYBLYE%=#7G^;XaI^fMSP8Vs1X_cMSdp=-xG zbm)AXySrm0(@#JUzyAYs6km>)VIKn%0yj68K|B!@135J_m+=@9D1Yr*S(Dth5q{UN zn8(>F4UCf@2Efeg zATUb=3PQQOoM^Ir^I0ezv>!WtPZhl>ZCh4*9NbphK4TB}ZP{Y!=(^i_+d^}eNMFHM zLxeFtL$aKIU?a+OPMFF@BVvSsN?1myGVj%hvRn`WGT+6B%7c4r8`Al7Hkl&Q@Lud~ z95~%zBBknEe1FrFT{N`rHfC>S^pDHK=tEI?ioLcx;=<{-h|}sk1kSxVj(xp4h|LwJ(;m zV+6@qKic2E{Nmf`sw;bRivwe?WZai-XU~UjHfS7Evw!5Aaw4fnZDC0jJSS9}z8#68 z#B6ibu(`il5|RVR4C)*gl#1bu>12E#8 z4QJy^KgSKvr3b!{qNPG6+G5BTU_-X75U8L$wPGm31a03*(If0kS=5K~(PL_^*1IbP z2lZ&X=YLQ(BEau5$gaK%QUuXNrcf8ql0^Y`w`FmQ0|G`uyVWKxE2u)@+V0@^buQw% z^PmBi0?5(aKM~?H3h>6?3F6z%omz6W5n!TU?3T7#XkwUI#;Tu|-Mfd@bpx0z4FGVQ z4UVd+t3}bNQ9hrc)?f>e?}x4GIBe82nfoSfh=0}qMw}C-)d%)XD$fZQa_~(6pZ<9N z0=`KBK1uL4@93Lee*2EzNyC{LDbBycJLyNflTu&^`TxDsf0=iB^M0LE&gRZZMdy_D z&MBKXCpB|US?ZkB;GDAHoc?lh)yr?AUkXlX@GElkD;c63v>BZURQ?<%vWaU-^zd|F zqJMIJ;Y*BKzw(o)8<>{PqgJ$8wY9h`lM*!z>8NQa z+}vZjb-QqW@HqL_J4|uSzD0R-Rg3Z4M1PvVB&bM=^|5YZdv65y^%)C=t#U?3hYy|$r#OPwzfC5-!3#9uW+r`H&>jl&mA_18_3qdG9g9F z^m°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%0Ahw4tdgW39t#w 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

9JHDQB1@vmS~gfe< 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 diff --git a/lib/colvars/Makefile.common b/lib/colvars/Makefile.common index 356a7f4a91..9e7be12958 100644 --- a/lib/colvars/Makefile.common +++ b/lib/colvars/Makefile.common @@ -50,7 +50,9 @@ COLVARS_SRCS = \ colvarparams.cpp \ colvarparse.cpp \ colvarproxy.cpp \ + colvarproxy_io.cpp \ colvarproxy_replicas.cpp \ + colvarproxy_system.cpp \ colvarproxy_tcl.cpp \ colvarproxy_volmaps.cpp \ colvarscript.cpp \ diff --git a/lib/colvars/Makefile.deps b/lib/colvars/Makefile.deps index 6619653af0..6bf5171710 100644 --- a/lib/colvars/Makefile.deps +++ b/lib/colvars/Makefile.deps @@ -1,371 +1,140 @@ $(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvarparse.h colvarparams.h \ - colvaratoms.h colvardeps.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarparse.h colvarparams.h colvaratoms.h \ + colvardeps.h $(COLVARS_OBJ_DIR)colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h \ colvars_version.h colvar.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarbias_abf.h colvarproxy.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvarbias.h colvargrid.h \ - colvar_UIestimator.h + colvarparams.h colvardeps.h colvarbias_abf.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarbias.h colvargrid.h colvar_UIestimator.h $(COLVARS_OBJ_DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h \ colvars_version.h colvarbias.h colvar.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarbias_alb.h + colvarparse.h colvarparams.h colvardeps.h colvarbias_alb.h $(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvarbias.h colvar.h \ - colvarparse.h colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvargrid.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarbias.h colvar.h colvarparse.h colvarparams.h \ + colvardeps.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h \ - colvarparse.h colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarbias_histogram.h colvarbias.h \ - colvargrid.h + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ + colvarbias_histogram.h colvarbias.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_histogram_reweight_amd.o: \ colvarbias_histogram_reweight_amd.cpp \ colvarbias_histogram_reweight_amd.h colvarbias_histogram.h colvarbias.h \ colvar.h colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvargrid.h colvarproxy.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h + colvarparse.h colvarparams.h colvardeps.h colvargrid.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h $(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h colvarparse.h \ - colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarbias_meta.h colvarbias.h \ - colvargrid.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar.h colvarparse.h colvarparams.h colvardeps.h \ + colvarbias_meta.h colvarbias.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_restraint.o: colvarbias_restraint.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \ - colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarbias_restraint.h colvarbias.h colvar.h \ + colvarparse.h colvarparams.h colvardeps.h $(COLVARS_OBJ_DIR)colvarcomp_alchlambda.o: colvarcomp_alchlambda.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ + colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ + colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_angles.o: colvarcomp_angles.cpp \ colvarmodule.h colvars_version.h colvar.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvardeps.h colvarcomp.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_apath.o: colvarcomp_apath.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_coordnums.o: colvarcomp_coordnums.cpp \ colvarmodule.h colvars_version.h colvarparse.h colvarvalue.h \ colvartypes.h colvarparams.h colvaratoms.h colvarproxy.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvardeps.h colvar.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvar_arithmeticpath.h \ - colvar_geometricpath.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvar.h colvarcomp.h \ + colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp.o: colvarcomp.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvar.h colvarparse.h \ - colvarparams.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparams.h colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_distances.o: colvarcomp_distances.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ + colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ + colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_gpath.o: colvarcomp_gpath.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_neuralnetwork.o: \ colvarcomp_neuralnetwork.cpp colvarmodule.h colvars_version.h \ colvarvalue.h colvartypes.h colvarparse.h colvarparams.h colvar.h \ - colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ colvar_arithmeticpath.h colvar_geometricpath.h \ colvar_neuralnetworkcompute.h $(COLVARS_OBJ_DIR)colvarcomp_combination.o: colvarcomp_combination.cpp \ colvarcomp.h colvarmodule.h colvars_version.h colvar.h colvarvalue.h \ - colvartypes.h colvarparse.h colvarparams.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvaratoms.h colvarproxy.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ - colvar_geometricpath.h + colvartypes.h colvarparse.h colvarparams.h colvardeps.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_protein.o: colvarcomp_protein.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ + colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ + colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_rotations.o: colvarcomp_rotations.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ + colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ + colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvarcomp_volmaps.o: colvarcomp_volmaps.cpp \ colvarmodule.h colvars_version.h colvarvalue.h colvartypes.h \ - colvarparse.h colvarparams.h colvar.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h + colvarparse.h colvarparams.h colvar.h colvardeps.h colvarcomp.h \ + colvaratoms.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar_arithmeticpath.h \ + colvar_geometricpath.h $(COLVARS_OBJ_DIR)colvar.o: colvar.cpp colvarmodule.h colvars_version.h \ colvarvalue.h colvartypes.h colvarparse.h colvarparams.h colvar.h \ - colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvarcomp.h colvaratoms.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ colvar_arithmeticpath.h colvar_geometricpath.h colvarscript.h \ colvarbias.h colvarscript_commands.h colvarscript_commands_colvar.h \ colvarscript_commands_bias.h $(COLVARS_OBJ_DIR)colvardeps.o: colvardeps.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvardeps.h colvarparse.h \ - colvarparams.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h $(COLVARS_OBJ_DIR)colvargrid.o: colvargrid.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparse.h \ - colvarparams.h colvar.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarcomp.h colvaratoms.h \ - colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar_arithmeticpath.h colvar_geometricpath.h colvargrid.h + colvarparams.h colvar.h colvardeps.h colvarcomp.h colvaratoms.h \ + colvarproxy.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvar_arithmeticpath.h colvar_geometricpath.h \ + colvargrid.h colvargrid_def.h $(COLVARS_OBJ_DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h \ colvars_version.h colvarparse.h colvarvalue.h colvartypes.h \ - colvarparams.h colvarproxy.h colvarproxy_tcl.h colvarproxy_volmaps.h \ - colvar.h colvardeps.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarbias.h colvarbias_abf.h \ - colvargrid.h colvar_UIestimator.h colvarbias_alb.h \ - colvarbias_histogram.h colvarbias_histogram_reweight_amd.h \ - colvarbias_meta.h colvarbias_restraint.h colvarscript.h \ - colvarscript_commands.h colvarscript_commands_colvar.h \ - colvarscript_commands_bias.h colvaratoms.h colvarcomp.h \ - colvar_arithmeticpath.h colvar_geometricpath.h colvarmodule_refs.h + colvarparams.h colvarproxy.h colvarproxy_io.h colvarproxy_system.h \ + colvarproxy_tcl.h colvarproxy_volmaps.h colvar.h colvardeps.h \ + colvarbias.h colvarbias_abf.h colvargrid.h colvar_UIestimator.h \ + colvarbias_alb.h colvarbias_histogram.h \ + colvarbias_histogram_reweight_amd.h colvarbias_meta.h \ + colvarbias_restraint.h colvarscript.h colvarscript_commands.h \ + colvarscript_commands_colvar.h colvarscript_commands_bias.h \ + colvaratoms.h colvarcomp.h colvar_arithmeticpath.h \ + colvar_geometricpath.h colvarmodule_refs.h $(COLVARS_OBJ_DIR)colvarparams.o: colvarparams.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparams.h $(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \ @@ -373,97 +142,53 @@ $(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \ colvarparams.h $(COLVARS_OBJ_DIR)colvarproxy.o: colvarproxy.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvarscript.h colvarbias.h \ - colvar.h colvarparse.h colvarparams.h colvardeps.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarscript_commands.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvarscript.h colvarbias.h colvar.h colvarparse.h \ + colvarparams.h colvardeps.h colvarscript_commands.h \ colvarscript_commands_colvar.h colvarscript_commands_bias.h \ colvaratoms.h colvarmodule_utils.h +$(COLVARS_OBJ_DIR)colvarproxy_io.o: colvarproxy_io.cpp colvarmodule.h \ + colvars_version.h colvarproxy_io.h $(COLVARS_OBJ_DIR)colvarproxy_replicas.o: colvarproxy_replicas.cpp \ colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ - colvarvalue.h colvarproxy_tcl.h colvarproxy_volmaps.h + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h +$(COLVARS_OBJ_DIR)colvarproxy_system.o: colvarproxy_system.cpp \ + colvarmodule.h colvars_version.h colvartypes.h colvarproxy_system.h $(COLVARS_OBJ_DIR)colvarproxy_tcl.o: colvarproxy_tcl.cpp colvarmodule.h \ colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvaratoms.h colvarparse.h \ - colvarparams.h colvardeps.h + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvaratoms.h colvarparse.h colvarparams.h \ + colvardeps.h $(COLVARS_OBJ_DIR)colvarproxy_volmaps.o: colvarproxy_volmaps.cpp \ colvarmodule.h colvars_version.h colvarproxy_volmaps.h \ colvarmodule_utils.h $(COLVARS_OBJ_DIR)colvarscript.o: colvarscript.cpp colvarproxy.h \ colvarmodule.h colvars_version.h colvartypes.h colvarvalue.h \ - colvarproxy_tcl.h colvarproxy_volmaps.h colvardeps.h colvarparse.h \ - colvarparams.h colvarscript.h colvarbias.h colvar.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarscript_commands.h \ + colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ + colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ colvarscript_commands_colvar.h colvarscript_commands_bias.h $(COLVARS_OBJ_DIR)colvarscript_commands.o: colvarscript_commands.cpp \ colvarproxy.h colvarmodule.h colvars_version.h colvartypes.h \ - colvarvalue.h colvarproxy_tcl.h colvarproxy_volmaps.h colvardeps.h \ - colvarparse.h colvarparams.h colvarscript.h colvarbias.h colvar.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarscript_commands.h \ + colvarvalue.h colvarproxy_io.h colvarproxy_system.h colvarproxy_tcl.h \ + colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ + colvarscript.h colvarbias.h colvar.h colvarscript_commands.h \ colvarscript_commands_colvar.h colvarscript_commands_bias.h $(COLVARS_OBJ_DIR)colvarscript_commands_bias.o: \ colvarscript_commands_bias.cpp colvarproxy.h colvarmodule.h \ - colvars_version.h colvartypes.h colvarvalue.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ - colvarscript.h colvarbias.h colvar.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h + colvars_version.h colvartypes.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvarparse.h colvarparams.h colvarscript.h colvarbias.h \ + colvar.h colvarscript_commands.h colvarscript_commands_colvar.h \ + colvarscript_commands_bias.h $(COLVARS_OBJ_DIR)colvarscript_commands_colvar.o: \ colvarscript_commands_colvar.cpp colvarproxy.h colvarmodule.h \ - colvars_version.h colvartypes.h colvarvalue.h colvarproxy_tcl.h \ - colvarproxy_volmaps.h colvardeps.h colvarparse.h colvarparams.h \ - colvarscript.h colvarbias.h colvar.h ../lepton/include/Lepton.h \ - ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarscript_commands.h \ - colvarscript_commands_colvar.h colvarscript_commands_bias.h + colvars_version.h colvartypes.h colvarvalue.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h \ + colvardeps.h colvarparse.h colvarparams.h colvarscript.h colvarbias.h \ + colvar.h colvarscript_commands.h colvarscript_commands_colvar.h \ + colvarscript_commands_bias.h $(COLVARS_OBJ_DIR)colvartypes.o: colvartypes.cpp colvarmodule.h \ colvars_version.h colvartypes.h colvarparse.h colvarvalue.h \ colvarparams.h ../../src/math_eigen_impl.h @@ -471,15 +196,6 @@ $(COLVARS_OBJ_DIR)colvarvalue.o: colvarvalue.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h $(COLVARS_OBJ_DIR)colvar_neuralnetworkcompute.o: \ colvar_neuralnetworkcompute.cpp colvar_neuralnetworkcompute.h \ - ../lepton/include/Lepton.h ../lepton/include/lepton/CompiledExpression.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/windowsIncludes.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/ExpressionProgram.h \ - ../lepton/include/lepton/ExpressionTreeNode.h \ - ../lepton/include/lepton/Operation.h \ - ../lepton/include/lepton/CustomFunction.h \ - ../lepton/include/lepton/Exception.h \ - ../lepton/include/lepton/ParsedExpression.h \ - ../lepton/include/lepton/Parser.h colvarparse.h colvarmodule.h \ - colvars_version.h colvarvalue.h colvartypes.h colvarparams.h + colvarparse.h colvarmodule.h colvars_version.h colvarvalue.h \ + colvartypes.h colvarparams.h colvarproxy.h colvarproxy_io.h \ + colvarproxy_system.h colvarproxy_tcl.h colvarproxy_volmaps.h diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp index 85b8443d72..700d3752ac 100644 --- a/lib/colvars/colvar.cpp +++ b/lib/colvars/colvar.cpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include #include "colvarmodule.h" #include "colvarvalue.h" @@ -24,8 +26,6 @@ std::mapproxy; get_keyval_feature(this, conf, "extendedLagrangian", f_cv_extended_Lagrangian, false); if (is_enabled(f_cv_extended_Lagrangian)) { @@ -646,7 +646,8 @@ int colvar::init_extended_Lagrangian(std::string const &conf) x_ext.type(colvarvalue::type_notset); v_ext.type(value()); fr.type(value()); - const bool temp_provided = get_keyval(conf, "extendedTemp", temp, cvm::temperature()); + const bool temp_provided = get_keyval(conf, "extendedTemp", temp, + proxy->target_temperature()); if (is_enabled(f_cv_external)) { // In the case of an "external" coordinate, there is no coupling potential: // only the fictitious mass is meaningful @@ -669,14 +670,14 @@ int colvar::init_extended_Lagrangian(std::string const &conf) cvm::error("Error: \"extendedFluctuation\" must be positive.\n", COLVARS_INPUT_ERROR); return COLVARS_INPUT_ERROR; } - ext_force_k = cvm::boltzmann() * temp / (tolerance * tolerance); + ext_force_k = proxy->boltzmann() * temp / (tolerance * tolerance); cvm::log("Computed extended system force constant: " + cvm::to_str(ext_force_k) + " [E]/U^2\n"); get_keyval(conf, "extendedTimeConstant", extended_period, 200.0); if (extended_period <= 0.0) { cvm::error("Error: \"extendedTimeConstant\" must be positive.\n", COLVARS_INPUT_ERROR); } - ext_mass = (cvm::boltzmann() * temp * extended_period * extended_period) + ext_mass = (proxy->boltzmann() * temp * extended_period * extended_period) / (4.0 * PI * PI * tolerance * tolerance); cvm::log("Computed fictitious mass: " + cvm::to_str(ext_mass) + " [E]/(U/fs)^2 (U: colvar unit)\n"); } @@ -697,7 +698,7 @@ int colvar::init_extended_Lagrangian(std::string const &conf) enable(f_cv_Langevin); ext_gamma *= 1.0e-3; // correct as long as input is required in ps-1 and cvm::dt() is in fs // Adjust Langevin sigma for slow time step if time_step_factor != 1 - ext_sigma = cvm::sqrt(2.0 * cvm::boltzmann() * temp * ext_gamma * ext_mass / (cvm::dt() * cvm::real(time_step_factor))); + ext_sigma = cvm::sqrt(2.0 * proxy->boltzmann() * temp * ext_gamma * ext_mass / (cvm::dt() * cvm::real(time_step_factor))); } get_keyval_feature(this, conf, "reflectingLowerBoundary", f_cv_reflecting_lower_boundary, false); @@ -1664,6 +1665,7 @@ int colvar::calc_cvc_Jacobians(int first_cvc, size_t num_cvcs) int colvar::collect_cvc_Jacobians() { + colvarproxy *proxy = cvm::main()->proxy; if (is_enabled(f_cv_Jacobian)) { fj.reset(); for (size_t i = 0; i < cvcs.size(); i++) { @@ -1676,7 +1678,7 @@ int colvar::collect_cvc_Jacobians() // linear combination is assumed fj += (cvcs[i])->Jacobian_derivative() * (cvcs[i])->sup_coeff / active_cvc_square_norm; } - fj *= cvm::boltzmann() * cvm::temperature(); + fj *= proxy->boltzmann() * proxy->target_temperature(); } return COLVARS_OK; @@ -2411,8 +2413,8 @@ std::ostream & colvar::write_state(std::ostream &os) { os << "}\n\n"; - if (runave_os) { - cvm::main()->proxy->flush_output_stream(runave_os); + if (runave_outfile.size() > 0) { + cvm::main()->proxy->flush_output_stream(runave_outfile); } return os; @@ -2536,9 +2538,13 @@ int colvar::write_output_files() } cvm::log("Writing correlation function to file \""+acf_outfile+"\".\n"); cvm::backup_file(acf_outfile.c_str()); - std::ostream *acf_os = cvm::proxy->output_stream(acf_outfile); - if (!acf_os) return cvm::get_error(); - error_code |= write_acf(*acf_os); + std::ostream &acf_os = cvm::proxy->output_stream(acf_outfile, + "colvar ACF file"); + if (!acf_os) { + error_code |= COLVARS_FILE_ERROR; + } else { + error_code |= write_acf(acf_os); + } cvm::proxy->close_output_stream(acf_outfile); } } @@ -2807,6 +2813,7 @@ int colvar::write_acf(std::ostream &os) int colvar::calc_runave() { int error_code = COLVARS_OK; + colvarproxy *proxy = cvm::main()->proxy; if (x_history.empty()) { @@ -2831,22 +2838,22 @@ int colvar::calc_runave() if ((*x_history_p).size() >= runave_length-1) { - if (runave_os == NULL) { - if (runave_outfile.size() == 0) { - runave_outfile = std::string(cvm::output_prefix()+"."+ - this->name+".runave.traj"); - } + if (runave_outfile.size() == 0) { + runave_outfile = std::string(cvm::output_prefix()+"."+ + this->name+".runave.traj"); + } + if (! proxy->output_stream_exists(runave_outfile)) { size_t const this_cv_width = x.output_width(cvm::cv_width); - cvm::proxy->backup_file(runave_outfile); - runave_os = cvm::proxy->output_stream(runave_outfile); - runave_os->setf(std::ios::scientific, std::ios::floatfield); - *runave_os << "# " << cvm::wrap_string("step", cvm::it_width-2) - << " " - << cvm::wrap_string("running average", this_cv_width) - << " " - << cvm::wrap_string("running stddev", this_cv_width) - << "\n"; + std::ostream &runave_os = proxy->output_stream(runave_outfile, + "colvar running average"); + runave_os.setf(std::ios::scientific, std::ios::floatfield); + runave_os << "# " << cvm::wrap_string("step", cvm::it_width-2) + << " " + << cvm::wrap_string("running average", this_cv_width) + << " " + << cvm::wrap_string("running stddev", this_cv_width) + << "\n"; } runave = x; @@ -2866,12 +2873,17 @@ int colvar::calc_runave() } runave_variance *= 1.0 / cvm::real(runave_length-1); - *runave_os << std::setw(cvm::it_width) << cvm::step_relative() - << " " - << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) - << runave << " " - << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) - << cvm::sqrt(runave_variance) << "\n"; + if (runave_outfile.size() > 0) { + std::ostream &runave_os = proxy->output_stream(runave_outfile); + runave_os << std::setw(cvm::it_width) << cvm::step_relative() + << " " + << std::setprecision(cvm::cv_prec) + << std::setw(cvm::cv_width) + << runave << " " + << std::setprecision(cvm::cv_prec) + << std::setw(cvm::cv_width) + << cvm::sqrt(runave_variance) << "\n"; + } } history_add_value(runave_length, *x_history_p, x); diff --git a/lib/colvars/colvar.h b/lib/colvars/colvar.h index 7b2863a3b5..9af26dedd3 100644 --- a/lib/colvars/colvar.h +++ b/lib/colvars/colvar.h @@ -551,8 +551,6 @@ protected: size_t runave_stride; /// Name of the file to write the running average std::string runave_outfile; - /// File to write the running average - std::ostream *runave_os; /// Current value of the running average colvarvalue runave; /// Current value of the square deviation from the running average diff --git a/lib/colvars/colvar_UIestimator.h b/lib/colvars/colvar_UIestimator.h index ca1ecc8c43..30a90a5799 100644 --- a/lib/colvars/colvar_UIestimator.h +++ b/lib/colvars/colvar_UIestimator.h @@ -1,4 +1,4 @@ -// -*- c++ -*- +// -*- Mode:c++; c-basic-offset: 4; -*- // This file is part of the Collective Variables module (Colvars). // The original version of Colvars and its updates are located at: @@ -21,6 +21,7 @@ // only for colvar module! // when integrated into other code, just remove this line and "...cvm::backup_file(...)" #include "colvarmodule.h" +#include "colvarproxy.h" namespace UIestimator { const int Y_SIZE = 21; // defines the range of extended CV with respect to a given CV @@ -380,6 +381,8 @@ namespace UIestimator { public: // calculate gradients from the internal variables void calc_pmf() { + colvarproxy *proxy = cvm::main()->proxy; + int norm; int i, j, k; @@ -455,7 +458,7 @@ namespace UIestimator { std::vector grad_temp(dimension, 0); for (k = 0; k < dimension; k++) { diff_av[k] /= (norm > 0 ? norm : 1); - av[k] = cvm::boltzmann() * temperature * av[k] / (norm > 0 ? norm : 1); + av[k] = proxy->boltzmann() * temperature * av[k] / (norm > 0 ? norm : 1); grad_temp[k] = av[k] - krestr[k] * diff_av[k]; } grad.set_value(loop_flag_x, grad_temp); @@ -515,15 +518,16 @@ namespace UIestimator { // only for colvars module! if (written_1D) cvm::backup_file(pmf_filename.c_str()); - std::ostream* ofile_pmf = cvm::proxy->output_stream(pmf_filename.c_str()); + std::ostream &ofile_pmf = cvm::proxy->output_stream(pmf_filename, + "PMF file"); std::vector position(1, 0); for (double i = lowerboundary[0]; i < upperboundary[0] + EPSILON; i += width[0]) { - *ofile_pmf << i << " "; + ofile_pmf << i << " "; position[0] = i + EPSILON; - *ofile_pmf << oneD_pmf.get_value(position) << std::endl; + ofile_pmf << oneD_pmf.get_value(position) << std::endl; } - cvm::proxy->close_output_stream(pmf_filename.c_str()); + cvm::proxy->close_output_stream(pmf_filename); written_1D = true; } @@ -541,7 +545,8 @@ namespace UIestimator { void write_interal_data() { std::string internal_filename = output_filename + ".UI.internal"; - std::ostream* ofile_internal = cvm::proxy->output_stream(internal_filename.c_str()); + std::ostream &ofile_internal = cvm::proxy->output_stream(internal_filename, + "UI internal file"); std::vector loop_flag(dimension, 0); for (int i = 0; i < dimension; i++) { @@ -551,11 +556,11 @@ namespace UIestimator { int n = 0; while (n >= 0) { for (int j = 0; j < dimension; j++) { - *ofile_internal << loop_flag[j] + 0.5 * width[j] << " "; + ofile_internal << loop_flag[j] + 0.5 * width[j] << " "; } for (int k = 0; k < dimension; k++) { - *ofile_internal << grad.get_value(loop_flag)[k] << " "; + ofile_internal << grad.get_value(loop_flag)[k] << " "; } std::vector ii(dimension,0); @@ -563,10 +568,10 @@ namespace UIestimator { for (double j = loop_flag[1] - 10; j< loop_flag[1] + 10 + EPSILON; j+=width[1]) { ii[0] = i; ii[1] = j; - *ofile_internal << i <<" "<output_stream(grad_filename.c_str()); - std::ostream* ofile_hist = cvm::proxy->output_stream(hist_filename.c_str(), std::ios::app); - std::ostream* ofile_count = cvm::proxy->output_stream(count_filename.c_str()); + std::ostream &ofile = cvm::proxy->output_stream(grad_filename, + "gradient file"); + std::ostream &ofile_hist = cvm::proxy->output_stream(hist_filename, + "gradient history file"); + std::ostream &ofile_count = cvm::proxy->output_stream(count_filename, + "count file"); - writehead(*ofile); - writehead(*ofile_hist); - writehead(*ofile_count); + writehead(ofile); + writehead(ofile_hist); + writehead(ofile_count); if (dimension == 1) { calc_1D_pmf(); @@ -617,19 +625,19 @@ namespace UIestimator { i = 0; while (i >= 0) { for (j = 0; j < dimension; j++) { - *ofile << loop_flag[j] + 0.5 * width[j] << " "; - *ofile_hist << loop_flag[j] + 0.5 * width[j] << " "; - *ofile_count << loop_flag[j] + 0.5 * width[j] << " "; + ofile << loop_flag[j] + 0.5 * width[j] << " "; + ofile_hist << loop_flag[j] + 0.5 * width[j] << " "; + ofile_count << loop_flag[j] + 0.5 * width[j] << " "; } if (restart == false) { for (j = 0; j < dimension; j++) { - *ofile << grad.get_value(loop_flag)[j] << " "; - *ofile_hist << grad.get_value(loop_flag)[j] << " "; + ofile << grad.get_value(loop_flag)[j] << " "; + ofile_hist << grad.get_value(loop_flag)[j] << " "; } - *ofile << std::endl; - *ofile_hist << std::endl; - *ofile_count << count.get_value(loop_flag) << " " < upperboundary[i] - width[i] + EPSILON) { loop_flag[i] = lowerboundary[i]; i--; - *ofile << std::endl; - *ofile_hist << std::endl; - *ofile_count << std::endl; + ofile << std::endl; + ofile_hist << std::endl; + ofile_count << std::endl; } else break; } } cvm::proxy->close_output_stream(grad_filename.c_str()); - cvm::proxy->close_output_stream(hist_filename.c_str()); + // cvm::proxy->close_output_stream(hist_filename.c_str()); cvm::proxy->close_output_stream(count_filename.c_str()); written = true; @@ -677,6 +685,7 @@ namespace UIestimator { int dimension_temp; int i, j, k, l, m; + colvarproxy *proxy = cvm::main()->proxy; std::vector loop_bin_size(dimension, 0); std::vector position_temp(dimension, 0); std::vector grad_temp(dimension, 0); @@ -687,8 +696,14 @@ namespace UIestimator { std::string count_filename = filename[i] + ".UI.count"; std::string grad_filename = filename[i] + ".UI.grad"; - std::ifstream count_file(count_filename.c_str(), std::ios::in); - std::ifstream grad_file(grad_filename.c_str(), std::ios::in); + std::istream &count_file = + proxy->input_stream(count_filename, "count filename"); + std::istream &grad_file = + proxy->input_stream(grad_filename, "gradient filename"); + + if (!count_file || !grad_file) { + return; + } count_file >> sharp >> dimension_temp; grad_file >> sharp >> dimension_temp; @@ -724,8 +739,8 @@ namespace UIestimator { input_count.increase_value(position_temp, count_temp); } - count_file.close(); - grad_file.close(); + proxy->close_input_stream(count_filename); + proxy->close_input_stream(grad_filename); } } }; diff --git a/lib/colvars/colvar_arithmeticpath.h b/lib/colvars/colvar_arithmeticpath.h index cf613af389..bea86a1014 100644 --- a/lib/colvars/colvar_arithmeticpath.h +++ b/lib/colvars/colvar_arithmeticpath.h @@ -5,7 +5,6 @@ #include #include -#include #include #include diff --git a/lib/colvars/colvar_geometricpath.h b/lib/colvars/colvar_geometricpath.h index 7f8acfd233..9ff78261f2 100644 --- a/lib/colvars/colvar_geometricpath.h +++ b/lib/colvars/colvar_geometricpath.h @@ -12,10 +12,8 @@ #include #include -#include #include #include -#include namespace GeometricPathCV { diff --git a/lib/colvars/colvar_neuralnetworkcompute.cpp b/lib/colvars/colvar_neuralnetworkcompute.cpp index d0f9633652..a1ad717946 100644 --- a/lib/colvars/colvar_neuralnetworkcompute.cpp +++ b/lib/colvars/colvar_neuralnetworkcompute.cpp @@ -1,6 +1,19 @@ +// -*- Mode:c++; c-basic-offset: 4; -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +#include +#include + #if (__cplusplus >= 201103L) #include "colvar_neuralnetworkcompute.h" #include "colvarparse.h" +#include "colvarproxy.h" namespace neuralnetworkCV { std::map, std::function>> activation_function_map @@ -124,12 +137,10 @@ void denseLayer::readFromFile(const std::string& weights_file, const std::string m_weights.clear(); m_biases.clear(); std::string line; - std::ifstream ifs_weights(weights_file.c_str()); - if (!ifs_weights) { - throw std::runtime_error("Cannot open file " + weights_file); - } + colvarproxy *proxy = cvm::main()->proxy; + auto &ifs_weights = proxy->input_stream(weights_file, "weights file"); while (std::getline(ifs_weights, line)) { - if (ifs_weights.bad()) { + if (!ifs_weights) { throw std::runtime_error("I/O error while reading " + weights_file); } std::vector splitted_data; @@ -146,13 +157,12 @@ void denseLayer::readFromFile(const std::string& weights_file, const std::string m_weights.push_back(weights_tmp); } } + proxy->close_input_stream(weights_file); + // parse biases file - std::ifstream ifs_biases(biases_file.c_str()); - if (!ifs_biases) { - throw std::runtime_error("Cannot open file " + biases_file); - } + auto &ifs_biases = proxy->input_stream(biases_file, "biases file"); while (std::getline(ifs_biases, line)) { - if (ifs_biases.bad()) { + if (!ifs_biases) { throw std::runtime_error("I/O error while reading " + biases_file); } std::vector splitted_data; @@ -167,6 +177,8 @@ void denseLayer::readFromFile(const std::string& weights_file, const std::string m_biases.push_back(bias); } } + proxy->close_input_stream(biases_file); + m_input_size = m_weights[0].size(); m_output_size = m_weights.size(); } diff --git a/lib/colvars/colvar_neuralnetworkcompute.h b/lib/colvars/colvar_neuralnetworkcompute.h index a48f8c7f14..5a56887431 100644 --- a/lib/colvars/colvar_neuralnetworkcompute.h +++ b/lib/colvars/colvar_neuralnetworkcompute.h @@ -1,3 +1,12 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #if (__cplusplus >= 201103L) #ifndef NEURALNETWORKCOMPUTE_H #define NEURALNETWORKCOMPUTE_H @@ -5,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/lib/colvars/colvaratoms.cpp b/lib/colvars/colvaratoms.cpp index f950bf5965..e31041ea6b 100644 --- a/lib/colvars/colvaratoms.cpp +++ b/lib/colvars/colvaratoms.cpp @@ -10,6 +10,8 @@ #include #include #include +#include +#include #include "colvarmodule.h" #include "colvarproxy.h" @@ -29,12 +31,8 @@ cvm::atom::atom() cvm::atom::atom(int atom_number) { - colvarproxy *p = cvm::proxy; + colvarproxy *p = cvm::main()->proxy; index = p->init_atom(atom_number); - if (cvm::debug()) { - cvm::log("The index of this atom in the colvarproxy arrays is "+ - cvm::to_str(index)+".\n"); - } id = p->get_atom_id(index); update_mass(); update_charge(); @@ -46,12 +44,8 @@ cvm::atom::atom(cvm::residue_id const &residue, std::string const &atom_name, std::string const &segment_id) { - colvarproxy *p = cvm::proxy; + colvarproxy *p = cvm::main()->proxy; index = p->init_atom(residue, atom_name, segment_id); - if (cvm::debug()) { - cvm::log("The index of this atom in the colvarproxy_namd arrays is "+ - cvm::to_str(index)+".\n"); - } id = p->get_atom_id(index); update_mass(); update_charge(); @@ -62,7 +56,9 @@ cvm::atom::atom(cvm::residue_id const &residue, cvm::atom::atom(atom const &a) : index(a.index) { - id = (cvm::proxy)->get_atom_id(index); + colvarproxy *p = cvm::main()->proxy; + id = p->get_atom_id(index); + p->increase_refcount(index); update_mass(); update_charge(); reset_data(); @@ -72,7 +68,7 @@ cvm::atom::atom(atom const &a) cvm::atom::~atom() { if (index >= 0) { - (cvm::proxy)->clear_atom(index); + (cvm::main()->proxy)->clear_atom(index); } } @@ -80,7 +76,7 @@ cvm::atom::~atom() cvm::atom & cvm::atom::operator = (cvm::atom const &a) { index = a.index; - id = (cvm::proxy)->get_atom_id(index); + id = (cvm::main()->proxy)->get_atom_id(index); update_mass(); update_charge(); reset_data(); @@ -113,7 +109,7 @@ cvm::atom_group::atom_group(std::vector const &atoms_in) cvm::atom_group::~atom_group() { if (is_enabled(f_ag_scalable) && !b_dummy) { - (cvm::proxy)->clear_atom_group(index); + (cvm::main()->proxy)->clear_atom_group(index); index = -1; } @@ -330,7 +326,7 @@ void cvm::atom_group::update_total_mass() } if (is_enabled(f_ag_scalable)) { - total_mass = (cvm::proxy)->get_atom_group_mass(index); + total_mass = (cvm::main()->proxy)->get_atom_group_mass(index); } else { total_mass = 0.0; for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { @@ -351,7 +347,7 @@ void cvm::atom_group::update_total_charge() } if (is_enabled(f_ag_scalable)) { - total_charge = (cvm::proxy)->get_atom_group_charge(index); + total_charge = (cvm::main()->proxy)->get_atom_group_charge(index); } else { total_charge = 0.0; for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) { diff --git a/lib/colvars/colvarbias.cpp b/lib/colvars/colvarbias.cpp index bb2f2310f7..18969fc531 100644 --- a/lib/colvars/colvarbias.cpp +++ b/lib/colvars/colvarbias.cpp @@ -7,7 +7,7 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. -#include +#include #include #include "colvarmodule.h" @@ -42,6 +42,8 @@ colvarbias::colvarbias(char const *key) int colvarbias::init(std::string const &conf) { + int error_code = COLVARS_OK; + name = bias_type + cvm::to_str(rank); colvarparse::set_string(conf); @@ -59,9 +61,9 @@ int colvarbias::init(std::string const &conf) if (bias_with_name != NULL) { if ((bias_with_name->rank != this->rank) || (bias_with_name->bias_type != this->bias_type)) { - cvm::error("Error: this bias cannot have the same name, \""+this->name+ - "\", as another bias.\n", COLVARS_INPUT_ERROR); - return COLVARS_INPUT_ERROR; + error_code |= cvm::error("Error: this bias cannot have the same name, \""+ + this->name+"\", as another bias.\n", + COLVARS_INPUT_ERROR); } } description = "bias " + name; @@ -71,9 +73,9 @@ int colvarbias::init(std::string const &conf) std::vector colvar_names; if (get_keyval(conf, "colvars", colvar_names)) { if (num_variables()) { - cvm::error("Error: cannot redefine the colvars that a bias was already defined on.\n", - COLVARS_INPUT_ERROR); - return COLVARS_INPUT_ERROR; + error_code |= cvm::error("Error: cannot redefine the colvars that " + "a bias was already defined on.\n", + COLVARS_INPUT_ERROR); } for (i = 0; i < colvar_names.size(); i++) { add_colvar(colvar_names[i]); @@ -82,8 +84,8 @@ int colvarbias::init(std::string const &conf) } if (!num_variables()) { - cvm::error("Error: no collective variables specified.\n", COLVARS_INPUT_ERROR); - return COLVARS_INPUT_ERROR; + error_code |= cvm::error("Error: no collective variables specified.\n", + COLVARS_INPUT_ERROR); } } else { @@ -112,8 +114,8 @@ int colvarbias::init(std::string const &conf) get_keyval(conf, "timeStepFactor", time_step_factor, time_step_factor); if (time_step_factor < 1) { - cvm::error("Error: timeStepFactor must be 1 or greater.\n"); - return COLVARS_ERROR; + error_code |= cvm::error("Error: timeStepFactor must be 1 or greater.\n", + COLVARS_INPUT_ERROR); } // Use the scaling factors from a grid? @@ -124,25 +126,17 @@ int colvarbias::init(std::string const &conf) std::string biasing_force_scaling_factors_in_filename; get_keyval(conf, "scaledBiasingForceFactorsGrid", biasing_force_scaling_factors_in_filename, std::string()); - std::ifstream is; - cvm::log("Reading scaling factors for the forces of bias " + - name + " from " + biasing_force_scaling_factors_in_filename); - is.open(biasing_force_scaling_factors_in_filename.c_str()); - if (!is.is_open()) { - cvm::error("Error opening the grid file " + - biasing_force_scaling_factors_in_filename + " for reading"); - } biasing_force_scaling_factors = new colvar_grid_scalar(colvars); - biasing_force_scaling_factors->read_multicol(is, true); + error_code |= biasing_force_scaling_factors->read_multicol(biasing_force_scaling_factors_in_filename, + "grid file"); biasing_force_scaling_factors_bin.assign(num_variables(), 0); - is.close(); } // Now that children are defined, we can solve dependencies enable(f_cvb_active); if (cvm::debug()) print_state(); - return COLVARS_OK; + return error_code; } @@ -377,10 +371,11 @@ int colvarbias::calc_forces(std::vector const *) } -void colvarbias::communicate_forces() +int colvarbias::communicate_forces() { + int error_code = COLVARS_OK; if (! is_enabled(f_cvb_apply_force)) { - return; + return error_code; } cvm::real biasing_force_factor = 1.0; size_t i = 0; @@ -409,6 +404,7 @@ void colvarbias::communicate_forces() } previous_colvar_forces[i] = colvar_forces[i]; } + return error_code; } @@ -573,11 +569,11 @@ int colvarbias::write_state_prefix(std::string const &prefix) { std::string const filename = cvm::state_file_prefix(prefix.c_str())+".colvars.state"; - std::ostream *os = cvm::proxy->output_stream(filename.c_str()); + std::ostream &os = cvm::proxy->output_stream(filename.c_str(), "bias state file"); int error_code = COLVARS_OK; - if (os != NULL) { - os->setf(std::ios::scientific, std::ios::floatfield); - error_code = write_state(*os).good() ? COLVARS_OK : COLVARS_FILE_ERROR; + if (os) { + os.setf(std::ios::scientific, std::ios::floatfield); + error_code = write_state(os) ? COLVARS_OK : COLVARS_FILE_ERROR; } else { error_code = COLVARS_FILE_ERROR; } @@ -600,17 +596,19 @@ int colvarbias::write_state_string(std::string &output) int colvarbias::read_state_prefix(std::string const &prefix) { - std::string filename((prefix+std::string(".colvars.state")).c_str()); - std::ifstream is(filename.c_str()); - if (!is.good()) { - // try without the suffix - is.clear(); + std::string filename(prefix+std::string(".colvars.state")); + std::istream *is = &(cvm::main()->proxy->input_stream(filename, + "bias state file", + false)); + if (!*is) { filename = prefix; - is.open(filename.c_str()); + is = &(cvm::main()->proxy->input_stream(filename, "bias state file")); } - return read_state(is).good() ? COLVARS_OK : - cvm::error("Error: in reading state for \""+name+"\" from input file \""+ - std::string(filename)+"\".\n", COLVARS_FILE_ERROR); + + if (read_state(*is)) { + return cvm::main()->proxy->close_input_stream(filename); + } + return COLVARS_FILE_ERROR; } @@ -899,6 +897,8 @@ std::istream & colvarbias_ti::read_state_data(std::istream &is) int colvarbias_ti::write_output_files() { + int error_code = COLVARS_OK; + if (!has_data) { // nothing to write return COLVARS_OK; @@ -906,38 +906,30 @@ int colvarbias_ti::write_output_files() std::string const ti_output_prefix = cvm::output_prefix()+"."+this->name; - std::ostream *os = NULL; - if (is_enabled(f_cvb_write_ti_samples)) { std::string const ti_count_file_name(ti_output_prefix+".ti.count"); - os = cvm::proxy->output_stream(ti_count_file_name); - if (os) { - ti_count->write_multicol(*os); - cvm::proxy->close_output_stream(ti_count_file_name); - } + error_code |= ti_count->write_multicol(ti_count_file_name, "TI count file"); std::string const ti_grad_file_name(ti_output_prefix+".ti.force"); - os = cvm::proxy->output_stream(ti_grad_file_name); - if (os) { - ti_avg_forces->write_multicol(*os); - cvm::proxy->close_output_stream(ti_grad_file_name); - } + error_code |= ti_avg_forces->write_multicol(ti_grad_file_name, "TI gradient file"); } if (is_enabled(f_cvb_write_ti_pmf)) { std::string const pmf_file_name(ti_output_prefix+".ti.pmf"); cvm::log("Writing TI PMF to file \""+pmf_file_name+"\".\n"); - os = cvm::proxy->output_stream(pmf_file_name); + std::ostream &os = cvm::proxy->output_stream(pmf_file_name, "TI PMF"); if (os) { // get the FE gradient ti_avg_forces->multiply_constant(-1.0); - ti_avg_forces->write_1D_integral(*os); + ti_avg_forces->write_1D_integral(os); ti_avg_forces->multiply_constant(-1.0); cvm::proxy->close_output_stream(pmf_file_name); + } else { + error_code |= COLVARS_FILE_ERROR; } } - return COLVARS_OK; + return error_code; } diff --git a/lib/colvars/colvarbias.h b/lib/colvars/colvarbias.h index ecb3e1eff1..e865902be6 100644 --- a/lib/colvars/colvarbias.h +++ b/lib/colvars/colvarbias.h @@ -73,7 +73,7 @@ public: virtual int calc_forces(std::vector const *values); /// Send forces to the collective variables - void communicate_forces(); + int communicate_forces(); /// Carry out operations needed before next step is run virtual int end_of_step(); diff --git a/lib/colvars/colvarbias_abf.cpp b/lib/colvars/colvarbias_abf.cpp index 5cb5e7af24..7d6b7b7fef 100644 --- a/lib/colvars/colvarbias_abf.cpp +++ b/lib/colvars/colvarbias_abf.cpp @@ -7,6 +7,8 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include + #include "colvarmodule.h" #include "colvar.h" #include "colvarbias_abf.h" @@ -38,17 +40,17 @@ colvarbias_abf::colvarbias_abf(char const *key) int colvarbias_abf::init(std::string const &conf) { + colvarproxy *proxy = cvm::main()->proxy; + colvarbias::init(conf); cvm::main()->cite_feature("ABF colvar bias implementation"); - colvarproxy *proxy = cvm::main()->proxy; - enable(f_cvb_scalar_variables); enable(f_cvb_calc_pmf); - // TODO relax this in case of VMD plugin - if (cvm::temperature() == 0.0) + if ((proxy->target_temperature() == 0.0) && proxy->simulation_running()) { cvm::log("WARNING: ABF should not be run without a thermostat or at 0 Kelvin!\n"); + } // ************* parsing general ABF options *********************** @@ -277,7 +279,7 @@ int colvarbias_abf::init(std::string const &conf) cvm::restart_out_freq, UI_restart, // whether restart from a .count and a .grad file input_prefix, // the prefixes of input files - cvm::temperature()); + proxy->target_temperature()); } } @@ -599,17 +601,17 @@ int colvarbias_abf::replica_share() { template int colvarbias_abf::write_grid_to_file(T const *grid, std::string const &filename, bool close) { - std::ostream *os = cvm::proxy->output_stream(filename); + std::ostream &os = cvm::proxy->output_stream(filename); if (!os) { return cvm::error("Error opening file " + filename + " for writing.\n", COLVARS_ERROR | COLVARS_FILE_ERROR); } - grid->write_multicol(*os); + grid->write_multicol(os); if (close) { cvm::proxy->close_output_stream(filename); } else { // Insert empty line between frames in history files - *os << std::endl; - cvm::proxy->flush_output_stream(os); + os << std::endl; + cvm::proxy->flush_output_stream(filename); } // In dimension higher than 2, dx is easier to handle and visualize @@ -617,11 +619,11 @@ template int colvarbias_abf::write_grid_to_file(T const *grid, // (could be implemented as multiple dx files) if (num_variables() > 2 && close) { std::string dx = filename + ".dx"; - std::ostream *dx_os = cvm::proxy->output_stream(dx); + std::ostream &dx_os = cvm::proxy->output_stream(dx); if (!dx_os) { return cvm::error("Error opening file " + dx + " for writing.\n", COLVARS_ERROR | COLVARS_FILE_ERROR); } - grid->write_opendx(*dx_os); + grid->write_opendx(dx_os); // if (close) { cvm::proxy->close_output_stream(dx); // } @@ -637,6 +639,8 @@ template int colvarbias_abf::write_grid_to_file(T const *grid, void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool close) { + colvarproxy *proxy = cvm::main()->proxy; + write_grid_to_file(samples, prefix + ".count", close); write_grid_to_file(gradients, prefix + ".grad", close); @@ -660,7 +664,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool clo czar_gradients->index_ok(ix); czar_gradients->incr(ix)) { for (size_t n = 0; n < czar_gradients->multiplicity(); n++) { czar_gradients->set_value(ix, z_gradients->value_output(ix, n) - - cvm::temperature() * cvm::boltzmann() * z_samples->log_gradient_finite_diff(ix, n), n); + - proxy->target_temperature() * proxy->boltzmann() * z_samples->log_gradient_finite_diff(ix, n), n); } } write_grid_to_file(czar_gradients, prefix + ".czar.grad", close); @@ -698,8 +702,10 @@ int colvarbias_abf::bin_count(int bin_index) { } -void colvarbias_abf::read_gradients_samples() +int colvarbias_abf::read_gradients_samples() { + int error_code = COLVARS_OK; + std::string samples_in_name, gradients_in_name, z_samples_in_name, z_gradients_in_name; for ( size_t i = 0; i < input_prefix.size(); i++ ) { @@ -708,43 +714,30 @@ void colvarbias_abf::read_gradients_samples() z_samples_in_name = input_prefix[i] + ".zcount"; z_gradients_in_name = input_prefix[i] + ".zgrad"; // For user-provided files, the per-bias naming scheme may not apply + cvm::log("Reading sample count from " + samples_in_name + + " and gradient from " + gradients_in_name); - std::ifstream is; + error_code |= samples->read_multicol(samples_in_name, + "ABF samples file", + true); - cvm::log("Reading sample count from " + samples_in_name + " and gradient from " + gradients_in_name); - is.open(samples_in_name.c_str()); - if (!is.is_open()) cvm::error("Error opening ABF samples file " + samples_in_name + " for reading"); - samples->read_multicol(is, true); - is.close(); - is.clear(); - - is.open(gradients_in_name.c_str()); - if (!is.is_open()) { - cvm::error("Error opening ABF gradient file " + - gradients_in_name + " for reading", COLVARS_INPUT_ERROR); - } else { - gradients->read_multicol(is, true); - is.close(); - } + error_code |= gradients->read_multicol(gradients_in_name, + "ABF gradient file", + true); if (b_CZAR_estimator) { // Read eABF z-averaged data for CZAR cvm::log("Reading z-histogram from " + z_samples_in_name + " and z-gradient from " + z_gradients_in_name); - - is.clear(); - is.open(z_samples_in_name.c_str()); - if (!is.is_open()) cvm::error("Error opening eABF z-histogram file " + z_samples_in_name + " for reading"); - z_samples->read_multicol(is, true); - is.close(); - is.clear(); - - is.open(z_gradients_in_name.c_str()); - if (!is.is_open()) cvm::error("Error opening eABF z-gradient file " + z_gradients_in_name + " for reading"); - z_gradients->read_multicol(is, true); - is.close(); + error_code |= z_samples->read_multicol(z_samples_in_name, + "eABF z-histogram file", + true); + error_code |= z_gradients->read_multicol(z_gradients_in_name, + "eABF z-gradient file", + true); } } - return; + + return error_code; } diff --git a/lib/colvars/colvarbias_abf.h b/lib/colvars/colvarbias_abf.h index 3a3120a058..f5d5bd267f 100644 --- a/lib/colvars/colvarbias_abf.h +++ b/lib/colvars/colvarbias_abf.h @@ -155,7 +155,7 @@ private: void write_gradients_samples(const std::string &prefix, bool close = true); /// Read human-readable FE gradients and sample count (if not using restart) - void read_gradients_samples(); + int read_gradients_samples(); /// Template used in write_gradient_samples() template int write_grid_to_file(T const *grid, diff --git a/lib/colvars/colvarbias_alb.cpp b/lib/colvars/colvarbias_alb.cpp index 5f39b0d93a..b432659bf4 100644 --- a/lib/colvars/colvarbias_alb.cpp +++ b/lib/colvars/colvarbias_alb.cpp @@ -7,9 +7,12 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include +#include #include #include "colvarmodule.h" +#include "colvarproxy.h" #include "colvarbias.h" #include "colvarbias_alb.h" @@ -36,6 +39,7 @@ colvarbias_alb::colvarbias_alb(char const *key) int colvarbias_alb::init(std::string const &conf) { + colvarproxy *proxy = cvm::main()->proxy; colvarbias::init(conf); cvm::main()->cite_feature("ALB colvar bias implementation"); @@ -110,10 +114,12 @@ int colvarbias_alb::init(std::string const &conf) if (!get_keyval(conf, "forceRange", max_coupling_range, max_coupling_range)) { //set to default for (i = 0; i < num_variables(); i++) { - if (cvm::temperature() > 0) - max_coupling_range[i] = 3 * cvm::temperature() * cvm::boltzmann(); - else - max_coupling_range[i] = 3 * cvm::boltzmann(); + if (proxy->target_temperature() > 0.0) { + max_coupling_range[i] = 3 * proxy->target_temperature() * + proxy->boltzmann(); + } else { + max_coupling_range[i] = 3 * proxy->boltzmann(); + } } } @@ -139,6 +145,7 @@ colvarbias_alb::~colvarbias_alb() int colvarbias_alb::update() { + colvarproxy *proxy = cvm::main()->proxy; bias_energy = 0.0; update_calls++; @@ -214,10 +221,11 @@ int colvarbias_alb::update() temp = 2. * (means[i] / (static_cast (colvar_centers[i])) - 1) * ssd[i] / (update_calls - 1); - if (cvm::temperature() > 0) - step_size = temp / (cvm::temperature() * cvm::boltzmann()); - else - step_size = temp / cvm::boltzmann(); + if (proxy->target_temperature() > 0.0) { + step_size = temp / (proxy->target_temperature() * proxy->boltzmann()); + } else { + step_size = temp / proxy->boltzmann(); + } means[i] = 0; ssd[i] = 0; diff --git a/lib/colvars/colvarbias_histogram.cpp b/lib/colvars/colvarbias_histogram.cpp index 2719489560..84f1a5bdee 100644 --- a/lib/colvars/colvarbias_histogram.cpp +++ b/lib/colvars/colvarbias_histogram.cpp @@ -179,31 +179,19 @@ int colvarbias_histogram::write_output_files() return COLVARS_OK; } + int error_code = COLVARS_OK; + if (out_name.size() && out_name != "none") { cvm::log("Writing the histogram file \""+out_name+"\".\n"); - cvm::backup_file(out_name.c_str()); - std::ostream *grid_os = cvm::proxy->output_stream(out_name); - if (!grid_os) { - return cvm::error("Error opening histogram file "+out_name+ - " for writing.\n", COLVARS_FILE_ERROR); - } - grid->write_multicol(*grid_os); - cvm::proxy->close_output_stream(out_name); + error_code |= grid->write_multicol(out_name, "histogram output file"); } if (out_name_dx.size() && out_name_dx != "none") { cvm::log("Writing the histogram file \""+out_name_dx+"\".\n"); - cvm::backup_file(out_name_dx.c_str()); - std::ostream *grid_os = cvm::proxy->output_stream(out_name_dx); - if (!grid_os) { - return cvm::error("Error opening histogram file "+out_name_dx+ - " for writing.\n", COLVARS_FILE_ERROR); - } - grid->write_opendx(*grid_os); - cvm::proxy->close_output_stream(out_name_dx); + error_code |= grid->write_opendx(out_name_dx, "histogram DX output file"); } - return COLVARS_OK; + return error_code; } diff --git a/lib/colvars/colvarbias_histogram_reweight_amd.cpp b/lib/colvars/colvarbias_histogram_reweight_amd.cpp index 97c278abcb..85f1bde35c 100644 --- a/lib/colvars/colvarbias_histogram_reweight_amd.cpp +++ b/lib/colvars/colvarbias_histogram_reweight_amd.cpp @@ -81,6 +81,7 @@ int colvarbias_reweightaMD::init(std::string const &conf) { } int colvarbias_reweightaMD::update() { + colvarproxy *proxy = cvm::main()->proxy; int error_code = COLVARS_OK; if (cvm::step_relative() >= start_after_steps) { // update base class @@ -110,7 +111,7 @@ int colvarbias_reweightaMD::update() { grid->acc_value(previous_bin, reweighting_factor); if (b_use_cumulant_expansion) { const cvm::real dV = cvm::logn(reweighting_factor) * - cvm::temperature() * cvm::boltzmann(); + proxy->target_temperature() * proxy->boltzmann(); grid_dV->acc_value(previous_bin, dV); grid_dV_square->acc_value(previous_bin, dV * dV); } @@ -129,7 +130,7 @@ int colvarbias_reweightaMD::update() { grid->acc_value(previous_bin, reweighting_factor); if (b_use_cumulant_expansion) { const cvm::real dV = cvm::logn(reweighting_factor) * - cvm::temperature() * cvm::boltzmann(); + proxy->target_temperature() * proxy->boltzmann(); grid_dV->acc_value(previous_bin, dV); grid_dV_square->acc_value(previous_bin, dV * dV); } @@ -138,10 +139,6 @@ int colvarbias_reweightaMD::update() { } previous_bin.assign(num_variables(), 0); - if (output_freq && (cvm::step_absolute() % output_freq) == 0) { - write_output_files(); - } - error_code |= cvm::get_error(); } return error_code; @@ -160,7 +157,7 @@ int colvarbias_reweightaMD::write_output_files() { (cvm::step_absolute() % history_freq) == 0; if (write_history) { error_code |= write_exponential_reweighted_pmf( - out_name_pmf + ".hist", (cvm::step_relative() > 0)); + out_name_pmf + ".hist", true); error_code |= write_count(out_count_prefix + ".hist", (cvm::step_relative() > 0)); } @@ -170,7 +167,7 @@ int colvarbias_reweightaMD::write_output_files() { error_code |= write_cumulant_expansion_pmf(out_name_cumulant_pmf); if (write_history) { error_code |= write_cumulant_expansion_pmf( - out_name_cumulant_pmf + ".hist", (cvm::step_relative() > 0)); + out_name_cumulant_pmf + ".hist", true); } } error_code |= cvm::get_error(); @@ -178,17 +175,13 @@ int colvarbias_reweightaMD::write_output_files() { } int colvarbias_reweightaMD::write_exponential_reweighted_pmf( - const std::string& p_output_prefix, bool append) { + const std::string& p_output_prefix, bool keep_open) { const std::string output_pmf = p_output_prefix + ".pmf"; + cvm::log("Writing the accelerated MD PMF file \"" + output_pmf + "\".\n"); - if (!append) { - cvm::backup_file(output_pmf.c_str()); - } - const std::ios::openmode mode = (append ? std::ios::app : std::ios::out); - std::ostream *pmf_grid_os = cvm::proxy->output_stream(output_pmf, mode); + std::ostream &pmf_grid_os = cvm::proxy->output_stream(output_pmf, "PMF file"); if (!pmf_grid_os) { - return cvm::error("Error opening PMF file " + output_pmf + - " for writing.\n", COLVARS_FILE_ERROR); + return COLVARS_FILE_ERROR; } pmf_grid_exp_avg->copy_grid(*grid); // compute the average @@ -200,19 +193,18 @@ int colvarbias_reweightaMD::write_exponential_reweighted_pmf( } } hist_to_pmf(pmf_grid_exp_avg, grid_count); - pmf_grid_exp_avg->write_multicol(*pmf_grid_os); - cvm::proxy->close_output_stream(output_pmf); + pmf_grid_exp_avg->write_multicol(pmf_grid_os); + if (!keep_open) { + cvm::proxy->close_output_stream(output_pmf); + } + if (b_write_gradients) { const std::string output_grad = p_output_prefix + ".grad"; cvm::log("Writing the accelerated MD gradients file \"" + output_grad + "\".\n"); - if (!append) { - cvm::backup_file(output_grad.c_str()); - } - std::ostream *grad_grid_os = cvm::proxy->output_stream(output_grad, mode); + std::ostream &grad_grid_os = cvm::proxy->output_stream(output_grad, "gradient file"); if (!grad_grid_os) { - return cvm::error("Error opening grad file " + output_grad + - " for writing.\n", COLVARS_FILE_ERROR); + return COLVARS_FILE_ERROR; } for (std::vector ix = grad_grid_exp_avg->new_index(); grad_grid_exp_avg->index_ok(ix); grad_grid_exp_avg->incr(ix)) { @@ -221,38 +213,37 @@ int colvarbias_reweightaMD::write_exponential_reweighted_pmf( ix, pmf_grid_exp_avg->gradient_finite_diff(ix, n), n); } } - grad_grid_exp_avg->write_multicol(*grad_grid_os); - cvm::proxy->close_output_stream(output_grad); + grad_grid_exp_avg->write_multicol(grad_grid_os); + if (!keep_open) { + cvm::proxy->close_output_stream(output_grad); + } } + return COLVARS_OK; } int colvarbias_reweightaMD::write_cumulant_expansion_pmf( - const std::string& p_output_prefix, bool append) { + const std::string& p_output_prefix, bool keep_open) { const std::string output_pmf = p_output_prefix + ".pmf"; cvm::log("Writing the accelerated MD PMF file using cumulant expansion: \"" + output_pmf + "\".\n"); - if (!append) cvm::backup_file(output_pmf.c_str()); - const std::ios::openmode mode = (append ? std::ios::app : std::ios::out); - std::ostream *pmf_grid_cumulant_os = cvm::proxy->output_stream(output_pmf, mode); + std::ostream &pmf_grid_cumulant_os = cvm::proxy->output_stream(output_pmf, "PMF file"); if (!pmf_grid_cumulant_os) { - return cvm::error("Error opening PMF file " + output_pmf + - " for writing.\n", COLVARS_FILE_ERROR); + return COLVARS_FILE_ERROR; } compute_cumulant_expansion_factor(grid_dV, grid_dV_square, grid_count, pmf_grid_cumulant); hist_to_pmf(pmf_grid_cumulant, grid_count); - pmf_grid_cumulant->write_multicol(*pmf_grid_cumulant_os); - cvm::proxy->close_output_stream(output_pmf); + pmf_grid_cumulant->write_multicol(pmf_grid_cumulant_os); + if (!keep_open) { + cvm::proxy->close_output_stream(output_pmf); + } + if (b_write_gradients) { const std::string output_grad = p_output_prefix + ".grad"; cvm::log("Writing the accelerated MD gradients file \"" + output_grad + "\".\n"); - if (!append) { - cvm::backup_file(output_grad.c_str()); - } - std::ostream *grad_grid_os = cvm::proxy->output_stream(output_grad, mode); + std::ostream &grad_grid_os = cvm::proxy->output_stream(output_grad, "grad file"); if (!grad_grid_os) { - return cvm::error("Error opening grad file " + output_grad + - " for writing.\n", COLVARS_FILE_ERROR); + return COLVARS_FILE_ERROR; } for (std::vector ix = grad_grid_cumulant->new_index(); grad_grid_cumulant->index_ok(ix); grad_grid_cumulant->incr(ix)) { @@ -261,31 +252,33 @@ int colvarbias_reweightaMD::write_cumulant_expansion_pmf( ix, pmf_grid_cumulant->gradient_finite_diff(ix, n), n); } } - grad_grid_cumulant->write_multicol(*grad_grid_os); + grad_grid_cumulant->write_multicol(grad_grid_os); cvm::proxy->close_output_stream(output_grad); } return COLVARS_OK; } -int colvarbias_reweightaMD::write_count(const std::string& p_output_prefix, bool append) { +int colvarbias_reweightaMD::write_count(const std::string& p_output_prefix, bool keep_open) { const std::string output_name = p_output_prefix + ".count"; cvm::log("Writing the accelerated MD count file \""+output_name+"\".\n"); - if (!append) cvm::backup_file(output_name.c_str()); - const std::ios::openmode mode = (append ? std::ios::app : std::ios::out); - std::ostream *grid_count_os = cvm::proxy->output_stream(output_name, mode); + std::ostream &grid_count_os = cvm::proxy->output_stream(output_name, "count file"); if (!grid_count_os) { - return cvm::error("Error opening count file "+output_name+ - " for writing.\n", COLVARS_FILE_ERROR); + return COLVARS_FILE_ERROR; + } + grid_count->write_multicol(grid_count_os); + if (!keep_open) { + cvm::proxy->close_output_stream(output_name); } - grid_count->write_multicol(*grid_count_os); - cvm::proxy->close_output_stream(output_name); return COLVARS_OK; } void colvarbias_reweightaMD::hist_to_pmf( - colvar_grid_scalar* hist, const colvar_grid_scalar* hist_count) const { + colvar_grid_scalar* hist, + const colvar_grid_scalar* hist_count) const +{ + colvarproxy *proxy = cvm::main()->proxy; if (hist->raw_data_num() == 0) return; - const cvm::real kbt = cvm::boltzmann() * cvm::temperature(); + const cvm::real kbt = proxy->boltzmann() * proxy->target_temperature(); bool first_min_element = true; bool first_max_element = true; cvm::real min_element = 0; @@ -329,12 +322,15 @@ void colvarbias_reweightaMD::hist_to_pmf( } } + void colvarbias_reweightaMD::compute_cumulant_expansion_factor( const colvar_grid_scalar* hist_dV, const colvar_grid_scalar* hist_dV_square, const colvar_grid_scalar* hist_count, - colvar_grid_scalar* cumulant_expansion_factor) const { - const cvm::real beta = 1.0 / (cvm::boltzmann() * cvm::temperature()); + colvar_grid_scalar* cumulant_expansion_factor) const +{ + colvarproxy *proxy = cvm::main()->proxy; + const cvm::real beta = 1.0 / (proxy->boltzmann() * proxy->target_temperature()); size_t i = 0; for (i = 0; i < hist_dV->raw_data_num(); ++i) { const cvm::real count = hist_count->value(i); diff --git a/lib/colvars/colvarbias_histogram_reweight_amd.h b/lib/colvars/colvarbias_histogram_reweight_amd.h index 8d74b5315d..f126738305 100644 --- a/lib/colvars/colvarbias_histogram_reweight_amd.h +++ b/lib/colvars/colvarbias_histogram_reweight_amd.h @@ -51,21 +51,21 @@ public: /// @brief output the PMF by the exponential average estimator /// @param[in] p_output_prefix the prefix of the output file - /// @param[in] append append the output to a .hist file if true + /// @param[in] keep_open Allow writing the history of the PMF virtual int write_exponential_reweighted_pmf( - const std::string& p_output_prefix, bool append = false); + const std::string& p_output_prefix, bool keep_open = false); /// @brief output the PMF by the cumulant expansion estimator /// @param[in] p_output_prefix the prefix of the output file - /// @param[in] append append the output to a .hist file if true + /// @param[in] keep_open Allow writing the history of the expansion virtual int write_cumulant_expansion_pmf( - const std::string& p_output_prefix, bool append = false); + const std::string& p_output_prefix, bool keep_open = false); /// @brief output the biased sampling /// @param[in] p_output_prefix the prefix of the output file - /// @param[in] append append the output to a .hist file if true + /// @param[in] keep_open Allow writing the history of the samples virtual int write_count( - const std::string& p_output_prefix, bool append = false); + const std::string& p_output_prefix, bool keep_open = false); protected: /// Current accelMD factor is the from previous frame std::vector previous_bin; diff --git a/lib/colvars/colvarbias_meta.cpp b/lib/colvars/colvarbias_meta.cpp index 0b31479276..90497bf150 100644 --- a/lib/colvars/colvarbias_meta.cpp +++ b/lib/colvars/colvarbias_meta.cpp @@ -36,7 +36,6 @@ colvarbias_meta::colvarbias_meta(char const *key) : colvarbias(key), colvarbias_ti(key) { new_hills_begin = hills.end(); - hills_traj_os = NULL; hill_weight = 0.0; hill_width = 0.0; @@ -268,28 +267,31 @@ int colvarbias_meta::init_well_tempered_params(std::string const &conf) int colvarbias_meta::init_ebmeta_params(std::string const &conf) { + int error_code = COLVARS_OK; // for ebmeta target_dist = NULL; get_keyval(conf, "ebMeta", ebmeta, false); if(ebmeta){ cvm::main()->cite_feature("Ensemble-biased metadynamics (ebMetaD)"); if (use_grids && expand_grids) { - cvm::error("Error: expandBoundaries is not supported with " - "ebMeta please allocate wide enough boundaries for " - "each colvar ahead of time and set targetdistfile " - "accordingly.\n", COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: expandBoundaries is not supported with " + "ebMeta; please allocate wide enough boundaries " + "for each colvar ahead of time and set " + "targetDistFile accordingly.\n", + COLVARS_INPUT_ERROR); } target_dist = new colvar_grid_scalar(); - target_dist->init_from_colvars(colvars); + error_code |= target_dist->init_from_colvars(colvars); std::string target_dist_file; get_keyval(conf, "targetDistFile", target_dist_file); - std::ifstream targetdiststream(target_dist_file.c_str()); - target_dist->read_multicol(targetdiststream); + error_code |= target_dist->read_multicol(target_dist_file, + "ebMeta target histogram"); cvm::real min_val = target_dist->minimum_value(); cvm::real max_val = target_dist->maximum_value(); - if(min_val<0){ - cvm::error("Error: Target distribution of EBMetaD " - "has negative values!.\n", COLVARS_INPUT_ERROR); + if (min_val < 0.0) { + error_code |= cvm::error("Error: Target distribution of EBMetaD " + "has negative values!.\n", + COLVARS_INPUT_ERROR); } cvm::real target_dist_min_val; get_keyval(conf, "targetDistMinVal", target_dist_min_val, 1/1000000.0); @@ -301,17 +303,19 @@ int colvarbias_meta::init_ebmeta_params(std::string const &conf) cvm::log("NOTE: targetDistMinVal is set to zero, the minimum value of the target \n"); cvm::log(" distribution will be set as the minimum positive value.\n"); cvm::real min_pos_val = target_dist->minimum_pos_value(); - if(min_pos_val<=0){ - cvm::error("Error: Target distribution of EBMetaD has negative " - "or zero minimum positive value!.\n", COLVARS_INPUT_ERROR); + if (min_pos_val <= 0.0){ + error_code |= cvm::error("Error: Target distribution of EBMetaD has " + "negative or zero minimum positive value.\n", + COLVARS_INPUT_ERROR); } - if(min_val==0){ + if (min_val == 0.0){ cvm::log("WARNING: Target distribution has zero values.\n"); cvm::log("Zeros will be converted to the minimum positive value.\n"); target_dist->remove_small_values(min_pos_val); } } else { - cvm::error("Error: targetDistMinVal must be a value between 0 and 1!.\n", COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: targetDistMinVal must be a value " + "between 0 and 1.\n", COLVARS_INPUT_ERROR); } } // normalize target distribution and multiply by effective volume = exp(differential entropy) @@ -321,23 +325,18 @@ int colvarbias_meta::init_ebmeta_params(std::string const &conf) get_keyval(conf, "ebMetaEquilSteps", ebmeta_equil_steps, ebmeta_equil_steps); } - return COLVARS_OK; + return error_code; } colvarbias_meta::~colvarbias_meta() { colvarbias_meta::clear_state_data(); - colvarproxy *proxy = cvm::proxy; + colvarproxy *proxy = cvm::main()->proxy; - if (proxy->get_output_stream(replica_hills_file)) { - proxy->close_output_stream(replica_hills_file); - } + proxy->close_output_stream(replica_hills_file); - if (hills_traj_os) { - proxy->close_output_stream(hills_traj_file_name()); - hills_traj_os = NULL; - } + proxy->close_output_stream(hills_traj_file_name()); if (target_dist) { delete target_dist; @@ -392,9 +391,12 @@ colvarbias_meta::add_hill(colvarbias_meta::hill const &h) } // output to trajectory (if specified) - if (hills_traj_os) { - *hills_traj_os << (hills.back()).output_traj(); - cvm::proxy->flush_output_stream(hills_traj_os); + if (b_hills_traj) { + // Open trajectory file or access the one already open + std::ostream &hills_traj_os = + cvm::proxy->output_stream(hills_traj_file_name()); + hills_traj_os << (hills.back()).output_traj(); + cvm::proxy->flush_output_stream(hills_traj_file_name()); } has_data = true; @@ -424,12 +426,14 @@ colvarbias_meta::delete_hill(hill_iter &h) } } - if (hills_traj_os) { + if (b_hills_traj) { // output to the trajectory - *hills_traj_os << "# DELETED this hill: " - << (hills.back()).output_traj() - << "\n"; - cvm::proxy->flush_output_stream(hills_traj_os); + std::ostream &hills_traj_os = + cvm::proxy->output_stream(hills_traj_file_name()); + hills_traj_os << "# DELETED this hill: " + << (hills.back()).output_traj() + << "\n"; + cvm::proxy->flush_output_stream(hills_traj_file_name()); } return hills.erase(h); @@ -573,6 +577,7 @@ int colvarbias_meta::update_grid_params() int colvarbias_meta::update_bias() { + colvarproxy *proxy = cvm::main()->proxy; // add a new hill if the required time interval has passed if (((cvm::step_absolute() % new_hill_freq) == 0) && can_accumulate_data() && is_enabled(f_cvb_history_dependent)) { @@ -603,7 +608,7 @@ int colvarbias_meta::update_bias() } else { calc_hills(new_hills_begin, hills.end(), hills_energy_sum_here, NULL); } - hills_scale *= cvm::exp(-1.0*hills_energy_sum_here/(bias_temperature*cvm::boltzmann())); + hills_scale *= cvm::exp(-1.0*hills_energy_sum_here/(bias_temperature*proxy->boltzmann())); } switch (comm) { @@ -618,10 +623,10 @@ int colvarbias_meta::update_bias() case multiple_replicas: add_hill(hill(cvm::step_absolute(), hill_weight*hills_scale, colvar_values, colvar_sigmas, replica_id)); - std::ostream *replica_hills_os = - cvm::proxy->get_output_stream(replica_hills_file); + std::ostream &replica_hills_os = + cvm::proxy->output_stream(replica_hills_file); if (replica_hills_os) { - *replica_hills_os << hills.back(); + replica_hills_os << hills.back(); } else { return cvm::error("Error: in metadynamics bias \""+this->name+"\""+ ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ @@ -979,25 +984,24 @@ void colvarbias_meta::recount_hills_off_grid(colvarbias_meta::hill_iter h_first int colvarbias_meta::replica_share() { + int error_code = COLVARS_OK; colvarproxy *proxy = cvm::proxy; // sync with the other replicas (if needed) if (comm == multiple_replicas) { // reread the replicas registry - update_replicas_registry(); + error_code |= update_replicas_registry(); // empty the output buffer - std::ostream *replica_hills_os = - proxy->get_output_stream(replica_hills_file); - if (replica_hills_os) { - proxy->flush_output_stream(replica_hills_os); - } - read_replica_files(); + error_code |= proxy->flush_output_stream(replica_hills_file); + error_code |= read_replica_files(); } - return COLVARS_OK; + return error_code; } -void colvarbias_meta::update_replicas_registry() +int colvarbias_meta::update_replicas_registry() { + int error_code = COLVARS_OK; + if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ ": updating the list of replicas, currently containing "+ @@ -1012,8 +1016,9 @@ void colvarbias_meta::update_replicas_registry() while (colvarparse::getline_nocomments(reg_file, line)) replicas_registry.append(line+"\n"); } else { - cvm::error("Error: failed to open file \""+replicas_registry_file+ - "\" for reading.\n", COLVARS_FILE_ERROR); + error_code |= cvm::error("Error: failed to open file \""+ + replicas_registry_file+"\" for reading.\n", + COLVARS_FILE_ERROR); } } @@ -1081,8 +1086,8 @@ void colvarbias_meta::update_replicas_registry() } } } else { - cvm::error("Error: cannot read the replicas registry file \""+ - replicas_registry+"\".\n", COLVARS_FILE_ERROR); + error_code |= cvm::error("Error: cannot read the replicas registry file \""+ + replicas_registry+"\".\n", COLVARS_FILE_ERROR); } // now (re)read the list file of each replica @@ -1122,10 +1127,12 @@ void colvarbias_meta::update_replicas_registry() if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\": the list of replicas contains "+ cvm::to_str(replicas.size())+" elements.\n"); + + return error_code; } -void colvarbias_meta::read_replica_files() +int colvarbias_meta::read_replica_files() { // Note: we start from the 2nd replica. for (size_t ir = 1; ir < replicas.size(); ir++) { @@ -1250,6 +1257,7 @@ void colvarbias_meta::read_replica_files() " steps. Ensure that it is still running.\n"); } } + return COLVARS_OK; } @@ -1413,6 +1421,10 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) size_t const old_hills_size = hills.size(); hill_iter old_hills_end = hills.end(); hill_iter old_hills_off_grid_end = hills_off_grid.end(); + if (cvm::debug()) { + cvm::log("Before reading hills from the state file, there are "+ + cvm::to_str(hills.size())+" hills in memory.\n"); + } // Read any hills following the grid data (if any) while (read_hill(is)) { @@ -1431,6 +1443,10 @@ std::istream & colvarbias_meta::read_state_data(std::istream& is) if (existing_hills) { hills.erase(hills.begin(), old_hills_end); hills_off_grid.erase(hills_off_grid.begin(), old_hills_off_grid_end); + if (cvm::debug()) { + cvm::log("After pruning the old hills, there are now "+ + cvm::to_str(hills.size())+" hills in memory.\n"); + } } if (rebin_grids) { @@ -1614,6 +1630,8 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) int colvarbias_meta::setup_output() { + int error_code = COLVARS_OK; + output_prefix = cvm::output_prefix(); if (cvm::main()->num_biases_feature(colvardeps::f_cvb_calc_pmf) > 1) { // if this is not the only free energy integrator, append @@ -1626,8 +1644,11 @@ int colvarbias_meta::setup_output() // TODO: one may want to specify the path manually for intricated filesystems? char *pwd = new char[3001]; - if (GETCWD(pwd, 3000) == NULL) - cvm::error("Error: cannot get the path of the current working directory.\n"); + if (GETCWD(pwd, 3000) == NULL) { + return cvm::error("Error: cannot get the path of the current working directory.\n", + COLVARS_BUG_ERROR); + } + replica_list_file = (std::string(pwd)+std::string(PATHSEP)+ this->name+"."+replica_id+".files.txt"); @@ -1680,38 +1701,35 @@ int colvarbias_meta::setup_output() // if we're running without grids, use a growing list of "hills" files // otherwise, just one state file and one "hills" file as buffer - std::ostream *list_os = - cvm::proxy->output_stream(replica_list_file, - (use_grids ? std::ios_base::trunc : - std::ios_base::app)); - if (!list_os) { - return cvm::get_error(); + std::ostream &list_os = cvm::proxy->output_stream(replica_list_file); + if (list_os) { + list_os << "stateFile " << replica_state_file << "\n"; + list_os << "hillsFile " << replica_hills_file << "\n"; + cvm::proxy->close_output_stream(replica_list_file); + } else { + error_code |= COLVARS_FILE_ERROR; } - *list_os << "stateFile " << replica_state_file << "\n"; - *list_os << "hillsFile " << replica_hills_file << "\n"; - cvm::proxy->close_output_stream(replica_list_file); // finally, add a new record for this replica to the registry if (! registered_replica) { - std::ostream *reg_os = - cvm::proxy->output_stream(replicas_registry_file, - std::ios::app); + std::ofstream reg_os(replicas_registry_file.c_str(), std::ios::app); if (!reg_os) { return cvm::get_error(); } - *reg_os << replica_id << " " << replica_list_file << "\n"; + reg_os << replica_id << " " << replica_list_file << "\n"; cvm::proxy->close_output_stream(replicas_registry_file); } } if (b_hills_traj) { + std::ostream &hills_traj_os = + cvm::proxy->output_stream(hills_traj_file_name()); if (!hills_traj_os) { - hills_traj_os = cvm::proxy->output_stream(hills_traj_file_name()); - if (!hills_traj_os) return cvm::get_error(); + error_code |= COLVARS_FILE_ERROR; } } - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + return error_code; } @@ -1804,6 +1822,7 @@ int colvarbias_meta::write_output_files() void colvarbias_meta::write_pmf() { + colvarproxy *proxy = cvm::main()->proxy; // allocate a new grid to store the pmf colvar_grid_scalar *pmf = new colvar_grid_scalar(*hills_energy); pmf->setup(); @@ -1820,7 +1839,7 @@ void colvarbias_meta::write_pmf() cvm::real target_val=target_dist->value(i); if (target_val>0) { pmf_val=pmf->value(i); - pmf_val=pmf_val+cvm::temperature() * cvm::boltzmann() * cvm::logn(target_val); + pmf_val=pmf_val + proxy->target_temperature() * proxy->boltzmann() * cvm::logn(target_val); } pmf->set_value(i,pmf_val); } @@ -1830,7 +1849,7 @@ void colvarbias_meta::write_pmf() pmf->add_constant(-1.0 * max); pmf->multiply_constant(-1.0); if (well_tempered) { - cvm::real const well_temper_scale = (bias_temperature + cvm::temperature()) / bias_temperature; + cvm::real const well_temper_scale = (bias_temperature + proxy->target_temperature()) / bias_temperature; pmf->multiply_constant(well_temper_scale); } { @@ -1839,10 +1858,7 @@ void colvarbias_meta::write_pmf() (dump_fes_save ? "."+cvm::to_str(cvm::step_absolute()) : "") + ".pmf"); - cvm::proxy->backup_file(fes_file_name); - std::ostream *fes_os = cvm::proxy->output_stream(fes_file_name); - pmf->write_multicol(*fes_os); - cvm::proxy->close_output_stream(fes_file_name); + pmf->write_multicol(fes_file_name, "PMF file"); } } @@ -1861,7 +1877,7 @@ void colvarbias_meta::write_pmf() cvm::real target_val=target_dist->value(i); if (target_val>0) { pmf_val=pmf->value(i); - pmf_val=pmf_val+cvm::temperature() * cvm::boltzmann() * cvm::logn(target_val); + pmf_val=pmf_val + proxy->target_temperature() * proxy->boltzmann() * cvm::logn(target_val); } pmf->set_value(i,pmf_val); } @@ -1871,17 +1887,14 @@ void colvarbias_meta::write_pmf() pmf->add_constant(-1.0 * max); pmf->multiply_constant(-1.0); if (well_tempered) { - cvm::real const well_temper_scale = (bias_temperature + cvm::temperature()) / bias_temperature; + cvm::real const well_temper_scale = (bias_temperature + proxy->target_temperature()) / bias_temperature; pmf->multiply_constant(well_temper_scale); } std::string const fes_file_name(this->output_prefix + (dump_fes_save ? "."+cvm::to_str(cvm::step_absolute()) : "") + ".pmf"); - cvm::proxy->backup_file(fes_file_name); - std::ostream *fes_os = cvm::proxy->output_stream(fes_file_name); - pmf->write_multicol(*fes_os); - cvm::proxy->close_output_stream(fes_file_name); + pmf->write_multicol(fes_file_name, "partial PMF file"); } delete pmf; @@ -1902,9 +1915,9 @@ int colvarbias_meta::write_replica_state_file() // Write to temporary state file std::string const tmp_state_file(replica_state_file+".tmp"); error_code |= proxy->remove_file(tmp_state_file); - std::ostream *rep_state_os = cvm::proxy->output_stream(tmp_state_file); + std::ostream &rep_state_os = cvm::proxy->output_stream(tmp_state_file); if (rep_state_os) { - if (!write_state(*rep_state_os)) { + if (!write_state(rep_state_os)) { error_code |= cvm::error("Error: in writing to temporary file \""+ tmp_state_file+"\".\n", COLVARS_FILE_ERROR); } @@ -1921,13 +1934,13 @@ int colvarbias_meta::reopen_replica_buffer_file() { int error_code = COLVARS_OK; colvarproxy *proxy = cvm::proxy; - if (proxy->get_output_stream(replica_hills_file) != NULL) { + if (proxy->output_stream(replica_hills_file)) { error_code |= proxy->close_output_stream(replica_hills_file); } error_code |= proxy->remove_file(replica_hills_file); - std::ostream *replica_hills_os = proxy->output_stream(replica_hills_file); + std::ostream &replica_hills_os = proxy->output_stream(replica_hills_file); if (replica_hills_os) { - replica_hills_os->setf(std::ios::scientific, std::ios::floatfield); + replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); } else { error_code |= COLVARS_FILE_ERROR; } diff --git a/lib/colvars/colvarbias_meta.h b/lib/colvars/colvarbias_meta.h index 565534f22b..bac2ff74d4 100644 --- a/lib/colvars/colvarbias_meta.h +++ b/lib/colvars/colvarbias_meta.h @@ -12,8 +12,7 @@ #include #include -#include -#include +#include #include "colvarbias.h" #include "colvargrid.h" @@ -84,9 +83,7 @@ protected: size_t new_hill_freq; /// Write the hill logfile - bool b_hills_traj; - /// Logfile of hill management (creation and deletion) - std::ostream *hills_traj_os; + bool b_hills_traj; /// Name of the hill logfile std::string const hills_traj_file_name() const; @@ -214,10 +211,10 @@ protected: std::string replica_file_name; /// \brief Read the existing replicas on registry - virtual void update_replicas_registry(); + virtual int update_replicas_registry(); /// \brief Read new data from replicas' files - virtual void read_replica_files(); + virtual int read_replica_files(); /// Write full state information to be read by other replicas virtual int write_replica_state_file(); diff --git a/lib/colvars/colvarbias_restraint.cpp b/lib/colvars/colvarbias_restraint.cpp index 0b374db9a8..a7963c4f8f 100644 --- a/lib/colvars/colvarbias_restraint.cpp +++ b/lib/colvars/colvarbias_restraint.cpp @@ -7,6 +7,10 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include +#include +#include + #include "colvarmodule.h" #include "colvarproxy.h" #include "colvarvalue.h" @@ -196,6 +200,8 @@ int colvarbias_restraint_moving::init(std::string const &conf) if (b_chg_centers || b_chg_force_k) { + first_step = cvm::step_absolute(); + get_keyval(conf, "targetNumSteps", target_nsteps, target_nsteps); if (!target_nsteps) { cvm::error("Error: targetNumSteps must be non-zero.\n", COLVARS_INPUT_ERROR); @@ -335,13 +341,17 @@ int colvarbias_restraint_centers_moving::update_centers(cvm::real lambda) int colvarbias_restraint_centers_moving::update() { + if (!cvm::main()->proxy->simulation_running()) { + return COLVARS_OK; + } + if (b_chg_centers) { if (target_nstages) { // Staged update if (stage <= target_nstages) { if ((cvm::step_relative() > 0) && - ((cvm::step_absolute() % target_nsteps) == 1)) { + (((cvm::step_absolute() - first_step) % target_nsteps) == 1)) { cvm::real const lambda = cvm::real(stage)/cvm::real(target_nstages); update_centers(lambda); @@ -358,9 +368,9 @@ int colvarbias_restraint_centers_moving::update() } } else { // Continuous update - if (cvm::step_absolute() <= target_nsteps) { + if (cvm::step_absolute() - first_step <= target_nsteps) { cvm::real const lambda = - cvm::real(cvm::step_absolute())/cvm::real(target_nsteps); + cvm::real(cvm::step_absolute() - first_step)/cvm::real(target_nsteps); update_centers(lambda); } else { for (size_t i = 0; i < num_variables(); i++) { @@ -389,10 +399,13 @@ int colvarbias_restraint_centers_moving::update() int colvarbias_restraint_centers_moving::update_acc_work() { + if (!cvm::main()->proxy->simulation_running()) { + return COLVARS_OK; + } if (b_chg_centers) { if (is_enabled(f_cvb_output_acc_work)) { if ((cvm::step_relative() > 0) && - (cvm::step_absolute() <= target_nsteps)) { + (cvm::step_absolute() - first_step <= target_nsteps)) { for (size_t i = 0; i < num_variables(); i++) { // project forces on the calculated increments at this step acc_work += colvar_forces[i] * centers_incr[i]; @@ -496,10 +509,11 @@ colvarbias_restraint_k_moving::colvarbias_restraint_k_moving(char const *key) colvarbias_restraint_moving(key) { b_chg_force_k = false; + b_decoupling = false; target_equil_steps = 0; target_force_k = -1.0; starting_force_k = -1.0; - force_k_exp = 1.0; + lambda_exp = 1.0; restraint_FE = 0.0; force_k_incr = 0.0; } @@ -509,18 +523,29 @@ int colvarbias_restraint_k_moving::init(std::string const &conf) { colvarbias_restraint_k::init(conf); + get_keyval(conf, "decoupling", b_decoupling, b_decoupling); + if (b_decoupling) { + starting_force_k = 0.0; + target_force_k = force_k; + b_chg_force_k = true; + } + if (get_keyval(conf, "targetForceConstant", target_force_k, target_force_k)) { + if (b_decoupling) { + cvm::error("Error: targetForceConstant may not be specified together with decoupling.\n", COLVARS_INPUT_ERROR); + return COLVARS_ERROR; + } starting_force_k = force_k; b_chg_force_k = true; } - if (b_chg_force_k) { - // parse moving restraint options - colvarbias_restraint_moving::init(conf); - } else { + if (!b_chg_force_k) { return COLVARS_OK; } + // parse moving restraint options + colvarbias_restraint_moving::init(conf); + get_keyval(conf, "targetEquilSteps", target_equil_steps, target_equil_steps); if (get_keyval(conf, "lambdaSchedule", lambda_schedule, lambda_schedule) && @@ -534,12 +559,13 @@ int colvarbias_restraint_k_moving::init(std::string const &conf) target_nstages = lambda_schedule.size() - 1; } - if (get_keyval(conf, "targetForceExponent", force_k_exp, force_k_exp)) { - if (! b_chg_force_k) - cvm::log("Warning: not changing force constant: targetForceExponent will be ignored\n"); + if ((get_keyval(conf, "targetForceExponent", lambda_exp, lambda_exp, parse_deprecated) + || get_keyval(conf, "lambdaExponent", lambda_exp, lambda_exp)) + && !b_chg_force_k) { + cvm::error("Error: cannot set lambdaExponent unless a changing force constant is active.\n", COLVARS_INPUT_ERROR); } - if (force_k_exp < 1.0) { - cvm::log("Warning: for all practical purposes, targetForceExponent should be 1.0 or greater.\n"); + if (lambda_exp < 1.0) { + cvm::log("Warning: for all practical purposes, lambdaExponent should be 1.0 or greater.\n"); } return COLVARS_OK; @@ -548,24 +574,27 @@ int colvarbias_restraint_k_moving::init(std::string const &conf) int colvarbias_restraint_k_moving::update() { + if (!cvm::main()->proxy->simulation_running()) { + return COLVARS_OK; + } if (b_chg_force_k) { cvm::real lambda; if (target_nstages) { - if (cvm::step_absolute() == 0) { + if (cvm::step_absolute() == first_step) { // Setup first stage of staged variable force constant calculation if (lambda_schedule.size()) { lambda = lambda_schedule[0]; } else { - lambda = 0.0; + lambda = (b_decoupling ? 1.0 : 0.0); } force_k = starting_force_k + (target_force_k - starting_force_k) - * cvm::pow(lambda, force_k_exp); + * cvm::pow(lambda, lambda_exp); cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda) - + ", k = " + cvm::to_str(force_k)); + + ", k = " + cvm::to_str(force_k)+"\n"); } // TI calculation: estimate free energy derivative @@ -574,9 +603,10 @@ int colvarbias_restraint_k_moving::update() lambda = lambda_schedule[stage]; } else { lambda = cvm::real(stage) / cvm::real(target_nstages); + if (b_decoupling) lambda = 1.0 - lambda; } - if (target_equil_steps == 0 || cvm::step_absolute() % target_nsteps >= target_equil_steps) { + if (target_equil_steps == 0 || (cvm::step_absolute() - first_step) % target_nsteps >= target_equil_steps) { // Start averaging after equilibration period, if requested // Derivative of energy with respect to force_k @@ -584,17 +614,17 @@ int colvarbias_restraint_k_moving::update() for (size_t i = 0; i < num_variables(); i++) { dU_dk += d_restraint_potential_dk(i); } - restraint_FE += force_k_exp * cvm::pow(lambda, force_k_exp - 1.0) + restraint_FE += lambda_exp * cvm::pow(lambda, lambda_exp - 1.0) * (target_force_k - starting_force_k) * dU_dk; } // Finish current stage... - if (cvm::step_absolute() % target_nsteps == 0 && - cvm::step_absolute() > 0) { + if ((cvm::step_absolute() - first_step) % target_nsteps == 0 && + cvm::step_absolute() > first_step) { cvm::log("Restraint " + this->name + " Lambda= " + cvm::to_str(lambda) + " dA/dLambda= " - + cvm::to_str(restraint_FE / cvm::real(target_nsteps - target_equil_steps))); + + cvm::to_str(restraint_FE / cvm::real(target_nsteps - target_equil_steps))+"\n"); // ...and move on to the next one if (stage < target_nstages) { @@ -605,23 +635,24 @@ int colvarbias_restraint_k_moving::update() lambda = lambda_schedule[stage]; } else { lambda = cvm::real(stage) / cvm::real(target_nstages); + if (b_decoupling) lambda = 1.0 - lambda; } force_k = starting_force_k + (target_force_k - starting_force_k) - * cvm::pow(lambda, force_k_exp); + * cvm::pow(lambda, lambda_exp); cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda) - + ", k = " + cvm::to_str(force_k)); + + ", k = " + cvm::to_str(force_k)+"\n"); } } - } else if (cvm::step_absolute() <= target_nsteps) { - + } else if (cvm::step_absolute() - first_step <= target_nsteps) { // update force constant (slow growth) - lambda = cvm::real(cvm::step_absolute()) / cvm::real(target_nsteps); + lambda = cvm::real(cvm::step_absolute() - first_step) / cvm::real(target_nsteps); + if (b_decoupling) lambda = 1.0 - lambda; cvm::real const force_k_old = force_k; force_k = starting_force_k + (target_force_k - starting_force_k) - * cvm::pow(lambda, force_k_exp); + * cvm::pow(lambda, lambda_exp); force_k_incr = force_k - force_k_old; } } @@ -632,6 +663,9 @@ int colvarbias_restraint_k_moving::update() int colvarbias_restraint_k_moving::update_acc_work() { + if (!cvm::main()->proxy->simulation_running()) { + return COLVARS_OK; + } if (b_chg_force_k) { if (is_enabled(f_cvb_output_acc_work)) { if (cvm::step_relative() > 0) { @@ -980,7 +1014,7 @@ int colvarbias_restraint_harmonic_walls::init(std::string const &conf) } // Initialize starting value of the force constant (in case it's changing) - starting_force_k = force_k; + starting_force_k = (b_decoupling ? 0.0 : force_k); if (lower_walls.size() > 0) { for (i = 0; i < num_variables(); i++) { @@ -1302,6 +1336,8 @@ colvarbias_restraint_histogram::colvarbias_restraint_histogram(char const *key) int colvarbias_restraint_histogram::init(std::string const &conf) { + int error_code = COLVARS_OK; + colvarbias::init(conf); enable(f_cvb_apply_force); @@ -1312,18 +1348,19 @@ int colvarbias_restraint_histogram::init(std::string const &conf) get_keyval(conf, "width", width, width); if (width <= 0.0) { - cvm::error("Error: \"width\" must be positive.\n", COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: \"width\" must be positive.\n", + COLVARS_INPUT_ERROR); } get_keyval(conf, "gaussianWidth", gaussian_width, 2.0 * width, colvarparse::parse_silent); get_keyval(conf, "gaussianSigma", gaussian_width, 2.0 * width); if (lower_boundary >= upper_boundary) { - cvm::error("Error: the upper boundary, "+ - cvm::to_str(upper_boundary)+ - ", is not higher than the lower boundary, "+ - cvm::to_str(lower_boundary)+".\n", - COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: the upper boundary, "+ + cvm::to_str(upper_boundary)+ + ", is not higher than the lower boundary, "+ + cvm::to_str(lower_boundary)+".\n", + COLVARS_INPUT_ERROR); } cvm::real const nbins = (upper_boundary - lower_boundary) / width; @@ -1347,22 +1384,30 @@ int colvarbias_restraint_histogram::init(std::string const &conf) get_keyval(conf, "refHistogramFile", ref_p_file, std::string("")); if (ref_p_file.size()) { if (inline_ref_p) { - cvm::error("Error: cannot specify both refHistogram and refHistogramFile at the same time.\n", - COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: cannot specify both refHistogram and refHistogramFile at the same time.\n", + COLVARS_INPUT_ERROR); } else { - std::ifstream is(ref_p_file.c_str()); + + std::istream &is = + cvm::main()->proxy->input_stream(ref_p_file, + "reference histogram file"); + std::string data_s = ""; std::string line; while (getline_nocomments(is, line)) { data_s.append(line+"\n"); } if (data_s.size() == 0) { - cvm::error("Error: file \""+ref_p_file+"\" empty or unreadable.\n", COLVARS_FILE_ERROR); + error_code |= cvm::error("Error: file \""+ref_p_file+ + "\" empty or unreadable.\n", + COLVARS_FILE_ERROR); } - is.close(); + error_code |= cvm::main()->proxy->close_input_stream(ref_p_file); + cvm::vector1d data; if (data.from_simple_string(data_s) != 0) { - cvm::error("Error: could not read histogram from file \""+ref_p_file+"\".\n"); + error_code |= cvm::error("Error: could not read histogram from file \""+ + ref_p_file+"\".\n"); } if (data.size() == 2*ref_p.size()) { // file contains both x and p(x) @@ -1373,11 +1418,13 @@ int colvarbias_restraint_histogram::init(std::string const &conf) } else if (data.size() == ref_p.size()) { ref_p = data; } else { - cvm::error("Error: file \""+ref_p_file+"\" contains a histogram of different length.\n", - COLVARS_INPUT_ERROR); + error_code |= cvm::error("Error: file \""+ref_p_file+ + "\" contains a histogram of different length.\n", + COLVARS_INPUT_ERROR); } } } + cvm::real const ref_integral = ref_p.sum() * width; if (cvm::fabs(ref_integral - 1.0) > 1.0e-03) { cvm::log("Reference distribution not normalized, normalizing to unity.\n"); @@ -1387,7 +1434,7 @@ int colvarbias_restraint_histogram::init(std::string const &conf) get_keyval(conf, "writeHistogram", b_write_histogram, false); get_keyval(conf, "forceConstant", force_k, 1.0); - return COLVARS_OK; + return error_code; } @@ -1492,27 +1539,29 @@ int colvarbias_restraint_histogram::update() int colvarbias_restraint_histogram::write_output_files() { if (b_write_histogram) { + colvarproxy *proxy = cvm::main()->proxy; std::string file_name(cvm::output_prefix()+"."+this->name+".hist.dat"); - std::ostream *os = cvm::proxy->output_stream(file_name); - *os << "# " << cvm::wrap_string(variables(0)->name, cvm::cv_width) - << " " << "p(" << cvm::wrap_string(variables(0)->name, cvm::cv_width-3) - << ")\n"; + std::ostream &os = proxy->output_stream(file_name, + "histogram output file"); + os << "# " << cvm::wrap_string(variables(0)->name, cvm::cv_width) + << " " << "p(" << cvm::wrap_string(variables(0)->name, cvm::cv_width-3) + << ")\n"; - os->setf(std::ios::fixed, std::ios::floatfield); + os.setf(std::ios::fixed, std::ios::floatfield); size_t igrid; for (igrid = 0; igrid < p.size(); igrid++) { cvm::real const x_grid = (lower_boundary + (igrid+1)*width); - *os << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) - << x_grid - << " " - << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width) - << p[igrid] << "\n"; + os << " " + << std::setprecision(cvm::cv_prec) + << std::setw(cvm::cv_width) + << x_grid + << " " + << std::setprecision(cvm::cv_prec) + << std::setw(cvm::cv_width) + << p[igrid] << "\n"; } - cvm::proxy->close_output_stream(file_name); + proxy->close_output_stream(file_name); } return COLVARS_OK; } diff --git a/lib/colvars/colvarbias_restraint.h b/lib/colvars/colvarbias_restraint.h index b2c9055dfe..45a96d14f8 100644 --- a/lib/colvars/colvarbias_restraint.h +++ b/lib/colvars/colvarbias_restraint.h @@ -123,6 +123,9 @@ protected: /// \brief Changing force constant? bool b_chg_force_k; + /// \brief Perform decoupling of the restraint? + bool b_decoupling; + /// \brief Number of stages over which to perform the change /// If zero, perform a continuous change int target_nstages; @@ -137,6 +140,9 @@ protected: /// or restraint centers cvm::step_number target_nsteps; + /// \brief Timestep at which the restraint starts moving + cvm::step_number first_step; + /// \brief Accumulated work (computed when outputAccumulatedWork == true) cvm::real acc_work; }; @@ -207,7 +213,7 @@ protected: cvm::real starting_force_k; /// \brief Exponent for varying the force constant - cvm::real force_k_exp; + cvm::real lambda_exp; /// \brief Intermediate quantity to compute the restraint free energy /// (in TI, would be the accumulating FE derivative) diff --git a/lib/colvars/colvarcomp.h b/lib/colvars/colvarcomp.h index 9c93de4b49..87d3e27a8f 100644 --- a/lib/colvars/colvarcomp.h +++ b/lib/colvars/colvarcomp.h @@ -616,7 +616,7 @@ public: dipole_magnitude (std::string const &conf); dipole_magnitude (cvm::atom const &a1); dipole_magnitude(); - virtual inline ~dipole_magnitude() {} + virtual ~dipole_magnitude() {} virtual void calc_value(); virtual void calc_gradients(); //virtual void calc_force_invgrads(); diff --git a/lib/colvars/colvarcomp_combination.cpp b/lib/colvars/colvarcomp_combination.cpp index 8aea869983..64745b6472 100644 --- a/lib/colvars/colvarcomp_combination.cpp +++ b/lib/colvars/colvarcomp_combination.cpp @@ -141,13 +141,15 @@ void colvar::linearCombination::apply_force(colvarvalue const &force) { colvar::customColvar::customColvar(std::string const &conf): linearCombination(conf) { use_custom_function = false; // code swipe from colvar::init_custom_function -#ifdef LEPTON std::string expr_in, expr; + size_t pos = 0; // current position in config string +#ifdef LEPTON std::vector pexprs; Lepton::ParsedExpression pexpr; double *ref; - size_t pos = 0; // current position in config string +#endif if (key_lookup(conf, "customFunction", &expr_in, &pos)) { +#ifdef LEPTON use_custom_function = true; cvm::log("This colvar uses a custom function.\n"); do { @@ -208,11 +210,15 @@ colvar::customColvar::customColvar(std::string const &conf): linearCombination(c } else { x.type(colvarvalue::type_scalar); } - } else { - cvm::log(std::string{"Warning: no customFunction specified.\n"}); - cvm::log(std::string{"Warning: use linear combination instead.\n"}); - } +#else + cvm::error("customFunction requires the Lepton library, but it is not enabled during compilation.\n" + "Please refer to the Compilation Notes section of the Colvars manual for more information.\n", + COLVARS_INPUT_ERROR); #endif + } else { + cvm::log("Warning: no customFunction specified.\n"); + cvm::log("Warning: use linear combination instead.\n"); + } } colvar::customColvar::~customColvar() { @@ -227,96 +233,111 @@ colvar::customColvar::~customColvar() { } void colvar::customColvar::calc_value() { -#ifdef LEPTON - for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { - cv[i_cv]->calc_value(); - } - x.reset(); - size_t l = 0; - for (size_t i = 0; i < x.size(); ++i) { - for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { - const colvarvalue& current_cv_value = cv[i_cv]->value(); - for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { - if (current_cv_value.type() == colvarvalue::type_scalar) { - *(value_eval_var_refs[l++]) = cv[i_cv]->sup_coeff * (cvm::pow(current_cv_value.real_value, cv[i_cv]->sup_np)); - } else { - *(value_eval_var_refs[l++]) = cv[i_cv]->sup_coeff * current_cv_value[j_elem]; - } - } - } - x[i] = value_evaluators[i]->evaluate(); - } -#endif if (!use_custom_function) { colvar::linearCombination::calc_value(); + } else { +#ifdef LEPTON + for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { + cv[i_cv]->calc_value(); + } + x.reset(); + size_t l = 0; + for (size_t i = 0; i < x.size(); ++i) { + for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { + const colvarvalue& current_cv_value = cv[i_cv]->value(); + for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { + if (current_cv_value.type() == colvarvalue::type_scalar) { + *(value_eval_var_refs[l++]) = cv[i_cv]->sup_coeff * (cvm::pow(current_cv_value.real_value, cv[i_cv]->sup_np)); + } else { + *(value_eval_var_refs[l++]) = cv[i_cv]->sup_coeff * current_cv_value[j_elem]; + } + } + } + x[i] = value_evaluators[i]->evaluate(); + } +#else + cvm::error("customFunction requires the Lepton library, but it is not enabled during compilation.\n" + "Please refer to the Compilation Notes section of the Colvars manual for more information.\n", + COLVARS_INPUT_ERROR); +#endif } } void colvar::customColvar::calc_gradients() { + if (!use_custom_function) { + colvar::linearCombination::calc_gradients(); + } else { #ifdef LEPTON - size_t r = 0; // index in the vector of variable references - size_t e = 0; // index of the gradient evaluator - for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { // for each CV - cv[i_cv]->calc_gradients(); - if (cv[i_cv]->is_enabled(f_cvc_explicit_gradient)) { - const colvarvalue& current_cv_value = cv[i_cv]->value(); - const cvm::real factor_polynomial = getPolynomialFactorOfCVGradient(i_cv); - for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { // for each element in this CV - for (size_t c = 0; c < x.size(); ++c) { // for each custom function expression - for (size_t k = 0; k < cv.size(); ++k) { // this is required since we need to feed all CV values to this expression - const cvm::real factor_polynomial_k = getPolynomialFactorOfCVGradient(k); - for (size_t l = 0; l < cv[k]->value().size(); ++l) { - *(grad_eval_var_refs[r++]) = factor_polynomial_k * cv[k]->value()[l]; + size_t r = 0; // index in the vector of variable references + size_t e = 0; // index of the gradient evaluator + for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { // for each CV + cv[i_cv]->calc_gradients(); + if (cv[i_cv]->is_enabled(f_cvc_explicit_gradient)) { + const colvarvalue& current_cv_value = cv[i_cv]->value(); + const cvm::real factor_polynomial = getPolynomialFactorOfCVGradient(i_cv); + for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { // for each element in this CV + for (size_t c = 0; c < x.size(); ++c) { // for each custom function expression + for (size_t k = 0; k < cv.size(); ++k) { // this is required since we need to feed all CV values to this expression + const cvm::real factor_polynomial_k = getPolynomialFactorOfCVGradient(k); + for (size_t l = 0; l < cv[k]->value().size(); ++l) { + *(grad_eval_var_refs[r++]) = factor_polynomial_k * cv[k]->value()[l]; + } } - } - const double expr_grad = gradient_evaluators[e++]->evaluate(); - for (size_t k_ag = 0 ; k_ag < cv[i_cv]->atom_groups.size(); ++k_ag) { - for (size_t l_atom = 0; l_atom < (cv[i_cv]->atom_groups)[k_ag]->size(); ++l_atom) { - (*(cv[i_cv]->atom_groups)[k_ag])[l_atom].grad = expr_grad * factor_polynomial * (*(cv[i_cv]->atom_groups)[k_ag])[l_atom].grad; + const double expr_grad = gradient_evaluators[e++]->evaluate(); + for (size_t k_ag = 0 ; k_ag < cv[i_cv]->atom_groups.size(); ++k_ag) { + for (size_t l_atom = 0; l_atom < (cv[i_cv]->atom_groups)[k_ag]->size(); ++l_atom) { + (*(cv[i_cv]->atom_groups)[k_ag])[l_atom].grad = expr_grad * factor_polynomial * (*(cv[i_cv]->atom_groups)[k_ag])[l_atom].grad; + } } } } } } - } +#else + cvm::error("customFunction requires the Lepton library, but it is not enabled during compilation.\n" + "Please refer to the Compilation Notes section of the Colvars manual for more information.\n", + COLVARS_INPUT_ERROR); #endif - if (!use_custom_function) { - colvar::linearCombination::calc_gradients(); } } void colvar::customColvar::apply_force(colvarvalue const &force) { -#ifdef LEPTON - size_t r = 0; // index in the vector of variable references - size_t e = 0; // index of the gradient evaluator - for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { - // If this CV us explicit gradients, then atomic gradients is already calculated - // We can apply the force to atom groups directly - if (cv[i_cv]->is_enabled(f_cvc_explicit_gradient)) { - for (size_t k_ag = 0 ; k_ag < cv[i_cv]->atom_groups.size(); ++k_ag) { - (cv[i_cv]->atom_groups)[k_ag]->apply_colvar_force(force.real_value); - } - } else { - const colvarvalue& current_cv_value = cv[i_cv]->value(); - colvarvalue cv_force(current_cv_value.type()); - const cvm::real factor_polynomial = getPolynomialFactorOfCVGradient(i_cv); - for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { - for (size_t c = 0; c < x.size(); ++c) { - for (size_t k = 0; k < cv.size(); ++k) { - const cvm::real factor_polynomial_k = getPolynomialFactorOfCVGradient(k); - for (size_t l = 0; l < cv[k]->value().size(); ++l) { - *(grad_eval_var_refs[r++]) = factor_polynomial_k * cv[k]->value()[l]; - } - } - cv_force[j_elem] += factor_polynomial * gradient_evaluators[e++]->evaluate() * force.real_value; - } - } - cv[i_cv]->apply_force(cv_force); - } - } -#endif if (!use_custom_function) { colvar::linearCombination::apply_force(force); + } else { +#ifdef LEPTON + size_t r = 0; // index in the vector of variable references + size_t e = 0; // index of the gradient evaluator + for (size_t i_cv = 0; i_cv < cv.size(); ++i_cv) { + // If this CV us explicit gradients, then atomic gradients is already calculated + // We can apply the force to atom groups directly + if (cv[i_cv]->is_enabled(f_cvc_explicit_gradient)) { + for (size_t k_ag = 0 ; k_ag < cv[i_cv]->atom_groups.size(); ++k_ag) { + (cv[i_cv]->atom_groups)[k_ag]->apply_colvar_force(force.real_value); + } + } else { + const colvarvalue& current_cv_value = cv[i_cv]->value(); + colvarvalue cv_force(current_cv_value.type()); + const cvm::real factor_polynomial = getPolynomialFactorOfCVGradient(i_cv); + for (size_t j_elem = 0; j_elem < current_cv_value.size(); ++j_elem) { + for (size_t c = 0; c < x.size(); ++c) { + for (size_t k = 0; k < cv.size(); ++k) { + const cvm::real factor_polynomial_k = getPolynomialFactorOfCVGradient(k); + for (size_t l = 0; l < cv[k]->value().size(); ++l) { + *(grad_eval_var_refs[r++]) = factor_polynomial_k * cv[k]->value()[l]; + } + } + cv_force[j_elem] += factor_polynomial * gradient_evaluators[e++]->evaluate() * force.real_value; + } + } + cv[i_cv]->apply_force(cv_force); + } + } +#else + cvm::error("customFunction requires the Lepton library, but it is not enabled during compilation.\n" + "Please refer to the Compilation Notes section of the Colvars manual for more information.\n", + COLVARS_INPUT_ERROR); +#endif } } diff --git a/lib/colvars/colvarcomp_coordnums.cpp b/lib/colvars/colvarcomp_coordnums.cpp index 80ec3177a9..3d618ff805 100644 --- a/lib/colvars/colvarcomp_coordnums.cpp +++ b/lib/colvars/colvarcomp_coordnums.cpp @@ -121,12 +121,12 @@ colvar::coordnum::coordnum(std::string const &conf) } bool const b_isotropic = get_keyval(conf, "cutoff", r0, - cvm::real(4.0 * proxy->angstrom_value)); + cvm::real(proxy->angstrom_to_internal(4.0))); if (get_keyval(conf, "cutoff3", r0_vec, - cvm::rvector(4.0 * proxy->angstrom_value, - 4.0 * proxy->angstrom_value, - 4.0 * proxy->angstrom_value))) { + cvm::rvector(proxy->angstrom_to_internal(4.0), + proxy->angstrom_to_internal(4.0), + proxy->angstrom_to_internal(4.0)))) { if (b_isotropic) { cvm::error("Error: cannot specify \"cutoff\" and \"cutoff3\" " "at the same time.\n", @@ -328,7 +328,7 @@ colvar::h_bond::h_bond(std::string const &conf) atom_groups[0]->add_atom(acceptor); atom_groups[0]->add_atom(donor); - get_keyval(conf, "cutoff", r0, (3.3 * proxy->angstrom_value)); + get_keyval(conf, "cutoff", r0, proxy->angstrom_to_internal(3.3)); get_keyval(conf, "expNumer", en, 6); get_keyval(conf, "expDenom", ed, 8); @@ -405,7 +405,7 @@ colvar::selfcoordnum::selfcoordnum(std::string const &conf) group1 = parse_group(conf, "group1"); - get_keyval(conf, "cutoff", r0, cvm::real(4.0 * proxy->angstrom_value)); + get_keyval(conf, "cutoff", r0, cvm::real(proxy->angstrom_to_internal(4.0))); get_keyval(conf, "expNumer", en, 6); get_keyval(conf, "expDenom", ed, 12); @@ -556,7 +556,7 @@ colvar::groupcoordnum::groupcoordnum(std::string const &conf) } bool const b_scale = get_keyval(conf, "cutoff", r0, - cvm::real(4.0 * proxy->angstrom_value)); + cvm::real(proxy->angstrom_to_internal(4.0))); if (get_keyval(conf, "cutoff3", r0_vec, cvm::rvector(4.0, 4.0, 4.0), parse_silent)) { diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index fa27e5345e..d96cb33482 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -1055,6 +1055,7 @@ colvar::rmsd::rmsd(std::string const &conf) n_permutations = 1; while (key_lookup(conf, "atomPermutation", &perm_conf, &pos)) { + cvm::main()->cite_feature("Symmetry-adapted RMSD"); std::vector perm; if (perm_conf.size()) { std::istringstream is(perm_conf); diff --git a/lib/colvars/colvarcomp_gpath.cpp b/lib/colvars/colvarcomp_gpath.cpp index bff432fdbe..c73ab4f6c1 100644 --- a/lib/colvars/colvarcomp_gpath.cpp +++ b/lib/colvars/colvarcomp_gpath.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "colvarmodule.h" #include "colvarvalue.h" @@ -426,9 +427,8 @@ colvar::CVBasedPath::CVBasedPath(std::string const &conf): cvc(conf) { std::string path_filename; get_keyval(conf, "pathFile", path_filename); cvm::log(std::string("Reading path file: ") + path_filename + std::string("\n")); - std::ifstream ifs_path(path_filename); - if (!ifs_path.is_open()) { - cvm::error("Error: failed to open path file.\n"); + auto &ifs_path = cvm::main()->proxy->input_stream(path_filename); + if (!ifs_path) { return; } std::string line; @@ -459,6 +459,7 @@ colvar::CVBasedPath::CVBasedPath(std::string const &conf): cvc(conf) { ++total_reference_frames; } } + cvm::main()->proxy->close_input_stream(path_filename); if (total_reference_frames <= 1) { cvm::error("Error: there is only 1 or 0 reference frame, which doesn't constitute a path.\n"); return; diff --git a/lib/colvars/colvarcomp_protein.cpp b/lib/colvars/colvarcomp_protein.cpp index b92cb533b7..80ef9b855c 100644 --- a/lib/colvars/colvarcomp_protein.cpp +++ b/lib/colvars/colvarcomp_protein.cpp @@ -86,7 +86,7 @@ colvar::alpha_angles::alpha_angles(std::string const &conf) { cvm::real r0; size_t en, ed; - get_keyval(conf, "hBondCutoff", r0, (3.3 * proxy->angstrom_value)); + get_keyval(conf, "hBondCutoff", r0, proxy->angstrom_to_internal(3.3)); get_keyval(conf, "hBondExpNumer", en, 6); get_keyval(conf, "hBondExpDenom", ed, 8); @@ -333,10 +333,11 @@ colvar::dihedPC::dihedPC(std::string const &conf) return; } - std::ifstream vecFile; - vecFile.open(vecFileName.c_str()); - if (!vecFile.good()) { - cvm::error("Error opening dihedral PCA vector file " + vecFileName + " for reading"); + std::istream &vecFile = + cvm::main()->proxy->input_stream(vecFileName, + "dihedral PCA vector file"); + if (!vecFile) { + return; } // TODO: adapt to different formats by setting this flag @@ -375,7 +376,7 @@ colvar::dihedPC::dihedPC(std::string const &conf) } } */ - vecFile.close(); + cvm::main()->proxy->close_input_stream(vecFileName); } else { get_keyval(conf, "vector", coeffs, coeffs); diff --git a/lib/colvars/colvarcomp_rotations.cpp b/lib/colvars/colvarcomp_rotations.cpp index 2e0d25ab81..f469174a62 100644 --- a/lib/colvars/colvarcomp_rotations.cpp +++ b/lib/colvars/colvarcomp_rotations.cpp @@ -67,15 +67,17 @@ int colvar::orientation::init(std::string const &conf) } - cvm::log("Centering the reference coordinates: it is " - "assumed that each atom is the closest " - "periodic image to the center of geometry.\n"); cvm::rvector ref_cog(0.0, 0.0, 0.0); size_t i; for (i = 0; i < ref_pos.size(); i++) { ref_cog += ref_pos[i]; } ref_cog /= cvm::real(ref_pos.size()); + cvm::log("Centering the reference coordinates on the origin by subtracting " + "the center of geometry at "+ + cvm::to_str(-1.0 * ref_cog)+"; it is " + "assumed that each atom is the closest " + "periodic image to the center of geometry.\n"); for (i = 0; i < ref_pos.size(); i++) { ref_pos[i] -= ref_cog; } diff --git a/lib/colvars/colvargrid.cpp b/lib/colvars/colvargrid.cpp index 96eb7cb5e1..2fd385ccec 100644 --- a/lib/colvars/colvargrid.cpp +++ b/lib/colvars/colvargrid.cpp @@ -7,14 +7,18 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include +#include + #include "colvarmodule.h" #include "colvarvalue.h" #include "colvarparse.h" #include "colvar.h" #include "colvarcomp.h" #include "colvargrid.h" +#include "colvargrid_def.h" + -#include colvar_grid_count::colvar_grid_count() : colvar_grid() @@ -33,6 +37,42 @@ colvar_grid_count::colvar_grid_count(std::vector &colvars, : colvar_grid(colvars, def_count, 1, margin) {} +std::istream & colvar_grid_count::read_multicol(std::istream &is, bool add) +{ + return colvar_grid::read_multicol(is, add); +} + +int colvar_grid_count::read_multicol(std::string const &filename, + std::string description, + bool add) +{ + return colvar_grid::read_multicol(filename, description, add); +} + +std::ostream & colvar_grid_count::write_multicol(std::ostream &os) const +{ + return colvar_grid::write_multicol(os); +} + +int colvar_grid_count::write_multicol(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_multicol(filename, description); +} + +std::ostream & colvar_grid_count::write_opendx(std::ostream &os) const +{ + return colvar_grid::write_opendx(os); +} + +int colvar_grid_count::write_opendx(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_opendx(filename, description); +} + + + colvar_grid_scalar::colvar_grid_scalar() : colvar_grid(), samples(NULL) {} @@ -56,6 +96,41 @@ colvar_grid_scalar::~colvar_grid_scalar() { } +std::istream & colvar_grid_scalar::read_multicol(std::istream &is, bool add) +{ + return colvar_grid::read_multicol(is, add); +} + +int colvar_grid_scalar::read_multicol(std::string const &filename, + std::string description, + bool add) +{ + return colvar_grid::read_multicol(filename, description, add); +} + +std::ostream & colvar_grid_scalar::write_multicol(std::ostream &os) const +{ + return colvar_grid::write_multicol(os); +} + +int colvar_grid_scalar::write_multicol(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_multicol(filename, description); +} + +std::ostream & colvar_grid_scalar::write_opendx(std::ostream &os) const +{ + return colvar_grid::write_opendx(os); +} + +int colvar_grid_scalar::write_opendx(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_opendx(filename, description); +} + + cvm::real colvar_grid_scalar::maximum_value() const { cvm::real max = data[0]; @@ -145,10 +220,9 @@ colvar_grid_gradient::colvar_grid_gradient(std::string &filename) samples(NULL), weights(NULL) { - std::ifstream is; - is.open(filename.c_str()); - if (!is.is_open()) { - cvm::error("Error opening multicol gradient file " + filename + " for reading.\n"); + std::istream &is = cvm::main()->proxy->input_stream(filename, + "gradient file"); + if (!is) { return; } @@ -203,7 +277,42 @@ colvar_grid_gradient::colvar_grid_gradient(std::string &filename) is.clear(); is.seekg(0); read_multicol(is); - is.close(); + cvm::main()->proxy->close_input_stream(filename); +} + + +std::istream & colvar_grid_gradient::read_multicol(std::istream &is, bool add) +{ + return colvar_grid::read_multicol(is, add); +} + +int colvar_grid_gradient::read_multicol(std::string const &filename, + std::string description, + bool add) +{ + return colvar_grid::read_multicol(filename, description, add); +} + +std::ostream & colvar_grid_gradient::write_multicol(std::ostream &os) const +{ + return colvar_grid::write_multicol(os); +} + +int colvar_grid_gradient::write_multicol(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_multicol(filename, description); +} + +std::ostream & colvar_grid_gradient::write_opendx(std::ostream &os) const +{ + return colvar_grid::write_opendx(os); +} + +int colvar_grid_gradient::write_opendx(std::string const &filename, + std::string description) const +{ + return colvar_grid::write_opendx(filename, description); } diff --git a/lib/colvars/colvargrid.h b/lib/colvars/colvargrid.h index f34c5eccab..e2fc1e0fe2 100644 --- a/lib/colvars/colvargrid.h +++ b/lib/colvars/colvargrid.h @@ -732,8 +732,8 @@ public: /// \brief Return the value suitable for output purposes (so that it /// may be rescaled or manipulated without changing it permanently) - virtual inline T value_output(std::vector const &ix, - size_t const &imult = 0) const + virtual T value_output(std::vector const &ix, + size_t const &imult = 0) const { return value(ix, imult); } @@ -741,10 +741,10 @@ public: /// \brief Get the value from a formatted output and transform it /// into the internal representation (the two may be different, /// e.g. when using colvar_grid_count) - virtual inline void value_input(std::vector const &ix, - T const &t, - size_t const &imult = 0, - bool add = false) + virtual void value_input(std::vector const &ix, + T const &t, + size_t const &imult = 0, + bool add = false) { if ( add ) data[address(ix) + imult] += t; @@ -803,7 +803,7 @@ public: } } - /// \brief Write the grid parameters (number of colvars, boundaries, width and number of points) + /// Write the grid parameters (number of colvars, boundaries, width and number of points) std::ostream & write_params(std::ostream &os) { size_t i; @@ -1028,188 +1028,27 @@ public: return is; } - /// \brief Write the grid in a format which is both human readable - /// and suitable for visualization e.g. with gnuplot - void write_multicol(std::ostream &os) const - { - std::streamsize const w = os.width(); - std::streamsize const p = os.precision(); + /// Read a grid written by write_multicol(), incrementing if add is true + std::istream & read_multicol(std::istream &is, bool add = false); - // Data in the header: nColvars, then for each - // xiMin, dXi, nPoints, periodic + /// Read a grid written by write_multicol(), incrementing if add is true + int read_multicol(std::string const &filename, + std::string description = "grid file", + bool add = false); - os << std::setw(2) << "# " << nd << "\n"; - for (size_t i = 0; i < nd; i++) { - os << "# " - << std::setw(10) << lower_boundaries[i] - << std::setw(10) << widths[i] - << std::setw(10) << nx[i] << " " - << periodic[i] << "\n"; - } + /// Write grid in a format which is both human-readable and gnuplot-friendly + std::ostream & write_multicol(std::ostream &os) const; + /// Write grid in a format which is both human-readable and gnuplot-friendly + int write_multicol(std::string const &filename, + std::string description = "grid file") const; - for (std::vector ix = new_index(); index_ok(ix); incr(ix) ) { + /// Write the grid data without labels, as they are represented in memory + std::ostream & write_opendx(std::ostream &os) const; - if (ix.back() == 0) { - // if the last index is 0, add a new line to mark the new record - os << "\n"; - } - - for (size_t i = 0; i < nd; i++) { - os << " " - << std::setw(w) << std::setprecision(p) - << bin_to_value_scalar(ix[i], i); - } - os << " "; - for (size_t imult = 0; imult < mult; imult++) { - os << " " - << std::setw(w) << std::setprecision(p) - << value_output(ix, imult); - } - os << "\n"; - } - } - - /// \brief Read a grid written by colvar_grid::write_multicol() - /// Adding data if add is true, replacing if false - std::istream & read_multicol(std::istream &is, bool add = false) - { - // Data in the header: nColvars, then for each - // xiMin, dXi, nPoints, periodic flag - - std::string hash; - cvm::real lower, width, x; - size_t n, periodic_flag; - bool remap; - std::vector new_value; - std::vector nx_read; - std::vector bin; - - if ( cv.size() > 0 && cv.size() != nd ) { - cvm::error("Cannot read grid file: number of variables in file differs from number referenced by grid.\n"); - return is; - } - - if ( !(is >> hash) || (hash != "#") ) { - cvm::error("Error reading grid at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream(read \"" + hash + "\")\n"); - return is; - } - - is >> n; - if ( n != nd ) { - cvm::error("Error reading grid: wrong number of collective variables.\n"); - return is; - } - - nx_read.resize(n); - bin.resize(n); - new_value.resize(mult); - - if (this->has_parent_data && add) { - new_data.resize(data.size()); - } - - remap = false; - for (size_t i = 0; i < nd; i++ ) { - if ( !(is >> hash) || (hash != "#") ) { - cvm::error("Error reading grid at position "+ - cvm::to_str(static_cast(is.tellg()))+ - " in stream(read \"" + hash + "\")\n"); - return is; - } - - is >> lower >> width >> nx_read[i] >> periodic_flag; - - - if ( (cvm::fabs(lower - lower_boundaries[i].real_value) > 1.0e-10) || - (cvm::fabs(width - widths[i] ) > 1.0e-10) || - (nx_read[i] != nx[i]) ) { - cvm::log("Warning: reading from different grid definition (colvar " - + cvm::to_str(i+1) + "); remapping data on new grid.\n"); - remap = true; - } - } - - if ( remap ) { - // re-grid data - while (is.good()) { - bool end_of_file = false; - - for (size_t i = 0; i < nd; i++ ) { - if ( !(is >> x) ) end_of_file = true; - bin[i] = value_to_bin_scalar(x, i); - } - if (end_of_file) break; - - for (size_t imult = 0; imult < mult; imult++) { - is >> new_value[imult]; - } - - if ( index_ok(bin) ) { - for (size_t imult = 0; imult < mult; imult++) { - value_input(bin, new_value[imult], imult, add); - } - } - } - } else { - // do not re-grid the data but assume the same grid is used - for (std::vector ix = new_index(); index_ok(ix); incr(ix) ) { - for (size_t i = 0; i < nd; i++ ) { - is >> x; - } - for (size_t imult = 0; imult < mult; imult++) { - is >> new_value[imult]; - value_input(ix, new_value[imult], imult, add); - } - } - } - has_data = true; - return is; - } - - /// \brief Write the grid data without labels, as they are - /// represented in memory - std::ostream & write_opendx(std::ostream &os) const - { - // write the header - os << "object 1 class gridpositions counts"; - size_t icv; - for (icv = 0; icv < num_variables(); icv++) { - os << " " << number_of_points(icv); - } - os << "\n"; - - os << "origin"; - for (icv = 0; icv < num_variables(); icv++) { - os << " " << (lower_boundaries[icv].real_value + 0.5 * widths[icv]); - } - os << "\n"; - - for (icv = 0; icv < num_variables(); icv++) { - os << "delta"; - for (size_t icv2 = 0; icv2 < num_variables(); icv2++) { - if (icv == icv2) os << " " << widths[icv]; - else os << " " << 0.0; - } - os << "\n"; - } - - os << "object 2 class gridconnections counts"; - for (icv = 0; icv < num_variables(); icv++) { - os << " " << number_of_points(icv); - } - os << "\n"; - - os << "object 3 class array type double rank 0 items " - << number_of_points() << " data follows\n"; - - write_raw(os); - - os << "object \"collective variables scalar field\" class field\n"; - return os; - } + /// Write the grid data without labels, as they are represented in memory + int write_opendx(std::string const &filename, + std::string description = "grid file") const; }; @@ -1224,7 +1063,7 @@ public: colvar_grid_count(); /// Destructor - virtual inline ~colvar_grid_count() + virtual ~colvar_grid_count() {} /// Constructor @@ -1249,13 +1088,33 @@ public: return new_data[address(ix) + imult]; } - /// \brief Get the value from a formatted output and transform it - /// into the internal representation (it may have been rescaled or - /// manipulated) - virtual inline void value_input(std::vector const &ix, - size_t const &t, - size_t const &imult = 0, - bool add = false) + /// Read a grid written by write_multicol(), incrementin if data is true + std::istream & read_multicol(std::istream &is, bool add = false); + + /// Read a grid written by write_multicol(), incrementin if data is true + int read_multicol(std::string const &filename, + std::string description = "grid file", + bool add = false); + + /// Write grid in a format which is both human-readable and gnuplot-friendly + std::ostream & write_multicol(std::ostream &os) const; + + /// Write grid in a format which is both human-readable and gnuplot-friendly + int write_multicol(std::string const &filename, + std::string description = "grid file") const; + + /// Write the grid data without labels, as they are represented in memory + std::ostream & write_opendx(std::ostream &os) const; + + /// Write the grid data without labels, as they are represented in memory + int write_opendx(std::string const &filename, + std::string description = "grid file") const; + + /// Enter or add a value, but also handle parent grid + virtual void value_input(std::vector const &ix, + size_t const &t, + size_t const &imult = 0, + bool add = false) { (void) imult; if (add) { @@ -1322,7 +1181,7 @@ public: /// \brief Return the gradient of discrete count from finite differences /// on the *same* grid for dimension n inline cvm::real gradient_finite_diff(const std::vector &ix0, - int n = 0) + int n = 0) { cvm::real A0, A1, A2; std::vector ix = ix0; @@ -1380,7 +1239,7 @@ public: colvar_grid_scalar(colvar_grid_scalar const &g); /// Destructor - ~colvar_grid_scalar(); + virtual ~colvar_grid_scalar(); /// Constructor from specific sizes arrays colvar_grid_scalar(std::vector const &nx_i); @@ -1402,6 +1261,28 @@ public: has_data = true; } + /// Read a grid written by write_multicol(), incrementin if data is true + std::istream & read_multicol(std::istream &is, bool add = false); + + /// Read a grid written by write_multicol(), incrementin if data is true + int read_multicol(std::string const &filename, + std::string description = "grid file", + bool add = false); + + /// Write grid in a format which is both human-readable and gnuplot-friendly + std::ostream & write_multicol(std::ostream &os) const; + + /// Write grid in a format which is both human-readable and gnuplot-friendly + int write_multicol(std::string const &filename, + std::string description = "grid file") const; + + /// Write the grid data without labels, as they are represented in memory + std::ostream & write_opendx(std::ostream &os) const; + + /// Write the grid data without labels, as they are represented in memory + int write_opendx(std::string const &filename, + std::string description = "grid file") const; + /// \brief Return the gradient of the scalar field from finite differences /// Input coordinates are those of gradient grid, shifted wrt scalar grid /// Should not be called on edges of scalar grid, provided the latter has margins @@ -1458,7 +1339,7 @@ public: /// \brief Return the gradient of discrete count from finite differences /// on the *same* grid for dimension n inline cvm::real gradient_finite_diff(const std::vector &ix0, - int n = 0) + int n = 0) { cvm::real A0, A1, A2; std::vector ix = ix0; @@ -1517,9 +1398,7 @@ public: } } - /// \brief Get the value from a formatted output and transform it - /// into the internal representation (it may have been rescaled or - /// manipulated) + /// Enter or add value but also deal with count grid virtual void value_input(std::vector const &ix, cvm::real const &new_value, size_t const &imult = 0, @@ -1580,7 +1459,7 @@ public: colvar_grid_gradient(); /// Destructor - virtual inline ~colvar_grid_gradient() + virtual ~colvar_grid_gradient() {} /// Constructor from specific sizes arrays @@ -1592,6 +1471,28 @@ public: /// Constructor from a multicol file colvar_grid_gradient(std::string &filename); + /// Read a grid written by write_multicol(), incrementin if data is true + virtual std::istream & read_multicol(std::istream &is, bool add = false); + + /// Read a grid written by write_multicol(), incrementin if data is true + virtual int read_multicol(std::string const &filename, + std::string description = "grid file", + bool add = false); + + /// Write grid in a format which is both human-readable and gnuplot-friendly + virtual std::ostream & write_multicol(std::ostream &os) const; + + /// Write grid in a format which is both human-readable and gnuplot-friendly + virtual int write_multicol(std::string const &filename, + std::string description = "grid file") const; + + /// Write the grid data without labels, as they are represented in memory + virtual std::ostream & write_opendx(std::ostream &os) const; + + /// Write the grid data without labels, as they are represented in memory + virtual int write_opendx(std::string const &filename, + std::string description = "grid file") const; + /// \brief Get a vector with the binned value(s) indexed by ix, normalized if applicable inline void vector_value(std::vector const &ix, std::vector &v) const { @@ -1647,8 +1548,8 @@ public: /// \brief Return the value of the function at ix divided by its /// number of samples (if the count grid is defined) - virtual inline cvm::real value_output(std::vector const &ix, - size_t const &imult = 0) const + virtual cvm::real value_output(std::vector const &ix, + size_t const &imult = 0) const { if (samples) return (samples->value(ix) > 0) ? @@ -1661,10 +1562,10 @@ public: /// \brief Get the value from a formatted output and transform it /// into the internal representation (it may have been rescaled or /// manipulated) - virtual inline void value_input(std::vector const &ix, - cvm::real const &new_value, - size_t const &imult = 0, - bool add = false) + virtual void value_input(std::vector const &ix, + cvm::real const &new_value, + size_t const &imult = 0, + bool add = false) { if (add) { if (samples) diff --git a/lib/colvars/colvargrid_def.h b/lib/colvars/colvargrid_def.h new file mode 100644 index 0000000000..f2245f3d81 --- /dev/null +++ b/lib/colvars/colvargrid_def.h @@ -0,0 +1,261 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +/// \file Definition of the more complex members of colvar_grid<> template + +#ifndef COLVARGRID_DEF_H +#define COLVARGRID_DEF_H + +#include +#include + +#include "colvarmodule.h" +#include "colvarproxy.h" +#include "colvar.h" +#include "colvargrid.h" + + +template +std::istream & colvar_grid::read_multicol(std::istream &is, bool add) +{ + // Data in the header: nColvars, then for each + // xiMin, dXi, nPoints, periodic flag + + std::string hash; + cvm::real lower, width, x; + size_t n, periodic_flag; + bool remap; + std::vector new_value; + std::vector nx_read; + std::vector bin; + + if ( cv.size() > 0 && cv.size() != nd ) { + cvm::error("Cannot read grid file: number of variables in file differs from number referenced by grid.\n"); + return is; + } + + if ( !(is >> hash) || (hash != "#") ) { + cvm::error("Error reading grid at position "+ + cvm::to_str(static_cast(is.tellg()))+ + " in stream(read \"" + hash + "\")\n", COLVARS_INPUT_ERROR); + return is; + } + + is >> n; + if ( n != nd ) { + cvm::error("Error reading grid: wrong number of collective variables.\n"); + return is; + } + + nx_read.resize(n); + bin.resize(n); + new_value.resize(mult); + + if (this->has_parent_data && add) { + new_data.resize(data.size()); + } + + remap = false; + for (size_t i = 0; i < nd; i++ ) { + if ( !(is >> hash) || (hash != "#") ) { + cvm::error("Error reading grid at position "+ + cvm::to_str(static_cast(is.tellg()))+ + " in stream(read \"" + hash + "\")\n"); + return is; + } + + is >> lower >> width >> nx_read[i] >> periodic_flag; + + + if ( (cvm::fabs(lower - lower_boundaries[i].real_value) > 1.0e-10) || + (cvm::fabs(width - widths[i] ) > 1.0e-10) || + (nx_read[i] != nx[i]) ) { + cvm::log("Warning: reading from different grid definition (colvar " + + cvm::to_str(i+1) + "); remapping data on new grid.\n"); + remap = true; + } + } + + if ( remap ) { + // re-grid data + while (is.good()) { + bool end_of_file = false; + + for (size_t i = 0; i < nd; i++ ) { + if ( !(is >> x) ) end_of_file = true; + bin[i] = value_to_bin_scalar(x, i); + } + if (end_of_file) break; + + for (size_t imult = 0; imult < mult; imult++) { + is >> new_value[imult]; + } + + if ( index_ok(bin) ) { + for (size_t imult = 0; imult < mult; imult++) { + value_input(bin, new_value[imult], imult, add); + } + } + } + } else { + // do not re-grid the data but assume the same grid is used + for (std::vector ix = new_index(); index_ok(ix); incr(ix) ) { + for (size_t i = 0; i < nd; i++ ) { + is >> x; + } + for (size_t imult = 0; imult < mult; imult++) { + is >> new_value[imult]; + value_input(ix, new_value[imult], imult, add); + } + } + } + has_data = true; + return is; +} + + +template +int colvar_grid::read_multicol(std::string const &filename, + std::string description, + bool add) +{ + std::istream &is = cvm::main()->proxy->input_stream(filename, description); + if (!is) { + return COLVARS_FILE_ERROR; + } + if (colvar_grid::read_multicol(is, add)) { + cvm::main()->proxy->close_input_stream(filename); + return COLVARS_OK; + } + return COLVARS_FILE_ERROR; +} + + +template +std::ostream & colvar_grid::write_multicol(std::ostream &os) const +{ + // Save the output formats + std::ios_base::fmtflags prev_flags(os.flags()); + + // Data in the header: nColvars, then for each + // xiMin, dXi, nPoints, periodic + + os << std::setw(2) << "# " << nd << "\n"; + // Write the floating numbers in full precision + os.setf(std::ios::scientific, std::ios::floatfield); + for (size_t i = 0; i < nd; i++) { + os << "# " + << std::setw(cvm::cv_width) << std::setprecision(cvm::cv_prec) << lower_boundaries[i] << " " + << std::setw(cvm::cv_width) << std::setprecision(cvm::cv_prec) << widths[i] << " " + << std::setw(10) << nx[i] << " " + << periodic[i] << "\n"; + } + + for (std::vector ix = new_index(); index_ok(ix); incr(ix) ) { + + if (ix.back() == 0) { + // if the last index is 0, add a new line to mark the new record + os << "\n"; + } + + for (size_t i = 0; i < nd; i++) { + os << " " + << std::setw(cvm::cv_width) << std::setprecision(cvm::cv_prec) + << bin_to_value_scalar(ix[i], i); + } + os << " "; + for (size_t imult = 0; imult < mult; imult++) { + os << " " + << std::setw(cvm::cv_width) << std::setprecision(cvm::cv_prec) + << value_output(ix, imult); + } + os << "\n"; + } + + // Restore the output formats + os.flags(prev_flags); + + return os; +} + + +template +int colvar_grid::write_multicol(std::string const &filename, + std::string description) const +{ + int error_code = COLVARS_OK; + std::ostream &os = cvm::main()->proxy->output_stream(filename, description); + if (!os) { + return COLVARS_FILE_ERROR; + } + error_code |= colvar_grid::write_multicol(os) ? COLVARS_OK : + COLVARS_FILE_ERROR; + cvm::main()->proxy->close_output_stream(filename); + return error_code; +} + + +template +std::ostream & colvar_grid::write_opendx(std::ostream &os) const +{ + // write the header + os << "object 1 class gridpositions counts"; + size_t icv; + for (icv = 0; icv < num_variables(); icv++) { + os << " " << number_of_points(icv); + } + os << "\n"; + + os << "origin"; + for (icv = 0; icv < num_variables(); icv++) { + os << " " << (lower_boundaries[icv].real_value + 0.5 * widths[icv]); + } + os << "\n"; + + for (icv = 0; icv < num_variables(); icv++) { + os << "delta"; + for (size_t icv2 = 0; icv2 < num_variables(); icv2++) { + if (icv == icv2) os << " " << widths[icv]; + else os << " " << 0.0; + } + os << "\n"; + } + + os << "object 2 class gridconnections counts"; + for (icv = 0; icv < num_variables(); icv++) { + os << " " << number_of_points(icv); + } + os << "\n"; + + os << "object 3 class array type double rank 0 items " + << number_of_points() << " data follows\n"; + + write_raw(os); + + os << "object \"collective variables scalar field\" class field\n"; + return os; +} + + +template +int colvar_grid::write_opendx(std::string const &filename, + std::string description) const +{ + int error_code = COLVARS_OK; + std::ostream &os = cvm::main()->proxy->output_stream(filename, description); + if (!os) { + return COLVARS_FILE_ERROR; + } + error_code |= colvar_grid::write_opendx(os) ? COLVARS_OK : + COLVARS_FILE_ERROR; + cvm::main()->proxy->close_output_stream(filename); + return error_code; +} + +#endif diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index 6ad945202e..68cd402e1c 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -7,7 +7,10 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. +#include +#include #include +#include #include #include #include @@ -71,8 +74,6 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in) depth_s = 0; log_level_ = 10; - cv_traj_os = NULL; - xyz_reader_use_count = 0; num_biases_types_used_ = @@ -132,8 +133,6 @@ colvarmodule::colvarmodule(colvarproxy *proxy_in) cv_traj_freq = 100; restart_out_freq = proxy->default_restart_frequency(); - // by default overwrite the existing trajectory file - cv_traj_append = false; cv_traj_write_labels = true; // Removes the need for proxy specializations to create this @@ -190,12 +189,12 @@ int colvarmodule::read_config_file(char const *config_filename) std::string(config_filename)+"\":\n"); // open the configfile - config_s.open(config_filename); - if (!config_s.is_open()) { - cvm::error("Error: in opening configuration file \""+ - std::string(config_filename)+"\".\n", - COLVARS_FILE_ERROR); - return COLVARS_ERROR; + std::istream &config_s = proxy->input_stream(config_filename, + "configuration file/string"); + if (!config_s) { + return cvm::error("Error: in opening configuration file \""+ + std::string(config_filename)+"\".\n", + COLVARS_FILE_ERROR); } // read the config file into a string @@ -206,7 +205,7 @@ int colvarmodule::read_config_file(char const *config_filename) if (line.find_first_not_of(colvarparse::white_space) != std::string::npos) conf.append(line+"\n"); } - config_s.close(); + proxy->close_input_stream(config_filename); return parse_config(conf); } @@ -299,9 +298,6 @@ int colvarmodule::parse_config(std::string &conf) cvm::log("Collective variables module (re)initialized.\n"); cvm::log(cvm::line_marker); - // Update any necessary proxy data - proxy->setup(); - if (source_Tcl_script.size() > 0) { run_tcl_script(source_Tcl_script); } @@ -385,10 +381,6 @@ int colvarmodule::parse_global_params(std::string const &conf) parse->get_keyval(conf, "colvarsRestartFrequency", restart_out_freq, restart_out_freq); - // Deprecate append flag - parse->get_keyval(conf, "colvarsTrajAppend", - cv_traj_append, cv_traj_append, colvarparse::parse_silent); - parse->get_keyval(conf, "scriptedColvarForces", use_scripted_forces, use_scripted_forces); @@ -433,6 +425,7 @@ int colvarmodule::parse_colvars(std::string const &conf) cvm::log("Error while constructing colvar number " + cvm::to_str(colvars.size()) + " : deleting."); delete colvars.back(); // the colvar destructor updates the colvars array + cvm::decrease_depth(); return COLVARS_ERROR; } cvm::decrease_depth(); @@ -855,11 +848,13 @@ int colvarmodule::calc_colvars() // so they can activate colvars as needed std::vector::iterator bi; for (bi = biases.begin(); bi != biases.end(); bi++) { - int tsf = (*bi)->get_time_step_factor(); - if (tsf > 0 && (step_absolute() % tsf == 0)) { - (*bi)->enable(colvardeps::f_cvb_awake); - } else { - (*bi)->disable(colvardeps::f_cvb_awake); + int const tsf = (*bi)->get_time_step_factor(); + if (tsf > 1) { + if (step_absolute() % tsf == 0) { + (*bi)->enable(colvardeps::f_cvb_awake); + } else { + (*bi)->disable(colvardeps::f_cvb_awake); + } } } @@ -870,12 +865,14 @@ int colvarmodule::calc_colvars() variables_active()->clear(); variables_active()->reserve(variables()->size()); for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) { - // Wake up or put to sleep variables + // Wake up or put to sleep variables with MTS int tsf = (*cvi)->get_time_step_factor(); - if (tsf > 0 && (step_absolute() % tsf == 0)) { - (*cvi)->enable(colvardeps::f_cv_awake); - } else { - (*cvi)->disable(colvardeps::f_cv_awake); + if (tsf > 1) { + if (step_absolute() % tsf == 0) { + (*cvi)->enable(colvardeps::f_cv_awake); + } else { + (*cvi)->disable(colvardeps::f_cv_awake); + } } if ((*cvi)->is_enabled()) { @@ -1013,10 +1010,7 @@ int colvarmodule::update_colvar_forces() cvm::log("Collecting forces from all biases.\n"); cvm::increase_depth(); for (bi = biases_active()->begin(); bi != biases_active()->end(); bi++) { - (*bi)->communicate_forces(); - if (cvm::get_error()) { - return COLVARS_ERROR; - } + error_code |= (*bi)->communicate_forces(); } cvm::decrease_depth(); @@ -1040,9 +1034,6 @@ int colvarmodule::update_colvar_forces() for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) { // Inactive colvars will only reset their forces and return 0 energy total_colvar_energy += (*cvi)->update_forces_energy(); - if (cvm::get_error()) { - return COLVARS_ERROR; - } } cvm::decrease_depth(); if (cvm::debug()) @@ -1064,7 +1055,7 @@ int colvarmodule::update_colvar_forces() } cvm::decrease_depth(); - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + return error_code; } @@ -1089,17 +1080,15 @@ int colvarmodule::calc_scripted_forces() int colvarmodule::write_restart_file(std::string const &out_name) { cvm::log("Saving collective variables state to \""+out_name+"\".\n"); - proxy->backup_file(out_name); - std::ostream *restart_out_os = proxy->output_stream(out_name); - if (!restart_out_os) return cvm::get_error(); - if (!write_restart(*restart_out_os)) { + std::ostream &restart_out_os = proxy->output_stream(out_name, "state file"); + if (!restart_out_os) return COLVARS_FILE_ERROR; + if (!write_restart(restart_out_os)) { return cvm::error("Error: in writing restart file.\n", COLVARS_FILE_ERROR); } proxy->close_output_stream(out_name); - if (cv_traj_os != NULL) { - // Take the opportunity to flush colvars.traj - proxy->flush_output_stream(cv_traj_os); - } + + // Take the opportunity to flush colvars.traj + return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); } @@ -1118,38 +1107,46 @@ int colvarmodule::write_restart_string(std::string &output) int colvarmodule::write_traj_files() { + int error_code = COLVARS_OK; + if (cvm::debug()) { cvm::log("colvarmodule::write_traj_files()\n"); } - if (cv_traj_os == NULL) { - if (open_traj_file(cv_traj_name) != COLVARS_OK) { - return cvm::get_error(); - } else { - cv_traj_write_labels = true; - } + std::ostream &cv_traj_os = proxy->output_stream(cv_traj_name, + "colvars trajectory"); + + if (!cv_traj_os) { + return COLVARS_FILE_ERROR; } - // write labels in the traj file every 1000 lines and at first timestep - if ((cvm::step_absolute() % (cv_traj_freq * 1000)) == 0 || - cvm::step_relative() == 0 || - cv_traj_write_labels) { - write_traj_label(*cv_traj_os); + // Write labels in the traj file at beginning and then every 1000 lines + if ( (cvm::step_relative() == 0) || cv_traj_write_labels || + ((cvm::step_absolute() % (cv_traj_freq * 1000)) == 0) ) { + error_code |= + write_traj_label(cv_traj_os) ? COLVARS_OK : COLVARS_FILE_ERROR; + cv_traj_write_labels = false; + } + + if (cvm::debug()) { + proxy->flush_output_stream(cv_traj_name); } - cv_traj_write_labels = false; if ((cvm::step_absolute() % cv_traj_freq) == 0) { - write_traj(*cv_traj_os); + error_code |= write_traj(cv_traj_os) ? COLVARS_OK : COLVARS_FILE_ERROR; } - if (restart_out_freq && (cv_traj_os != NULL) && - ((cvm::step_absolute() % restart_out_freq) == 0)) { + if (cvm::debug()) { + proxy->flush_output_stream(cv_traj_name); + } + + if (restart_out_freq && ((cvm::step_absolute() % restart_out_freq) == 0)) { cvm::log("Synchronizing (emptying the buffer of) trajectory file \""+ cv_traj_name+"\".\n"); - proxy->flush_output_stream(cv_traj_os); + error_code |= proxy->flush_output_stream(cv_traj_name); } - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + return error_code; } @@ -1208,7 +1205,7 @@ int colvarmodule::end_of_step() } -int colvarmodule::setup() +int colvarmodule::update_engine_parameters() { if (this->size() == 0) return cvm::get_error(); for (std::vector::iterator cvi = variables()->begin(); @@ -1221,8 +1218,8 @@ int colvarmodule::setup() colvarmodule::~colvarmodule() { - if ((proxy->smp_thread_id() == COLVARS_NOT_IMPLEMENTED) || - (proxy->smp_thread_id() == 0)) { + if ((proxy->smp_thread_id() < 0) || // not using threads + (proxy->smp_thread_id() == 0)) { // or this is thread 0 reset(); @@ -1250,8 +1247,6 @@ colvarmodule::~colvarmodule() int colvarmodule::reset() { - cvm::log("Resetting the Collective Variables module.\n"); - parse->clear(); // Iterate backwards because we are deleting the elements as we go @@ -1289,30 +1284,34 @@ int colvarmodule::setup_input() // Read a state file std::string restart_in_name(proxy->input_prefix()+ std::string(".colvars.state")); - std::ifstream input_is(restart_in_name.c_str()); - if (!input_is.good()) { - // Try without the suffix - input_is.clear(); + std::istream *input_is = &(proxy->input_stream(restart_in_name, + "restart file/channel", + false)); + if (!*input_is) { + // Try without the suffix ".colvars.state" restart_in_name = proxy->input_prefix(); - input_is.open(restart_in_name.c_str()); + input_is = &(proxy->input_stream(restart_in_name, + "restart file/channel")); + if (!*input_is) { + return COLVARS_FILE_ERROR; + } } - // Now that the file has been opened, clear this for the next round + // Now that the file has been opened, clear this field so that this + // function will not be called twice proxy->input_prefix().clear(); - if (!input_is.good()) { - return cvm::error("Error: in opening input state file \""+ - std::string(restart_in_name)+"\".\n", - COLVARS_FILE_ERROR); - } else { - cvm::log(cvm::line_marker); - cvm::log("Loading state from file \""+restart_in_name+"\".\n"); - read_restart(input_is); - cvm::log(cvm::line_marker); - return cvm::get_error(); - } + cvm::log(cvm::line_marker); + cvm::log("Loading state from file \""+restart_in_name+"\".\n"); + read_restart(*input_is); + cvm::log(cvm::line_marker); + + proxy->close_input_stream(restart_in_name); + + return cvm::get_error(); } + // TODO This could soon be redundant if (proxy->input_buffer() != NULL) { // Read a string buffer char const *buffer = proxy->input_buffer(); @@ -1364,10 +1363,6 @@ int colvarmodule::setup_output() std::string(output_prefix()+".colvars.traj") : std::string("")); - if (cv_traj_freq && cv_traj_name.size()) { - error_code |= open_traj_file(cv_traj_name); - } - for (std::vector::iterator bi = biases.begin(); bi != biases.end(); bi++) { @@ -1572,7 +1567,7 @@ int colvarmodule::write_output_files() error_code |= (*bi)->write_state_to_replicas(); } cvm::decrease_depth(); - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + return error_code; } @@ -1582,6 +1577,9 @@ int colvarmodule::read_traj(char const *traj_filename, { cvm::log("Opening trajectory file \""+ std::string(traj_filename)+"\".\n"); + // NB: this function is not currently used, but when it will it should + // retain the ability for direct file-based access (in case traj files + // exceed memory) std::ifstream traj_is(traj_filename); while (true) { @@ -1683,42 +1681,6 @@ std::ostream & colvarmodule::write_restart(std::ostream &os) } -int colvarmodule::open_traj_file(std::string const &file_name) -{ - if (cv_traj_os != NULL) { - return COLVARS_OK; - } - - // (re)open trajectory file - if (cv_traj_append) { - cvm::log("Appending to trajectory file \""+file_name+"\".\n"); - cv_traj_os = (cvm::proxy)->output_stream(file_name, std::ios::app); - } else { - cvm::log("Opening trajectory file \""+file_name+"\".\n"); - proxy->backup_file(file_name.c_str()); - cv_traj_os = (cvm::proxy)->output_stream(file_name); - } - - if (cv_traj_os == NULL) { - cvm::error("Error: cannot write to file \""+file_name+"\".\n", - COLVARS_FILE_ERROR); - } - - return cvm::get_error(); -} - - -int colvarmodule::close_traj_file() -{ - if (cv_traj_os != NULL) { - cvm::log("Closing trajectory file \""+cv_traj_name+"\".\n"); - proxy->close_output_stream(cv_traj_name); - cv_traj_os = NULL; - } - return cvm::get_error(); -} - - std::ostream & colvarmodule::write_traj_label(std::ostream &os) { os.setf(std::ios::scientific, std::ios::floatfield); @@ -1739,10 +1701,6 @@ std::ostream & colvarmodule::write_traj_label(std::ostream &os) } os << "\n"; - if (cvm::debug()) { - proxy->flush_output_stream(&os); - } - cvm::decrease_depth(); return os; } @@ -1768,10 +1726,6 @@ std::ostream & colvarmodule::write_traj(std::ostream &os) } os << "\n"; - if (cvm::debug()) { - proxy->flush_output_stream(&os); - } - cvm::decrease_depth(); return os; } @@ -1780,12 +1734,15 @@ std::ostream & colvarmodule::write_traj(std::ostream &os) void colvarmodule::log(std::string const &message, int min_log_level) { if (cvm::log_level() < min_log_level) return; + + std::string const trailing_newline = (message.size() > 0) ? + (message[message.size()-1] == '\n' ? "" : "\n") : ""; // allow logging when the module is not fully initialized size_t const d = (cvm::main() != NULL) ? depth() : 0; if (d > 0) { - proxy->log((std::string(2*d, ' '))+message); + proxy->log((std::string(2*d, ' ')) + message + trailing_newline); } else { - proxy->log(message); + proxy->log(message + trailing_newline); } } @@ -1854,18 +1811,26 @@ void colvarmodule::clear_error() int colvarmodule::error(std::string const &message, int code) { set_error_bits(code); - proxy->error(message); + + std::string const trailing_newline = (message.size() > 0) ? + (message[message.size()-1] == '\n' ? "" : "\n") : ""; + size_t const d = depth(); + if (d > 0) { + proxy->error((std::string(2*d, ' ')) + message + trailing_newline); + } else { + proxy->error(message + trailing_newline); + } + return get_error(); } int cvm::read_index_file(char const *filename) { - std::ifstream is(filename, std::ios::binary); - if (!is.good()) { - return cvm::error("Error: in opening index file \""+ - std::string(filename)+"\".\n", - COLVARS_FILE_ERROR); + std::istream &is = proxy->input_stream(filename, "index file"); + + if (!is) { + return COLVARS_FILE_ERROR; } else { index_file_names.push_back(std::string(filename)); } @@ -1947,7 +1912,7 @@ int cvm::read_index_file(char const *filename) cvm::to_str((index_groups[i])->size())+" atoms)\n"); } - return COLVARS_OK; + return proxy->close_input_stream(filename); } @@ -2016,9 +1981,10 @@ int cvm::load_coords(char const *file_name, int cvm::load_coords_xyz(char const *filename, std::vector *pos, - cvm::atom_group *atoms) + cvm::atom_group *atoms, + bool keep_open) { - std::ifstream xyz_is(filename); + std::istream &xyz_is = proxy->input_stream(filename, "XYZ file"); unsigned int natoms; char symbol[256]; std::string line; @@ -2028,7 +1994,8 @@ int cvm::load_coords_xyz(char const *filename, std::string(filename)+"\".\n"); if ( ! (xyz_is >> natoms) ) { - return cvm::error(error_msg, COLVARS_INPUT_ERROR); + // Return silent error when reaching the end of multi-frame files + return keep_open ? COLVARS_NO_SUCH_FRAME : cvm::error(error_msg, COLVARS_INPUT_ERROR); } ++xyz_reader_use_count; @@ -2049,6 +2016,12 @@ int cvm::load_coords_xyz(char const *filename, size_t xyz_natoms = 0; if (pos->size() != natoms) { // Use specified indices int next = 0; // indices are zero-based + if (!atoms) { + // In the other branch of this test, reading all positions from the file, + // a valid atom group pointer is not necessary + return cvm::error("Trying to read partial positions with invalid atom group pointer", + COLVARS_BUG_ERROR); + } std::vector::const_iterator index = atoms->sorted_ids().begin(); for ( ; pos_i != pos->end() ; pos_i++, index++) { @@ -2092,7 +2065,11 @@ int cvm::load_coords_xyz(char const *filename, cvm::to_str(pos->size())+".\n", COLVARS_INPUT_ERROR); } - return COLVARS_OK; + if (keep_open) { + return COLVARS_OK; + } else { + return proxy->close_input_stream(filename); + } } @@ -2100,18 +2077,6 @@ int cvm::load_coords_xyz(char const *filename, // Wrappers to proxy functions: these may go in the future -cvm::real cvm::boltzmann() -{ - return proxy->boltzmann(); -} - - -cvm::real cvm::temperature() -{ - return proxy->temperature(); -} - - cvm::real cvm::dt() { return proxy->dt(); diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index ae29e94505..236d432a95 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -40,15 +40,13 @@ You can browse the class hierarchy or the list of source files. #define COLVARS_BUG_ERROR (1<<3) // Inconsistent state indicating bug #define COLVARS_FILE_ERROR (1<<4) #define COLVARS_MEMORY_ERROR (1<<5) -#define COLVARS_NO_SUCH_FRAME (1<<6) // Cannot load the requested frame +#define COLVARS_NO_SUCH_FRAME (1<<6) // Cannot load the requested frame -#include -#include -#include #include #include #include #include +#include class colvarparse; class colvar; @@ -441,9 +439,9 @@ public: // from the proxy that may change during program execution) // No additional parsing is done within these functions - /// (Re)initialize internal data (currently used by LAMMPS) + /// (Re)initialize any internal data affected by changes in the engine /// Also calls setup() member functions of colvars and biases - int setup(); + int update_engine_parameters(); /// (Re)initialize and (re)read the input state file calling read_restart() int setup_input(); @@ -634,12 +632,6 @@ public: // proxy functions - /// \brief Boltmann constant - static real boltzmann(); - - /// \brief Temperature of the simulation (K) - static real temperature(); - /// \brief Time step of MD integrator (fs) static real dt(); @@ -751,7 +743,8 @@ public: /// Load coordinates into an atom group from an XYZ file (assumes Angstroms) int load_coords_xyz(char const *filename, std::vector *pos, - atom_group *atoms); + atom_group *atoms, + bool keep_open = false); /// Frequency for collective variables trajectory output static size_t cv_traj_freq; @@ -766,21 +759,12 @@ public: protected: - /// Configuration file - std::ifstream config_s; - /// Configuration file parser object colvarparse *parse; /// Name of the trajectory file std::string cv_traj_name; - /// Collective variables output trajectory file - std::ostream *cv_traj_os; - - /// Appending to the existing trajectory file? - bool cv_traj_append; - /// Write labels at the next iteration bool cv_traj_write_labels; diff --git a/lib/colvars/colvarmodule_refs.h b/lib/colvars/colvarmodule_refs.h index 0b8791ce34..c3fccf297c 100644 --- a/lib/colvars/colvarmodule_refs.h +++ b/lib/colvars/colvarmodule_refs.h @@ -63,6 +63,22 @@ " url = {https://doi.org/10.1021/ct500874p}\n" "}\n"; + paper_count_[std::string("Ebrahimi2022")] = 0; + paper_url_[std::string("Ebrahimi2022")] = "https://doi.org/10.1021/acs.jctc.1c01235"; + paper_bibtex_[std::string("Ebrahimi2022")] = + "\n" + "@article {Ebrahimi2022,\n" + " author = {Ebrahimi, Mina and H\\'enin, J\\'er\\^ome},\n" + " title = {Symmetry-Adapted Restraints for Binding Free Energy Calculations},\n" + " journal = {Journal of Chemical Theory and Computation},\n" + " volume = {18},\n" + " number = {4},\n" + " pages = {2494-2502},\n" + " year = {2022},\n" + " doi = {10.1021/acs.jctc.1c01235},\n" + " url = {https://doi.org/10.1021/acs.jctc.1c01235}\n" + "}\n"; + paper_count_[std::string("Fiorin2013")] = 0; paper_url_[std::string("Fiorin2013")] = "https://doi.org/10.1080/00268976.2013.813594"; paper_bibtex_[std::string("Fiorin2013")] = @@ -246,20 +262,19 @@ " url = {https://doi.org/10.1063/5.0014475}\n" "}\n"; - paper_count_[std::string("Plimpton1995")] = 0; - paper_url_[std::string("Plimpton1995")] = "https://doi.org/10.1006/jcph.1995.1039"; - paper_bibtex_[std::string("Plimpton1995")] = + paper_count_[std::string("Thompson2022")] = 0; + paper_url_[std::string("Thompson2022")] = "https://doi.org/10.1016/j.cpc.2021.108171"; + paper_bibtex_[std::string("Thompson2022")] = "\n" - "@article{Plimpton1995,\n" - " title = {Fast parallel algorithms for short-range molecular dynamics},\n" - " author = {Plimpton, Steve},\n" - " journal = {J. Comp. Phys.},\n" - " year = {1995},\n" - " volume = {117},\n" - " number = {1},\n" - " pages = {1--19},\n" - " doi = {10.1006/jcph.1995.1039},\n" - " url = {https://doi.org/10.1006/jcph.1995.1039}\n" + "@article{Thompson2022,\n" + " title = {{LAMMPS} - a flexible simulation tool for particle-based materials modeling at the atomic, meso, and continuum scales},\n" + " author = {Thompson, Aidan P. and Aktulga, H. Metin and Berger, Richard and Bolintineanu, Dan S. and Brown, W. Michael and Crozier, Paul S. and {in't Veld}, Pieter J. and Kohlmeyer, Axel and Moore, Stan G. and Nguyen, Trung Dac and Shan, Ray and Stevens, Mark J. and Tranchida, Julien and Trott, Christian and Plimpton, Steven J.},\n" + " journal = {Comp. Phys. Comm.},\n" + " volume = {271},\n" + " pages = {108171},\n" + " year = {2022},\n" + " doi = {10.1016/j.cpc.2021.108171},\n" + " url = {https://doi.org/10.1016/j.cpc.2021.108171}\n" "}\n"; paper_count_[std::string("Shen2015")] = 0; @@ -329,6 +344,9 @@ feature_count_[std::string("Multiple-walker ABF implementation")] = 0; feature_paper_map_[std::string("Multiple-walker ABF implementation")] = "Comer2014c"; + feature_count_[std::string("Symmetry-adapted RMSD")] = 0; + feature_paper_map_[std::string("Symmetry-adapted RMSD")] = "Ebrahimi2022"; + feature_count_[std::string("Colvars module")] = 0; feature_paper_map_[std::string("Colvars module")] = "Fiorin2013"; @@ -504,7 +522,7 @@ feature_paper_map_[std::string("Scalable center-of-mass computation (NAMD)")] = "Phillips2020"; feature_count_[std::string("LAMMPS engine")] = 0; - feature_paper_map_[std::string("LAMMPS engine")] = "Plimpton1995"; + feature_paper_map_[std::string("LAMMPS engine")] = "Thompson2022"; feature_count_[std::string("distancePairs colvar component")] = 0; feature_paper_map_[std::string("distancePairs colvar component")] = "Shen2015"; diff --git a/lib/colvars/colvarproxy.cpp b/lib/colvars/colvarproxy.cpp index 3d4c9c439b..b09ea6667c 100644 --- a/lib/colvars/colvarproxy.cpp +++ b/lib/colvars/colvarproxy.cpp @@ -7,23 +7,9 @@ // If you wish to distribute your changes, please submit them to the // Colvars repository at GitHub. -// Using access() to check if a file exists (until we can assume C++14/17) -#if !defined(_WIN32) || defined(__CYGWIN__) -#include -#endif -#if defined(_WIN32) -#include -#endif - -#include - -#include -#include -#include - -#if defined(_OPENMP) -#include -#endif +#include +#include +#include #include "colvarmodule.h" #include "colvarproxy.h" @@ -33,205 +19,6 @@ -colvarproxy_system::colvarproxy_system() -{ - angstrom_value = 0.0; - kcal_mol_value = 0.0; - boundaries_type = boundaries_unsupported; - total_force_requested = false; - indirect_lambda_biasing_force = 0.0; - cached_alch_lambda_changed = false; - cached_alch_lambda = -1.0; - reset_pbc_lattice(); -} - - -colvarproxy_system::~colvarproxy_system() {} - - -int colvarproxy_system::set_unit_system(std::string const & /* units */, - bool /* check_only */) -{ - return COLVARS_NOT_IMPLEMENTED; -} - - -cvm::real colvarproxy_system::backend_angstrom_value() -{ - return 1.0; -} - - -cvm::real colvarproxy_system::boltzmann() -{ - return 0.001987191; -} - - -cvm::real colvarproxy_system::temperature() -{ - // TODO define, document and implement a user method to set the value of this - return 300.0; -} - - -cvm::real colvarproxy_system::dt() -{ - // TODO define, document and implement a user method to set the value of this - return 1.0; -} - - -cvm::real colvarproxy_system::rand_gaussian() -{ - // TODO define, document and implement a user method to set the value of this - return 0.0; -} - - -void colvarproxy_system::add_energy(cvm::real /* energy */) {} - - -void colvarproxy_system::request_total_force(bool yesno) -{ - if (yesno == true) - cvm::error("Error: total forces are currently not implemented.\n", - COLVARS_NOT_IMPLEMENTED); -} - - -bool colvarproxy_system::total_forces_enabled() const -{ - return false; -} - - -bool colvarproxy_system::total_forces_same_step() const -{ - return false; -} - - -inline int round_to_integer(cvm::real x) -{ - return int(cvm::floor(x+0.5)); -} - - -void colvarproxy_system::update_pbc_lattice() -{ - // Periodicity is assumed in all directions - - if (boundaries_type == boundaries_unsupported || - boundaries_type == boundaries_non_periodic) { - cvm::error("Error: setting PBC lattice with unsupported boundaries.\n", - COLVARS_BUG_ERROR); - return; - } - - { - cvm::rvector const v = cvm::rvector::outer(unit_cell_y, unit_cell_z); - reciprocal_cell_x = v/(v*unit_cell_x); - } - { - cvm::rvector const v = cvm::rvector::outer(unit_cell_z, unit_cell_x); - reciprocal_cell_y = v/(v*unit_cell_y); - } - { - cvm::rvector const v = cvm::rvector::outer(unit_cell_x, unit_cell_y); - reciprocal_cell_z = v/(v*unit_cell_z); - } -} - - -void colvarproxy_system::reset_pbc_lattice() -{ - unit_cell_x.reset(); - unit_cell_y.reset(); - unit_cell_z.reset(); - reciprocal_cell_x.reset(); - reciprocal_cell_y.reset(); - reciprocal_cell_z.reset(); -} - - -cvm::rvector colvarproxy_system::position_distance(cvm::atom_pos const &pos1, - cvm::atom_pos const &pos2) - const -{ - if (boundaries_type == boundaries_unsupported) { - cvm::error("Error: unsupported boundary conditions.\n", COLVARS_INPUT_ERROR); - } - - cvm::rvector diff = (pos2 - pos1); - - if (boundaries_type == boundaries_non_periodic) return diff; - - cvm::real const x_shift = round_to_integer(reciprocal_cell_x*diff); - cvm::real const y_shift = round_to_integer(reciprocal_cell_y*diff); - cvm::real const z_shift = round_to_integer(reciprocal_cell_z*diff); - - diff.x -= x_shift*unit_cell_x.x + y_shift*unit_cell_y.x + - z_shift*unit_cell_z.x; - diff.y -= x_shift*unit_cell_x.y + y_shift*unit_cell_y.y + - z_shift*unit_cell_z.y; - diff.z -= x_shift*unit_cell_x.z + y_shift*unit_cell_y.z + - z_shift*unit_cell_z.z; - - return diff; -} - - -int colvarproxy_system::get_molid(int &) -{ - cvm::error("Error: only VMD allows the use of multiple \"molecules\", " - "i.e. multiple molecular systems.", COLVARS_NOT_IMPLEMENTED); - return -1; -} - - -int colvarproxy_system::get_alch_lambda(cvm::real * /* lambda */) -{ - return cvm::error("Error in get_alch_lambda: alchemical lambda dynamics is not supported by this build.", - COLVARS_NOT_IMPLEMENTED); -} - - -void colvarproxy_system::set_alch_lambda(cvm::real lambda) -{ - cached_alch_lambda = lambda; - cached_alch_lambda_changed = true; -} - - -int colvarproxy_system::send_alch_lambda() -{ - return cvm::error("Error in set_alch_lambda: alchemical lambda dynamics is not supported by this build.", - COLVARS_NOT_IMPLEMENTED); -} - - -int colvarproxy_system::get_dE_dlambda(cvm::real * /* force */) -{ - return cvm::error("Error in get_dE_dlambda: alchemical lambda dynamics is not supported by this build.", - COLVARS_NOT_IMPLEMENTED); -} - - -int colvarproxy_system::apply_force_dE_dlambda(cvm::real* /* force */) -{ - return cvm::error("Error in apply_force_dE_dlambda: function is not implemented by this build.", - COLVARS_NOT_IMPLEMENTED); -} - - -int colvarproxy_system::get_d2E_dlambda2(cvm::real*) -{ - return cvm::error("Error in get_d2E_dlambda2: function is not implemented by this build.", - COLVARS_NOT_IMPLEMENTED); -} - - colvarproxy_atoms::colvarproxy_atoms() { atoms_rms_applied_force_ = atoms_max_applied_force_ = 0.0; @@ -249,7 +36,7 @@ colvarproxy_atoms::~colvarproxy_atoms() int colvarproxy_atoms::reset() { atoms_ids.clear(); - atoms_ncopies.clear(); + atoms_refcount.clear(); atoms_masses.clear(); atoms_charges.clear(); atoms_positions.clear(); @@ -262,7 +49,7 @@ int colvarproxy_atoms::reset() int colvarproxy_atoms::add_atom_slot(int atom_id) { atoms_ids.push_back(atom_id); - atoms_ncopies.push_back(1); + atoms_refcount.push_back(1); atoms_masses.push_back(1.0); atoms_charges.push_back(0.0); atoms_positions.push_back(cvm::rvector(0.0, 0.0, 0.0)); @@ -309,12 +96,22 @@ void colvarproxy_atoms::clear_atom(int index) cvm::error("Error: trying to disable an atom that was not previously requested.\n", COLVARS_INPUT_ERROR); } - if (atoms_ncopies[index] > 0) { - atoms_ncopies[index] -= 1; + if (atoms_refcount[index] > 0) { + atoms_refcount[index] -= 1; } } +size_t colvarproxy_atoms::get_num_active_atoms() const +{ + size_t result = 0; + for (size_t i = 0; i < atoms_refcount.size(); i++) { + if (atoms_refcount[i] > 0) result++; + } + return result; +} + + int colvarproxy_atoms::load_atoms(char const * /* filename */, cvm::atom_group & /* atoms */, std::string const & /* pdb_field */, @@ -382,7 +179,7 @@ colvarproxy_atom_groups::~colvarproxy_atom_groups() int colvarproxy_atom_groups::reset() { atom_groups_ids.clear(); - atom_groups_ncopies.clear(); + atom_groups_refcount.clear(); atom_groups_masses.clear(); atom_groups_charges.clear(); atom_groups_coms.clear(); @@ -395,7 +192,7 @@ int colvarproxy_atom_groups::reset() int colvarproxy_atom_groups::add_atom_group_slot(int atom_group_id) { atom_groups_ids.push_back(atom_group_id); - atom_groups_ncopies.push_back(1); + atom_groups_refcount.push_back(1); atom_groups_masses.push_back(1.0); atom_groups_charges.push_back(0.0); atom_groups_coms.push_back(cvm::rvector(0.0, 0.0, 0.0)); @@ -427,12 +224,22 @@ void colvarproxy_atom_groups::clear_atom_group(int index) "that was not previously requested.\n", COLVARS_INPUT_ERROR); } - if (atom_groups_ncopies[index] > 0) { - atom_groups_ncopies[index] -= 1; + if (atom_groups_refcount[index] > 0) { + atom_groups_refcount[index] -= 1; } } +size_t colvarproxy_atom_groups::get_num_active_atom_groups() const +{ + size_t result = 0; + for (size_t i = 0; i < atom_groups_refcount.size(); i++) { + if (atom_groups_refcount[i] > 0) result++; + } + return result; +} + + void colvarproxy_atom_groups::compute_rms_atom_groups_applied_force() { atom_groups_rms_applied_force_ = @@ -454,8 +261,8 @@ colvarproxy_smp::colvarproxy_smp() omp_lock_state = NULL; #if defined(_OPENMP) if (omp_get_thread_num() == 0) { - omp_lock_state = reinterpret_cast(new omp_lock_t); - omp_init_lock(reinterpret_cast(omp_lock_state)); + omp_lock_state = new omp_lock_t; + omp_init_lock(omp_lock_state); } #endif } @@ -466,7 +273,7 @@ colvarproxy_smp::~colvarproxy_smp() #if defined(_OPENMP) if (omp_get_thread_num() == 0) { if (omp_lock_state) { - delete reinterpret_cast(omp_lock_state); + delete omp_lock_state; } } #endif @@ -567,7 +374,7 @@ int colvarproxy_smp::smp_thread_id() #if defined(_OPENMP) return omp_get_thread_num(); #else - return COLVARS_NOT_IMPLEMENTED; + return -1; #endif } @@ -577,7 +384,7 @@ int colvarproxy_smp::smp_num_threads() #if defined(_OPENMP) return omp_get_max_threads(); #else - return COLVARS_NOT_IMPLEMENTED; + return -1; #endif } @@ -585,7 +392,7 @@ int colvarproxy_smp::smp_num_threads() int colvarproxy_smp::smp_lock() { #if defined(_OPENMP) - omp_set_lock(reinterpret_cast(omp_lock_state)); + omp_set_lock(omp_lock_state); #endif return COLVARS_OK; } @@ -594,8 +401,7 @@ int colvarproxy_smp::smp_lock() int colvarproxy_smp::smp_trylock() { #if defined(_OPENMP) - return omp_test_lock(reinterpret_cast(omp_lock_state)) ? - COLVARS_OK : COLVARS_ERROR; + return omp_test_lock(omp_lock_state) ? COLVARS_OK : COLVARS_ERROR; #else return COLVARS_OK; #endif @@ -605,7 +411,7 @@ int colvarproxy_smp::smp_trylock() int colvarproxy_smp::smp_unlock() { #if defined(_OPENMP) - omp_unset_lock(reinterpret_cast(omp_lock_state)); + omp_unset_lock(omp_lock_state); #endif return COLVARS_OK; } @@ -651,151 +457,35 @@ int colvarproxy_script::run_colvar_gradient_callback(std::string const & /* name -colvarproxy_io::colvarproxy_io() -{ - input_buffer_ = NULL; - restart_frequency_engine = 0; -} - - -colvarproxy_io::~colvarproxy_io() {} - - -int colvarproxy_io::get_frame(long int&) -{ - return COLVARS_NOT_IMPLEMENTED; -} - - -int colvarproxy_io::set_frame(long int) -{ - return COLVARS_NOT_IMPLEMENTED; -} - - -int colvarproxy_io::backup_file(char const *filename) -{ - // Simplified version of NAMD_file_exists() - int exit_code; - do { -#if defined(_WIN32) && !defined(__CYGWIN__) - // We could use _access_s here, but it is probably too new - exit_code = _access(filename, 00); -#else - exit_code = access(filename, F_OK); -#endif - } while ((exit_code != 0) && (errno == EINTR)); - if (exit_code != 0) { - if (errno == ENOENT) { - // File does not exist - return COLVARS_OK; - } else { - return cvm::error("Unknown error while checking if file \""+ - std::string(filename)+"\" exists.\n", COLVARS_ERROR); - } - } - - // The file exists, then rename it - if (std::string(filename).rfind(std::string(".colvars.state")) != - std::string::npos) { - return rename_file(filename, (std::string(filename)+".old").c_str()); - } else { - return rename_file(filename, (std::string(filename)+".BAK").c_str()); - } -} - - -int colvarproxy_io::remove_file(char const *filename) -{ - int error_code = COLVARS_OK; -#if defined(_WIN32) && !defined(__CYGWIN__) - // Because the file may be open by other processes, rename it to filename.old - std::string const renamed_file(std::string(filename)+".old"); - // It may still be there from an interrupted run, so remove it to be safe - std::remove(renamed_file.c_str()); - int rename_exit_code = 0; - while ((rename_exit_code = std::rename(filename, - renamed_file.c_str())) != 0) { - if (errno == EINTR) continue; - error_code |= COLVARS_FILE_ERROR; - break; - } - // Ask to remove filename.old, but ignore any errors raised - std::remove(renamed_file.c_str()); -#else - if (std::remove(filename)) { - if (errno != ENOENT) { - error_code |= COLVARS_FILE_ERROR; - } - } -#endif - if (error_code != COLVARS_OK) { - return cvm::error("Error: in removing file \""+std::string(filename)+ - "\".\n.", - error_code); - } - return COLVARS_OK; -} - - -int colvarproxy_io::rename_file(char const *filename, char const *newfilename) -{ - int error_code = COLVARS_OK; -#if defined(_WIN32) && !defined(__CYGWIN__) - // On straight Windows, must remove the destination before renaming it - error_code |= remove_file(newfilename); -#endif - int rename_exit_code = 0; - while ((rename_exit_code = std::rename(filename, newfilename)) != 0) { - if (errno == EINTR) continue; - // Call log() instead of error to allow the next try - cvm::log("Error: in renaming file \""+std::string(filename)+"\" to \""+ - std::string(newfilename)+"\".\n."); - error_code |= COLVARS_FILE_ERROR; - if (errno == EXDEV) continue; - break; - } - return rename_exit_code ? error_code : COLVARS_OK; -} - - - colvarproxy::colvarproxy() { colvars = NULL; + // By default, simulation engines allow to immediately request atoms + engine_ready_ = true; b_simulation_running = true; b_simulation_continuing = false; b_delete_requested = false; version_int = -1; features_hash = 0; + config_queue_ = reinterpret_cast(new std::list >); } colvarproxy::~colvarproxy() { - close_files(); + close_output_streams(); if (colvars != NULL) { delete colvars; colvars = NULL; } + delete reinterpret_cast > *>(config_queue_); } -int colvarproxy::close_files() +bool colvarproxy::io_available() { - if (smp_enabled() == COLVARS_OK && smp_thread_id() > 0) { - // Nothing to do on non-master threads - return COLVARS_OK; - } - std::list::iterator osni = output_stream_names.begin(); - std::list::iterator osi = output_files.begin(); - for ( ; osi != output_files.end(); osi++, osni++) { - ((std::ofstream *) (*osi))->close(); - delete *osi; - } - output_files.clear(); - output_stream_names.clear(); - return COLVARS_OK; + return (smp_enabled() == COLVARS_OK && smp_thread_id() == 0) || + (smp_enabled() != COLVARS_OK); } @@ -816,12 +506,41 @@ int colvarproxy::request_deletion() } +void colvarproxy::add_config(std::string const &cmd, std::string const &conf) +{ + reinterpret_cast > *>(config_queue_)->push_back(std::make_pair(cmd, conf)); +} + + int colvarproxy::setup() { return COLVARS_OK; } +int colvarproxy::parse_module_config() +{ + int error_code = COLVARS_OK; + // Read any configuration queued up for Colvars + std::list > *config_queue = reinterpret_cast > *>(config_queue_); + while (config_queue->size() > 0) { + std::pair const &p = config_queue->front(); + if (p.first == "config") { + error_code |= colvars->read_config_string(p.second); + } else if (p.first == "configfile") { + error_code |= colvars->read_config_file(p.second.c_str()); + } else { + error_code |= cvm::error(std::string("Error: invalid keyword \"") + + p.first + + std::string("\" in colvarproxy::setup()\n"), + COLVARS_BUG_ERROR); + } + config_queue->pop_front(); + } + return error_code; +} + + int colvarproxy::update_input() { return COLVARS_OK; @@ -874,7 +593,7 @@ void colvarproxy::print_input_atomic_data() cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ "atoms_ids = "+cvm::to_str(atoms_ids)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ - "atoms_ncopies = "+cvm::to_str(atoms_ncopies)+"\n"); + "atoms_refcount = "+cvm::to_str(atoms_refcount)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ "atoms_masses = "+cvm::to_str(atoms_masses)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ @@ -893,7 +612,7 @@ void colvarproxy::print_input_atomic_data() cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ "atom_groups_ids = "+cvm::to_str(atom_groups_ids)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ - "atom_groups_ncopies = "+cvm::to_str(atom_groups_ncopies)+"\n"); + "atom_groups_refcount = "+cvm::to_str(atom_groups_refcount)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ "atom_groups_masses = "+cvm::to_str(atom_groups_masses)+"\n"); cvm::log("Step "+cvm::to_str(cvm::step_absolute())+", "+ @@ -988,103 +707,3 @@ int colvarproxy::get_version_from_string(char const *version_string) } -void colvarproxy::smp_stream_error() -{ - cvm::error("Error: trying to access an output stream from a " - "multi-threaded region (bug). For a quick workaround, use " - "\"smp off\" in the Colvars config.\n", COLVARS_BUG_ERROR); -} - - -std::ostream * colvarproxy::output_stream(std::string const &output_name, - std::ios_base::openmode mode) -{ - if (cvm::debug()) { - cvm::log("Using colvarproxy::output_stream()\n"); - } - - std::ostream *os = get_output_stream(output_name); - if (os != NULL) return os; - - if (!(mode & (std::ios_base::app | std::ios_base::ate))) { - backup_file(output_name); - } - std::ofstream *osf = new std::ofstream(output_name.c_str(), mode); - if (!osf->is_open()) { - cvm::error("Error: cannot write to file/channel \""+output_name+"\".\n", - COLVARS_FILE_ERROR); - return NULL; - } - output_stream_names.push_back(output_name); - output_files.push_back(osf); - return osf; -} - - -std::ostream *colvarproxy::get_output_stream(std::string const &output_name) -{ - if (smp_enabled() == COLVARS_OK) { - if (smp_thread_id() > 0) smp_stream_error(); - } - std::list::iterator osi = output_files.begin(); - std::list::iterator osni = output_stream_names.begin(); - for ( ; osi != output_files.end(); osi++, osni++) { - if (*osni == output_name) { - return *osi; - } - } - return NULL; -} - - - -int colvarproxy::flush_output_stream(std::ostream *os) -{ - if (smp_enabled() == COLVARS_OK) { - if (smp_thread_id() > 0) smp_stream_error(); - } - std::list::iterator osi = output_files.begin(); - std::list::iterator osni = output_stream_names.begin(); - for ( ; osi != output_files.end(); osi++, osni++) { - if (*osi == os) { - ((std::ofstream *) (*osi))->flush(); - return COLVARS_OK; - } - } - return cvm::error("Error: trying to flush an output file/channel " - "that wasn't open.\n", COLVARS_BUG_ERROR); -} - - -int colvarproxy::flush_output_streams() -{ - if (smp_enabled() == COLVARS_OK && smp_thread_id() > 0) - return COLVARS_OK; - - std::list::iterator osi = output_files.begin(); - for ( ; osi != output_files.end(); osi++) { - ((std::ofstream *) (*osi))->flush(); - } - return COLVARS_OK; -} - - -int colvarproxy::close_output_stream(std::string const &output_name) -{ - if (smp_enabled() == COLVARS_OK) { - if (smp_thread_id() > 0) smp_stream_error(); - } - std::list::iterator osi = output_files.begin(); - std::list::iterator osni = output_stream_names.begin(); - for ( ; osi != output_files.end(); osi++, osni++) { - if (*osni == output_name) { - ((std::ofstream *) (*osi))->close(); - delete *osi; - output_files.erase(osi); - output_stream_names.erase(osni); - return COLVARS_OK; - } - } - return cvm::error("Error: trying to close an output file/channel " - "that wasn't open.\n", COLVARS_BUG_ERROR); -} diff --git a/lib/colvars/colvarproxy.h b/lib/colvars/colvarproxy.h index 3ed3768aef..5733b8b66d 100644 --- a/lib/colvars/colvarproxy.h +++ b/lib/colvars/colvarproxy.h @@ -10,12 +10,11 @@ #ifndef COLVARPROXY_H #define COLVARPROXY_H -#include -#include - #include "colvarmodule.h" #include "colvartypes.h" #include "colvarvalue.h" +#include "colvarproxy_io.h" +#include "colvarproxy_system.h" #include "colvarproxy_tcl.h" #include "colvarproxy_volmaps.h" @@ -38,165 +37,6 @@ class colvarscript; -/// Methods for accessing the simulation system (PBCs, integrator, etc) -class colvarproxy_system { - -public: - - /// Constructor - colvarproxy_system(); - - /// Destructor - virtual ~colvarproxy_system(); - - /// \brief Name of the unit system used internally by Colvars (by default, that of the back-end). - /// Supported depending on the back-end: real (A, kcal/mol), metal (A, eV), electron (Bohr, Hartree), gromacs (nm, kJ/mol) - /// Note: calls to back-end PBC functions assume back-end length unit - /// We use different unit from back-end in VMD bc using PBC functions from colvarproxy base class - /// Colvars internal units are user specified, because the module exchanges info in unknown - /// composite dimensions with user input, while it only exchanges quantities of known - /// dimension with the back-end (length and forces) - std::string units; - - /// \brief Request to set the units used internally by Colvars - virtual int set_unit_system(std::string const &units, bool check_only); - - /// \brief Value of 1 Angstrom in the internal (front-end) Colvars unit for atomic coordinates - /// * defaults to 0. in the base class; derived proxy classes must set it - /// * in VMD proxy, can only be changed when no variables are defined - /// as user-defined values in composite units must be compatible with that system - cvm::real angstrom_value; - - /// \brief Value of 1 Angstrom in the backend's unit for atomic coordinates - virtual cvm::real backend_angstrom_value(); - - /// \brief Value of 1 kcal/mol in the internal Colvars unit for energy - cvm::real kcal_mol_value; - - /// \brief Convert a length from Angstrom to internal - inline cvm::real angstrom_to_internal(cvm::real l) const - { - return l * angstrom_value; - } - - /// \brief Convert a length from internal to Angstrom - inline cvm::real internal_to_angstrom(cvm::real l) const - { - return l / angstrom_value; - } - - // /// \brief Convert a length from back-end unit to internal - // inline cvm::real back_end_to_internal_unit(cvm::real l) { - // if (angstrom_value == 0.) { - // return l / backend_angstrom_value(); - // } - // return l * angstrom_value / backend_angstrom_value(); - // } - - /// \brief Boltzmann constant in internal Colvars units - virtual cvm::real boltzmann(); - - /// \brief Target temperature of the simulation (K units) - virtual cvm::real temperature(); - - /// \brief Time step of the simulation (fs) - virtual cvm::real dt(); - - /// \brief Pseudo-random number with Gaussian distribution - virtual cvm::real rand_gaussian(void); - - /// Pass restraint energy value for current timestep to MD engine - virtual void add_energy(cvm::real energy); - - /// \brief Get the PBC-aware distance vector between two positions - virtual cvm::rvector position_distance(cvm::atom_pos const &pos1, - cvm::atom_pos const &pos2) const; - - /// Recompute PBC reciprocal lattice (assumes XYZ periodicity) - void update_pbc_lattice(); - - /// Set the lattice vectors to zero - void reset_pbc_lattice(); - - /// \brief Tell the proxy whether total forces are needed (they may not - /// always be available) - virtual void request_total_force(bool yesno); - - /// Are total forces being used? - virtual bool total_forces_enabled() const; - - /// Are total forces from the current step available? - virtual bool total_forces_same_step() const; - - /// Get the molecule ID when called in VMD; raise error otherwise - /// \param molid Set this argument equal to the current VMD molid - virtual int get_molid(int &molid); - - /// Get value of alchemical lambda parameter from back-end (if available) - virtual int get_alch_lambda(cvm::real* lambda); - - /// Set value of alchemical lambda parameter to be sent to back-end at end of timestep - void set_alch_lambda(cvm::real lambda); - - /// Send cached value of alchemical lambda parameter to back-end (if available) - virtual int send_alch_lambda(); - - /// Get energy derivative with respect to lambda (if available) - virtual int get_dE_dlambda(cvm::real* dE_dlambda); - - /// Apply a scalar force on dE_dlambda (back-end distributes it onto atoms) - virtual int apply_force_dE_dlambda(cvm::real* force); - - /// Get energy second derivative with respect to lambda (if available) - virtual int get_d2E_dlambda2(cvm::real* d2E_dlambda2); - - /// Force to be applied onto alch. lambda, propagated from biasing forces on dE_dlambda - cvm::real indirect_lambda_biasing_force; - - /// Get weight factor from accelMD - virtual cvm::real get_accelMD_factor() const { - cvm::error("Error: accessing the reweighting factor of accelerated MD " - "is not yet implemented in the MD engine.\n", - COLVARS_NOT_IMPLEMENTED); - return 1.0; - } - virtual bool accelMD_enabled() const { - return false; - } - -protected: - /// Next value of lambda to be sent to back-end - cvm::real cached_alch_lambda; - - /// Whether lambda has been set and needs to be updated in backend - bool cached_alch_lambda_changed; - - /// Whether the total forces have been requested - bool total_force_requested; - - /// \brief Type of boundary conditions - /// - /// Orthogonal and triclinic cells are made available to objects. - /// For any other conditions (mixed periodicity, triclinic cells in LAMMPS) - /// minimum-image distances are computed by the host engine regardless. - enum Boundaries_type { - boundaries_non_periodic, - boundaries_pbc_ortho, - boundaries_pbc_triclinic, - boundaries_unsupported - }; - - /// Type of boundary conditions - Boundaries_type boundaries_type; - - /// Bravais lattice vectors - cvm::rvector unit_cell_x, unit_cell_y, unit_cell_z; - - /// Reciprocal lattice vectors - cvm::rvector reciprocal_cell_x, reciprocal_cell_y, reciprocal_cell_z; -}; - - /// \brief Container of atomic data for processing by Colvars class colvarproxy_atoms { @@ -229,7 +69,7 @@ public: std::string const &segment_id); /// \brief Used by the atom class destructor: rather than deleting the array slot - /// (costly) set the corresponding atoms_ncopies to zero + /// (costly) set the corresponding atoms_refcount to zero virtual void clear_atom(int index); /// \brief Select atom IDs from a file (usually PDB) \param filename name of @@ -260,37 +100,51 @@ public: /// Clear atomic data int reset(); - /// Get the numeric ID of the given atom (for the program) + /// Get the numeric ID of the given atom + /// \param index Internal index in the Colvars arrays inline int get_atom_id(int index) const { return atoms_ids[index]; } /// Get the mass of the given atom + /// \param index Internal index in the Colvars arrays inline cvm::real get_atom_mass(int index) const { return atoms_masses[index]; } + /// Increase the reference count of the given atom + /// \param index Internal index in the Colvars arrays + inline void increase_refcount(int index) + { + atoms_refcount[index] += 1; + } + /// Get the charge of the given atom + /// \param index Internal index in the Colvars arrays inline cvm::real get_atom_charge(int index) const { return atoms_charges[index]; } /// Read the current position of the given atom + /// \param index Internal index in the Colvars arrays inline cvm::rvector get_atom_position(int index) const { return atoms_positions[index]; } /// Read the current total force of the given atom + /// \param index Internal index in the Colvars arrays inline cvm::rvector get_atom_total_force(int index) const { return atoms_total_forces[index]; } /// Request that this force is applied to the given atom + /// \param index Internal index in the Colvars arrays + /// \param new_force Force to add inline void apply_atom_force(int index, cvm::rvector const &new_force) { atoms_new_colvar_forces[index] += new_force; @@ -310,6 +164,9 @@ public: return &atoms_ids; } + /// Return number of atoms with positive reference count + size_t get_num_active_atoms() const; + inline std::vector const *get_atom_masses() const { return &atoms_masses; @@ -406,7 +263,7 @@ protected: /// within the host program std::vector atoms_ids; /// \brief Keep track of how many times each atom is used by a separate colvar object - std::vector atoms_ncopies; + std::vector atoms_refcount; /// \brief Masses of the atoms (allow redefinition during a run, as done e.g. in LAMMPS) std::vector atoms_masses; /// \brief Charges of the atoms (allow redefinition during a run, as done e.g. in LAMMPS) @@ -510,6 +367,9 @@ public: return &atom_groups_ids; } + /// Return number of atom groups with positive reference count + size_t get_num_active_atom_groups() const; + inline std::vector *modify_atom_group_masses() { // TODO updated_masses @@ -561,7 +421,7 @@ protected: /// within the host program std::vector atom_groups_ids; /// \brief Keep track of how many times each group is used by a separate cvc - std::vector atom_groups_ncopies; + std::vector atom_groups_refcount; /// \brief Total masses of the atom groups std::vector atom_groups_masses; /// \brief Total charges of the atom groups (allow redefinition during a run, as done e.g. in LAMMPS) @@ -584,6 +444,12 @@ protected: }; +#if defined(_OPENMP) +#include +#else +struct omp_lock_t; +#endif + /// \brief Methods for SMP parallelization class colvarproxy_smp { @@ -629,7 +495,7 @@ public: protected: /// Lock state for OpenMP - void *omp_lock_state; + omp_lock_t *omp_lock_state; }; @@ -698,108 +564,6 @@ public: }; -/// Methods for data input/output -class colvarproxy_io { - -public: - - /// Constructor - colvarproxy_io(); - - /// Destructor - virtual ~colvarproxy_io(); - - /// \brief Save the current frame number in the argument given - // Returns error code - virtual int get_frame(long int &); - - /// \brief Set the current frame number (as well as colvarmodule::it) - // Returns error code - virtual int set_frame(long int); - - /// \brief Rename the given file, before overwriting it - virtual int backup_file(char const *filename); - - /// \brief Rename the given file, before overwriting it - inline int backup_file(std::string const &filename) - { - return backup_file(filename.c_str()); - } - - /// Remove the given file (on Windows only, rename to filename.old) - virtual int remove_file(char const *filename); - - /// Remove the given file (on Windows only, rename to filename.old) - inline int remove_file(std::string const &filename) - { - return remove_file(filename.c_str()); - } - - /// Rename the given file - virtual int rename_file(char const *filename, char const *newfilename); - - /// Rename the given file - inline int rename_file(std::string const &filename, - std::string const &newfilename) - { - return rename_file(filename.c_str(), newfilename.c_str()); - } - - /// Prefix of the input state file to be read next - inline std::string & input_prefix() - { - return input_prefix_str; - } - - /// Default prefix to be used for all output files (final configuration) - inline std::string & output_prefix() - { - return output_prefix_str; - } - - /// Prefix of the restart (checkpoint) file to be written next - inline std::string & restart_output_prefix() - { - return restart_output_prefix_str; - } - - /// Default restart frequency (as set by the simulation engine) - inline int default_restart_frequency() const - { - return restart_frequency_engine; - } - - /// Buffer from which the input state information may be read - inline char const * & input_buffer() - { - return input_buffer_; - } - -protected: - - /// Prefix of the input state file to be read next - std::string input_prefix_str; - - /// Default prefix to be used for all output files (final configuration) - std::string output_prefix_str; - - /// Prefix of the restart (checkpoint) file to be written next - std::string restart_output_prefix_str; - - /// How often the simulation engine will write its own restart - int restart_frequency_engine; - - /// \brief Currently opened output files: by default, these are ofstream objects. - /// Allows redefinition to implement different output mechanisms - std::list output_files; - /// \brief Identifiers for output_stream objects: by default, these are the names of the files - std::list output_stream_names; - - /// Buffer from which the input state information may be read - char const *input_buffer_; -}; - - /// \brief Interface between the collective variables module and /// the simulation or analysis program (NAMD, VMD, LAMMPS...). @@ -827,6 +591,8 @@ public: /// Destructor virtual ~colvarproxy(); + virtual bool io_available() /* override */; + /// Request deallocation of the module (currently only implemented by VMD) virtual int request_deletion(); @@ -839,21 +605,30 @@ public: /// \brief Reset proxy state, e.g. requested atoms virtual int reset(); - /// Close any open files to prevent data loss - int close_files(); + /// (Re)initialize the module + virtual int parse_module_config(); - /// (Re)initialize required member data after construction + /// (Re)initialize required member data (called after the module) virtual int setup(); - /// \brief Update data required by the colvars module (e.g. cache atom positions) + /// Whether the engine allows to fully initialize Colvars immediately + inline bool engine_ready() const + { + return engine_ready_; + } + + /// Enqueue new configuration text, to be parsed as soon as possible + void add_config(std::string const &cmd, std::string const &conf); + + /// Update data required by Colvars module (e.g. read atom positions) /// /// TODO Break up colvarproxy_namd and colvarproxy_lammps function into these virtual int update_input(); - /// \brief Update data based from the results of a module update (e.g. send forces) + /// Update data based on the results of a Colvars call (e.g. send forces) virtual int update_output(); - /// Carry out operations needed before next step is run + /// Carry out operations needed before next simulation step is run int end_of_step(); /// Print a message to the main log @@ -903,26 +678,11 @@ public: return version_int; } - /// \brief Returns a reference to the given output channel; - /// if this is not open already, then open it - virtual std::ostream *output_stream(std::string const &output_name, - std::ios_base::openmode mode = - std::ios_base::out); - - /// Returns a reference to output_name if it exists, NULL otherwise - virtual std::ostream *get_output_stream(std::string const &output_name); - - /// \brief Flushes the given output channel - virtual int flush_output_stream(std::ostream *os); - - /// \brief Flushes all output channels - virtual int flush_output_streams(); - - /// \brief Closes the given output channel - virtual int close_output_stream(std::string const &output_name); - protected: + /// Whether the engine allows to fully initialize Colvars immediately + bool engine_ready_; + /// Collected error messages std::string error_output; @@ -943,8 +703,10 @@ protected: /// Track which features have been acknowledged during the last run size_t features_hash; - /// Raise when the output stream functions are used on threads other than 0 - void smp_stream_error(); +private: + + /// Queue of config strings or files to be fed to the module + void *config_queue_; }; diff --git a/lib/colvars/colvarproxy_io.cpp b/lib/colvars/colvarproxy_io.cpp new file mode 100644 index 0000000000..225ca40bef --- /dev/null +++ b/lib/colvars/colvarproxy_io.cpp @@ -0,0 +1,310 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +// Using access() to check if a file exists (until we can assume C++14/17) +#if !defined(_WIN32) || defined(__CYGWIN__) +#include +#endif +#if defined(_WIN32) +#include +#endif + +#include +#include + +#include +#include +#include +#include + +#include "colvarmodule.h" +#include "colvarproxy_io.h" + + +colvarproxy_io::colvarproxy_io() +{ + input_buffer_ = NULL; + restart_frequency_engine = 0; + input_stream_error_ = new std::istringstream(); + input_stream_error_->setstate(std::ios::badbit); + output_stream_error_ = new std::ostringstream(); + output_stream_error_->setstate(std::ios::badbit); +} + + +colvarproxy_io::~colvarproxy_io() +{ + delete input_stream_error_; + close_input_streams(); + delete output_stream_error_; + close_output_streams(); +} + + +bool colvarproxy_io::io_available() +{ + return false; +} + + +int colvarproxy_io::get_frame(long int&) +{ + return COLVARS_NOT_IMPLEMENTED; +} + + +int colvarproxy_io::set_frame(long int) +{ + return COLVARS_NOT_IMPLEMENTED; +} + + +int colvarproxy_io::backup_file(char const *filename) +{ + // Simplified version of NAMD_file_exists() + int exit_code; + do { +#if defined(_WIN32) && !defined(__CYGWIN__) + // We could use _access_s here, but it is probably too new + exit_code = _access(filename, 00); +#else + exit_code = access(filename, F_OK); +#endif + } while ((exit_code != 0) && (errno == EINTR)); + if (exit_code != 0) { + if (errno == ENOENT) { + // File does not exist + return COLVARS_OK; + } else { + return cvm::error("Unknown error while checking if file \""+ + std::string(filename)+"\" exists.\n", COLVARS_ERROR); + } + } + + // The file exists, then rename it + if (std::string(filename).rfind(std::string(".colvars.state")) != + std::string::npos) { + return rename_file(filename, (std::string(filename)+".old").c_str()); + } else { + return rename_file(filename, (std::string(filename)+".BAK").c_str()); + } +} + + +int colvarproxy_io::remove_file(char const *filename) +{ + int error_code = COLVARS_OK; +#if defined(_WIN32) && !defined(__CYGWIN__) + // Because the file may be open by other processes, rename it to filename.old + std::string const renamed_file(std::string(filename)+".old"); + // It may still be there from an interrupted run, so remove it to be safe + std::remove(renamed_file.c_str()); + int rename_exit_code = 0; + while ((rename_exit_code = std::rename(filename, + renamed_file.c_str())) != 0) { + if (errno == EINTR) continue; + error_code |= COLVARS_FILE_ERROR; + break; + } + // Ask to remove filename.old, but ignore any errors raised + std::remove(renamed_file.c_str()); +#else + if (std::remove(filename)) { + if (errno != ENOENT) { + error_code |= COLVARS_FILE_ERROR; + } + } +#endif + if (error_code != COLVARS_OK) { + return cvm::error("Error: in removing file \""+std::string(filename)+ + "\".\n.", + error_code); + } + return COLVARS_OK; +} + + +int colvarproxy_io::rename_file(char const *filename, char const *newfilename) +{ + int error_code = COLVARS_OK; +#if defined(_WIN32) && !defined(__CYGWIN__) + // On straight Windows, must remove the destination before renaming it + error_code |= remove_file(newfilename); +#endif + int rename_exit_code = 0; + while ((rename_exit_code = std::rename(filename, newfilename)) != 0) { + if (errno == EINTR) continue; + // Call log() instead of error to allow the next try + cvm::log("Error: in renaming file \""+std::string(filename)+"\" to \""+ + std::string(newfilename)+"\".\n."); + error_code |= COLVARS_FILE_ERROR; + if (errno == EXDEV) continue; + break; + } + return rename_exit_code ? error_code : COLVARS_OK; +} + + +std::istream &colvarproxy_io::input_stream(std::string const &input_name, + std::string const description, + bool error_on_fail) +{ + if (!io_available()) { + cvm::error("Error: trying to access an input file/channel " + "from the wrong thread.\n", COLVARS_BUG_ERROR); + return *input_stream_error_; + } + + if (colvarproxy_io::input_stream_exists(input_name)) { + return *(input_streams_[input_name]); + } + + // Using binary to work around differences in line termination conventions + // See https://github.com/Colvars/colvars/commit/8236879f7de4 + input_streams_[input_name] = new std::ifstream(input_name.c_str(), + std::ios::binary); + + if (input_streams_[input_name]->fail() && error_on_fail) { + cvm::error("Error: cannot open "+description+" \""+input_name+"\".\n", + COLVARS_FILE_ERROR); + } + + return *(input_streams_[input_name]); +} + + +bool colvarproxy_io::input_stream_exists(std::string const &input_name) +{ + return (input_streams_.count(input_name) > 0); +} + + +int colvarproxy_io::close_input_stream(std::string const &input_name) +{ + if (colvarproxy_io::input_stream_exists(input_name)) { + delete input_streams_[input_name]; + input_streams_.erase(input_name); + return COLVARS_OK; + } + return cvm::error("Error: input file/channel \""+input_name+ + "\" does not exist.\n", COLVARS_FILE_ERROR); +} + + +int colvarproxy_io::close_input_streams() +{ + for (std::map::iterator ii = input_streams_.begin(); + ii != input_streams_.end(); + ii++) { + delete ii->second; + } + input_streams_.clear(); + return COLVARS_OK; +} + + +std::ostream & colvarproxy_io::output_stream(std::string const &output_name, + std::string const description) +{ + if (cvm::debug()) { + cvm::log("Using colvarproxy_io::output_stream()\n"); + } + + if (!io_available()) { + cvm::error("Error: trying to access an output file/channel " + "from the wrong thread.\n", COLVARS_BUG_ERROR); + return *output_stream_error_; + } + + if (colvarproxy_io::output_stream_exists(output_name)) { + return *(output_streams_[output_name]); + } + + backup_file(output_name.c_str()); + + output_streams_[output_name] = new std::ofstream(output_name.c_str()); + if (!*(output_streams_[output_name])) { + cvm::error("Error: cannot write to "+description+" \""+output_name+"\".\n", + COLVARS_FILE_ERROR); + } + + return *(output_streams_[output_name]); +} + + +bool colvarproxy_io::output_stream_exists(std::string const &output_name) +{ + return (output_streams_.count(output_name) > 0); +} + + +int colvarproxy_io::flush_output_stream(std::string const &output_name) +{ + if (!io_available()) { + // No-op + return COLVARS_OK; + } + + if (colvarproxy_io::output_stream_exists(output_name)) { + (dynamic_cast(output_streams_[output_name]))->flush(); + return COLVARS_OK; + } + + return COLVARS_OK; +} + + +int colvarproxy_io::flush_output_streams() +{ + if (!io_available()) { + return COLVARS_OK; + } + + for (std::map::iterator osi = output_streams_.begin(); + osi != output_streams_.end(); + osi++) { + (dynamic_cast(osi->second))->flush(); + } + + return COLVARS_OK; +} + + +int colvarproxy_io::close_output_stream(std::string const &output_name) +{ + if (!io_available()) { + return cvm::error("Error: trying to access an output file/channel " + "from the wrong thread.\n", COLVARS_BUG_ERROR); + } + + if (colvarproxy_io::output_stream_exists(output_name)) { + (dynamic_cast(output_streams_[output_name]))->close(); + delete output_streams_[output_name]; + output_streams_.erase(output_name); + } + + return COLVARS_OK; +} + + +int colvarproxy_io::close_output_streams() +{ + if (! io_available()) { + return COLVARS_OK; + } + + for (std::map::iterator osi = output_streams_.begin(); + osi != output_streams_.end(); + osi++) { + (dynamic_cast(osi->second))->close(); + } + output_streams_.clear(); + + return COLVARS_OK; +} diff --git a/lib/colvars/colvarproxy_io.h b/lib/colvars/colvarproxy_io.h new file mode 100644 index 0000000000..ee217362d4 --- /dev/null +++ b/lib/colvars/colvarproxy_io.h @@ -0,0 +1,167 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +#ifndef COLVARPROXY_IO_H +#define COLVARPROXY_IO_H + +#include +#include +#include + + +/// Methods for data input/output +class colvarproxy_io { + +public: + + /// Constructor + colvarproxy_io(); + + /// Destructor + virtual ~colvarproxy_io(); + + /// Ensure that we're on the main thread (derived class will do actual check) + virtual bool io_available(); + + /// \brief Save the current frame number in the argument given + // Returns error code + virtual int get_frame(long int &); + + /// \brief Set the current frame number (as well as colvarmodule::it) + // Returns error code + virtual int set_frame(long int); + + /// \brief Rename the given file, before overwriting it + virtual int backup_file(char const *filename); + + /// \brief Rename the given file, before overwriting it + inline int backup_file(std::string const &filename) + { + return backup_file(filename.c_str()); + } + + /// Remove the given file (on Windows only, rename to filename.old) + virtual int remove_file(char const *filename); + + /// Remove the given file (on Windows only, rename to filename.old) + inline int remove_file(std::string const &filename) + { + return remove_file(filename.c_str()); + } + + /// Rename the given file + virtual int rename_file(char const *filename, char const *newfilename); + + /// Rename the given file + inline int rename_file(std::string const &filename, + std::string const &newfilename) + { + return rename_file(filename.c_str(), newfilename.c_str()); + } + + /// Prefix of the input state file to be read next + inline std::string & input_prefix() + { + return input_prefix_str; + } + + /// Default prefix to be used for all output files (final configuration) + inline std::string & output_prefix() + { + return output_prefix_str; + } + + /// Prefix of the restart (checkpoint) file to be written next + inline std::string & restart_output_prefix() + { + return restart_output_prefix_str; + } + + /// Default restart frequency (as set by the simulation engine) + inline int default_restart_frequency() const + { + return restart_frequency_engine; + } + + /// Buffer from which the input state information may be read + inline char const * & input_buffer() + { + return input_buffer_; + } + + /// Returns a reference to given input stream, creating it if needed + /// \param input_name File name (later only a handle) + /// \param description Purpose of the file + /// \param error_on_fail Raise error when failing to open (allow testing) + virtual std::istream &input_stream(std::string const &input_name, + std::string const description = "file/channel", + bool error_on_fail = true); + + /// Check if the file/channel is open (without opening it if not) + virtual bool input_stream_exists(std::string const &input_name); + + /// Closes the given input stream + virtual int close_input_stream(std::string const &input_name); + + /// Closes all input streams + virtual int close_input_streams(); + + /// Returns a reference to the named output file/channel (open it if needed) + /// \param output_name File name or identifier + /// \param description Purpose of the file + virtual std::ostream &output_stream(std::string const &output_name, + std::string const description = "file/channel"); + + /// Check if the file/channel is open (without opening it if not) + virtual bool output_stream_exists(std::string const &output_name); + + /// Flushes the given output file/channel + virtual int flush_output_stream(std::string const &output_name); + + /// Flushes all output files/channels + virtual int flush_output_streams(); + + /// Closes the given output file/channel + virtual int close_output_stream(std::string const &output_name); + + /// Close all open files/channels to prevent data loss + virtual int close_output_streams(); + +protected: + + /// Prefix of the input state file to be read next + std::string input_prefix_str; + + /// Default prefix to be used for all output files (final configuration) + std::string output_prefix_str; + + /// Prefix of the restart (checkpoint) file to be written next + std::string restart_output_prefix_str; + + /// How often the simulation engine will write its own restart + int restart_frequency_engine; + + /// Container of input files/channels indexed by path name + std::map input_streams_; + + /// Object whose reference is returned when read errors occur + std::istream *input_stream_error_; + + /// Currently open output files/channels + std::map output_streams_; + + /// Object whose reference is returned when write errors occur + std::ostream *output_stream_error_; + + /// Buffer from which the input state information may be read + char const *input_buffer_; +}; + + +#endif diff --git a/lib/colvars/colvarproxy_system.cpp b/lib/colvars/colvarproxy_system.cpp new file mode 100644 index 0000000000..0a2769dcc9 --- /dev/null +++ b/lib/colvars/colvarproxy_system.cpp @@ -0,0 +1,203 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + + +#include "colvarmodule.h" +#include "colvartypes.h" +#include "colvarproxy_system.h" + + + +colvarproxy_system::colvarproxy_system() +{ + angstrom_value_ = 0.0; + kcal_mol_value_ = 0.0; + target_temperature_ = 0.0; + boltzmann_ = 0.001987191; // Default: kcal/mol/K + boundaries_type = boundaries_unsupported; + total_force_requested = false; + indirect_lambda_biasing_force = 0.0; + cached_alch_lambda_changed = false; + cached_alch_lambda = -1.0; + reset_pbc_lattice(); +} + + +colvarproxy_system::~colvarproxy_system() {} + + +int colvarproxy_system::set_unit_system(std::string const & /* units */, + bool /* check_only */) +{ + return COLVARS_NOT_IMPLEMENTED; +} + + +int colvarproxy_system::set_target_temperature(cvm::real T) +{ + target_temperature_ = T; + return COLVARS_OK; +} + + +cvm::real colvarproxy_system::dt() +{ + // TODO define, document and implement a user method to set the value of this + return 1.0; +} + + +cvm::real colvarproxy_system::rand_gaussian() +{ + // TODO define, document and implement a user method to set the value of this + return 0.0; +} + + +void colvarproxy_system::add_energy(cvm::real /* energy */) {} + + +void colvarproxy_system::request_total_force(bool yesno) +{ + if (yesno == true) + cvm::error("Error: total forces are currently not implemented.\n", + COLVARS_NOT_IMPLEMENTED); +} + + +bool colvarproxy_system::total_forces_enabled() const +{ + return false; +} + + +bool colvarproxy_system::total_forces_same_step() const +{ + return false; +} + + +inline int round_to_integer(cvm::real x) +{ + return int(cvm::floor(x+0.5)); +} + + +void colvarproxy_system::update_pbc_lattice() +{ + // Periodicity is assumed in all directions + + if (boundaries_type == boundaries_unsupported || + boundaries_type == boundaries_non_periodic) { + cvm::error("Error: setting PBC lattice with unsupported boundaries.\n", + COLVARS_BUG_ERROR); + return; + } + + { + cvm::rvector const v = cvm::rvector::outer(unit_cell_y, unit_cell_z); + reciprocal_cell_x = v/(v*unit_cell_x); + } + { + cvm::rvector const v = cvm::rvector::outer(unit_cell_z, unit_cell_x); + reciprocal_cell_y = v/(v*unit_cell_y); + } + { + cvm::rvector const v = cvm::rvector::outer(unit_cell_x, unit_cell_y); + reciprocal_cell_z = v/(v*unit_cell_z); + } +} + + +void colvarproxy_system::reset_pbc_lattice() +{ + unit_cell_x.reset(); + unit_cell_y.reset(); + unit_cell_z.reset(); + reciprocal_cell_x.reset(); + reciprocal_cell_y.reset(); + reciprocal_cell_z.reset(); +} + + +cvm::rvector colvarproxy_system::position_distance(cvm::atom_pos const &pos1, + cvm::atom_pos const &pos2) + const +{ + if (boundaries_type == boundaries_unsupported) { + cvm::error("Error: unsupported boundary conditions.\n", COLVARS_INPUT_ERROR); + } + + cvm::rvector diff = (pos2 - pos1); + + if (boundaries_type == boundaries_non_periodic) return diff; + + cvm::real const x_shift = round_to_integer(reciprocal_cell_x*diff); + cvm::real const y_shift = round_to_integer(reciprocal_cell_y*diff); + cvm::real const z_shift = round_to_integer(reciprocal_cell_z*diff); + + diff.x -= x_shift*unit_cell_x.x + y_shift*unit_cell_y.x + + z_shift*unit_cell_z.x; + diff.y -= x_shift*unit_cell_x.y + y_shift*unit_cell_y.y + + z_shift*unit_cell_z.y; + diff.z -= x_shift*unit_cell_x.z + y_shift*unit_cell_y.z + + z_shift*unit_cell_z.z; + + return diff; +} + + +int colvarproxy_system::get_molid(int &) +{ + cvm::error("Error: only VMD allows the use of multiple \"molecules\", " + "i.e. multiple molecular systems.", COLVARS_NOT_IMPLEMENTED); + return -1; +} + + +int colvarproxy_system::get_alch_lambda(cvm::real * /* lambda */) +{ + return cvm::error("Error in get_alch_lambda: alchemical lambda dynamics is not supported by this build.", + COLVARS_NOT_IMPLEMENTED); +} + + +void colvarproxy_system::set_alch_lambda(cvm::real lambda) +{ + cached_alch_lambda = lambda; + cached_alch_lambda_changed = true; +} + + +int colvarproxy_system::send_alch_lambda() +{ + return cvm::error("Error in set_alch_lambda: alchemical lambda dynamics is not supported by this build.", + COLVARS_NOT_IMPLEMENTED); +} + + +int colvarproxy_system::get_dE_dlambda(cvm::real * /* force */) +{ + return cvm::error("Error in get_dE_dlambda: alchemical lambda dynamics is not supported by this build.", + COLVARS_NOT_IMPLEMENTED); +} + + +int colvarproxy_system::apply_force_dE_dlambda(cvm::real* /* force */) +{ + return cvm::error("Error in apply_force_dE_dlambda: function is not implemented by this build.", + COLVARS_NOT_IMPLEMENTED); +} + + +int colvarproxy_system::get_d2E_dlambda2(cvm::real*) +{ + return cvm::error("Error in get_d2E_dlambda2: function is not implemented by this build.", + COLVARS_NOT_IMPLEMENTED); +} diff --git a/lib/colvars/colvarproxy_system.h b/lib/colvars/colvarproxy_system.h new file mode 100644 index 0000000000..be3cd346c2 --- /dev/null +++ b/lib/colvars/colvarproxy_system.h @@ -0,0 +1,177 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/Colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + +#ifndef COLVARPROXY_SYSTEM_H +#define COLVARPROXY_SYSTEM_H + + +/// Methods for accessing the simulation system (PBCs, integrator, etc) +class colvarproxy_system { + +public: + + /// Constructor + colvarproxy_system(); + + /// Destructor + virtual ~colvarproxy_system(); + + /// \brief Name of the unit system used internally by Colvars (by default, that of the back-end). + /// Supported depending on the back-end: real (A, kcal/mol), metal (A, eV), electron (Bohr, Hartree), gromacs (nm, kJ/mol) + /// Note: calls to back-end PBC functions assume back-end length unit + /// We use different unit from back-end in VMD bc using PBC functions from colvarproxy base class + /// Colvars internal units are user specified, because the module exchanges info in unknown + /// composite dimensions with user input, while it only exchanges quantities of known + /// dimension with the back-end (length and forces) + std::string units; + + /// \brief Request to set the units used internally by Colvars + virtual int set_unit_system(std::string const &units, bool check_only); + + /// \brief Convert a length from Angstrom to internal + inline cvm::real angstrom_to_internal(cvm::real l) const + { + return l * angstrom_value_; + } + + /// \brief Convert a length from internal to Angstrom + inline cvm::real internal_to_angstrom(cvm::real l) const + { + return l / angstrom_value_; + } + + /// Boltzmann constant, with unit the same as energy / K + inline cvm::real boltzmann() const + { + return boltzmann_; + } + + /// Current target temperature of the simulation (K units) + inline cvm::real target_temperature() const + { + return target_temperature_; + } + + /// Set the current target temperature of the simulation (K units) + virtual int set_target_temperature(cvm::real T); + + /// \brief Time step of the simulation (fs) + virtual cvm::real dt(); + + /// \brief Pseudo-random number with Gaussian distribution + virtual cvm::real rand_gaussian(void); + + /// Pass restraint energy value for current timestep to MD engine + virtual void add_energy(cvm::real energy); + + /// \brief Get the PBC-aware distance vector between two positions + virtual cvm::rvector position_distance(cvm::atom_pos const &pos1, + cvm::atom_pos const &pos2) const; + + /// Recompute PBC reciprocal lattice (assumes XYZ periodicity) + void update_pbc_lattice(); + + /// Set the lattice vectors to zero + void reset_pbc_lattice(); + + /// \brief Tell the proxy whether total forces are needed (they may not + /// always be available) + virtual void request_total_force(bool yesno); + + /// Are total forces being used? + virtual bool total_forces_enabled() const; + + /// Are total forces from the current step available? + virtual bool total_forces_same_step() const; + + /// Get the molecule ID when called in VMD; raise error otherwise + /// \param molid Set this argument equal to the current VMD molid + virtual int get_molid(int &molid); + + /// Get value of alchemical lambda parameter from back-end (if available) + virtual int get_alch_lambda(cvm::real* lambda); + + /// Set value of alchemical lambda parameter to be sent to back-end at end of timestep + void set_alch_lambda(cvm::real lambda); + + /// Send cached value of alchemical lambda parameter to back-end (if available) + virtual int send_alch_lambda(); + + /// Get energy derivative with respect to lambda (if available) + virtual int get_dE_dlambda(cvm::real* dE_dlambda); + + /// Apply a scalar force on dE_dlambda (back-end distributes it onto atoms) + virtual int apply_force_dE_dlambda(cvm::real* force); + + /// Get energy second derivative with respect to lambda (if available) + virtual int get_d2E_dlambda2(cvm::real* d2E_dlambda2); + + /// Force to be applied onto alch. lambda, propagated from biasing forces on dE_dlambda + cvm::real indirect_lambda_biasing_force; + + /// Get weight factor from accelMD + virtual cvm::real get_accelMD_factor() const { + cvm::error("Error: accessing the reweighting factor of accelerated MD " + "is not yet implemented in the MD engine.\n", + COLVARS_NOT_IMPLEMENTED); + return 1.0; + } + virtual bool accelMD_enabled() const { + return false; + } + +protected: + + /// Next value of lambda to be sent to back-end + cvm::real cached_alch_lambda; + + /// Whether lambda has been set and needs to be updated in backend + bool cached_alch_lambda_changed; + + /// Boltzmann constant in internal Colvars units + cvm::real boltzmann_; + + /// Most up to date target temperature for the system (in K) + cvm::real target_temperature_; + + /// \brief Value of 1 Angstrom in the internal (front-end) Colvars unit for atomic coordinates + /// * defaults to 0 in the base class; derived proxy classes must set it + /// * in VMD proxy, can only be changed when no variables are defined + /// as user-defined values in composite units must be compatible with that system + cvm::real angstrom_value_; + + /// \brief Value of 1 kcal/mol in the internal Colvars unit for energy + cvm::real kcal_mol_value_; + + /// Whether the total forces have been requested + bool total_force_requested; + + /// \brief Type of boundary conditions + /// + /// Orthogonal and triclinic cells are made available to objects. + /// For any other conditions (mixed periodicity, triclinic cells in LAMMPS) + /// minimum-image distances are computed by the host engine regardless. + enum Boundaries_type { + boundaries_non_periodic, + boundaries_pbc_ortho, + boundaries_pbc_triclinic, + boundaries_unsupported + }; + + /// Type of boundary conditions + Boundaries_type boundaries_type; + + /// Bravais lattice vectors + cvm::rvector unit_cell_x, unit_cell_y, unit_cell_z; + + /// Reciprocal lattice vectors + cvm::rvector reciprocal_cell_x, reciprocal_cell_y, reciprocal_cell_z; +}; + +#endif diff --git a/lib/colvars/colvarproxy_tcl.cpp b/lib/colvars/colvarproxy_tcl.cpp index 700492f0e7..5bf97a0d98 100644 --- a/lib/colvars/colvarproxy_tcl.cpp +++ b/lib/colvars/colvarproxy_tcl.cpp @@ -8,6 +8,7 @@ // Colvars repository at GitHub. #include +#include #include "colvarmodule.h" #include "colvarproxy.h" diff --git a/lib/colvars/colvarproxy_volmaps.cpp b/lib/colvars/colvarproxy_volmaps.cpp index d0ae8b51ff..6c1f11e32e 100644 --- a/lib/colvars/colvarproxy_volmaps.cpp +++ b/lib/colvars/colvarproxy_volmaps.cpp @@ -33,7 +33,7 @@ int colvarproxy_volmaps::reset() clear_volmap(i); } volmaps_ids.clear(); - volmaps_ncopies.clear(); + volmaps_refcount.clear(); volmaps_values.clear(); volmaps_new_colvar_forces.clear(); return COLVARS_OK; @@ -43,7 +43,7 @@ int colvarproxy_volmaps::reset() int colvarproxy_volmaps::add_volmap_slot(int volmap_id) { volmaps_ids.push_back(volmap_id); - volmaps_ncopies.push_back(1); + volmaps_refcount.push_back(1); volmaps_values.push_back(0.0); volmaps_new_colvar_forces.push_back(0.0); return (volmaps_ids.size() - 1); @@ -95,8 +95,8 @@ void colvarproxy_volmaps::clear_volmap(int index) "previously requested.\n", COLVARS_INPUT_ERROR); } - if (volmaps_ncopies[index] > 0) { - volmaps_ncopies[index] -= 1; + if (volmaps_refcount[index] > 0) { + volmaps_refcount[index] -= 1; } } diff --git a/lib/colvars/colvarproxy_volmaps.h b/lib/colvars/colvarproxy_volmaps.h index 6e88ee83f9..f8c9ba8539 100644 --- a/lib/colvars/colvarproxy_volmaps.h +++ b/lib/colvars/colvarproxy_volmaps.h @@ -108,7 +108,7 @@ protected: /// \brief Keep track of how many times each vol map is used by a /// separate colvar object - std::vector volmaps_ncopies; + std::vector volmaps_refcount; /// \brief Current values of the vol maps std::vector volmaps_values; diff --git a/lib/colvars/colvars_version.h b/lib/colvars/colvars_version.h index d2a48f8af7..d500c0e5ec 100644 --- a/lib/colvars/colvars_version.h +++ b/lib/colvars/colvars_version.h @@ -1,3 +1,3 @@ #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2022-05-24" +#define COLVARS_VERSION "2023-05-01" #endif diff --git a/lib/colvars/colvarscript_commands.h b/lib/colvars/colvarscript_commands.h index 7f208e5da6..6dd63d82d2 100644 --- a/lib/colvars/colvarscript_commands.h +++ b/lib/colvars/colvarscript_commands.h @@ -134,11 +134,19 @@ CVSCRIPT(cv_config, char const *conf_str = script->obj_to_str(script->get_module_cmd_arg(0, objc, objv)); std::string const conf(conf_str); - if (cvm::main()->read_config_string(conf) == COLVARS_OK) { - return COLVARS_OK; + script->proxy()->add_config("config", conf); + if (script->proxy()->engine_ready()) { + // Engine allows immediate initialization + if ((script->proxy()->parse_module_config() | + script->proxy()->setup()) == COLVARS_OK) { + return COLVARS_OK; + } else { + script->add_error_msg("Error parsing configuration string"); + return COLVARSCRIPT_ERROR; + } } - script->add_error_msg("Error parsing configuration string"); - return COLVARSCRIPT_ERROR; + // Engine not ready, config will be read during proxy->setup() + return COLVARS_OK; ) CVSCRIPT(cv_configfile, @@ -146,13 +154,20 @@ CVSCRIPT(cv_configfile, 1, 1, "conf_file : string - Path to configuration file", char const *conf_file_name = - script->obj_to_str(script->get_module_cmd_arg(0, objc, objv)); - if (script->module()->read_config_file(conf_file_name) == COLVARS_OK) { - return COLVARS_OK; - } else { - script->add_error_msg("Error parsing configuration file"); - return COLVARSCRIPT_ERROR; + script->obj_to_str(script->get_module_cmd_arg(0, objc, objv)); + script->proxy()->add_config("configfile", std::string(conf_file_name)); + if (script->proxy()->engine_ready()) { + // Engine allows immediate initialization + if ((script->proxy()->parse_module_config() | + script->proxy()->setup()) == COLVARS_OK) { + return COLVARS_OK; + } else { + script->add_error_msg("Error parsing configuration file"); + return COLVARSCRIPT_ERROR; + } } + // Engine not ready, config will be read during proxy->setup() + return COLVARS_OK; ) CVSCRIPT(cv_delete, @@ -309,6 +324,51 @@ CVSCRIPT(cv_getenergy, return COLVARS_OK; ) +CVSCRIPT(cv_getnumactiveatomgroups, + "Get the number of atom groups that currently have positive ref counts\n" + "count : integer - Total number of atom groups", + 0, 0, + "", + script->set_result_int(static_cast(script->proxy()->get_num_active_atom_groups())); + return COLVARS_OK; + ) + +CVSCRIPT(cv_getnumactiveatoms, + "Get the number of atoms that currently have positive ref counts\n" + "count : integer - Total number of atoms", + 0, 0, + "", + script->set_result_int(static_cast(script->proxy()->get_num_active_atoms())); + return COLVARS_OK; + ) + +CVSCRIPT(cv_getnumatoms, + "Get the number of requested atoms, including those not in use now\n" + "count : integer - Total number of atoms", + 0, 0, + "", + script->set_result_int(static_cast(script->proxy()->get_atom_ids()->size())); + return COLVARS_OK; + ) + +CVSCRIPT(cv_getstepabsolute, + "Get the current step number of the simulation (including restarts)\n" + "step : int - Absolute step number", + 0, 0, + "", + script->set_result_int(cvm::step_absolute()); + return COLVARS_OK; + ) + +CVSCRIPT(cv_getsteprelative, + "Get the current step number from the start of this job\n" + "step : int - Relative step number", + 0, 0, + "", + script->set_result_int(cvm::step_relative()); + return COLVARS_OK; + ) + CVSCRIPT(cv_help, "Get the help string of the Colvars scripting interface\n" "help : string - Help string", @@ -481,6 +541,7 @@ CVSCRIPT(cv_reset, "Delete all internal configuration", 0, 0, "", + cvm::log("Resetting the Collective Variables module."); return script->module()->reset(); ) @@ -516,6 +577,20 @@ CVSCRIPT(cv_savetostring, return script->module()->write_restart_string(script->modify_str_result()); ) +CVSCRIPT(cv_targettemperature, + "Get/set target temperature, overriding what the MD engine provides\n" + "T : float - Current target temperature in K", + 0, 1, + "T : float - New target temperature in K", + char const *Targ = + script->obj_to_str(script->get_module_cmd_arg(0, objc, objv)); + if (Targ == NULL) { + return script->set_result_real(script->proxy()->target_temperature()); + } else { + return script->proxy()->set_target_temperature(strtod(Targ, NULL)); + } + ) + CVSCRIPT(cv_units, "Get or set the current Colvars unit system\n" "units : string - The current unit system", diff --git a/lib/colvars/colvartypes.cpp b/lib/colvars/colvartypes.cpp index 47117bf2ff..04e007cbc0 100644 --- a/lib/colvars/colvartypes.cpp +++ b/lib/colvars/colvartypes.cpp @@ -125,46 +125,16 @@ std::ostream & operator << (std::ostream &os, colvarmodule::quaternion const &q) std::istream & operator >> (std::istream &is, colvarmodule::quaternion &q) { std::streampos const start_pos = is.tellg(); - - std::string euler(""); - - if ( (is >> euler) && (colvarparse::to_lower_cppstr(euler) == - std::string("euler")) ) { - - // parse the Euler angles - - char sep; - cvm::real phi, theta, psi; - if ( !(is >> sep) || !(sep == '(') || - !(is >> phi) || !(is >> sep) || !(sep == ',') || - !(is >> theta) || !(is >> sep) || !(sep == ',') || - !(is >> psi) || !(is >> sep) || !(sep == ')') ) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - q = colvarmodule::quaternion(phi, theta, psi); - - } else { - - // parse the quaternion components - + char sep; + if ( !(is >> sep) || !(sep == '(') || + !(is >> q.q0) || !(is >> sep) || !(sep == ',') || + !(is >> q.q1) || !(is >> sep) || !(sep == ',') || + !(is >> q.q2) || !(is >> sep) || !(sep == ',') || + !(is >> q.q3) || !(is >> sep) || !(sep == ')') ) { + is.clear(); is.seekg(start_pos, std::ios::beg); - char sep; - if ( !(is >> sep) || !(sep == '(') || - !(is >> q.q0) || !(is >> sep) || !(sep == ',') || - !(is >> q.q1) || !(is >> sep) || !(sep == ',') || - !(is >> q.q2) || !(is >> sep) || !(sep == ',') || - !(is >> q.q3) || !(is >> sep) || !(sep == ')') ) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } + is.setstate(std::ios::failbit); } - return is; } @@ -318,15 +288,15 @@ void colvarmodule::rotation::build_correlation_matrix( // build the correlation matrix size_t i; for (i = 0; i < pos1.size(); i++) { - C.xx() += pos1[i].x * pos2[i].x; - C.xy() += pos1[i].x * pos2[i].y; - C.xz() += pos1[i].x * pos2[i].z; - C.yx() += pos1[i].y * pos2[i].x; - C.yy() += pos1[i].y * pos2[i].y; - C.yz() += pos1[i].y * pos2[i].z; - C.zx() += pos1[i].z * pos2[i].x; - C.zy() += pos1[i].z * pos2[i].y; - C.zz() += pos1[i].z * pos2[i].z; + C.xx += pos1[i].x * pos2[i].x; + C.xy += pos1[i].x * pos2[i].y; + C.xz += pos1[i].x * pos2[i].z; + C.yx += pos1[i].y * pos2[i].x; + C.yy += pos1[i].y * pos2[i].y; + C.yz += pos1[i].y * pos2[i].z; + C.zx += pos1[i].z * pos2[i].x; + C.zy += pos1[i].z * pos2[i].y; + C.zz += pos1[i].z * pos2[i].z; } } @@ -335,22 +305,22 @@ void colvarmodule::rotation::compute_overlap_matrix() { // build the "overlap" matrix, whose eigenvectors are stationary // points of the RMSD in the space of rotations - S[0][0] = C.xx() + C.yy() + C.zz(); - S[1][0] = C.yz() - C.zy(); + S[0][0] = C.xx + C.yy + C.zz; + S[1][0] = C.yz - C.zy; S[0][1] = S[1][0]; - S[2][0] = - C.xz() + C.zx() ; + S[2][0] = - C.xz + C.zx ; S[0][2] = S[2][0]; - S[3][0] = C.xy() - C.yx(); + S[3][0] = C.xy - C.yx; S[0][3] = S[3][0]; - S[1][1] = C.xx() - C.yy() - C.zz(); - S[2][1] = C.xy() + C.yx(); + S[1][1] = C.xx - C.yy - C.zz; + S[2][1] = C.xy + C.yx; S[1][2] = S[2][1]; - S[3][1] = C.xz() + C.zx(); + S[3][1] = C.xz + C.zx; S[1][3] = S[3][1]; - S[2][2] = - C.xx() + C.yy() - C.zz(); - S[3][2] = C.yz() + C.zy(); + S[2][2] = - C.xx + C.yy - C.zz; + S[3][2] = C.yz + C.zy; S[2][3] = S[3][2]; - S[3][3] = - C.xx() - C.yy() + C.zz(); + S[3][3] = - C.xx - C.yy + C.zz; } @@ -402,7 +372,6 @@ void colvarmodule::rotation::calc_optimal_rotation( std::vector const &pos1, std::vector const &pos2) { - C.resize(3, 3); C.reset(); build_correlation_matrix(pos1, pos2); diff --git a/lib/colvars/colvartypes.h b/lib/colvars/colvartypes.h index 354c216838..13b6a5bdb3 100644 --- a/lib/colvars/colvartypes.h +++ b/lib/colvars/colvartypes.h @@ -868,107 +868,69 @@ public: /// \brief 2-dimensional array of real numbers with three components /// along each dimension (works with colvarmodule::rvector) -class colvarmodule::rmatrix - : public colvarmodule::matrix2d { -private: +class colvarmodule::rmatrix { public: - /// Return the xx element - inline cvm::real & xx() { return (*this)[0][0]; } - /// Return the xy element - inline cvm::real & xy() { return (*this)[0][1]; } - /// Return the xz element - inline cvm::real & xz() { return (*this)[0][2]; } - /// Return the yx element - inline cvm::real & yx() { return (*this)[1][0]; } - /// Return the yy element - inline cvm::real & yy() { return (*this)[1][1]; } - /// Return the yz element - inline cvm::real & yz() { return (*this)[1][2]; } - /// Return the zx element - inline cvm::real & zx() { return (*this)[2][0]; } - /// Return the zy element - inline cvm::real & zy() { return (*this)[2][1]; } - /// Return the zz element - inline cvm::real & zz() { return (*this)[2][2]; } - - /// Return the xx element - inline cvm::real xx() const { return (*this)[0][0]; } - /// Return the xy element - inline cvm::real xy() const { return (*this)[0][1]; } - /// Return the xz element - inline cvm::real xz() const { return (*this)[0][2]; } - /// Return the yx element - inline cvm::real yx() const { return (*this)[1][0]; } - /// Return the yy element - inline cvm::real yy() const { return (*this)[1][1]; } - /// Return the yz element - inline cvm::real yz() const { return (*this)[1][2]; } - /// Return the zx element - inline cvm::real zx() const { return (*this)[2][0]; } - /// Return the zy element - inline cvm::real zy() const { return (*this)[2][1]; } - /// Return the zz element - inline cvm::real zz() const { return (*this)[2][2]; } + cvm::real xx, xy, xz, yx, yy, yz, zx, zy, zz; /// Default constructor inline rmatrix() - : cvm::matrix2d(3, 3) - {} + { + reset(); + } /// Constructor component by component inline rmatrix(cvm::real xxi, cvm::real xyi, cvm::real xzi, cvm::real yxi, cvm::real yyi, cvm::real yzi, cvm::real zxi, cvm::real zyi, cvm::real zzi) - : cvm::matrix2d(3, 3) { - this->xx() = xxi; - this->xy() = xyi; - this->xz() = xzi; - this->yx() = yxi; - this->yy() = yyi; - this->yz() = yzi; - this->zx() = zxi; - this->zy() = zyi; - this->zz() = zzi; + xx = xxi; + xy = xyi; + xz = xzi; + yx = yxi; + yy = yyi; + yz = yzi; + zx = zxi; + zy = zyi; + zz = zzi; } /// Destructor inline ~rmatrix() {} + inline void reset() + { + xx = xy = xz = yx = yy = yz = zx = zy = zz = 0.0; + } + /// Return the determinant inline cvm::real determinant() const { return - ( xx() * (yy()*zz() - zy()*yz())) - - (yx() * (xy()*zz() - zy()*xz())) - + (zx() * (xy()*yz() - yy()*xz())); + ( xx * (yy*zz - zy*yz)) + - (yx * (xy*zz - zy*xz)) + + (zx * (xy*yz - yy*xz)); } inline cvm::rmatrix transpose() const { - return cvm::rmatrix(this->xx(), this->yx(), this->zx(), - this->xy(), this->yy(), this->zy(), - this->xz(), this->yz(), this->zz()); + return cvm::rmatrix(xx, yx, zx, + xy, yy, zy, + xz, yz, zz); } - friend cvm::rvector operator * (cvm::rmatrix const &m, cvm::rvector const &r); - + inline friend cvm::rvector operator * (cvm::rmatrix const &m, + cvm::rvector const &r) + { + return cvm::rvector(m.xx*r.x + m.xy*r.y + m.xz*r.z, + m.yx*r.x + m.yy*r.y + m.yz*r.z, + m.zx*r.x + m.zy*r.y + m.zz*r.z); + } }; -inline cvm::rvector operator * (cvm::rmatrix const &m, - cvm::rvector const &r) -{ - return cvm::rvector(m.xx()*r.x + m.xy()*r.y + m.xz()*r.z, - m.yx()*r.x + m.yy()*r.y + m.yz()*r.z, - m.zx()*r.x + m.zy()*r.y + m.zz()*r.z); -} - - - /// \brief 1-dimensional vector of real numbers with four components and /// a quaternion algebra @@ -1151,11 +1113,6 @@ public: q0-=h.q0; q1-=h.q1; q2-=h.q2; q3-=h.q3; } - /// Promote a 3-vector to a quaternion - static inline cvm::quaternion promote(cvm::rvector const &v) - { - return cvm::quaternion(0.0, v.x, v.y, v.z); - } /// Return the vector component inline cvm::rvector get_vector() const { @@ -1207,7 +1164,8 @@ public: /// reference frame) inline cvm::rvector rotate(cvm::rvector const &v) const { - return ((*this) * promote(v) * ((*this).conjugate())).get_vector(); + return ( (*this) * cvm::quaternion(0.0, v.x, v.y, v.z) * + this->conjugate() ).get_vector(); } /// \brief Rotate Q2 through this quaternion (put it in the rotated @@ -1223,18 +1181,18 @@ public: { cvm::rmatrix R; - R.xx() = q0*q0 + q1*q1 - q2*q2 - q3*q3; - R.yy() = q0*q0 - q1*q1 + q2*q2 - q3*q3; - R.zz() = q0*q0 - q1*q1 - q2*q2 + q3*q3; + R.xx = q0*q0 + q1*q1 - q2*q2 - q3*q3; + R.yy = q0*q0 - q1*q1 + q2*q2 - q3*q3; + R.zz = q0*q0 - q1*q1 - q2*q2 + q3*q3; - R.xy() = 2.0 * (q1*q2 - q0*q3); - R.xz() = 2.0 * (q0*q2 + q1*q3); + R.xy = 2.0 * (q1*q2 - q0*q3); + R.xz = 2.0 * (q0*q2 + q1*q3); - R.yx() = 2.0 * (q0*q3 + q1*q2); - R.yz() = 2.0 * (q2*q3 - q0*q1); + R.yx = 2.0 * (q0*q3 + q1*q2); + R.yz = 2.0 * (q2*q3 - q0*q1); - R.zx() = 2.0 * (q1*q3 - q0*q2); - R.zy() = 2.0 * (q0*q1 + q2*q3); + R.zx = 2.0 * (q1*q3 - q0*q2); + R.zy = 2.0 * (q0*q1 + q2*q3); return R; } diff --git a/src/COLVARS/colvarproxy_lammps.cpp b/src/COLVARS/colvarproxy_lammps.cpp index eb03c14de7..06a2a23ec0 100644 --- a/src/COLVARS/colvarproxy_lammps.cpp +++ b/src/COLVARS/colvarproxy_lammps.cpp @@ -43,9 +43,10 @@ colvarproxy_lammps::colvarproxy_lammps(LAMMPS_NS::LAMMPS *lmp, first_timestep=true; previous_step=-1; - t_target=temp; do_exit=false; + engine_ready_ = false; + // set input restart name and strip the extension, if present input_prefix_str = std::string(inp_name ? inp_name : ""); if (input_prefix_str.rfind(".colvars.state") != std::string::npos) @@ -87,7 +88,7 @@ colvarproxy_lammps::colvarproxy_lammps(LAMMPS_NS::LAMMPS *lmp, } -void colvarproxy_lammps::init(const char *conf_file) +void colvarproxy_lammps::init() { version_int = get_version_from_string(COLVARPROXY_VERSION); @@ -102,18 +103,13 @@ void colvarproxy_lammps::init(const char *conf_file) my_angstrom = _lmp->force->angstrom; // Front-end unit is the same as back-end - angstrom_value = my_angstrom; + angstrom_value_ = my_angstrom; // my_kcal_mol = _lmp->force->qe2f / 23.060549; // force->qe2f is 1eV expressed in LAMMPS' energy unit (1 if unit is eV, 23 if kcal/mol) - my_boltzmann = _lmp->force->boltz; + boltzmann_ = _lmp->force->boltz; my_timestep = _lmp->update->dt * _lmp->force->femtosecond; - // TODO move one or more of these to setup() if needed - colvars->read_config_file(conf_file); - colvars->setup_input(); - colvars->setup_output(); - if (_lmp->update->ntimestep != 0) { cvm::log("Setting initial step number from LAMMPS: "+ cvm::to_str(_lmp->update->ntimestep)+"\n"); @@ -123,7 +119,7 @@ void colvarproxy_lammps::init(const char *conf_file) if (cvm::debug()) { cvm::log("atoms_ids = "+cvm::to_str(atoms_ids)+"\n"); - cvm::log("atoms_ncopies = "+cvm::to_str(atoms_ncopies)+"\n"); + cvm::log("atoms_refcount = "+cvm::to_str(atoms_refcount)+"\n"); cvm::log("atoms_positions = "+cvm::to_str(atoms_positions)+"\n"); cvm::log(cvm::line_marker); cvm::log("Info: done initializing the colvars proxy object.\n"); @@ -154,8 +150,12 @@ colvarproxy_lammps::~colvarproxy_lammps() // re-initialize data where needed int colvarproxy_lammps::setup() { + int error_code = colvarproxy::setup(); my_timestep = _lmp->update->dt * _lmp->force->femtosecond; - return colvars->setup(); + error_code |= colvars->update_engine_parameters(); + error_code |= colvars->setup_input(); + error_code |= colvars->setup_output(); + return error_code; } // trigger colvars computation @@ -222,17 +222,19 @@ double colvarproxy_lammps::compute() if (cvm::debug()) { cvm::log("atoms_ids = "+cvm::to_str(atoms_ids)+"\n"); - cvm::log("atoms_ncopies = "+cvm::to_str(atoms_ncopies)+"\n"); + cvm::log("atoms_refcount = "+cvm::to_str(atoms_refcount)+"\n"); cvm::log("atoms_positions = "+cvm::to_str(atoms_positions)+"\n"); cvm::log("atoms_new_colvar_forces = "+cvm::to_str(atoms_new_colvar_forces)+"\n"); } - // call the collective variable module - colvars->calc(); + // Call the collective variable module + if (colvars->calc() != COLVARS_OK) { + cvm::error("Error in the collective variables module.\n", COLVARS_ERROR); + } if (cvm::debug()) { cvm::log("atoms_ids = "+cvm::to_str(atoms_ids)+"\n"); - cvm::log("atoms_ncopies = "+cvm::to_str(atoms_ncopies)+"\n"); + cvm::log("atoms_refcount = "+cvm::to_str(atoms_refcount)+"\n"); cvm::log("atoms_positions = "+cvm::to_str(atoms_positions)+"\n"); cvm::log("atoms_new_colvar_forces = "+cvm::to_str(atoms_new_colvar_forces)+"\n"); } @@ -384,7 +386,7 @@ int colvarproxy_lammps::init_atom(int atom_number) for (size_t i = 0; i < atoms_ids.size(); i++) { if (atoms_ids[i] == aid) { // this atom id was already recorded - atoms_ncopies[i] += 1; + atoms_refcount[i] += 1; return i; } } diff --git a/src/COLVARS/colvarproxy_lammps.h b/src/COLVARS/colvarproxy_lammps.h index 338f64fa86..0fc9f1ba12 100644 --- a/src/COLVARS/colvarproxy_lammps.h +++ b/src/COLVARS/colvarproxy_lammps.h @@ -33,7 +33,7 @@ class colvarproxy_lammps : public colvarproxy { LAMMPS_NS::RanPark *_random; // state of LAMMPS properties - double t_target, my_timestep, my_boltzmann, my_angstrom; + double my_timestep, my_angstrom; double bias_energy; int previous_step; @@ -50,7 +50,7 @@ class colvarproxy_lammps : public colvarproxy { colvarproxy_lammps(LAMMPS_NS::LAMMPS *lmp, const char *, const char *, const int, const double, MPI_Comm); ~colvarproxy_lammps() override; - void init(const char *); + void init(); int setup() override; // disable default and copy constructor @@ -60,7 +60,7 @@ class colvarproxy_lammps : public colvarproxy { // methods for lammps to move data or trigger actions in the proxy public: - void set_temperature(double t) { t_target = t; }; + bool total_forces_enabled() const override { return total_force_requested; }; bool total_forces_same_step() const override { return true; }; bool want_exit() const { return do_exit; }; @@ -86,10 +86,6 @@ class colvarproxy_lammps : public colvarproxy { // Request to set the units used internally by Colvars int set_unit_system(std::string const &units_in, bool check_only) override; - inline cvm::real backend_angstrom_value() override { return my_angstrom; }; - - inline cvm::real boltzmann() override { return my_boltzmann; }; - inline cvm::real temperature() override { return t_target; }; inline cvm::real dt() override { return my_timestep; @@ -101,8 +97,7 @@ class colvarproxy_lammps : public colvarproxy { void log(std::string const &message) override; void error(std::string const &message) override; - cvm::rvector position_distance(cvm::atom_pos const &pos1, - cvm::atom_pos const &pos2) const override; + cvm::rvector position_distance(cvm::atom_pos const &pos1, cvm::atom_pos const &pos2) const override; cvm::real rand_gaussian(void) override { return _random->gaussian(); }; diff --git a/src/COLVARS/colvarproxy_lammps_version.h b/src/COLVARS/colvarproxy_lammps_version.h index b0f8965fb0..4228740554 100644 --- a/src/COLVARS/colvarproxy_lammps_version.h +++ b/src/COLVARS/colvarproxy_lammps_version.h @@ -1,3 +1,3 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2022-05-09" +#define COLVARPROXY_VERSION "2023-04-12" #endif diff --git a/src/COLVARS/fix_colvars.cpp b/src/COLVARS/fix_colvars.cpp index 0fd7bc9857..baf0209c61 100644 --- a/src/COLVARS/fix_colvars.cpp +++ b/src/COLVARS/fix_colvars.cpp @@ -443,7 +443,9 @@ void FixColvars::one_time_init() } proxy = new colvarproxy_lammps(lmp,inp_name,out_name,rng_seed,t_target,root2root); - proxy->init(conf_file); + proxy->init(); + proxy->add_config("configfile", conf_file); + proxy->parse_module_config(); num_coords = (proxy->modify_atom_positions()->size()); } @@ -677,16 +679,16 @@ void FixColvars::post_force(int /*vflag*/) error->one(FLERR,"Run aborted on request from colvars module.\n"); if (!tstat_fix) { - proxy->set_temperature(0.0); + proxy->set_target_temperature(0.0); } else { int tmp; // get thermostat target temperature from corresponding fix, // if the fix supports extraction. double *tt = (double *) tstat_fix->extract("t_target", tmp); if (tt) - proxy->set_temperature(*tt); + proxy->set_target_temperature(*tt); else - proxy->set_temperature(0.0); + proxy->set_target_temperature(0.0); } } From f1aca8b71a44cb4693bbf4f77665f5556322c7b0 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 17 May 2023 16:39:14 -0600 Subject: [PATCH 08/12] formatting tweaks --- src/EXTRA-FIX/fix_ttm_mod.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 902c0044c9..ca9b3bd2c5 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -659,6 +659,9 @@ el_heat_capacity_thermal_conductivity FixTTMMod::el_properties(double T_e) properties.el_thermal_conductivity = el_th_diff*properties.el_heat_capacity; // thermal conductivity return properties; } + +/* ---------------------------------------------------------------------- */ + double FixTTMMod::el_sp_heat_integral(double T_e) { double T_temp = T_e/1000.0, T_reduced = T_damp*T_temp; @@ -751,6 +754,7 @@ void FixTTMMod::end_of_step() for (int iy = 0; iy < nygrid; iy++) for (int ix = 0; ix < nxgrid; ix++) T_electron_first[iz][iy][ix] = T_electron[iz][iy][ix]; + do { for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) From d206f583c4cd269202611cbd411187ec69e91b09 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 17 May 2023 21:57:14 -0400 Subject: [PATCH 09/12] whitespace --- src/EXTRA-FIX/fix_ttm_mod.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index ca9b3bd2c5..79af414f0a 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -754,7 +754,7 @@ void FixTTMMod::end_of_step() for (int iy = 0; iy < nygrid; iy++) for (int ix = 0; ix < nxgrid; ix++) T_electron_first[iz][iy][ix] = T_electron[iz][iy][ix]; - + do { for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) From 6585151ce1f7681338df0279c3f63cf6ef32045b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 17 May 2023 22:04:32 -0400 Subject: [PATCH 10/12] reorder loops to compute properties vector --- src/EXTRA-FIX/fix_ttm_mod.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index 79af414f0a..a5dea815ea 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -894,9 +894,9 @@ double FixTTMMod::compute_vector(int n) double dz = domain->zprd/nzgrid; double del_vol = dx*dy*dz; - for (int iz = 0; iz < nzgrid; iz++) + for (int ix = 0; ix < nxgrid; ix++) for (int iy = 0; iy < nygrid; iy++) - for (int ix = 0; ix < nxgrid; ix++) { + for (int iz = 0; iz < nzgrid; iz++) { e_energy += el_sp_heat_integral(T_electron[iz][iy][ix])*del_vol; transfer_energy += net_energy_transfer_all[iz][iy][ix]*update->dt; } From 50858205f66fea71233ee1493d14431069833d98 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 18 May 2023 11:43:54 -0600 Subject: [PATCH 11/12] refresh log files for fix ttm/mod example --- ...tm.mod.g++.1 => log.18May23.ttm.mod.g++.1} | 56 +++++++++---------- ...tm.mod.g++.4 => log.18May23.ttm.mod.g++.4} | 55 +++++++++--------- 2 files changed, 54 insertions(+), 57 deletions(-) rename examples/ttm/{log.20Apr22.ttm.mod.g++.1 => log.18May23.ttm.mod.g++.1} (70%) rename examples/ttm/{log.20Apr22.ttm.mod.g++.4 => log.18May23.ttm.mod.g++.4} (71%) diff --git a/examples/ttm/log.20Apr22.ttm.mod.g++.1 b/examples/ttm/log.18May23.ttm.mod.g++.1 similarity index 70% rename from examples/ttm/log.20Apr22.ttm.mod.g++.1 rename to examples/ttm/log.18May23.ttm.mod.g++.1 index 6c0470617b..b97e8ab0ea 100644 --- a/examples/ttm/log.20Apr22.ttm.mod.g++.1 +++ b/examples/ttm/log.18May23.ttm.mod.g++.1 @@ -1,6 +1,4 @@ -LAMMPS (24 Mar 2022) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) - using 1 OpenMP thread(s) per MPI task +LAMMPS (28 Mar 2023 - Development) units metal atom_style atomic boundary p p p @@ -15,7 +13,7 @@ mass 1 28.0855 create_atoms 1 box basis 1 1 basis 2 1 basis 3 1 basis 4 1 basis 5 1 basis 6 1 basis 7 1 basis 8 1 Created 8000 atoms using lattice units in orthogonal box = (0 0 0) to (54.309 54.309 54.309) - create_atoms CPU = 0.001 seconds + create_atoms CPU = 0.002 seconds pair_style sw pair_coeff * * Si.sw Si @@ -42,12 +40,12 @@ CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Your simulation uses code contributions which should be cited: -- fix ttm/mod command: +- fix ttm/mod command: doi:10.1088/0953-8984/26/47/475401, doi:10.1002/ctpp.201310025 @article{Pisarev2014, author = {Pisarev, V. V. and Starikov, S. V.}, -title = {{Atomistic simulation of ion track formation in UO2.}}, -journal = {J.~Phys.:~Condens.~Matter}, +title = {Atomistic Simulation of Ion Track Formation in {UO$_2$}.}, +journal = {J.~Phys.\ Condens.\ Matter}, volume = {26}, number = {47}, pages = {475401}, @@ -56,8 +54,8 @@ year = {2014} @article{Norman2013, author = {Norman, G. E. and Starikov, S. V. and Stegailov, V. V. and Saitov, I. M. and Zhilyaev, P. A.}, -title = {{Atomistic Modeling of Warm Dense Matter in the Two-Temperature State}}, -journal = {Contrib.~Plasm.~Phys.}, +title = {Atomistic Modeling of Warm Dense Matter in the Two-Temperature State}, +journal = {Contrib.\ Plasma Phys.}, number = {2}, volume = {53}, pages = {129--139}, @@ -67,7 +65,7 @@ year = {2013} CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Neighbor list info ... - update every 5 steps, delay 0 steps, check yes + update: every = 5 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 5.77118 ghost atom cutoff = 5.77118 @@ -81,30 +79,30 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 4.433 | 4.433 | 4.433 Mbytes Step Temp TotEng f_twotemp[1] f_twotemp[2] 0 0 -34692.79996100604 -52.79390940511979 0 - 100 2.004897156140836 -34690.27961013186 -55.34997305431884 0.01301140393178354 - 200 2.837118035232607 -34687.74741132015 -57.93445748841878 0.02696025968760173 - 300 4.263087164947482 -34684.98084093686 -60.75945453846786 0.02175636603841567 - 400 5.568003854939066 -34682.25271040963 -63.56896518300501 0.0300061848347275 - 500 6.225602451570786 -34679.49948952029 -66.40897551884576 0.02768827702656702 - 600 7.608847536264781 -34676.69728436362 -69.32060611557266 0.05579466731854093 - 700 9.049471241531297 -34674.00093206036 -72.10055094219446 0.004335980559879027 - 800 9.826796099683211 -34671.27720242751 -74.9501061086213 0.02371649678091513 - 900 11.8609224958918 -34668.35091308811 -77.98544170794551 0.004658649791374929 - 1000 13.88037467640968 -34665.35025858006 -81.16445160194114 0.07684078334464739 -Loop time of 4.85247 on 1 procs for 1000 steps with 8000 atoms + 100 2.004897156140836 -34690.27961013186 -55.3499730543189 0.01301140393178352 + 200 2.837118035232607 -34687.74741132015 -57.93445748841876 0.02696025968760173 + 300 4.263087164947482 -34684.98084093686 -60.75945453846793 0.02175636603841567 + 400 5.568003854939066 -34682.25271040963 -63.56896518300499 0.03000618483472749 + 500 6.225602451570786 -34679.49948952029 -66.40897551884574 0.02768827702656703 + 600 7.608847536264781 -34676.69728436362 -69.32060611557282 0.05579466731854091 + 700 9.049471241531297 -34674.00093206036 -72.10055094219462 0.004335980559879032 + 800 9.826796099683211 -34671.27720242751 -74.95010610862134 0.02371649678091515 + 900 11.8609224958918 -34668.35091308811 -77.98544170794545 0.004658649791374908 + 1000 13.88037467640968 -34665.35025858006 -81.16445160194111 0.07684078334464743 +Loop time of 2.48942 on 1 procs for 1000 steps with 8000 atoms -Performance: 1.781 ns/day, 13.479 hours/ns, 206.081 timesteps/s -99.8% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 3.471 ns/day, 6.915 hours/ns, 401.700 timesteps/s, 3.214 Matom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.1286 | 4.1286 | 4.1286 | 0.0 | 85.08 +Pair | 2.126 | 2.126 | 2.126 | 0.0 | 85.40 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.030972 | 0.030972 | 0.030972 | 0.0 | 0.64 -Output | 0.0026351 | 0.0026351 | 0.0026351 | 0.0 | 0.05 -Modify | 0.67848 | 0.67848 | 0.67848 | 0.0 | 13.98 -Other | | 0.01182 | | | 0.24 +Comm | 0.016147 | 0.016147 | 0.016147 | 0.0 | 0.65 +Output | 0.0013116 | 0.0013116 | 0.0013116 | 0.0 | 0.05 +Modify | 0.33864 | 0.33864 | 0.33864 | 0.0 | 13.60 +Other | | 0.007318 | | | 0.29 Nlocal: 8000 ave 8000 max 8000 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -119,4 +117,4 @@ Total # of neighbors = 272000 Ave neighs/atom = 34 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:04 +Total wall time: 0:00:02 diff --git a/examples/ttm/log.20Apr22.ttm.mod.g++.4 b/examples/ttm/log.18May23.ttm.mod.g++.4 similarity index 71% rename from examples/ttm/log.20Apr22.ttm.mod.g++.4 rename to examples/ttm/log.18May23.ttm.mod.g++.4 index fdf9b0cfb5..ea675c8594 100644 --- a/examples/ttm/log.20Apr22.ttm.mod.g++.4 +++ b/examples/ttm/log.18May23.ttm.mod.g++.4 @@ -1,6 +1,5 @@ -LAMMPS (24 Mar 2022) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98) - using 1 OpenMP thread(s) per MPI task +LAMMPS (28 Mar 2023 - Development) +WARNING: Using I/O redirection is unreliable with parallel runs. Better to use the -in switch to read input files. (../lammps.cpp:531) units metal atom_style atomic boundary p p p @@ -15,7 +14,7 @@ mass 1 28.0855 create_atoms 1 box basis 1 1 basis 2 1 basis 3 1 basis 4 1 basis 5 1 basis 6 1 basis 7 1 basis 8 1 Created 8000 atoms using lattice units in orthogonal box = (0 0 0) to (54.309 54.309 54.309) - create_atoms CPU = 0.000 seconds + create_atoms CPU = 0.001 seconds pair_style sw pair_coeff * * Si.sw Si @@ -42,12 +41,12 @@ CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Your simulation uses code contributions which should be cited: -- fix ttm/mod command: +- fix ttm/mod command: doi:10.1088/0953-8984/26/47/475401, doi:10.1002/ctpp.201310025 @article{Pisarev2014, author = {Pisarev, V. V. and Starikov, S. V.}, -title = {{Atomistic simulation of ion track formation in UO2.}}, -journal = {J.~Phys.:~Condens.~Matter}, +title = {Atomistic Simulation of Ion Track Formation in {UO$_2$}.}, +journal = {J.~Phys.\ Condens.\ Matter}, volume = {26}, number = {47}, pages = {475401}, @@ -56,8 +55,8 @@ year = {2014} @article{Norman2013, author = {Norman, G. E. and Starikov, S. V. and Stegailov, V. V. and Saitov, I. M. and Zhilyaev, P. A.}, -title = {{Atomistic Modeling of Warm Dense Matter in the Two-Temperature State}}, -journal = {Contrib.~Plasm.~Phys.}, +title = {Atomistic Modeling of Warm Dense Matter in the Two-Temperature State}, +journal = {Contrib.\ Plasma Phys.}, number = {2}, volume = {53}, pages = {129--139}, @@ -67,7 +66,7 @@ year = {2013} CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE Neighbor list info ... - update every 5 steps, delay 0 steps, check yes + update: every = 5 steps, delay = 0 steps, check = yes max neighbors/atom: 2000, page size: 100000 master list distance cutoff = 5.77118 ghost atom cutoff = 5.77118 @@ -81,30 +80,30 @@ Neighbor list info ... Per MPI rank memory allocation (min/avg/max) = 3.436 | 3.436 | 3.436 Mbytes Step Temp TotEng f_twotemp[1] f_twotemp[2] 0 0 -34692.79996100361 -52.79390940511979 0 - 100 1.852689977101411 -34690.49204900486 -55.14271612882062 0.027261886765771 - 200 2.735750477179192 -34688.11139028054 -57.57110998717796 0.03387986355513582 - 300 3.931848271449558 -34685.54667417785 -60.18684521127226 0.02261256315262404 - 400 5.462009198576365 -34682.74455105668 -63.05420336037231 0.002402241637719583 - 500 6.267811692893873 -34679.96493887379 -65.93304222280049 0.02448378880218699 - 600 7.21148216150661 -34677.41455784726 -68.58391420045932 0.04114045759945373 - 700 8.84660534187052 -34674.40610468235 -71.68798344296847 0.0237298402743454 - 800 10.1748456457686 -34671.08749605772 -75.11943618276236 0.007538225788030298 - 900 11.27479036162859 -34668.4118066423 -77.92921692176769 0.02537529314475071 - 1000 13.26881394868076 -34665.56617589539 -80.91544540266329 0.03112665440209921 -Loop time of 1.60214 on 4 procs for 1000 steps with 8000 atoms + 100 1.852689977101411 -34690.49204900486 -55.14271612882064 0.02726188676577098 + 200 2.735750477179192 -34688.11139028054 -57.57110998717798 0.03387986355513584 + 300 3.931848271449558 -34685.54667417785 -60.18684521127231 0.02261256315262403 + 400 5.462009198576365 -34682.74455105668 -63.05420336037233 0.002402241637719578 + 500 6.267811692893873 -34679.96493887379 -65.93304222280051 0.02448378880218699 + 600 7.21148216150661 -34677.41455784726 -68.58391420045926 0.04114045759945374 + 700 8.84660534187052 -34674.40610468235 -71.68798344296859 0.02372984027434538 + 800 10.1748456457686 -34671.08749605772 -75.11943618276216 0.007538225788030307 + 900 11.27479036162859 -34668.4118066423 -77.92921692176756 0.02537529314475071 + 1000 13.26881394868076 -34665.56617589539 -80.91544540266317 0.03112665440209921 +Loop time of 0.995347 on 4 procs for 1000 steps with 8000 atoms -Performance: 5.393 ns/day, 4.450 hours/ns, 624.165 timesteps/s -99.7% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 8.680 ns/day, 2.765 hours/ns, 1004.675 timesteps/s, 8.037 Matom-step/s +97.9% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.0424 | 1.0558 | 1.0696 | 1.0 | 65.90 +Pair | 0.65351 | 0.6616 | 0.66783 | 0.8 | 66.47 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.05072 | 0.063773 | 0.079458 | 4.9 | 3.98 -Output | 0.0024362 | 0.0024703 | 0.0025297 | 0.1 | 0.15 -Modify | 0.47018 | 0.47332 | 0.48004 | 0.6 | 29.54 -Other | | 0.006786 | | | 0.42 +Comm | 0.041606 | 0.048314 | 0.056589 | 2.9 | 4.85 +Output | 0.0014609 | 0.0014742 | 0.0014968 | 0.0 | 0.15 +Modify | 0.27934 | 0.28016 | 0.28089 | 0.1 | 28.15 +Other | | 0.003798 | | | 0.38 Nlocal: 2000 ave 2000 max 2000 min Histogram: 4 0 0 0 0 0 0 0 0 0 From c73b7483b2ab8cfc84f507ec07abfe9f8e0931e8 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 18 May 2023 11:47:20 -0600 Subject: [PATCH 12/12] swtich loop order back to be consistent with rest of file --- src/EXTRA-FIX/fix_ttm_mod.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EXTRA-FIX/fix_ttm_mod.cpp b/src/EXTRA-FIX/fix_ttm_mod.cpp index a5dea815ea..79af414f0a 100644 --- a/src/EXTRA-FIX/fix_ttm_mod.cpp +++ b/src/EXTRA-FIX/fix_ttm_mod.cpp @@ -894,9 +894,9 @@ double FixTTMMod::compute_vector(int n) double dz = domain->zprd/nzgrid; double del_vol = dx*dy*dz; - for (int ix = 0; ix < nxgrid; ix++) + for (int iz = 0; iz < nzgrid; iz++) for (int iy = 0; iy < nygrid; iy++) - for (int iz = 0; iz < nzgrid; iz++) { + for (int ix = 0; ix < nxgrid; ix++) { e_energy += el_sp_heat_integral(T_electron[iz][iy][ix])*del_vol; transfer_energy += net_energy_transfer_all[iz][iy][ix]*update->dt; }