diff --git a/src/Makefile.lib b/src/Makefile.lib index 01517656de..65a1d604cf 100644 --- a/src/Makefile.lib +++ b/src/Makefile.lib @@ -7,9 +7,9 @@ SHELL = /bin/sh ROOT = lammps EXE = lib$(ROOT)_$@.a -SRC = angle.cpp angle_charmm.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_periodic.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_map.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_body.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_ellipsoid.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_line.cpp atom_vec_molecular.cpp atom_vec_sphere.cpp atom_vec_tri.cpp balance.cpp body.cpp bond.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp citeme.cpp comm.cpp commgrid.cpp compute.cpp compute_angle_local.cpp compute_atom_molecule.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cluster_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_contact_atom.cpp compute_coord_atom.cpp compute_dihedral_local.cpp compute_displace_atom.cpp compute_erotate_sphere.cpp compute_erotate_sphere_atom.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_inertia_molecule.cpp compute_ke.cpp compute_ke_atom.cpp compute_msd.cpp compute_msd_molecule.cpp compute_pair.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_slice.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp domain.cpp dump.cpp dump_atom.cpp dump_cfg.cpp dump_custom.cpp dump_dcd.cpp dump_image.cpp dump_local.cpp dump_xyz.cpp error.cpp ewald.cpp ewald_disp.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_balance.cpp fix_box_relax.cpp fix_deform.cpp fix_drag.cpp fix_dt_reset.cpp fix_enforce2d.cpp fix_external.cpp fix_freeze.cpp fix_gravity.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_nh.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_sphere.cpp fix_npt.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_limit.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nvt.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_planeforce.cpp fix_pour.cpp fix_press_berendsen.cpp fix_print.cpp fix_property_atom.cpp fix_qeq_comb.cpp fix_read_restart.cpp fix_recenter.cpp fix_respa.cpp fix_restrain.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_store.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_tmd.cpp fix_tune_kspace.cpp fix_viscous.cpp fix_wall.cpp fix_wall_gran.cpp fix_wall_harmonic.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_reflect.cpp fix_wall_region.cpp force.cpp group.cpp image.cpp improper.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp improper_umbrella.cpp input.cpp integrate.cpp irregular.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp math_extra.cpp memory.cpp min.cpp min_cg.cpp min_fire.cpp min_hftn.cpp min_linesearch.cpp min_quickmin.cpp min_sd.cpp minimize.cpp modify.cpp msm.cpp msm_cg.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pair.cpp pair_adp.cpp pair_airebo.cpp pair_beck.cpp pair_bop.cpp pair_born.cpp pair_born_coul_long.cpp pair_born_coul_msm.cpp pair_born_coul_wolf.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_buck_coul_msm.cpp pair_buck_long_coul_long.cpp pair_comb.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_dsf.cpp pair_coul_long.cpp pair_coul_msm.cpp pair_coul_wolf.cpp pair_dipole_cut.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_fs.cpp pair_eim.cpp pair_gauss.cpp pair_gran_hertz_history.cpp pair_gran_hooke.cpp pair_gran_hooke_history.cpp pair_hbond_dreiding_lj.cpp pair_hbond_dreiding_morse.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lcbop.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_charmm_coul_msm.cpp pair_lj_cubic.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_dsf.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_msm.cpp pair_lj_cut_tip4p_cut.cpp pair_lj_cut_tip4p_long.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_long_coul_long.cpp pair_lj_long_tip4p_long.cpp pair_lj_smooth.cpp pair_lj_smooth_linear.cpp pair_mie_cut.cpp pair_morse.cpp pair_rebo.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_mod.cpp pair_tersoff_zbl.cpp pair_tip4p_cut.cpp pair_tip4p_long.cpp pair_yukawa.cpp pppm.cpp pppm_cg.cpp pppm_disp.cpp pppm_disp_tip4p.cpp pppm_old.cpp pppm_stagger.cpp pppm_tip4p.cpp procmap.cpp random_mars.cpp random_park.cpp read_data.cpp read_dump.cpp read_restart.cpp reader.cpp reader_native.cpp reader_xyz.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp rerun.cpp respa.cpp run.cpp set.cpp special.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp write_data.cpp write_restart.cpp +SRC = angle.cpp angle_charmm.cpp angle_class2.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_periodic.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_map.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_body.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_dipole.cpp atom_vec_ellipsoid.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_line.cpp atom_vec_molecular.cpp atom_vec_peri.cpp atom_vec_sphere.cpp atom_vec_template.cpp atom_vec_tri.cpp balance.cpp body.cpp body_nparticle.cpp bond.cpp bond_class2.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp citeme.cpp comm.cpp commgrid.cpp compute.cpp compute_angle_local.cpp compute_atom_molecule.cpp compute_body_local.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cluster_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_contact_atom.cpp compute_coord_atom.cpp compute_damage_atom.cpp compute_dihedral_local.cpp compute_dilatation_atom.cpp compute_displace_atom.cpp compute_erotate_asphere.cpp compute_erotate_rigid.cpp compute_erotate_sphere.cpp compute_erotate_sphere_atom.cpp compute_event_displace.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_inertia_molecule.cpp compute_ke.cpp compute_ke_atom.cpp compute_ke_rigid.cpp compute_msd.cpp compute_msd_molecule.cpp compute_msd_nongauss.cpp compute_pair.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_plasticity_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_slice.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_asphere.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp compute_ti.cpp compute_vacf.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_class2.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp domain.cpp dump.cpp dump_atom.cpp dump_atom_mpiio.cpp dump_cfg.cpp dump_custom.cpp dump_custom_mpiio.cpp dump_dcd.cpp dump_image.cpp dump_local.cpp dump_movie.cpp dump_xtc.cpp dump_xyz.cpp dump_xyz_mpiio.cpp error.cpp ewald.cpp ewald_disp.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_append_atoms.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_balance.cpp fix_bond_break.cpp fix_bond_create.cpp fix_bond_swap.cpp fix_box_relax.cpp fix_deform.cpp fix_deposit.cpp fix_drag.cpp fix_dt_reset.cpp fix_efield.cpp fix_enforce2d.cpp fix_evaporate.cpp fix_event.cpp fix_event_prd.cpp fix_event_tad.cpp fix_external.cpp fix_freeze.cpp fix_gcmc.cpp fix_gld.cpp fix_gravity.cpp fix_group.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_msst.cpp fix_neb.cpp fix_nh.cpp fix_nh_asphere.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_asphere.cpp fix_nph_sphere.cpp fix_nphug.cpp fix_npt.cpp fix_npt_asphere.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_asphere.cpp fix_nve_asphere_noforce.cpp fix_nve_body.cpp fix_nve_limit.cpp fix_nve_line.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nve_tri.cpp fix_nvt.cpp fix_nvt_asphere.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_orient_fcc.cpp fix_peri_neigh.cpp fix_planeforce.cpp fix_pour.cpp fix_press_berendsen.cpp fix_print.cpp fix_property_atom.cpp fix_qeq_comb.cpp fix_read_restart.cpp fix_recenter.cpp fix_respa.cpp fix_restrain.cpp fix_rigid.cpp fix_rigid_nh.cpp fix_rigid_nph.cpp fix_rigid_npt.cpp fix_rigid_nve.cpp fix_rigid_nvt.cpp fix_rigid_small.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_srd.cpp fix_store.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_thermal_conductivity.cpp fix_tmd.cpp fix_ttm.cpp fix_tune_kspace.cpp fix_vector.cpp fix_viscosity.cpp fix_viscous.cpp fix_wall.cpp fix_wall_colloid.cpp fix_wall_gran.cpp fix_wall_harmonic.cpp fix_wall_lj1043.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_piston.cpp fix_wall_reflect.cpp fix_wall_region.cpp fix_wall_srd.cpp force.cpp group.cpp image.cpp improper.cpp improper_class2.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp improper_umbrella.cpp input.cpp integrate.cpp irregular.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp math_extra.cpp memory.cpp min.cpp min_cg.cpp min_fire.cpp min_hftn.cpp min_linesearch.cpp min_quickmin.cpp min_sd.cpp minimize.cpp modify.cpp molecule.cpp msm.cpp msm_cg.cpp neb.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pair.cpp pair_adp.cpp pair_airebo.cpp pair_beck.cpp pair_body.cpp pair_bop.cpp pair_born.cpp pair_born_coul_long.cpp pair_born_coul_msm.cpp pair_born_coul_wolf.cpp pair_brownian.cpp pair_brownian_poly.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_buck_coul_msm.cpp pair_buck_long_coul_long.cpp pair_colloid.cpp pair_comb.cpp pair_comb3.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_dsf.cpp pair_coul_long.cpp pair_coul_msm.cpp pair_coul_wolf.cpp pair_dipole_cut.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_dsmc.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_alloy_opt.cpp pair_eam_fs.cpp pair_eam_fs_opt.cpp pair_eam_opt.cpp pair_eim.cpp pair_gauss.cpp pair_gayberne.cpp pair_gran_hertz_history.cpp pair_gran_hooke.cpp pair_gran_hooke_history.cpp pair_hbond_dreiding_lj.cpp pair_hbond_dreiding_morse.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lcbop.cpp pair_line_lj.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_charmm_coul_long_opt.cpp pair_lj_charmm_coul_msm.cpp pair_lj_class2.cpp pair_lj_class2_coul_cut.cpp pair_lj_class2_coul_long.cpp pair_lj_cubic.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_dsf.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_long_opt.cpp pair_lj_cut_coul_msm.cpp pair_lj_cut_dipole_cut.cpp pair_lj_cut_dipole_long.cpp pair_lj_cut_opt.cpp pair_lj_cut_tip4p_cut.cpp pair_lj_cut_tip4p_long.cpp pair_lj_cut_tip4p_long_opt.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_long_coul_long.cpp pair_lj_long_coul_long_opt.cpp pair_lj_long_dipole_long.cpp pair_lj_long_tip4p_long.cpp pair_lj_smooth.cpp pair_lj_smooth_linear.cpp pair_lubricate.cpp pair_lubricateU.cpp pair_lubricateU_poly.cpp pair_lubricate_poly.cpp pair_mie_cut.cpp pair_morse.cpp pair_morse_opt.cpp pair_nb3b_harmonic.cpp pair_nm_cut.cpp pair_nm_cut_coul_cut.cpp pair_nm_cut_coul_long.cpp pair_peri_eps.cpp pair_peri_lps.cpp pair_peri_pmb.cpp pair_peri_ves.cpp pair_rebo.cpp pair_resquared.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_mod.cpp pair_tersoff_zbl.cpp pair_tip4p_cut.cpp pair_tip4p_long.cpp pair_tri_lj.cpp pair_yukawa.cpp pair_yukawa_colloid.cpp pair_zbl.cpp pppm.cpp pppm_cg.cpp pppm_disp.cpp pppm_disp_tip4p.cpp pppm_old.cpp pppm_stagger.cpp pppm_tip4p.cpp prd.cpp procmap.cpp random_mars.cpp random_park.cpp read_data.cpp read_dump.cpp read_restart.cpp reader.cpp reader_native.cpp reader_xyz.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp rerun.cpp respa.cpp restart_mpiio.cpp run.cpp set.cpp special.cpp tad.cpp temper.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp verlet_split.cpp write_data.cpp write_dump.cpp write_restart.cpp xdr_compat.cpp -INC = accelerator_cuda.h accelerator_omp.h angle.h angle_charmm.h angle_cosine.h angle_cosine_delta.h angle_cosine_periodic.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_map.h atom_masks.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_body.h atom_vec_bond.h atom_vec_charge.h atom_vec_ellipsoid.h atom_vec_full.h atom_vec_hybrid.h atom_vec_line.h atom_vec_molecular.h atom_vec_sphere.h atom_vec_tri.h balance.h body.h bond.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h citeme.h comm.h commgrid.h compute.h compute_angle_local.h compute_atom_molecule.h compute_bond_local.h compute_centro_atom.h compute_cluster_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_contact_atom.h compute_coord_atom.h compute_dihedral_local.h compute_displace_atom.h compute_erotate_sphere.h compute_erotate_sphere_atom.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_inertia_molecule.h compute_ke.h compute_ke_atom.h compute_msd.h compute_msd_molecule.h compute_pair.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_slice.h compute_stress_atom.h compute_temp.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h domain.h dump.h dump_atom.h dump_cfg.h dump_custom.h dump_dcd.h dump_image.h dump_local.h dump_xyz.h error.h ewald.h ewald_disp.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_balance.h fix_box_relax.h fix_deform.h fix_drag.h fix_dt_reset.h fix_enforce2d.h fix_external.h fix_freeze.h fix_gravity.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_nh.h fix_nh_sphere.h fix_nph.h fix_nph_sphere.h fix_npt.h fix_npt_sphere.h fix_nve.h fix_nve_limit.h fix_nve_noforce.h fix_nve_sphere.h fix_nvt.h fix_nvt_sllod.h fix_nvt_sphere.h fix_planeforce.h fix_pour.h fix_press_berendsen.h fix_print.h fix_property_atom.h fix_qeq_comb.h fix_read_restart.h fix_recenter.h fix_respa.h fix_restrain.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_store.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_tmd.h fix_tune_kspace.h fix_viscous.h fix_wall.h fix_wall_gran.h fix_wall_harmonic.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_reflect.h fix_wall_region.h force.h group.h image.h improper.h improper_cvff.h improper_harmonic.h improper_hybrid.h improper_umbrella.h input.h integrate.h irregular.h kissfft.h kspace.h lammps.h lattice.h library.h lmptype.h lmpwindows.h math_complex.h math_const.h math_extra.h math_special.h math_vector.h memory.h min.h min_cg.h min_fire.h min_hftn.h min_linesearch.h min_quickmin.h min_sd.h minimize.h modify.h msm.h msm_cg.h my_page.h my_pool_chunk.h neigh_bond.h neigh_derive.h neigh_full.h neigh_gran.h neigh_half_bin.h neigh_half_multi.h neigh_half_nsq.h neigh_list.h neigh_request.h neigh_respa.h neighbor.h output.h pack.h pair.h pair_adp.h pair_airebo.h pair_beck.h pair_bop.h pair_born.h pair_born_coul_long.h pair_born_coul_msm.h pair_born_coul_wolf.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_buck_coul_msm.h pair_buck_long_coul_long.h pair_comb.h pair_coul_cut.h pair_coul_debye.h pair_coul_dsf.h pair_coul_long.h pair_coul_msm.h pair_coul_wolf.h pair_dipole_cut.h pair_dpd.h pair_dpd_tstat.h pair_eam.h pair_eam_alloy.h pair_eam_fs.h pair_eim.h pair_gauss.h pair_gran_hertz_history.h pair_gran_hooke.h pair_gran_hooke_history.h pair_hbond_dreiding_lj.h pair_hbond_dreiding_morse.h pair_hybrid.h pair_hybrid_overlay.h pair_lcbop.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_charmm_coul_msm.h pair_lj_cubic.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_dsf.h pair_lj_cut_coul_long.h pair_lj_cut_coul_msm.h pair_lj_cut_tip4p_cut.h pair_lj_cut_tip4p_long.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_long_coul_long.h pair_lj_long_tip4p_long.h pair_lj_smooth.h pair_lj_smooth_linear.h pair_mie_cut.h pair_morse.h pair_rebo.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_mod.h pair_tersoff_zbl.h pair_tip4p_cut.h pair_tip4p_long.h pair_yukawa.h pointers.h pppm.h pppm_cg.h pppm_disp.h pppm_disp_tip4p.h pppm_old.h pppm_stagger.h pppm_tip4p.h procmap.h random_mars.h random_park.h read_data.h read_dump.h read_restart.h reader.h reader_native.h reader_xyz.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h rerun.h respa.h run.h set.h special.h style_angle.h style_atom.h style_body.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_reader.h style_region.h suffix.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h version.h write_data.h write_restart.h +INC = accelerator_cuda.h accelerator_omp.h angle.h angle_charmm.h angle_class2.h angle_cosine.h angle_cosine_delta.h angle_cosine_periodic.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_map.h atom_masks.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_body.h atom_vec_bond.h atom_vec_charge.h atom_vec_dipole.h atom_vec_ellipsoid.h atom_vec_full.h atom_vec_hybrid.h atom_vec_line.h atom_vec_molecular.h atom_vec_peri.h atom_vec_sphere.h atom_vec_template.h atom_vec_tri.h balance.h body.h body_nparticle.h bond.h bond_class2.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h citeme.h comm.h commgrid.h compute.h compute_angle_local.h compute_atom_molecule.h compute_body_local.h compute_bond_local.h compute_centro_atom.h compute_cluster_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_contact_atom.h compute_coord_atom.h compute_damage_atom.h compute_dihedral_local.h compute_dilatation_atom.h compute_displace_atom.h compute_erotate_asphere.h compute_erotate_rigid.h compute_erotate_sphere.h compute_erotate_sphere_atom.h compute_event_displace.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_inertia_molecule.h compute_ke.h compute_ke_atom.h compute_ke_rigid.h compute_msd.h compute_msd_molecule.h compute_msd_nongauss.h compute_pair.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_plasticity_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_slice.h compute_stress_atom.h compute_temp.h compute_temp_asphere.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h compute_ti.h compute_vacf.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_class2.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h domain.h dump.h dump_atom.h dump_atom_mpiio.h dump_cfg.h dump_custom.h dump_custom_mpiio.h dump_dcd.h dump_image.h dump_local.h dump_movie.h dump_xtc.h dump_xyz.h dump_xyz_mpiio.h error.h ewald.h ewald_disp.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_append_atoms.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_balance.h fix_bond_break.h fix_bond_create.h fix_bond_swap.h fix_box_relax.h fix_deform.h fix_deposit.h fix_drag.h fix_dt_reset.h fix_efield.h fix_enforce2d.h fix_evaporate.h fix_event.h fix_event_prd.h fix_event_tad.h fix_external.h fix_freeze.h fix_gcmc.h fix_gld.h fix_gravity.h fix_group.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_msst.h fix_neb.h fix_nh.h fix_nh_asphere.h fix_nh_sphere.h fix_nph.h fix_nph_asphere.h fix_nph_sphere.h fix_nphug.h fix_npt.h fix_npt_asphere.h fix_npt_sphere.h fix_nve.h fix_nve_asphere.h fix_nve_asphere_noforce.h fix_nve_body.h fix_nve_limit.h fix_nve_line.h fix_nve_noforce.h fix_nve_sphere.h fix_nve_tri.h fix_nvt.h fix_nvt_asphere.h fix_nvt_sllod.h fix_nvt_sphere.h fix_orient_fcc.h fix_peri_neigh.h fix_planeforce.h fix_pour.h fix_press_berendsen.h fix_print.h fix_property_atom.h fix_qeq_comb.h fix_read_restart.h fix_recenter.h fix_respa.h fix_restrain.h fix_rigid.h fix_rigid_nh.h fix_rigid_nph.h fix_rigid_npt.h fix_rigid_nve.h fix_rigid_nvt.h fix_rigid_small.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_srd.h fix_store.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_thermal_conductivity.h fix_tmd.h fix_ttm.h fix_tune_kspace.h fix_vector.h fix_viscosity.h fix_viscous.h fix_wall.h fix_wall_colloid.h fix_wall_gran.h fix_wall_harmonic.h fix_wall_lj1043.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_piston.h fix_wall_reflect.h fix_wall_region.h fix_wall_srd.h force.h group.h image.h improper.h improper_class2.h improper_cvff.h improper_harmonic.h improper_hybrid.h improper_umbrella.h input.h integrate.h irregular.h kissfft.h kspace.h lammps.h lattice.h library.h lmptype.h lmpwindows.h math_complex.h math_const.h math_extra.h math_special.h math_vector.h memory.h min.h min_cg.h min_fire.h min_hftn.h min_linesearch.h min_quickmin.h min_sd.h minimize.h modify.h molecule.h mpiio.h msm.h msm_cg.h my_page.h my_pool_chunk.h neb.h neigh_bond.h neigh_derive.h neigh_full.h neigh_gran.h neigh_half_bin.h neigh_half_multi.h neigh_half_nsq.h neigh_list.h neigh_request.h neigh_respa.h neighbor.h output.h pack.h pair.h pair_adp.h pair_airebo.h pair_beck.h pair_body.h pair_bop.h pair_born.h pair_born_coul_long.h pair_born_coul_msm.h pair_born_coul_wolf.h pair_brownian.h pair_brownian_poly.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_buck_coul_msm.h pair_buck_long_coul_long.h pair_colloid.h pair_comb.h pair_comb3.h pair_coul_cut.h pair_coul_debye.h pair_coul_dsf.h pair_coul_long.h pair_coul_msm.h pair_coul_wolf.h pair_dipole_cut.h pair_dpd.h pair_dpd_tstat.h pair_dsmc.h pair_eam.h pair_eam_alloy.h pair_eam_alloy_opt.h pair_eam_fs.h pair_eam_fs_opt.h pair_eam_opt.h pair_eim.h pair_gauss.h pair_gayberne.h pair_gran_hertz_history.h pair_gran_hooke.h pair_gran_hooke_history.h pair_hbond_dreiding_lj.h pair_hbond_dreiding_morse.h pair_hybrid.h pair_hybrid_overlay.h pair_lcbop.h pair_line_lj.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_charmm_coul_long_opt.h pair_lj_charmm_coul_msm.h pair_lj_class2.h pair_lj_class2_coul_cut.h pair_lj_class2_coul_long.h pair_lj_cubic.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_dsf.h pair_lj_cut_coul_long.h pair_lj_cut_coul_long_opt.h pair_lj_cut_coul_msm.h pair_lj_cut_dipole_cut.h pair_lj_cut_dipole_long.h pair_lj_cut_opt.h pair_lj_cut_tip4p_cut.h pair_lj_cut_tip4p_long.h pair_lj_cut_tip4p_long_opt.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_long_coul_long.h pair_lj_long_coul_long_opt.h pair_lj_long_dipole_long.h pair_lj_long_tip4p_long.h pair_lj_smooth.h pair_lj_smooth_linear.h pair_lubricate.h pair_lubricateU.h pair_lubricateU_poly.h pair_lubricate_poly.h pair_mie_cut.h pair_morse.h pair_morse_opt.h pair_nb3b_harmonic.h pair_nm_cut.h pair_nm_cut_coul_cut.h pair_nm_cut_coul_long.h pair_peri_eps.h pair_peri_lps.h pair_peri_pmb.h pair_peri_ves.h pair_rebo.h pair_resquared.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_mod.h pair_tersoff_zbl.h pair_tip4p_cut.h pair_tip4p_long.h pair_tri_lj.h pair_yukawa.h pair_yukawa_colloid.h pair_zbl.h pointers.h pppm.h pppm_cg.h pppm_disp.h pppm_disp_tip4p.h pppm_old.h pppm_stagger.h pppm_tip4p.h prd.h procmap.h random_mars.h random_park.h read_data.h read_dump.h read_restart.h reader.h reader_native.h reader_xyz.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h rerun.h respa.h restart_mpiio.h run.h set.h special.h style_angle.h style_atom.h style_body.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_reader.h style_region.h suffix.h tad.h temper.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h verlet_split.h version.h write_data.h write_dump.h write_restart.h xdr_compat.h OBJ = $(SRC:.cpp=.o) diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index 95a66af51f..15a47073c4 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -49,16 +49,19 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : // store temperature ID used by pressure computation // insure it is valid for temperature computation - int n = strlen(arg[3]) + 1; - id_temp = new char[n]; - strcpy(id_temp,arg[3]); + if (strcmp(arg[3],"NULL") == 0) id_temp = NULL; + else { + int n = strlen(arg[3]) + 1; + id_temp = new char[n]; + strcpy(id_temp,arg[3]); - int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute pressure temperature ID"); - if (modify->compute[icompute]->tempflag == 0) - error->all(FLERR, - "Compute pressure temperature ID does not compute temperature"); + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Could not find compute pressure temperature ID"); + if (modify->compute[icompute]->tempflag == 0) + error->all(FLERR, + "Compute pressure temperature ID does not compute temperature"); + } // process optional args @@ -91,6 +94,12 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : } } + // error check + + if (keflag && id_temp == NULL) + error->all(FLERR,"Compute pressure requires temperature ID " + "to include kinetic energy"); + vector = new double[6]; nvirial = 0; vptr = NULL; @@ -116,10 +125,12 @@ void ComputePressure::init() // set temperature compute, must be done in init() // fixes could have changed or compute_modify could have changed it - int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute pressure temperature ID"); - temperature = modify->compute[icompute]; + if (keflag) { + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Could not find compute pressure temperature ID"); + temperature = modify->compute[icompute]; + } // detect contributions to virial // vptr points to all virial[6] contributions @@ -169,7 +180,7 @@ double ComputePressure::compute_scalar() if (update->vflag_global != invoked_scalar) error->all(FLERR,"Virial was not tallied on needed timestep"); - // invoke temperature it it hasn't been already + // invoke temperature if it hasn't been already double t; if (keflag) { diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index c9595e899c..c95d370a87 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -31,12 +31,14 @@ using namespace LAMMPS_NS; +enum{NOBIAS,BIAS}; + /* ---------------------------------------------------------------------- */ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg < 3) error->all(FLERR,"Illegal compute stress/atom command"); + if (narg < 4) error->all(FLERR,"Illegal compute stress/atom command"); peratom_flag = 1; size_peratom_cols = 6; @@ -44,7 +46,26 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : timeflag = 1; comm_reverse = 6; - if (narg == 3) { + // store temperature ID used by stress computation + // insure it is valid for temperature computation + + if (strcmp(arg[3],"NULL") == 0) id_temp = NULL; + else { + int n = strlen(arg[3]) + 1; + id_temp = new char[n]; + strcpy(id_temp,arg[3]); + + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Could not find compute stress/atom temperature ID"); + if (modify->compute[icompute]->tempflag == 0) + error->all(FLERR, + "Compute stress/atom temperature ID does not compute temperature"); + } + + // process optional args + + if (narg == 4) { keflag = 1; pairflag = 1; bondflag = angleflag = dihedralflag = improperflag = 1; @@ -56,7 +77,7 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : bondflag = angleflag = dihedralflag = improperflag = 0; kspaceflag = 0; fixflag = 0; - int iarg = 3; + int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"ke") == 0) keflag = 1; else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; @@ -83,11 +104,29 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : ComputeStressAtom::~ComputeStressAtom() { + delete [] id_temp; memory->destroy(stress); } /* ---------------------------------------------------------------------- */ +void ComputeStressAtom::init() +{ + // set temperature compute, must be done in init() + // fixes could have changed or compute_modify could have changed it + + if (id_temp) { + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Could not find compute stress/atom temperature ID"); + temperature = modify->compute[icompute]; + if (temperature->tempbias) biasflag = BIAS; + else biasflag = NOBIAS; + } else biasflag = NOBIAS; +} + +/* ---------------------------------------------------------------------- */ + void ComputeStressAtom::compute_peratom() { int i,j; @@ -211,6 +250,7 @@ void ComputeStressAtom::compute_peratom() } // include kinetic energy term for each atom in group + // apply temperature bias is applicable // mvv2e converts mv^2 to energy if (keflag) { @@ -220,29 +260,68 @@ void ComputeStressAtom::compute_peratom() int *type = atom->type; double mvv2e = force->mvv2e; - if (rmass) { - for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { - onemass = mvv2e * rmass[i]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; - } + if (biasflag == NOBIAS) { + if (rmass) { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + onemass = mvv2e * rmass[i]; + stress[i][0] += onemass*v[i][0]*v[i][0]; + stress[i][1] += onemass*v[i][1]*v[i][1]; + stress[i][2] += onemass*v[i][2]*v[i][2]; + stress[i][3] += onemass*v[i][0]*v[i][1]; + stress[i][4] += onemass*v[i][0]*v[i][2]; + stress[i][5] += onemass*v[i][1]*v[i][2]; + } + + } else { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + onemass = mvv2e * mass[type[i]]; + stress[i][0] += onemass*v[i][0]*v[i][0]; + stress[i][1] += onemass*v[i][1]*v[i][1]; + stress[i][2] += onemass*v[i][2]*v[i][2]; + stress[i][3] += onemass*v[i][0]*v[i][1]; + stress[i][4] += onemass*v[i][0]*v[i][2]; + stress[i][5] += onemass*v[i][1]*v[i][2]; + } + } } else { - for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) { - onemass = mvv2e * mass[type[i]]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; - } + + // invoke temperature if it hasn't been already + // this insures bias factor is pre-computed + + if (keflag && temperature->invoked_scalar != update->ntimestep) + temperature->compute_scalar(); + + if (rmass) { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + temperature->remove_bias(i,v[i]); + onemass = mvv2e * rmass[i]; + stress[i][0] += onemass*v[i][0]*v[i][0]; + stress[i][1] += onemass*v[i][1]*v[i][1]; + stress[i][2] += onemass*v[i][2]*v[i][2]; + stress[i][3] += onemass*v[i][0]*v[i][1]; + stress[i][4] += onemass*v[i][0]*v[i][2]; + stress[i][5] += onemass*v[i][1]*v[i][2]; + temperature->restore_bias(i,v[i]); + } + + } else { + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + temperature->remove_bias(i,v[i]); + onemass = mvv2e * mass[type[i]]; + stress[i][0] += onemass*v[i][0]*v[i][0]; + stress[i][1] += onemass*v[i][1]*v[i][1]; + stress[i][2] += onemass*v[i][2]*v[i][2]; + stress[i][3] += onemass*v[i][0]*v[i][1]; + stress[i][4] += onemass*v[i][0]*v[i][2]; + stress[i][5] += onemass*v[i][1]*v[i][2]; + temperature->restore_bias(i,v[i]); + } + } } } diff --git a/src/compute_stress_atom.h b/src/compute_stress_atom.h index 4592689b2a..313c06b534 100644 --- a/src/compute_stress_atom.h +++ b/src/compute_stress_atom.h @@ -28,7 +28,7 @@ class ComputeStressAtom : public Compute { public: ComputeStressAtom(class LAMMPS *, int, char **); ~ComputeStressAtom(); - void init() {} + void init(); void compute_peratom(); int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); @@ -36,7 +36,10 @@ class ComputeStressAtom : public Compute { private: int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag; - int kspaceflag,fixflag; + int kspaceflag,fixflag,biasflag; + Compute *temperature; + char *id_temp; + int nmax; double **stress; }; diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index ccf8cda9ba..b2e8cf3bef 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -100,9 +100,10 @@ void PairHybrid::compute(int eflag, int vflag) for (m = 0; m < nstyles; m++) { - // invoke compute() unless + // invoke compute() unless compute flag is turned off or // outerflag is set and sub-style has a compute_outer() method + if (styles[m]->compute_flag == 0) continue; if (outerflag && styles[m]->respa_enable) styles[m]->compute_outer(eflag,vflag_substyle); else styles[m]->compute(eflag,vflag_substyle); @@ -280,8 +281,10 @@ void PairHybrid::flags() // ghostneigh = 1 if any sub-style is set // ewaldflag, pppmflag, msmflag, dispersionflag, tip4pflag = 1 // if any sub-style is set + // compute_flag = 1 if any sub-style is set single_enable = 0; + compute_flag = 0; for (m = 0; m < nstyles; m++) { if (styles[m]->single_enable) single_enable = 1; if (styles[m]->respa_enable) respa_enable = 1; @@ -293,6 +296,7 @@ void PairHybrid::flags() if (styles[m]->msmflag) msmflag = 1; if (styles[m]->dispersionflag) dispersionflag = 1; if (styles[m]->tip4pflag) tip4pflag = 1; + if (styles[m]->compute_flag) compute_flag = 1; } // single_extra = min of all sub-style single_extra @@ -694,14 +698,34 @@ double PairHybrid::single(int i, int j, int itype, int jtype, /* ---------------------------------------------------------------------- modify parameters of the pair style - call modify_params of PairHybrid - also pass command args to each sub-style of hybrid + if 1st keyword is pair, then applies to one sub-style + else pass command args to every sub-style of hybrid ------------------------------------------------------------------------- */ void PairHybrid::modify_params(int narg, char **arg) { - Pair::modify_params(narg,arg); - for (int m = 0; m < nstyles; m++) styles[m]->modify_params(narg,arg); + if (narg == 0) error->all(FLERR,"Illegal pair_modify command"); + + if (strcmp(arg[0],"pair") == 0) { + if (narg < 2) error->all(FLERR,"Illegal pair_modify command"); + int m; + for (m = 0; m < nstyles; m++) + if (strcmp(arg[1],keywords[m]) == 0) break; + if (m == nstyles) error->all(FLERR,"Unknown pair_modify hybrid sub-style"); + if (multiple[m] == 0) + styles[m]->modify_params(narg-2,&arg[2]); + else { + if (narg < 3) error->all(FLERR,"Illegal pair_modify command"); + int multiflag = force->inumeric(FLERR,arg[2]); + for (m = 0; m < nstyles; m++) + if (strcmp(arg[1],keywords[m]) == 0 && multiflag == multiple[m]) break; + if (m == nstyles) + error->all(FLERR,"Unknown pair_modify hybrid sub-style"); + styles[m]->modify_params(narg-3,&arg[3]); + } + + } else + for (int m = 0; m < nstyles; m++) styles[m]->modify_params(narg,arg); } /* ----------------------------------------------------------------------