diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fdee6325d0..3d73ffc63e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,13 +9,37 @@ lib/kokkos/* @stanmoore1 lib/molfile/* @akohlmey lib/qmmm/* @akohlmey lib/vtk/* @rbberger +lib/kim/* @ellio167 -# packages -src/KOKKOS @stanmoore1 -src/USER-CGSDK @akohlmey -src/USER-COLVARS @giacomofiorin -src/USER-OMP @akohlmey -src/USER-QMMM @akohlmey +# whole packages +src/COMPRESS/* @akohlmey +src/GPU/* @ndtrung81 +src/KOKKOS/* @stanmoore1 +src/KIM/* @ellio167 +src/USER-CGDNA/* @ohenrich +src/USER-CGSDK/* @akohlmey +src/USER-COLVARS/* @giacomofiorin +src/USER-DPD/* @timattox +src/USER-INTEL/* @wmbrownintel +src/USER-MANIFOLD/* @Pakketeretet2 +src/USER-MEAMC/* @martok +src/USER-MOFFF/* @hheenen +src/USER-MOLFILE/* @akohlmey +src/USER-NETCDF/* @pastewka +src/USER-PHONON/* @lingtikong +src/USER-OMP/* @akohlmey +src/USER-QMMM/* @akohlmey +src/USER-REAXC/* @hasanmetin +src/USER-TALLY/* @akohlmey +src/USER-UEF/* @danicholson +src/USER-VTK/* @rbberger + +# individual files in packages +src/GPU/pair_vashishta_gpu.* @andeplane +src/KOKKOS/pair_vashishta_kokkos.* @andeplane +src/MANYBODY/pair_vashishta_table.* @andeplane +src/USER-MISC/fix_bond_react.* @jrgissing +src/USER-MISC/*_grem.* @dstelter92 # tools tools/msi2lmp/* @akohlmey diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a498861156..8e750d222d 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -101,7 +101,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANU KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ REAX REPLICA RIGID SHOCK SNAP SRD) set(OTHER_PACKAGES KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE - USER-ATC USER-AWPMD USER-CGDNA USER-MESO + USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt index ade75c588f..e9387fe35f 100644 --- a/doc/src/Section_packages.txt +++ b/doc/src/Section_packages.txt @@ -122,6 +122,7 @@ Package, Description, Doc page, Example, Library Package, Description, Doc page, Example, Library "USER-ATC"_#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int "USER-AWPMD"_#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int +"USER-BOCS"_#USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, - "USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, - "USER-CGSDK"_#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, - "USER-COLVARS"_#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int @@ -1625,6 +1626,43 @@ examples/USER/awpmd :ul :line +USER-BOCS package :link(USER-BOCS),h4 + +[Contents:] + +This package provides "fix bocs"_fix_bocs.html, a modified version +of "fix npt"_fix_nh.html which includes the pressure correction to +the barostat as outlined in: + +N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that +accurately describe the structure, pressure, and compressibility of +molecular liquids," J. Chem. Phys. 143, 243148 (2015). + +[Authors:] Nicholas J. H. Dunn and Michael R. DeLyser (The Pennsylvania State University) + +[Install or un-install:] + +make yes-user-bocs +make machine :pre + +make no-user-bocs +make machine :pre + +[Supporting info:] + +The USER-BOCS user package for LAMMPS is part of the BOCS software package: +"https://github.com/noid-group/BOCS"_https://github.com/noid-group/BOCS + +See the following reference for information about the entire package: + +Dunn, NJH; Lebold, KM; DeLyser, MR; Rudzinski, JF; Noid, WG. +"BOCS: Bottom-Up Open-Source Coarse-Graining Software." +J. Phys. Chem. B. 122, 13, 3363-3377 (2018). + +Example inputs are in the examples/USER/bocs folder. + +:line + USER-CGDNA package :link(USER-CGDNA),h4 [Contents:] diff --git a/doc/src/compute_ackland_atom.txt b/doc/src/compute_ackland_atom.txt index b75d100112..3fd838d957 100644 --- a/doc/src/compute_ackland_atom.txt +++ b/doc/src/compute_ackland_atom.txt @@ -10,19 +10,29 @@ compute ackland/atom command :h3 [Syntax:] -compute ID group-ID ackland/atom :pre +compute ID group-ID ackland/atom keyword/value :pre -ID, group-ID are documented in "compute"_compute.html command -ackland/atom = style name of this compute command :ul +ID, group-ID are documented in "compute"_compute.html command :ulb,l +ackland/atom = style name of this compute command :l + +zero or more keyword/value pairs may be appended :l +keyword = {legacy} :l + {legacy} yes/no = use ({yes}) or do not use ({no}) legacy ackland algorithm implementation :pre +:ule [Examples:] -compute 1 all ackland/atom :pre +compute 1 all ackland/atom +compute 1 all ackland/atom legacy yes :pre [Description:] Defines a computation that calculates the local lattice structure according to the formulation given in "(Ackland)"_#Ackland. +Historically, LAMMPS had two, slightly different implementations of +the algorithm from the paper. With the {legacy} keyword, it is +possible to switch between the pre-2015 ({legacy yes}) and post-2015 +implemention ({legacy no}). The post-2015 variant is the default. In contrast to the "centro-symmetry parameter"_compute_centro_atom.html this method is stable against @@ -66,7 +76,8 @@ integers defined above. "compute centro/atom"_compute_centro_atom.html -[Default:] none +[Default:] +The keyword {legacy} defaults to {no}. :line diff --git a/doc/src/fix_bocs.txt b/doc/src/fix_bocs.txt new file mode 100644 index 0000000000..f53b7c785c --- /dev/null +++ b/doc/src/fix_bocs.txt @@ -0,0 +1,112 @@ +<"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix bocs command :h3 + +[Syntax:] + +fix ID group-ID bocs keyword values ... :pre + +keyword = {temp} or {cgiso} or {analytic} or {linear_spline} or {cubic_spline} + {temp} values = Tstart Tstop Tdamp + {cgiso} values = Pstart Pstop Pdamp + {basis set} + {analytic} values = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N + {linear_spline} values = input_filename + {cubic_spline} values = input_filename :pre +:ule + +[Examples:] + +fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 :pre + +fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 cubic_spline input_Fv.dat :pre + +thermo_modify press 1_press :pre + + +[Description:] + +These commands incorporate a pressure correction as described by +Dunn and Noid in "(Dunn1)"_#bocs-Dunn1 to the standard MTTK +barostat by Martyna et. al. in "(Martyna)"_#bocs-Martyna . +The first half of the command mimics a standard fix npt command: + +fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp :pre + +The two differences are replacing {npt} with {bocs}, and replacing +{iso}/{aniso}/{etc} with {cgiso}. +The rest of the command details what form you would like to use for +the pressure correction equation. The choices are: {analytic}, {linear_spline}, +or {cubic_spline}. + +With either spline method, the only argument that needs to follow it +is the name of a file that contains the desired pressure correction +as a function of volume. The file should be formatted so each line has: + +Volume_i, PressureCorrection_i :pre + +Note both the COMMA and the SPACE separating the volume's +value and its corresponding pressure correction. The volumes in the file +should be uniformly spaced. Both the volumes and the pressure corrections +should be provided in the proper units, e.g. if you are using {units real}, +the volumes should all be in cubic angstroms, and the pressure corrections +should all be in atomspheres. Furthermore, the table should start/end at a +volume considerably smaller/larger than you expect your system to sample +during the simulation. If the system ever reaches a volume outside of the +range provided, the simulation will stop. + +With the {analytic} option, the arguments are as follows: + +... analytic V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N :pre + +Note that {V_avg} and {Coeff_i} should all be in the proper units, e.g. if you +are using {units real}, {V_avg} should be in cubic angstroms, and the +coefficients should all be in atmospheres * cubic angstroms. + +[Restrictions:] + +As this is computing a (modified) pressure, group-ID should be {all}. + +The pressure correction has only been tested for use with an isotropic +pressure coupling in 3 dimensions. + +By default, LAMMPS will still report the normal value for the pressure +if the pressure is printed via a {thermo} command, or if the pressures +are written to a file every so often. In order to have LAMMPS report the +modified pressure, you must include the {thermo_modify} command given in +the examples. For the last argument in the command, you should put +XXXX_press, where XXXX is the ID given to the fix bocs command (in the +example, the ID of the fix bocs command is 1 ). + +This fix is part of the USER-BOCS package. It is only enabled if +LAMMPS was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related:] + +For more details about the pressure correction and the entire BOCS software +package, visit the "BOCS package on github"_bocsgithub and read the release +paper by Dunn et. al. "(Dunn2)"_#bocs-Dunn2 . + + +:link(bocsgithub,https://github.com/noid-group/BOCS) + +:line + +:link(bocs-Dunn1) +[(Dunn1)] Dunn and Noid, J Chem Phys, 143, 243148 (2015). + +:link(bocs-Martyna) +[(Martyna)] Martyna, Tobias, and Klein, J Chem Phys, 101, 4177 (1994). + +:link(bocs-Dunn2) +[(Dunn2)] Dunn, Lebold, DeLyser, Rudzinski, and Noid, J. Phys. Chem. B, 122, 3363 (2018). + + + diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index b5f9a73084..4a7c2428c1 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -11,9 +11,9 @@ fix bond/react command :h3 [Syntax:] fix ID group-ID bond/react common_keyword values ... - react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... - react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... - react react-ID react-group-ID Nevery Rmin template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... + react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ... ... :pre ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l @@ -24,12 +24,13 @@ common_keyword = {stabilization} {stabilization} values = group-ID xmax group-ID = user-assigned ID of an internally-created dynamic group that excludes reacting atoms, and can be used by a subsequent time integration fix such as nvt, npt, or nve (cannot be 'all') {xmax} value = distance - distance = xmax value that is used by an internally created "nve/limit"_nve_limit.html integrator + distance = xmax value that is used by an internally created "nve/limit"_fix_nve_limit.html integrator react = mandatory argument indicating new reaction specification react-ID = user-assigned name for the reaction react-group-ID = only atoms in this group are available for the reaction Nevery = attempt reaction every this many steps :l - Rmin = bonding pair atoms separated by less than Rmin can initiate reaction (distance units) :l + Rmin = bonding pair atoms must be separated by more than Rmin to initiate reaction (distance units) :l + Rmax = bonding pair atoms must be separated by less than Rmax to initiate reaction (distance units) :l template-ID(pre-reacted) = ID of a molecule template containing pre-reaction topology :l template-ID(post-reacted) = ID of a molecule template containing post-reaction topology :l map_file = name of file specifying corresponding atomIDs in the pre- and post-reacted templates :l @@ -46,15 +47,15 @@ react = mandatory argument indicating new reaction specification molecule mol1 pre_reacted_topology.txt molecule mol2 post_reacted_topology.txt -fix 5 all bond/react stabilization no react myrxn1 all 1 3.25 mol1 mol2 map_file.txt +fix 5 all bond/react stabilization no react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt molecule mol1 pre_reacted_rxn1.txt molecule mol2 post_reacted_rxn1.txt molecule mol3 pre_reacted_rxn2.txt molecule mol4 post_reacted_rxn2.txt fix 5 all bond/react stabilization yes nvt_grp .03 & - react myrxn1 all 1 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 & - react myrxn2 all 1 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345 + react myrxn1 all 1 0 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 & + react myrxn2 all 1 0 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345 fix 6 nvt_grp nvt temp 300 300 100 # system-wide thermostat must be defined after bond/react :pre [Description:] @@ -101,9 +102,14 @@ The group-ID set using the {stabilization} keyword should be a previously unused group-ID. The fix bond/react command creates a "dynamic group"_group.html of this name that excludes reacting atoms. This dynamic group-ID should then be used by a subsequent system-wide -time integrator, as shown in the second example above. It is necessary -to place the time integration command after the fix bond/react command -due to the internal dynamic grouping performed by fix bond/react. +time integrator, as shown in the second example above. It is currently +necessary to place the time integration command after the fix +bond/react command due to the internal dynamic grouping performed by +fix bond/react. + +NOTE: The internally created group currently applies to all atoms in +the system, i.e. you should generally not have a separate thermostat +which acts on the 'all' group. The following comments pertain to each 'react' argument: @@ -118,21 +124,20 @@ modified to match the post-reaction template. A bonding atom pair will be identified if several conditions are met. First, a pair of atoms within the specified react-group-ID of type -typei and typej must be within a distance Rmin of each other. The atom -types typei and typej are specified in the pre- and post-reaction -templates. The distance calculation uses the pair neighbor list, -therefore bonded neighbor exclusions may prevent a reaction between -1st, 2nd or 3rd bonded neighbor atoms. If multiple bonding atom pairs -are identified for an atom, the closest bonding atom partner is set as -its "nearest" bonding partner. Then, if both an atomi and atomj have -each other as their nearest bonding partners, these two atoms are -identified as the bonding atom pair of the reaction site. Once this -unique bonding atom pair is identified for each reaction, there could -two or more reactions that involve a given atom on the same timestep. -If this is the case, only one such reaction is permitted to occur. -This reaction is chosen randomly from all potential reactions. This -capability allows e.g. for different reaction pathways to proceed from -identical reaction sites with user-specified probabilities. +typei and typej must separated by a distance between Rmin and Rmax. It +is possible that multiple bonding atom pairs are identified: if the +bonding atoms in the pre-reacted template are not 1-2, 1-3, or 1-4 +neighbors, the closest bonding atom partner is set as its bonding +partner; otherwise, the farthest potential partner is chosen. Then, if +both an atomi and atomj have each other as their nearest bonding +partners, these two atoms are identified as the bonding atom pair of +the reaction site. Once this unique bonding atom pair is identified +for each reaction, there could two or more reactions that involve a +given atom on the same timestep. If this is the case, only one such +reaction is permitted to occur. This reaction is chosen randomly from +all potential reactions. This capability allows e.g. for different +reaction pathways to proceed from identical reaction sites with +user-specified probabilities. The pre-reacted molecule template is specified by a molecule command. This molecule template file contains a sample reaction site and its @@ -262,9 +267,11 @@ angles, dihedrals or impropers are supported. A few capabilities to note: 1) You may specify as many 'react' arguments as desired. For example, you could break down a complicated reaction mechanism into several reaction steps, each defined by its -own 'react' argument. 2) While typically a bond is formed between the -bonding atom pairs specified in the pre-reacted molecule template, -this is not required. +own 'react' argument. 2) While typically a bond is formed or removed +between the bonding atom pairs specified in the pre-reacted molecule +template, this is not required. 3) By reversing the order of the pre- +and post- reacted molecule templates in another 'react' argument, you +can allow for the possibility of one or more reverse reactions. The optional keywords deal with the probability of a given reaction occurring as well as the stable equilibration of each reaction site as @@ -300,14 +307,14 @@ reaction: fix 1 bond_react_MASTER_group temp/rescale 1 300 300 10 1 NOTE: This command must be added after the fix bond/react command, and -will apply to all reaction steps. +will apply to all reactions. Computationally, each timestep this fix operates, it loops over -neighbor lists and computes distances between pairs of atoms in the -list. It also communicates between neighboring processors to -coordinate which bonds are created. All of these operations increase -the cost of a timestep. Thus you should be cautious about invoking -this fix too frequently. +neighbor lists (for bond-forming reactions) and computes distances +between pairs of atoms in the list. It also communicates between +neighboring processors to coordinate which bonds are created and/or +removed. All of these operations increase the cost of a timestep. Thus +you should be cautious about invoking this fix too frequently. You can dump out snapshots of the current bond topology via the dump local command. diff --git a/doc/src/fix_langevin_drude.txt b/doc/src/fix_langevin_drude.txt index afc9c5f257..c85ff24c96 100644 --- a/doc/src/fix_langevin_drude.txt +++ b/doc/src/fix_langevin_drude.txt @@ -154,7 +154,7 @@ Note: The temperature thermostating the core-Drude particle pairs should be chosen low enough, so as to mimic as closely as possible the self-consistent minimization. It must however be high enough, so that the dipoles can follow the local electric field exerted by the -neighbouring atoms. The optimal value probably depends on the +neighboring atoms. The optimal value probably depends on the temperature of the centers of mass and on the mass of the Drude particles. diff --git a/doc/src/fix_restrain.txt b/doc/src/fix_restrain.txt index c8ec20daaa..1a7c7b6ba5 100644 --- a/doc/src/fix_restrain.txt +++ b/doc/src/fix_restrain.txt @@ -24,10 +24,12 @@ keyword = {bond} or {angle} or {dihedral} :l atom1,atom2,atom3 = IDs of 3 atoms in angle, atom2 = middle atom Kstart,Kstop = restraint coefficients at start/end of run (energy units) theta0 = equilibrium angle theta (degrees) - {dihedral} args = atom1 atom2 atom3 atom4 Kstart Kstop phi0 + {dihedral} args = atom1 atom2 atom3 atom4 Kstart Kstop phi0 keyword/value atom1,atom2,atom3,atom4 = IDs of 4 atoms in dihedral in linear order Kstart,Kstop = restraint coefficients at start/end of run (energy units) - phi0 = equilibrium dihedral angle phi (degrees) :pre + phi0 = equilibrium dihedral angle phi (degrees) + keyword/value = optional keyword value pairs. supported keyword/value pairs: + {mult} n = dihedral multiplicity n (integer >= 0, default = 1) :pre :ule [Examples:] @@ -155,11 +157,13 @@ associated with the restraint is with the following coefficients: K (energy) -n = 1 +n (multiplicity, >= 0) d (degrees) = phi0 + 180 :ul -K and phi0 are specified with the fix. Note that the value of n is -hard-wired to 1. Also note that the energy will be a minimum when the +K and phi0 are specified with the fix. Note that the value of the +dihedral multiplicity {n} is set by default to 1. You can use the +optional {mult} keyword to set it to a different positive integer. +Also note that the energy will be a minimum when the current dihedral angle phi is equal to phi0. :line diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index fca442cc13..79c2f75b8b 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -20,6 +20,7 @@ Fixes :h1 fix_ave_time fix_aveforce fix_balance + fix_bocs fix_bond_break fix_bond_create fix_bond_swap diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 73f8d005be..1f4bf157f4 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -135,6 +135,7 @@ fix_ave_histo.html fix_ave_time.html fix_aveforce.html fix_balance.html +fix_bocs.html fix_bond_break.html fix_bond_create.html fix_bond_react.html diff --git a/doc/src/pair_kolmogorov_crespi_z.txt b/doc/src/pair_kolmogorov_crespi_z.txt index c7e005a591..97f132eacd 100644 --- a/doc/src/pair_kolmogorov_crespi_z.txt +++ b/doc/src/pair_kolmogorov_crespi_z.txt @@ -38,7 +38,7 @@ This shift is achieved by the last term in the equation for {Vij} above. This potential is intended for interactions between two layers of graphene. Therefore, to avoid interaction between layers in multi-layered materials, each layer should have a separate atom type and interactions should only -be computed between atom types of neighbouring layers. +be computed between atom types of neighboring layers. The parameter file (e.g. CC.KC), is intended for use with metal "units"_units.html, with energies in meV. An additional parameter, {S}, diff --git a/examples/USER/bocs/README b/examples/USER/bocs/README new file mode 100644 index 0000000000..ae1739f8c0 --- /dev/null +++ b/examples/USER/bocs/README @@ -0,0 +1,6 @@ +This folder contains the files to run a NPT simulation of 1 site CG methanol +while employing a correction to the barostat. +The pair force was computed via the Multi-Scale Coarse-Graining method. +The resulting model was then iteratively pressure matched. +The model accurately reproduces both structural (RDF) and thermodynamic +(Pressure-Volume EoS) properties of the underlying OPLS-AA model of methanol. diff --git a/examples/USER/bocs/in.methanol b/examples/USER/bocs/in.methanol new file mode 100644 index 0000000000..e7c80e014d --- /dev/null +++ b/examples/USER/bocs/in.methanol @@ -0,0 +1,69 @@ +units real +dimension 3 +boundary p p p +atom_style atomic + +newton on +timestep 1.0 + +read_data methanol.data + +velocity all create 300.0 16802 dist gaussian + +pair_style table spline 15000 + +pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0 + +neigh_modify delay 0 every 1 check yes one 10000 +neighbor 12.0 bin + +thermo 500 +thermo_style custom step temp pe etotal press vol + +variable STEP equal step +variable TEMP equal temp +## volume from cubic angstroms to cubic nm +variable VOL equal vol/1000.0 +## pressure from atm to bar +variable PRESS equal press*1.01325 +variable PXX equal pxx*1.01325 +variable PYY equal pyy*1.01325 +variable PZZ equal pzz*1.01325 +variable PXY equal pxy*1.01325 +variable PXZ equal pxz*1.01325 +variable PYZ equal pyz*1.01325 +## energy from kcal/mol to kJ/mol +variable KE equal ke*4.184 +variable PE equal pe*4.184 +variable UVDW equal evdwl*4.184 + + +##### SPECIAL COMMANDS FOR FIX_BOCS ##### +# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2 +fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 + +# Report the modified pressure +thermo_modify press 1_press + + + +## Uncomment to save some data from simulation to files +#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no +#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no +#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no +#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no +#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no +#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no +#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no +#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no + +## Prints a configuration to dump.txt every 500 steps +#dump 1 all custom 500 dump.txt id type x y z fx fy fz + +# Write restart files to continue simulations +#restart 10000 state1.restart state2.restart + +## Run for this many steps +run_style verlet +run 10000 + diff --git a/examples/USER/bocs/lammps_nb_MET-MET.table b/examples/USER/bocs/lammps_nb_MET-MET.table new file mode 100644 index 0000000000..c6d9fc6ca2 --- /dev/null +++ b/examples/USER/bocs/lammps_nb_MET-MET.table @@ -0,0 +1,2505 @@ +#Converted from table.xvg + +nb_METMET +N 2500 + +1 0.010000 573.151769 380.122371 +2 0.020000 569.356836 378.855163 +3 0.030000 565.574570 377.588193 +4 0.040000 561.805210 376.320985 +5 0.050000 558.048279 375.053776 +6 0.060000 554.304015 373.786807 +7 0.070000 550.572419 372.519598 +8 0.080000 546.853728 371.252390 +9 0.090000 543.147467 369.985421 +10 0.100000 539.453872 368.718212 +11 0.110000 535.773184 367.451004 +12 0.120000 532.104924 366.184034 +13 0.130000 528.449331 364.916826 +14 0.140000 524.806644 363.649618 +15 0.150000 521.176386 362.382648 +16 0.160000 517.559034 361.115440 +17 0.170000 513.954111 359.848231 +18 0.180000 510.361855 358.581262 +19 0.190000 506.782505 357.314054 +20 0.200000 503.215583 356.046845 +21 0.210000 499.661568 354.779876 +22 0.220000 496.119981 353.512667 +23 0.230000 492.591300 352.245459 +24 0.240000 489.075287 350.978489 +25 0.250000 485.571702 349.711281 +26 0.260000 482.081023 348.444073 +27 0.270000 478.602772 347.177103 +28 0.280000 475.137428 345.909895 +29 0.290000 471.684751 344.642686 +30 0.300000 468.244503 343.375717 +31 0.310000 464.817161 342.108509 +32 0.320000 461.402486 340.841300 +33 0.330000 458.000239 339.574331 +34 0.340000 454.610899 338.307122 +35 0.350000 451.234226 337.039914 +36 0.360000 447.870220 335.772945 +37 0.370000 444.518642 334.505736 +38 0.380000 441.179971 333.238528 +39 0.390000 437.853967 331.971558 +40 0.400000 434.540631 330.704350 +41 0.410000 431.239962 329.437141 +42 0.420000 427.951721 328.170172 +43 0.430000 424.676386 326.902964 +44 0.440000 421.413719 325.635755 +45 0.450000 418.163719 324.368786 +46 0.460000 414.926386 323.101577 +47 0.470000 411.701721 321.834369 +48 0.480000 408.489723 320.567400 +49 0.490000 405.290392 319.300191 +50 0.500000 402.103728 318.032983 +51 0.510000 398.929732 316.766013 +52 0.520000 395.768403 315.498805 +53 0.530000 392.619742 314.231597 +54 0.540000 389.483748 312.964627 +55 0.550000 386.360421 311.697419 +56 0.560000 383.249761 310.430210 +57 0.570000 380.151769 309.163241 +58 0.580000 377.066444 307.896033 +59 0.590000 373.993786 306.628824 +60 0.600000 370.934034 305.361855 +61 0.610000 367.886711 304.094646 +62 0.620000 364.852055 302.827438 +63 0.630000 361.830067 301.560468 +64 0.640000 358.820746 300.293260 +65 0.650000 355.824331 299.026052 +66 0.660000 352.840344 297.759082 +67 0.670000 349.869025 296.491874 +68 0.680000 346.910373 295.224904 +69 0.690000 343.964627 293.957696 +70 0.700000 341.031310 292.690488 +71 0.710000 338.110660 291.423518 +72 0.720000 335.202916 290.156310 +73 0.730000 332.307600 288.889101 +74 0.740000 329.425191 287.622132 +75 0.750000 326.555210 286.354924 +76 0.760000 323.697897 285.087715 +77 0.770000 320.853489 283.820746 +78 0.780000 318.021511 282.553537 +79 0.790000 315.202438 281.286329 +80 0.800000 312.395793 280.019359 +81 0.810000 309.602055 278.752151 +82 0.820000 306.820746 277.484943 +83 0.830000 304.052342 276.217973 +84 0.840000 301.296367 274.950765 +85 0.850000 298.553298 273.683556 +86 0.860000 295.822658 272.416587 +87 0.870000 293.104924 271.149379 +88 0.880000 290.399857 269.882170 +89 0.890000 287.707218 268.615201 +90 0.900000 285.027486 267.347992 +91 0.910000 282.360421 266.080784 +92 0.920000 279.705784 264.813815 +93 0.930000 277.064054 263.546606 +94 0.940000 274.434990 262.279398 +95 0.950000 271.818356 261.012428 +96 0.960000 269.214627 259.745220 +97 0.970000 266.623566 258.478011 +98 0.980000 264.045172 257.211042 +99 0.990000 261.479446 255.943834 +100 1.000000 258.926147 254.676625 +101 1.010000 256.385755 253.409656 +102 1.020000 253.858031 252.142447 +103 1.030000 251.342973 250.875239 +104 1.040000 248.840583 249.608270 +105 1.050000 246.350860 248.341061 +106 1.060000 243.873805 247.073853 +107 1.070000 241.409417 245.806883 +108 1.080000 238.957600 244.539675 +109 1.090000 236.518523 243.272467 +110 1.100000 234.092137 242.005497 +111 1.110000 231.678418 240.738289 +112 1.120000 229.277366 239.471080 +113 1.130000 226.889006 238.204039 +114 1.140000 224.513289 236.936926 +115 1.150000 222.150263 235.669790 +116 1.160000 219.799904 234.402653 +117 1.170000 217.462213 233.135540 +118 1.180000 215.137189 231.868403 +119 1.190000 212.824833 230.601267 +120 1.200000 210.525167 229.334154 +121 1.210000 208.238145 228.067017 +122 1.220000 205.963815 226.799904 +123 1.230000 203.702151 225.532768 +124 1.240000 201.453155 224.265631 +125 1.250000 199.216850 222.998518 +126 1.260000 196.993188 221.731381 +127 1.270000 194.782218 220.464269 +128 1.280000 192.583915 219.197132 +129 1.290000 190.398279 217.929995 +130 1.300000 188.225311 216.662882 +131 1.310000 186.065010 215.395746 +132 1.320000 183.917400 214.128609 +133 1.330000 181.782433 212.861496 +134 1.340000 179.660158 211.594359 +135 1.350000 177.550550 210.327247 +136 1.360000 175.453609 209.060110 +137 1.370000 173.369359 207.792973 +138 1.380000 171.297753 206.525860 +139 1.390000 169.238838 205.258724 +140 1.400000 167.192591 203.991587 +141 1.410000 165.159011 202.724474 +142 1.420000 163.138098 201.457337 +143 1.430000 161.129852 200.190225 +144 1.440000 159.134297 198.923088 +145 1.450000 157.151386 197.655951 +146 1.460000 155.181166 196.388838 +147 1.470000 153.223614 195.121702 +148 1.480000 151.278728 193.854565 +149 1.490000 149.346534 192.587452 +150 1.500000 147.426984 191.320315 +151 1.510000 145.520124 190.053203 +152 1.520000 143.625932 188.786066 +153 1.530000 141.744407 187.518929 +154 1.540000 139.875550 186.251816 +155 1.550000 138.019359 184.984680 +156 1.560000 136.175860 183.717567 +157 1.570000 134.345005 182.450430 +158 1.580000 132.526840 181.183293 +159 1.590000 130.721343 179.916181 +160 1.600000 128.928513 178.649044 +161 1.610000 127.148375 177.381907 +162 1.620000 125.380880 176.114794 +163 1.630000 123.626076 174.847658 +164 1.640000 121.883939 173.580545 +165 1.650000 120.154469 172.313408 +166 1.660000 118.437667 171.046272 +167 1.670000 116.733533 169.779159 +168 1.680000 115.042089 168.512022 +169 1.690000 113.363289 167.244885 +170 1.700000 111.697180 165.977772 +171 1.710000 110.043738 164.710636 +172 1.720000 108.402964 163.443523 +173 1.730000 106.774857 162.176386 +174 1.740000 105.159441 160.909250 +175 1.750000 103.556692 159.642137 +176 1.760000 101.966587 158.375000 +177 1.770000 100.389173 157.107887 +178 1.780000 98.824450 155.840750 +179 1.790000 97.272371 154.573614 +180 1.800000 95.732959 153.306501 +181 1.810000 94.206238 152.039364 +182 1.820000 92.692185 150.772228 +183 1.830000 91.190798 149.505115 +184 1.840000 89.702079 148.237978 +185 1.850000 88.226028 146.970865 +186 1.860000 86.762667 145.703728 +187 1.870000 85.311950 144.436592 +188 1.880000 83.873924 143.169479 +189 1.890000 82.448566 141.902342 +190 1.900000 81.035875 140.635206 +191 1.910000 79.635875 139.368093 +192 1.920000 78.248518 138.100956 +193 1.930000 76.873853 136.833843 +194 1.940000 75.511831 135.566707 +195 1.950000 74.162500 134.299570 +196 1.960000 72.825860 133.032457 +197 1.970000 71.501864 131.765320 +198 1.980000 70.190535 130.498184 +199 1.990000 68.891898 129.231071 +200 2.000000 67.605927 127.963934 +201 2.010000 66.332624 126.696821 +202 2.020000 65.071989 125.429685 +203 2.030000 63.824020 124.162548 +204 2.040000 62.588743 122.895435 +205 2.050000 61.366109 121.628298 +206 2.060000 60.156166 120.361185 +207 2.070000 58.958891 119.094049 +208 2.080000 57.774283 117.826912 +209 2.090000 56.602366 116.559799 +210 2.100000 55.443093 115.292663 +211 2.110000 54.296511 114.025526 +212 2.120000 53.162572 112.758413 +213 2.130000 52.041324 111.491276 +214 2.140000 50.932768 110.224163 +215 2.150000 49.836855 108.957027 +216 2.160000 48.753609 107.689890 +217 2.170000 47.683054 106.422777 +218 2.180000 46.625167 105.155641 +219 2.190000 45.579947 103.888504 +220 2.200000 44.547395 102.621391 +221 2.210000 43.527510 101.354254 +222 2.220000 42.520315 100.087141 +223 2.230000 41.525765 98.820005 +224 2.240000 40.543905 97.552868 +225 2.250000 39.574713 96.285755 +226 2.260000 38.618188 95.018619 +227 2.270000 37.674331 93.751506 +228 2.280000 36.743164 92.484369 +229 2.290000 35.824641 91.217232 +230 2.300000 34.918810 89.950120 +231 2.310000 34.025645 88.682983 +232 2.320000 33.145148 87.415846 +233 2.330000 32.277342 86.148733 +234 2.340000 31.422180 84.881597 +235 2.350000 30.579708 83.614484 +236 2.360000 29.749880 82.347347 +237 2.370000 28.932744 81.080210 +238 2.380000 28.128298 79.813098 +239 2.390000 27.336496 78.545961 +240 2.400000 26.557361 77.278824 +241 2.410000 25.790918 76.011711 +242 2.420000 25.037141 74.744575 +243 2.430000 24.296033 73.477462 +244 2.440000 23.567584 72.210325 +245 2.450000 22.851816 70.943188 +246 2.460000 22.148721 69.676076 +247 2.470000 21.458296 68.408939 +248 2.480000 20.780543 67.141802 +249 2.490000 20.115459 65.874689 +250 2.500000 19.463047 64.607553 +251 2.510000 18.823308 63.340440 +252 2.520000 18.196240 62.073303 +253 2.530000 17.581843 60.806166 +254 2.540000 16.980117 59.539054 +255 2.550000 16.391061 58.271917 +256 2.560000 15.814677 57.004804 +257 2.570000 15.250966 55.737667 +258 2.580000 14.699924 54.470531 +259 2.590000 14.161554 53.203418 +260 2.600000 13.635856 51.936281 +261 2.610000 13.122830 50.669144 +262 2.620000 12.622474 49.402032 +263 2.630000 12.134787 48.134895 +264 2.640000 11.659775 46.867782 +265 2.650000 11.197433 45.600645 +266 2.660000 10.747763 44.333509 +267 2.670000 10.310762 43.066396 +268 2.680000 9.886434 41.799259 +269 2.690000 9.474778 40.532122 +270 2.700000 9.075791 39.265010 +271 2.710000 8.689477 37.997873 +272 2.720000 8.315834 36.730760 +273 2.730000 7.954861 35.463623 +274 2.740000 7.606561 34.196487 +275 2.750000 7.270932 32.927892 +276 2.760000 6.948004 31.654852 +277 2.770000 6.637835 30.377510 +278 2.780000 6.340454 29.101769 +279 2.790000 6.055801 27.837620 +280 2.800000 5.783702 26.597945 +281 2.810000 5.523841 25.396726 +282 2.820000 5.275767 24.244336 +283 2.830000 5.038956 23.144804 +284 2.840000 4.812870 22.097438 +285 2.850000 4.597005 21.099622 +286 2.860000 4.390880 20.148458 +287 2.870000 4.194037 19.241052 +288 2.880000 4.006056 18.374520 +289 2.890000 3.826546 17.546083 +290 2.900000 3.655136 16.753186 +291 2.910000 3.491482 15.993602 +292 2.920000 3.335263 15.265425 +293 2.930000 3.186174 14.567077 +294 2.940000 3.043922 13.897208 +295 2.950000 2.908229 13.254567 +296 2.960000 2.778831 12.637918 +297 2.970000 2.655471 12.046023 +298 2.980000 2.537911 11.477648 +299 2.990000 2.425918 10.931613 +300 3.000000 2.319278 10.406840 +301 3.010000 2.217782 9.902409 +302 3.020000 2.121230 9.417548 +303 3.030000 2.029431 8.951644 +304 3.040000 1.942197 8.504192 +305 3.050000 1.859347 8.074728 +306 3.060000 1.780703 7.662801 +307 3.070000 1.706091 7.267957 +308 3.080000 1.635343 6.889739 +309 3.090000 1.568296 6.527689 +310 3.100000 1.504790 6.181326 +311 3.110000 1.444670 5.850148 +312 3.120000 1.387787 5.533626 +313 3.130000 1.333997 5.231212 +314 3.140000 1.283163 4.942333 +315 3.150000 1.235151 4.666417 +316 3.160000 1.189834 4.402885 +317 3.170000 1.147093 4.151162 +318 3.180000 1.106811 3.910669 +319 3.190000 1.068879 3.680848 +320 3.200000 1.033194 3.461162 +321 3.210000 0.999656 3.251111 +322 3.220000 0.968172 3.050241 +323 3.230000 0.938651 2.858131 +324 3.240000 0.911009 2.674391 +325 3.250000 0.885163 2.498638 +326 3.260000 0.861036 2.330495 +327 3.270000 0.838554 2.169586 +328 3.280000 0.817645 2.015532 +329 3.290000 0.798243 1.867959 +330 3.300000 0.780285 1.726501 +331 3.310000 0.763713 1.590803 +332 3.320000 0.748469 1.460521 +333 3.330000 0.734502 1.335322 +334 3.340000 0.721763 1.214881 +335 3.350000 0.710205 1.098876 +336 3.360000 0.699785 0.986987 +337 3.370000 0.690465 0.878893 +338 3.380000 0.682208 0.774275 +339 3.390000 0.674980 0.672837 +340 3.400000 0.668751 0.574332 +341 3.410000 0.663493 0.478582 +342 3.420000 0.659179 0.385482 +343 3.430000 0.655783 0.294996 +344 3.440000 0.653279 0.207136 +345 3.450000 0.651641 0.121937 +346 3.460000 0.650841 0.039439 +347 3.470000 0.650852 -0.040323 +348 3.480000 0.651647 -0.117308 +349 3.490000 0.653198 -0.191459 +350 3.500000 0.655476 -0.262683 +351 3.510000 0.658452 -0.330833 +352 3.520000 0.662093 -0.395708 +353 3.530000 0.666366 -0.457054 +354 3.540000 0.671234 -0.514581 +355 3.550000 0.676658 -0.567979 +356 3.560000 0.682593 -0.616941 +357 3.570000 0.688996 -0.661156 +358 3.580000 0.695817 -0.700313 +359 3.590000 0.703003 -0.734100 +360 3.600000 0.710499 -0.762198 +361 3.610000 0.718246 -0.784280 +362 3.620000 0.726184 -0.800010 +363 3.630000 0.734247 -0.809045 +364 3.640000 0.742365 -0.811033 +365 3.650000 0.750467 -0.805623 +366 3.660000 0.758478 -0.792462 +367 3.670000 0.766317 -0.771195 +368 3.680000 0.773902 -0.741480 +369 3.690000 0.781146 -0.703040 +370 3.700000 0.787962 -0.655760 +371 3.710000 0.794261 -0.599742 +372 3.720000 0.799957 -0.535320 +373 3.730000 0.804968 -0.463042 +374 3.740000 0.809218 -0.383623 +375 3.750000 0.812640 -0.297840 +376 3.760000 0.815175 -0.206482 +377 3.770000 0.816770 -0.110338 +378 3.780000 0.817382 -0.010196 +379 3.790000 0.816974 0.093143 +380 3.800000 0.815519 0.198858 +381 3.810000 0.812997 0.306097 +382 3.820000 0.809397 0.413975 +383 3.830000 0.804717 0.521577 +384 3.840000 0.798965 0.627964 +385 3.850000 0.792158 0.732190 +386 3.860000 0.784321 0.833306 +387 3.870000 0.775492 0.930364 +388 3.880000 0.765714 1.022423 +389 3.890000 0.755043 1.108613 +390 3.900000 0.743542 1.188224 +391 3.910000 0.731279 1.260767 +392 3.920000 0.718326 1.325984 +393 3.930000 0.704759 1.383835 +394 3.940000 0.690650 1.434445 +395 3.950000 0.676070 1.478004 +396 3.960000 0.661090 1.514714 +397 3.970000 0.645776 1.544776 +398 3.980000 0.630194 1.568391 +399 3.990000 0.614408 1.585781 +400 4.000000 0.598479 1.597203 +401 4.010000 0.582464 1.602970 +402 4.020000 0.566419 1.603451 +403 4.030000 0.550395 1.599066 +404 4.040000 0.534438 1.590278 +405 4.050000 0.518589 1.577563 +406 4.060000 0.502887 1.561403 +407 4.070000 0.487361 1.542276 +408 4.080000 0.472041 1.520661 +409 4.090000 0.456948 1.497013 +410 4.100000 0.442101 1.471743 +411 4.110000 0.427513 1.445196 +412 4.120000 0.413197 1.417647 +413 4.130000 0.399160 1.389309 +414 4.140000 0.385411 1.360346 +415 4.150000 0.371953 1.330901 +416 4.160000 0.358793 1.301117 +417 4.170000 0.345931 1.271134 +418 4.180000 0.333370 1.241094 +419 4.190000 0.321109 1.211129 +420 4.200000 0.309147 1.181360 +421 4.210000 0.297482 1.151883 +422 4.220000 0.286110 1.122776 +423 4.230000 0.275027 1.094093 +424 4.240000 0.264228 1.065876 +425 4.250000 0.253709 1.038158 +426 4.260000 0.243465 1.010972 +427 4.270000 0.233490 0.984352 +428 4.280000 0.223778 0.958329 +429 4.290000 0.214323 0.932933 +430 4.300000 0.205119 0.908180 +431 4.310000 0.196159 0.884075 +432 4.320000 0.187438 0.860607 +433 4.330000 0.178947 0.837752 +434 4.340000 0.170683 0.815475 +435 4.350000 0.162638 0.793737 +436 4.360000 0.154808 0.772498 +437 4.370000 0.147188 0.751719 +438 4.380000 0.139773 0.731359 +439 4.390000 0.132561 0.711385 +440 4.400000 0.125546 0.691764 +441 4.410000 0.118725 0.672480 +442 4.420000 0.112096 0.653522 +443 4.430000 0.105655 0.634892 +444 4.440000 0.099398 0.616596 +445 4.450000 0.093323 0.598647 +446 4.460000 0.087425 0.581054 +447 4.470000 0.081702 0.563831 +448 4.480000 0.076149 0.546986 +449 4.490000 0.070762 0.530530 +450 4.500000 0.065538 0.514469 +451 4.510000 0.060473 0.498801 +452 4.520000 0.055562 0.483520 +453 4.530000 0.050802 0.468614 +454 4.540000 0.046190 0.454067 +455 4.550000 0.041721 0.439862 +456 4.560000 0.037393 0.425980 +457 4.570000 0.033201 0.412404 +458 4.580000 0.029145 0.399115 +459 4.590000 0.025219 0.386097 +460 4.600000 0.021423 0.373334 +461 4.610000 0.017752 0.360814 +462 4.620000 0.014206 0.348528 +463 4.630000 0.010782 0.336470 +464 4.640000 0.007477 0.324634 +465 4.650000 0.004289 0.313018 +466 4.660000 0.001217 0.301618 +467 4.670000 -0.001743 0.290430 +468 4.680000 -0.004592 0.279452 +469 4.690000 -0.007332 0.268679 +470 4.700000 -0.009966 0.258107 +471 4.710000 -0.012494 0.247732 +472 4.720000 -0.014920 0.237550 +473 4.730000 -0.017245 0.227555 +474 4.740000 -0.019471 0.217741 +475 4.750000 -0.021600 0.208103 +476 4.760000 -0.023633 0.198635 +477 4.770000 -0.025573 0.189332 +478 4.780000 -0.027420 0.180188 +479 4.790000 -0.029177 0.171198 +480 4.800000 -0.030844 0.162360 +481 4.810000 -0.032424 0.153675 +482 4.820000 -0.033917 0.145146 +483 4.830000 -0.035327 0.136782 +484 4.840000 -0.036653 0.128591 +485 4.850000 -0.037899 0.120584 +486 4.860000 -0.039065 0.112771 +487 4.870000 -0.040154 0.105163 +488 4.880000 -0.041168 0.097771 +489 4.890000 -0.042109 0.090602 +490 4.900000 -0.042980 0.083661 +491 4.910000 -0.043783 0.076950 +492 4.920000 -0.044519 0.070462 +493 4.930000 -0.045192 0.064187 +494 4.940000 -0.045803 0.058110 +495 4.950000 -0.046354 0.052216 +496 4.960000 -0.046847 0.046490 +497 4.970000 -0.047284 0.040914 +498 4.980000 -0.047665 0.035473 +499 4.990000 -0.047993 0.030154 +500 5.000000 -0.048269 0.024950 +501 5.010000 -0.048492 0.019859 +502 5.020000 -0.048666 0.014891 +503 5.030000 -0.048790 0.010060 +504 5.040000 -0.048867 0.005388 +505 5.050000 -0.048898 0.000898 +506 5.060000 -0.048885 -0.003386 +507 5.070000 -0.048830 -0.007440 +508 5.080000 -0.048736 -0.011241 +509 5.090000 -0.048605 -0.014768 +510 5.100000 -0.048441 -0.018009 +511 5.110000 -0.048245 -0.020960 +512 5.120000 -0.048022 -0.023629 +513 5.130000 -0.047773 -0.026033 +514 5.140000 -0.047501 -0.028198 +515 5.150000 -0.047209 -0.030151 +516 5.160000 -0.046898 -0.031921 +517 5.170000 -0.046570 -0.033536 +518 5.180000 -0.046227 -0.035024 +519 5.190000 -0.045870 -0.036412 +520 5.200000 -0.045499 -0.037718 +521 5.210000 -0.045115 -0.038958 +522 5.220000 -0.044720 -0.040135 +523 5.230000 -0.044313 -0.041250 +524 5.240000 -0.043895 -0.042293 +525 5.250000 -0.043467 -0.043257 +526 5.260000 -0.043030 -0.044132 +527 5.270000 -0.042584 -0.044907 +528 5.280000 -0.042131 -0.045574 +529 5.290000 -0.041673 -0.046124 +530 5.300000 -0.041209 -0.046554 +531 5.310000 -0.040742 -0.046865 +532 5.320000 -0.040272 -0.047063 +533 5.330000 -0.039800 -0.047159 +534 5.340000 -0.039328 -0.047168 +535 5.350000 -0.038857 -0.047108 +536 5.360000 -0.038386 -0.046995 +537 5.370000 -0.037917 -0.046847 +538 5.380000 -0.037449 -0.046679 +539 5.390000 -0.036983 -0.046509 +540 5.400000 -0.036519 -0.046351 +541 5.410000 -0.036056 -0.046219 +542 5.420000 -0.035595 -0.046122 +543 5.430000 -0.035134 -0.046070 +544 5.440000 -0.034673 -0.046071 +545 5.450000 -0.034213 -0.046131 +546 5.460000 -0.033751 -0.046258 +547 5.470000 -0.033287 -0.046457 +548 5.480000 -0.032822 -0.046736 +549 5.490000 -0.032353 -0.047101 +550 5.500000 -0.031880 -0.047557 +551 5.510000 -0.031402 -0.048104 +552 5.520000 -0.030918 -0.048745 +553 5.530000 -0.030427 -0.049476 +554 5.540000 -0.029928 -0.050293 +555 5.550000 -0.029421 -0.051193 +556 5.560000 -0.028904 -0.052171 +557 5.570000 -0.028377 -0.053222 +558 5.580000 -0.027840 -0.054343 +559 5.590000 -0.027290 -0.055528 +560 5.600000 -0.026729 -0.056773 +561 5.610000 -0.026155 -0.058075 +562 5.620000 -0.025568 -0.059432 +563 5.630000 -0.024966 -0.060839 +564 5.640000 -0.024351 -0.062296 +565 5.650000 -0.023720 -0.063799 +566 5.660000 -0.023075 -0.065347 +567 5.670000 -0.022414 -0.066937 +568 5.680000 -0.021736 -0.068567 +569 5.690000 -0.021042 -0.070235 +570 5.700000 -0.020331 -0.071936 +571 5.710000 -0.019603 -0.073665 +572 5.720000 -0.018858 -0.075416 +573 5.730000 -0.018095 -0.077180 +574 5.740000 -0.017315 -0.078947 +575 5.750000 -0.016516 -0.080709 +576 5.760000 -0.015700 -0.082454 +577 5.770000 -0.014867 -0.084173 +578 5.780000 -0.014017 -0.085857 +579 5.790000 -0.013150 -0.087497 +580 5.800000 -0.012267 -0.089086 +581 5.810000 -0.011368 -0.090621 +582 5.820000 -0.010455 -0.092105 +583 5.830000 -0.009526 -0.093540 +584 5.840000 -0.008584 -0.094934 +585 5.850000 -0.007628 -0.096296 +586 5.860000 -0.006658 -0.097632 +587 5.870000 -0.005675 -0.098952 +588 5.880000 -0.004679 -0.100263 +589 5.890000 -0.003670 -0.101570 +590 5.900000 -0.002647 -0.102873 +591 5.910000 -0.001612 -0.104163 +592 5.920000 -0.000564 -0.105422 +593 5.930000 0.000496 -0.106625 +594 5.940000 0.001568 -0.107740 +595 5.950000 0.002651 -0.108733 +596 5.960000 0.003743 -0.109570 +597 5.970000 0.004842 -0.110216 +598 5.980000 0.005947 -0.110637 +599 5.990000 0.007055 -0.110803 +600 6.000000 0.008163 -0.110691 +601 6.010000 0.009269 -0.110293 +602 6.020000 0.010369 -0.109608 +603 6.030000 0.011461 -0.108650 +604 6.040000 0.012542 -0.107441 +605 6.050000 0.013610 -0.106006 +606 6.060000 0.014662 -0.104370 +607 6.070000 0.015697 -0.102559 +608 6.080000 0.016714 -0.100599 +609 6.090000 0.017709 -0.098512 +610 6.100000 0.018684 -0.096319 +611 6.110000 0.019636 -0.094034 +612 6.120000 0.020564 -0.091664 +613 6.130000 0.021469 -0.089212 +614 6.140000 0.022349 -0.086677 +615 6.150000 0.023203 -0.084055 +616 6.160000 0.024030 -0.081343 +617 6.170000 0.024829 -0.078537 +618 6.180000 0.025601 -0.075634 +619 6.190000 0.026342 -0.072631 +620 6.200000 0.027053 -0.069528 +621 6.210000 0.027733 -0.066329 +622 6.220000 0.028380 -0.063038 +623 6.230000 0.028993 -0.059666 +624 6.240000 0.029573 -0.056224 +625 6.250000 0.030118 -0.052725 +626 6.260000 0.030628 -0.049181 +627 6.270000 0.031102 -0.045606 +628 6.280000 0.031540 -0.042010 +629 6.290000 0.031942 -0.038407 +630 6.300000 0.032308 -0.034803 +631 6.310000 0.032638 -0.031205 +632 6.320000 0.032932 -0.027611 +633 6.330000 0.033190 -0.024020 +634 6.340000 0.033412 -0.020425 +635 6.350000 0.033599 -0.016818 +636 6.360000 0.033749 -0.013192 +637 6.370000 0.033862 -0.009539 +638 6.380000 0.033939 -0.005852 +639 6.390000 0.033979 -0.002127 +640 6.400000 0.033982 0.001636 +641 6.410000 0.033947 0.005428 +642 6.420000 0.033873 0.009232 +643 6.430000 0.033762 0.013023 +644 6.440000 0.033613 0.016771 +645 6.450000 0.033427 0.020442 +646 6.460000 0.033204 0.024004 +647 6.470000 0.032947 0.027423 +648 6.480000 0.032656 0.030666 +649 6.490000 0.032333 0.033704 +650 6.500000 0.031982 0.036519 +651 6.510000 0.031603 0.039104 +652 6.520000 0.031199 0.041467 +653 6.530000 0.030774 0.043629 +654 6.540000 0.030327 0.045620 +655 6.550000 0.029861 0.047474 +656 6.560000 0.029377 0.049226 +657 6.570000 0.028877 0.050911 +658 6.580000 0.028359 0.052564 +659 6.590000 0.027825 0.054214 +660 6.600000 0.027275 0.055882 +661 6.610000 0.026708 0.057578 +662 6.620000 0.026123 0.059297 +663 6.630000 0.025522 0.061020 +664 6.640000 0.024903 0.062722 +665 6.650000 0.024267 0.064370 +666 6.660000 0.023616 0.065936 +667 6.670000 0.022949 0.067386 +668 6.680000 0.022268 0.068690 +669 6.690000 0.021575 0.069821 +670 6.700000 0.020871 0.070759 +671 6.710000 0.020160 0.071496 +672 6.720000 0.019442 0.072035 +673 6.730000 0.018719 0.072389 +674 6.740000 0.017994 0.072581 +675 6.750000 0.017267 0.072636 +676 6.760000 0.016541 0.072579 +677 6.770000 0.015816 0.072436 +678 6.780000 0.015092 0.072233 +679 6.790000 0.014371 0.071993 +680 6.800000 0.013652 0.071736 +681 6.810000 0.012936 0.071475 +682 6.820000 0.012223 0.071218 +683 6.830000 0.011512 0.070968 +684 6.840000 0.010804 0.070721 +685 6.850000 0.010098 0.070475 +686 6.860000 0.009394 0.070224 +687 6.870000 0.008693 0.069964 +688 6.880000 0.007995 0.069692 +689 6.890000 0.007299 0.069402 +690 6.900000 0.006607 0.069091 +691 6.910000 0.005917 0.068754 +692 6.920000 0.005232 0.068386 +693 6.930000 0.004550 0.067982 +694 6.940000 0.003872 0.067537 +695 6.950000 0.003199 0.067046 +696 6.960000 0.002531 0.066504 +697 6.970000 0.001869 0.065906 +698 6.980000 0.001213 0.065246 +699 6.990000 0.000564 0.064521 +700 7.000000 -0.000077 0.063729 +701 7.010000 -0.000711 0.062870 +702 7.020000 -0.001335 0.061948 +703 7.030000 -0.001950 0.060969 +704 7.040000 -0.002554 0.059943 +705 7.050000 -0.003148 0.058877 +706 7.060000 -0.003732 0.057783 +707 7.070000 -0.004304 0.056669 +708 7.080000 -0.004865 0.055544 +709 7.090000 -0.005415 0.054418 +710 7.100000 -0.005953 0.053298 +711 7.110000 -0.006481 0.052191 +712 7.120000 -0.006997 0.051099 +713 7.130000 -0.007503 0.050026 +714 7.140000 -0.007998 0.048972 +715 7.150000 -0.008482 0.047939 +716 7.160000 -0.008957 0.046926 +717 7.170000 -0.009421 0.045934 +718 7.180000 -0.009875 0.044963 +719 7.190000 -0.010320 0.044014 +720 7.200000 -0.010756 0.043088 +721 7.210000 -0.011182 0.042185 +722 7.220000 -0.011599 0.041306 +723 7.230000 -0.012008 0.040453 +724 7.240000 -0.012408 0.039626 +725 7.250000 -0.012801 0.038827 +726 7.260000 -0.013185 0.038058 +727 7.270000 -0.013562 0.037319 +728 7.280000 -0.013931 0.036612 +729 7.290000 -0.014294 0.035937 +730 7.300000 -0.014650 0.035295 +731 7.310000 -0.015000 0.034682 +732 7.320000 -0.015344 0.034095 +733 7.330000 -0.015682 0.033528 +734 7.340000 -0.016014 0.032974 +735 7.350000 -0.016341 0.032425 +736 7.360000 -0.016663 0.031873 +737 7.370000 -0.016979 0.031312 +738 7.380000 -0.017289 0.030733 +739 7.390000 -0.017593 0.030130 +740 7.400000 -0.017892 0.029499 +741 7.410000 -0.018183 0.028840 +742 7.420000 -0.018468 0.028153 +743 7.430000 -0.018746 0.027447 +744 7.440000 -0.019017 0.026729 +745 7.450000 -0.019281 0.026008 +746 7.460000 -0.019537 0.025295 +747 7.470000 -0.019787 0.024598 +748 7.480000 -0.020029 0.023927 +749 7.490000 -0.020265 0.023290 +750 7.500000 -0.020495 0.022693 +751 7.510000 -0.020719 0.022137 +752 7.520000 -0.020938 0.021618 +753 7.530000 -0.021152 0.021131 +754 7.540000 -0.021361 0.020667 +755 7.550000 -0.021565 0.020214 +756 7.560000 -0.021765 0.019761 +757 7.570000 -0.021960 0.019298 +758 7.580000 -0.022151 0.018814 +759 7.590000 -0.022336 0.018300 +760 7.600000 -0.022517 0.017748 +761 7.610000 -0.022691 0.017156 +762 7.620000 -0.022860 0.016525 +763 7.630000 -0.023022 0.015859 +764 7.640000 -0.023177 0.015166 +765 7.650000 -0.023325 0.014453 +766 7.660000 -0.023466 0.013730 +767 7.670000 -0.023600 0.013006 +768 7.680000 -0.023726 0.012288 +769 7.690000 -0.023846 0.011585 +770 7.700000 -0.023958 0.010901 +771 7.710000 -0.024064 0.010238 +772 7.720000 -0.024163 0.009595 +773 7.730000 -0.024256 0.008965 +774 7.740000 -0.024342 0.008342 +775 7.750000 -0.024422 0.007717 +776 7.760000 -0.024496 0.007080 +777 7.770000 -0.024564 0.006423 +778 7.780000 -0.024625 0.005738 +779 7.790000 -0.024679 0.005016 +780 7.800000 -0.024725 0.004252 +781 7.810000 -0.024764 0.003443 +782 7.820000 -0.024794 0.002591 +783 7.830000 -0.024816 0.001698 +784 7.840000 -0.024828 0.000771 +785 7.850000 -0.024831 -0.000184 +786 7.860000 -0.024824 -0.001159 +787 7.870000 -0.024808 -0.002149 +788 7.880000 -0.024781 -0.003144 +789 7.890000 -0.024745 -0.004140 +790 7.900000 -0.024699 -0.005129 +791 7.910000 -0.024642 -0.006106 +792 7.920000 -0.024576 -0.007064 +793 7.930000 -0.024501 -0.007999 +794 7.940000 -0.024416 -0.008906 +795 7.950000 -0.024323 -0.009780 +796 7.960000 -0.024221 -0.010616 +797 7.970000 -0.024111 -0.011409 +798 7.980000 -0.023993 -0.012156 +799 7.990000 -0.023867 -0.012852 +800 8.000000 -0.023736 -0.013496 +801 8.010000 -0.023598 -0.014089 +802 8.020000 -0.023454 -0.014635 +803 8.030000 -0.023305 -0.015142 +804 8.040000 -0.023151 -0.015618 +805 8.050000 -0.022993 -0.016075 +806 8.060000 -0.022830 -0.016522 +807 8.070000 -0.022662 -0.016969 +808 8.080000 -0.022490 -0.017428 +809 8.090000 -0.022314 -0.017906 +810 8.100000 -0.022132 -0.018412 +811 8.110000 -0.021945 -0.018949 +812 8.120000 -0.021753 -0.019519 +813 8.130000 -0.021555 -0.020118 +814 8.140000 -0.021351 -0.020743 +815 8.150000 -0.021140 -0.021390 +816 8.160000 -0.020923 -0.022051 +817 8.170000 -0.020699 -0.022723 +818 8.180000 -0.020468 -0.023400 +819 8.190000 -0.020231 -0.024077 +820 8.200000 -0.019987 -0.024748 +821 8.210000 -0.019736 -0.025408 +822 8.220000 -0.019479 -0.026051 +823 8.230000 -0.019215 -0.026672 +824 8.240000 -0.018945 -0.027265 +825 8.250000 -0.018670 -0.027824 +826 8.260000 -0.018389 -0.028344 +827 8.270000 -0.018103 -0.028819 +828 8.280000 -0.017812 -0.029243 +829 8.290000 -0.017518 -0.029612 +830 8.300000 -0.017220 -0.029924 +831 8.310000 -0.016920 -0.030178 +832 8.320000 -0.016617 -0.030381 +833 8.330000 -0.016312 -0.030537 +834 8.340000 -0.016006 -0.030658 +835 8.350000 -0.015699 -0.030753 +836 8.360000 -0.015391 -0.030833 +837 8.370000 -0.015082 -0.030908 +838 8.380000 -0.014773 -0.030989 +839 8.390000 -0.014462 -0.031085 +840 8.400000 -0.014151 -0.031203 +841 8.410000 -0.013838 -0.031343 +842 8.420000 -0.013524 -0.031506 +843 8.430000 -0.013208 -0.031684 +844 8.440000 -0.012890 -0.031869 +845 8.450000 -0.012571 -0.032051 +846 8.460000 -0.012249 -0.032219 +847 8.470000 -0.011926 -0.032364 +848 8.480000 -0.011602 -0.032476 +849 8.490000 -0.011277 -0.032545 +850 8.500000 -0.010951 -0.032564 +851 8.510000 -0.010626 -0.032530 +852 8.520000 -0.010301 -0.032441 +853 8.530000 -0.009977 -0.032300 +854 8.540000 -0.009655 -0.032112 +855 8.550000 -0.009335 -0.031881 +856 8.560000 -0.009017 -0.031613 +857 8.570000 -0.008702 -0.031313 +858 8.580000 -0.008391 -0.030987 +859 8.590000 -0.008083 -0.030640 +860 8.600000 -0.007778 -0.030276 +861 8.610000 -0.007477 -0.029900 +862 8.620000 -0.007180 -0.029516 +863 8.630000 -0.006887 -0.029127 +864 8.640000 -0.006597 -0.028735 +865 8.650000 -0.006312 -0.028342 +866 8.660000 -0.006031 -0.027951 +867 8.670000 -0.005753 -0.027565 +868 8.680000 -0.005479 -0.027186 +869 8.690000 -0.005209 -0.026816 +870 8.700000 -0.004943 -0.026456 +871 8.710000 -0.004680 -0.026104 +872 8.720000 -0.004421 -0.025760 +873 8.730000 -0.004165 -0.025420 +874 8.740000 -0.003912 -0.025080 +875 8.750000 -0.003663 -0.024735 +876 8.760000 -0.003418 -0.024380 +877 8.770000 -0.003176 -0.024009 +878 8.780000 -0.002938 -0.023620 +879 8.790000 -0.002703 -0.023207 +880 8.800000 -0.002473 -0.022768 +881 8.810000 -0.002248 -0.022304 +882 8.820000 -0.002027 -0.021818 +883 8.830000 -0.001812 -0.021314 +884 8.840000 -0.001601 -0.020800 +885 8.850000 -0.001396 -0.020284 +886 8.860000 -0.001195 -0.019774 +887 8.870000 -0.001000 -0.019278 +888 8.880000 -0.000810 -0.018802 +889 8.890000 -0.000624 -0.018355 +890 8.900000 -0.000443 -0.017940 +891 8.910000 -0.000265 -0.017557 +892 8.920000 -0.000092 -0.017201 +893 8.930000 0.000079 -0.016866 +894 8.940000 0.000246 -0.016540 +895 8.950000 0.000410 -0.016211 +896 8.960000 0.000570 -0.015867 +897 8.970000 0.000727 -0.015496 +898 8.980000 0.000880 -0.015087 +899 8.990000 0.001029 -0.014630 +900 9.000000 0.001173 -0.014119 +901 9.010000 0.001311 -0.013555 +902 9.020000 0.001444 -0.012947 +903 9.030000 0.001570 -0.012308 +904 9.040000 0.001690 -0.011656 +905 9.050000 0.001803 -0.011012 +906 9.060000 0.001910 -0.010397 +907 9.070000 0.002011 -0.009831 +908 9.080000 0.002107 -0.009335 +909 9.090000 0.002198 -0.008926 +910 9.100000 0.002285 -0.008615 +911 9.110000 0.002370 -0.008400 +912 9.120000 0.002453 -0.008272 +913 9.130000 0.002535 -0.008211 +914 9.140000 0.002617 -0.008188 +915 9.150000 0.002699 -0.008174 +916 9.160000 0.002781 -0.008137 +917 9.170000 0.002862 -0.008047 +918 9.180000 0.002942 -0.007873 +919 9.190000 0.003019 -0.007588 +920 9.200000 0.003094 -0.007176 +921 9.210000 0.003163 -0.006634 +922 9.220000 0.003226 -0.005970 +923 9.230000 0.003282 -0.005209 +924 9.240000 0.003330 -0.004384 +925 9.250000 0.003370 -0.003531 +926 9.260000 0.003401 -0.002688 +927 9.270000 0.003424 -0.001893 +928 9.280000 0.003439 -0.001182 +929 9.290000 0.003447 -0.000589 +930 9.300000 0.003451 -0.000137 +931 9.310000 0.003450 0.000164 +932 9.320000 0.003447 0.000317 +933 9.330000 0.003444 0.000338 +934 9.340000 0.003441 0.000252 +935 9.350000 0.003439 0.000089 +936 9.360000 0.003439 -0.000121 +937 9.370000 0.003441 -0.000347 +938 9.380000 0.003446 -0.000561 +939 9.390000 0.003452 -0.000734 +940 9.400000 0.003461 -0.000848 +941 9.410000 0.003469 -0.000890 +942 9.420000 0.003478 -0.000861 +943 9.430000 0.003487 -0.000768 +944 9.440000 0.003494 -0.000626 +945 9.450000 0.003499 -0.000454 +946 9.460000 0.003503 -0.000269 +947 9.470000 0.003504 -0.000089 +948 9.480000 0.003505 0.000066 +949 9.490000 0.003503 0.000182 +950 9.500000 0.003501 0.000246 +951 9.510000 0.003498 0.000252 +952 9.520000 0.003496 0.000202 +953 9.530000 0.003494 0.000102 +954 9.540000 0.003494 -0.000037 +955 9.550000 0.003495 -0.000202 +956 9.560000 0.003498 -0.000380 +957 9.570000 0.003503 -0.000558 +958 9.580000 0.003509 -0.000722 +959 9.590000 0.003517 -0.000860 +960 9.600000 0.003526 -0.000963 +961 9.610000 0.003536 -0.001024 +962 9.620000 0.003547 -0.001041 +963 9.630000 0.003557 -0.001014 +964 9.640000 0.003567 -0.000947 +965 9.650000 0.003576 -0.000842 +966 9.660000 0.003584 -0.000704 +967 9.670000 0.003590 -0.000538 +968 9.680000 0.003595 -0.000348 +969 9.690000 0.003597 -0.000137 +970 9.700000 0.003597 0.000089 +971 9.710000 0.003595 0.000322 +972 9.720000 0.003591 0.000557 +973 9.730000 0.003584 0.000784 +974 9.740000 0.003575 0.000993 +975 9.750000 0.003564 0.001175 +976 9.760000 0.003552 0.001321 +977 9.770000 0.003538 0.001419 +978 9.780000 0.003523 0.001461 +979 9.790000 0.003509 0.001439 +980 9.800000 0.003495 0.001348 +981 9.810000 0.003482 0.001190 +982 9.820000 0.003471 0.000971 +983 9.830000 0.003462 0.000703 +984 9.840000 0.003457 0.000402 +985 9.850000 0.003454 0.000085 +986 9.860000 0.003455 -0.000231 +987 9.870000 0.003459 -0.000528 +988 9.880000 0.003466 -0.000788 +989 9.890000 0.003475 -0.000997 +990 9.900000 0.003485 -0.001143 +991 9.910000 0.003497 -0.001220 +992 9.920000 0.003510 -0.001230 +993 9.930000 0.003522 -0.001179 +994 9.940000 0.003533 -0.001079 +995 9.950000 0.003544 -0.000942 +996 9.960000 0.003552 -0.000781 +997 9.970000 0.003559 -0.000609 +998 9.980000 0.003564 -0.000439 +999 9.990000 0.003568 -0.000284 +1000 10.000000 0.003570 -0.000151 +1001 10.010000 0.003571 -0.000045 +1002 10.020000 0.003571 0.000033 +1003 10.030000 0.003570 0.000085 +1004 10.040000 0.003569 0.000120 +1005 10.050000 0.003568 0.000143 +1006 10.060000 0.003566 0.000163 +1007 10.070000 0.003565 0.000187 +1008 10.080000 0.003563 0.000223 +1009 10.090000 0.003560 0.000278 +1010 10.100000 0.003557 0.000355 +1011 10.110000 0.003553 0.000455 +1012 10.120000 0.003548 0.000576 +1013 10.130000 0.003542 0.000713 +1014 10.140000 0.003534 0.000858 +1015 10.150000 0.003525 0.001000 +1016 10.160000 0.003514 0.001133 +1017 10.170000 0.003502 0.001245 +1018 10.180000 0.003489 0.001328 +1019 10.190000 0.003475 0.001376 +1020 10.200000 0.003461 0.001381 +1021 10.210000 0.003448 0.001344 +1022 10.220000 0.003435 0.001268 +1023 10.230000 0.003422 0.001159 +1024 10.240000 0.003411 0.001028 +1025 10.250000 0.003402 0.000884 +1026 10.260000 0.003394 0.000740 +1027 10.270000 0.003387 0.000606 +1028 10.280000 0.003382 0.000493 +1029 10.290000 0.003377 0.000412 +1030 10.300000 0.003373 0.000369 +1031 10.310000 0.003370 0.000369 +1032 10.320000 0.003366 0.000412 +1033 10.330000 0.003361 0.000496 +1034 10.340000 0.003356 0.000616 +1035 10.350000 0.003349 0.000764 +1036 10.360000 0.003341 0.000935 +1037 10.370000 0.003330 0.001123 +1038 10.380000 0.003318 0.001320 +1039 10.390000 0.003304 0.001521 +1040 10.400000 0.003288 0.001720 +1041 10.410000 0.003270 0.001912 +1042 10.420000 0.003250 0.002091 +1043 10.430000 0.003228 0.002255 +1044 10.440000 0.003204 0.002399 +1045 10.450000 0.003180 0.002520 +1046 10.460000 0.003154 0.002615 +1047 10.470000 0.003128 0.002679 +1048 10.480000 0.003100 0.002710 +1049 10.490000 0.003073 0.002706 +1050 10.500000 0.003046 0.002665 +1051 10.510000 0.003020 0.002590 +1052 10.520000 0.002995 0.002487 +1053 10.530000 0.002970 0.002362 +1054 10.540000 0.002947 0.002227 +1055 10.550000 0.002926 0.002091 +1056 10.560000 0.002906 0.001965 +1057 10.570000 0.002886 0.001861 +1058 10.580000 0.002868 0.001790 +1059 10.590000 0.002851 0.001759 +1060 10.600000 0.002833 0.001777 +1061 10.610000 0.002815 0.001845 +1062 10.620000 0.002796 0.001963 +1063 10.630000 0.002776 0.002124 +1064 10.640000 0.002754 0.002320 +1065 10.650000 0.002729 0.002543 +1066 10.660000 0.002703 0.002781 +1067 10.670000 0.002674 0.003025 +1068 10.680000 0.002642 0.003265 +1069 10.690000 0.002609 0.003493 +1070 10.700000 0.002573 0.003701 +1071 10.710000 0.002535 0.003882 +1072 10.720000 0.002495 0.004034 +1073 10.730000 0.002454 0.004154 +1074 10.740000 0.002412 0.004242 +1075 10.750000 0.002369 0.004299 +1076 10.760000 0.002326 0.004325 +1077 10.770000 0.002283 0.004321 +1078 10.780000 0.002239 0.004287 +1079 10.790000 0.002197 0.004226 +1080 10.800000 0.002155 0.004139 +1081 10.810000 0.002114 0.004030 +1082 10.820000 0.002074 0.003904 +1083 10.830000 0.002036 0.003766 +1084 10.840000 0.001999 0.003625 +1085 10.850000 0.001963 0.003486 +1086 10.860000 0.001929 0.003358 +1087 10.870000 0.001896 0.003246 +1088 10.880000 0.001864 0.003158 +1089 10.890000 0.001833 0.003100 +1090 10.900000 0.001802 0.003074 +1091 10.910000 0.001772 0.003082 +1092 10.920000 0.001741 0.003119 +1093 10.930000 0.001709 0.003182 +1094 10.940000 0.001677 0.003263 +1095 10.950000 0.001644 0.003354 +1096 10.960000 0.001610 0.003447 +1097 10.970000 0.001575 0.003534 +1098 10.980000 0.001539 0.003608 +1099 10.990000 0.001503 0.003662 +1100 11.000000 0.001466 0.003694 +1101 11.010000 0.001429 0.003702 +1102 11.020000 0.001392 0.003687 +1103 11.030000 0.001355 0.003653 +1104 11.040000 0.001319 0.003606 +1105 11.050000 0.001283 0.003554 +1106 11.060000 0.001248 0.003502 +1107 11.070000 0.001213 0.003455 +1108 11.080000 0.001179 0.003421 +1109 11.090000 0.001145 0.003402 +1110 11.100000 0.001111 0.003403 +1111 11.110000 0.001077 0.003422 +1112 11.120000 0.001042 0.003459 +1113 11.130000 0.001007 0.003508 +1114 11.140000 0.000972 0.003564 +1115 11.150000 0.000936 0.003620 +1116 11.160000 0.000900 0.003672 +1117 11.170000 0.000863 0.003713 +1118 11.180000 0.000825 0.003739 +1119 11.190000 0.000788 0.003745 +1120 11.200000 0.000751 0.003730 +1121 11.210000 0.000713 0.003692 +1122 11.220000 0.000677 0.003631 +1123 11.230000 0.000641 0.003552 +1124 11.240000 0.000606 0.003456 +1125 11.250000 0.000572 0.003348 +1126 11.260000 0.000539 0.003232 +1127 11.270000 0.000507 0.003110 +1128 11.280000 0.000477 0.002985 +1129 11.290000 0.000447 0.002861 +1130 11.300000 0.000419 0.002738 +1131 11.310000 0.000393 0.002619 +1132 11.320000 0.000367 0.002503 +1133 11.330000 0.000342 0.002391 +1134 11.340000 0.000319 0.002280 +1135 11.350000 0.000297 0.002171 +1136 11.360000 0.000276 0.002063 +1137 11.370000 0.000256 0.001954 +1138 11.380000 0.000237 0.001844 +1139 11.390000 0.000219 0.001734 +1140 11.400000 0.000202 0.001622 +1141 11.410000 0.000186 0.001510 +1142 11.420000 0.000172 0.001398 +1143 11.430000 0.000158 0.001288 +1144 11.440000 0.000146 0.001181 +1145 11.450000 0.000135 0.001078 +1146 11.460000 0.000124 0.000981 +1147 11.470000 0.000115 0.000891 +1148 11.480000 0.000107 0.000808 +1149 11.490000 0.000099 0.000733 +1150 11.500000 0.000092 0.000666 +1151 11.510000 0.000086 0.000608 +1152 11.520000 0.000080 0.000557 +1153 11.530000 0.000074 0.000514 +1154 11.540000 0.000069 0.000478 +1155 11.550000 0.000065 0.000448 +1156 11.560000 0.000061 0.000424 +1157 11.570000 0.000056 0.000405 +1158 11.580000 0.000052 0.000389 +1159 11.590000 0.000049 0.000378 +1160 11.600000 0.000045 0.000369 +1161 11.610000 0.000041 0.000362 +1162 11.620000 0.000038 0.000355 +1163 11.630000 0.000034 0.000348 +1164 11.640000 0.000031 0.000340 +1165 11.650000 0.000027 0.000330 +1166 11.660000 0.000024 0.000317 +1167 11.670000 0.000021 0.000301 +1168 11.680000 0.000018 0.000282 +1169 11.690000 0.000015 0.000260 +1170 11.700000 0.000013 0.000236 +1171 11.710000 0.000011 0.000210 +1172 11.720000 0.000009 0.000184 +1173 11.730000 0.000007 0.000158 +1174 11.740000 0.000005 0.000133 +1175 11.750000 0.000004 0.000110 +1176 11.760000 0.000003 0.000090 +1177 11.770000 0.000002 0.000072 +1178 11.780000 0.000002 0.000057 +1179 11.790000 0.000001 0.000044 +1180 11.800000 0.000001 0.000034 +1181 11.810000 0.000001 0.000025 +1182 11.820000 0.000000 0.000019 +1183 11.830000 0.000000 0.000014 +1184 11.840000 0.000000 0.000010 +1185 11.850000 0.000000 0.000007 +1186 11.860000 0.000000 0.000004 +1187 11.870000 0.000000 0.000003 +1188 11.880000 0.000000 0.000001 +1189 11.890000 0.000000 0.000000 +1190 11.900000 0.000000 0.000000 +1191 11.910000 0.000000 0.000000 +1192 11.920000 0.000000 0.000000 +1193 11.930000 0.000000 0.000000 +1194 11.940000 0.000000 0.000000 +1195 11.950000 0.000000 0.000000 +1196 11.960000 0.000000 0.000000 +1197 11.970000 0.000000 0.000000 +1198 11.980000 0.000000 0.000000 +1199 11.990000 0.000000 0.000000 +1200 12.000000 0.000000 0.000000 +1201 12.010000 0.000000 0.000000 +1202 12.020000 0.000000 0.000000 +1203 12.030000 0.000000 0.000000 +1204 12.040000 0.000000 0.000000 +1205 12.050000 0.000000 0.000000 +1206 12.060000 0.000000 0.000000 +1207 12.070000 0.000000 0.000000 +1208 12.080000 0.000000 0.000000 +1209 12.090000 0.000000 0.000000 +1210 12.100000 0.000000 0.000000 +1211 12.110000 0.000000 0.000000 +1212 12.120000 0.000000 0.000000 +1213 12.130000 0.000000 0.000000 +1214 12.140000 0.000000 0.000000 +1215 12.150000 0.000000 0.000000 +1216 12.160000 0.000000 0.000000 +1217 12.170000 0.000000 0.000000 +1218 12.180000 0.000000 0.000000 +1219 12.190000 0.000000 0.000000 +1220 12.200000 0.000000 0.000000 +1221 12.210000 0.000000 0.000000 +1222 12.220000 0.000000 0.000000 +1223 12.230000 0.000000 0.000000 +1224 12.240000 0.000000 0.000000 +1225 12.250000 0.000000 0.000000 +1226 12.260000 0.000000 0.000000 +1227 12.270000 0.000000 0.000000 +1228 12.280000 0.000000 0.000000 +1229 12.290000 0.000000 0.000000 +1230 12.300000 0.000000 0.000000 +1231 12.310000 0.000000 0.000000 +1232 12.320000 0.000000 0.000000 +1233 12.330000 0.000000 0.000000 +1234 12.340000 0.000000 0.000000 +1235 12.350000 0.000000 0.000000 +1236 12.360000 0.000000 0.000000 +1237 12.370000 0.000000 0.000000 +1238 12.380000 0.000000 0.000000 +1239 12.390000 0.000000 0.000000 +1240 12.400000 0.000000 0.000000 +1241 12.410000 0.000000 0.000000 +1242 12.420000 0.000000 0.000000 +1243 12.430000 0.000000 0.000000 +1244 12.440000 0.000000 0.000000 +1245 12.450000 0.000000 0.000000 +1246 12.460000 0.000000 0.000000 +1247 12.470000 0.000000 0.000000 +1248 12.480000 0.000000 0.000000 +1249 12.490000 0.000000 0.000000 +1250 12.500000 0.000000 0.000000 +1251 12.510000 0.000000 0.000000 +1252 12.520000 0.000000 0.000000 +1253 12.530000 0.000000 0.000000 +1254 12.540000 0.000000 0.000000 +1255 12.550000 0.000000 0.000000 +1256 12.560000 0.000000 0.000000 +1257 12.570000 0.000000 0.000000 +1258 12.580000 0.000000 0.000000 +1259 12.590000 0.000000 0.000000 +1260 12.600000 0.000000 0.000000 +1261 12.610000 0.000000 0.000000 +1262 12.620000 0.000000 0.000000 +1263 12.630000 0.000000 0.000000 +1264 12.640000 0.000000 0.000000 +1265 12.650000 0.000000 0.000000 +1266 12.660000 0.000000 0.000000 +1267 12.670000 0.000000 0.000000 +1268 12.680000 0.000000 0.000000 +1269 12.690000 0.000000 0.000000 +1270 12.700000 0.000000 0.000000 +1271 12.710000 0.000000 0.000000 +1272 12.720000 0.000000 0.000000 +1273 12.730000 0.000000 0.000000 +1274 12.740000 0.000000 0.000000 +1275 12.750000 0.000000 0.000000 +1276 12.760000 0.000000 0.000000 +1277 12.770000 0.000000 0.000000 +1278 12.780000 0.000000 0.000000 +1279 12.790000 0.000000 0.000000 +1280 12.800000 0.000000 0.000000 +1281 12.810000 0.000000 0.000000 +1282 12.820000 0.000000 0.000000 +1283 12.830000 0.000000 0.000000 +1284 12.840000 0.000000 0.000000 +1285 12.850000 0.000000 0.000000 +1286 12.860000 0.000000 0.000000 +1287 12.870000 0.000000 0.000000 +1288 12.880000 0.000000 0.000000 +1289 12.890000 0.000000 0.000000 +1290 12.900000 0.000000 0.000000 +1291 12.910000 0.000000 0.000000 +1292 12.920000 0.000000 0.000000 +1293 12.930000 0.000000 0.000000 +1294 12.940000 0.000000 0.000000 +1295 12.950000 0.000000 0.000000 +1296 12.960000 0.000000 0.000000 +1297 12.970000 0.000000 0.000000 +1298 12.980000 0.000000 0.000000 +1299 12.990000 0.000000 0.000000 +1300 13.000000 0.000000 0.000000 +1301 13.010000 0.000000 0.000000 +1302 13.020000 0.000000 0.000000 +1303 13.030000 0.000000 0.000000 +1304 13.040000 0.000000 0.000000 +1305 13.050000 0.000000 0.000000 +1306 13.060000 0.000000 0.000000 +1307 13.070000 0.000000 0.000000 +1308 13.080000 0.000000 0.000000 +1309 13.090000 0.000000 0.000000 +1310 13.100000 0.000000 0.000000 +1311 13.110000 0.000000 0.000000 +1312 13.120000 0.000000 0.000000 +1313 13.130000 0.000000 0.000000 +1314 13.140000 0.000000 0.000000 +1315 13.150000 0.000000 0.000000 +1316 13.160000 0.000000 0.000000 +1317 13.170000 0.000000 0.000000 +1318 13.180000 0.000000 0.000000 +1319 13.190000 0.000000 0.000000 +1320 13.200000 0.000000 0.000000 +1321 13.210000 0.000000 0.000000 +1322 13.220000 0.000000 0.000000 +1323 13.230000 0.000000 0.000000 +1324 13.240000 0.000000 0.000000 +1325 13.250000 0.000000 0.000000 +1326 13.260000 0.000000 0.000000 +1327 13.270000 0.000000 0.000000 +1328 13.280000 0.000000 0.000000 +1329 13.290000 0.000000 0.000000 +1330 13.300000 0.000000 0.000000 +1331 13.310000 0.000000 0.000000 +1332 13.320000 0.000000 0.000000 +1333 13.330000 0.000000 0.000000 +1334 13.340000 0.000000 0.000000 +1335 13.350000 0.000000 0.000000 +1336 13.360000 0.000000 0.000000 +1337 13.370000 0.000000 0.000000 +1338 13.380000 0.000000 0.000000 +1339 13.390000 0.000000 0.000000 +1340 13.400000 0.000000 0.000000 +1341 13.410000 0.000000 0.000000 +1342 13.420000 0.000000 0.000000 +1343 13.430000 0.000000 0.000000 +1344 13.440000 0.000000 0.000000 +1345 13.450000 0.000000 0.000000 +1346 13.460000 0.000000 0.000000 +1347 13.470000 0.000000 0.000000 +1348 13.480000 0.000000 0.000000 +1349 13.490000 0.000000 0.000000 +1350 13.500000 0.000000 0.000000 +1351 13.510000 0.000000 0.000000 +1352 13.520000 0.000000 0.000000 +1353 13.530000 0.000000 0.000000 +1354 13.540000 0.000000 0.000000 +1355 13.550000 0.000000 0.000000 +1356 13.560000 0.000000 0.000000 +1357 13.570000 0.000000 0.000000 +1358 13.580000 0.000000 0.000000 +1359 13.590000 0.000000 0.000000 +1360 13.600000 0.000000 0.000000 +1361 13.610000 0.000000 0.000000 +1362 13.620000 0.000000 0.000000 +1363 13.630000 0.000000 0.000000 +1364 13.640000 0.000000 0.000000 +1365 13.650000 0.000000 0.000000 +1366 13.660000 0.000000 0.000000 +1367 13.670000 0.000000 0.000000 +1368 13.680000 0.000000 0.000000 +1369 13.690000 0.000000 0.000000 +1370 13.700000 0.000000 0.000000 +1371 13.710000 0.000000 0.000000 +1372 13.720000 0.000000 0.000000 +1373 13.730000 0.000000 0.000000 +1374 13.740000 0.000000 0.000000 +1375 13.750000 0.000000 0.000000 +1376 13.760000 0.000000 0.000000 +1377 13.770000 0.000000 0.000000 +1378 13.780000 0.000000 0.000000 +1379 13.790000 0.000000 0.000000 +1380 13.800000 0.000000 0.000000 +1381 13.810000 0.000000 0.000000 +1382 13.820000 0.000000 0.000000 +1383 13.830000 0.000000 0.000000 +1384 13.840000 0.000000 0.000000 +1385 13.850000 0.000000 0.000000 +1386 13.860000 0.000000 0.000000 +1387 13.870000 0.000000 0.000000 +1388 13.880000 0.000000 0.000000 +1389 13.890000 0.000000 0.000000 +1390 13.900000 0.000000 0.000000 +1391 13.910000 0.000000 0.000000 +1392 13.920000 0.000000 0.000000 +1393 13.930000 0.000000 0.000000 +1394 13.940000 0.000000 0.000000 +1395 13.950000 0.000000 0.000000 +1396 13.960000 0.000000 0.000000 +1397 13.970000 0.000000 0.000000 +1398 13.980000 0.000000 0.000000 +1399 13.990000 0.000000 0.000000 +1400 14.000000 0.000000 0.000000 +1401 14.010000 0.000000 0.000000 +1402 14.020000 0.000000 0.000000 +1403 14.030000 0.000000 0.000000 +1404 14.040000 0.000000 0.000000 +1405 14.050000 0.000000 0.000000 +1406 14.060000 0.000000 0.000000 +1407 14.070000 0.000000 0.000000 +1408 14.080000 0.000000 0.000000 +1409 14.090000 0.000000 0.000000 +1410 14.100000 0.000000 0.000000 +1411 14.110000 0.000000 0.000000 +1412 14.120000 0.000000 0.000000 +1413 14.130000 0.000000 0.000000 +1414 14.140000 0.000000 0.000000 +1415 14.150000 0.000000 0.000000 +1416 14.160000 0.000000 0.000000 +1417 14.170000 0.000000 0.000000 +1418 14.180000 0.000000 0.000000 +1419 14.190000 0.000000 0.000000 +1420 14.200000 0.000000 0.000000 +1421 14.210000 0.000000 0.000000 +1422 14.220000 0.000000 0.000000 +1423 14.230000 0.000000 0.000000 +1424 14.240000 0.000000 0.000000 +1425 14.250000 0.000000 0.000000 +1426 14.260000 0.000000 0.000000 +1427 14.270000 0.000000 0.000000 +1428 14.280000 0.000000 0.000000 +1429 14.290000 0.000000 0.000000 +1430 14.300000 0.000000 0.000000 +1431 14.310000 0.000000 0.000000 +1432 14.320000 0.000000 0.000000 +1433 14.330000 0.000000 0.000000 +1434 14.340000 0.000000 0.000000 +1435 14.350000 0.000000 0.000000 +1436 14.360000 0.000000 0.000000 +1437 14.370000 0.000000 0.000000 +1438 14.380000 0.000000 0.000000 +1439 14.390000 0.000000 0.000000 +1440 14.400000 0.000000 0.000000 +1441 14.410000 0.000000 0.000000 +1442 14.420000 0.000000 0.000000 +1443 14.430000 0.000000 0.000000 +1444 14.440000 0.000000 0.000000 +1445 14.450000 0.000000 0.000000 +1446 14.460000 0.000000 0.000000 +1447 14.470000 0.000000 0.000000 +1448 14.480000 0.000000 0.000000 +1449 14.490000 0.000000 0.000000 +1450 14.500000 0.000000 0.000000 +1451 14.510000 0.000000 0.000000 +1452 14.520000 0.000000 0.000000 +1453 14.530000 0.000000 0.000000 +1454 14.540000 0.000000 0.000000 +1455 14.550000 0.000000 0.000000 +1456 14.560000 0.000000 0.000000 +1457 14.570000 0.000000 0.000000 +1458 14.580000 0.000000 0.000000 +1459 14.590000 0.000000 0.000000 +1460 14.600000 0.000000 0.000000 +1461 14.610000 0.000000 0.000000 +1462 14.620000 0.000000 0.000000 +1463 14.630000 0.000000 0.000000 +1464 14.640000 0.000000 0.000000 +1465 14.650000 0.000000 0.000000 +1466 14.660000 0.000000 0.000000 +1467 14.670000 0.000000 0.000000 +1468 14.680000 0.000000 0.000000 +1469 14.690000 0.000000 0.000000 +1470 14.700000 0.000000 0.000000 +1471 14.710000 0.000000 0.000000 +1472 14.720000 0.000000 0.000000 +1473 14.730000 0.000000 0.000000 +1474 14.740000 0.000000 0.000000 +1475 14.750000 0.000000 0.000000 +1476 14.760000 0.000000 0.000000 +1477 14.770000 0.000000 0.000000 +1478 14.780000 0.000000 0.000000 +1479 14.790000 0.000000 0.000000 +1480 14.800000 0.000000 0.000000 +1481 14.810000 0.000000 0.000000 +1482 14.820000 0.000000 0.000000 +1483 14.830000 0.000000 0.000000 +1484 14.840000 0.000000 0.000000 +1485 14.850000 0.000000 0.000000 +1486 14.860000 0.000000 0.000000 +1487 14.870000 0.000000 0.000000 +1488 14.880000 0.000000 0.000000 +1489 14.890000 0.000000 0.000000 +1490 14.900000 0.000000 0.000000 +1491 14.910000 0.000000 0.000000 +1492 14.920000 0.000000 0.000000 +1493 14.930000 0.000000 0.000000 +1494 14.940000 0.000000 0.000000 +1495 14.950000 0.000000 0.000000 +1496 14.960000 0.000000 0.000000 +1497 14.970000 0.000000 0.000000 +1498 14.980000 0.000000 0.000000 +1499 14.990000 0.000000 0.000000 +1500 15.000000 0.000000 0.000000 +1501 15.010000 0.000000 0.000000 +1502 15.020000 0.000000 0.000000 +1503 15.030000 0.000000 0.000000 +1504 15.040000 0.000000 0.000000 +1505 15.050000 0.000000 0.000000 +1506 15.060000 0.000000 0.000000 +1507 15.070000 0.000000 0.000000 +1508 15.080000 0.000000 0.000000 +1509 15.090000 0.000000 0.000000 +1510 15.100000 0.000000 0.000000 +1511 15.110000 0.000000 0.000000 +1512 15.120000 0.000000 0.000000 +1513 15.130000 0.000000 0.000000 +1514 15.140000 0.000000 0.000000 +1515 15.150000 0.000000 0.000000 +1516 15.160000 0.000000 0.000000 +1517 15.170000 0.000000 0.000000 +1518 15.180000 0.000000 0.000000 +1519 15.190000 0.000000 0.000000 +1520 15.200000 0.000000 0.000000 +1521 15.210000 0.000000 0.000000 +1522 15.220000 0.000000 0.000000 +1523 15.230000 0.000000 0.000000 +1524 15.240000 0.000000 0.000000 +1525 15.250000 0.000000 0.000000 +1526 15.260000 0.000000 0.000000 +1527 15.270000 0.000000 0.000000 +1528 15.280000 0.000000 0.000000 +1529 15.290000 0.000000 0.000000 +1530 15.300000 0.000000 0.000000 +1531 15.310000 0.000000 0.000000 +1532 15.320000 0.000000 0.000000 +1533 15.330000 0.000000 0.000000 +1534 15.340000 0.000000 0.000000 +1535 15.350000 0.000000 0.000000 +1536 15.360000 0.000000 0.000000 +1537 15.370000 0.000000 0.000000 +1538 15.380000 0.000000 0.000000 +1539 15.390000 0.000000 0.000000 +1540 15.400000 0.000000 0.000000 +1541 15.410000 0.000000 0.000000 +1542 15.420000 0.000000 0.000000 +1543 15.430000 0.000000 0.000000 +1544 15.440000 0.000000 0.000000 +1545 15.450000 0.000000 0.000000 +1546 15.460000 0.000000 0.000000 +1547 15.470000 0.000000 0.000000 +1548 15.480000 0.000000 0.000000 +1549 15.490000 0.000000 0.000000 +1550 15.500000 0.000000 0.000000 +1551 15.510000 0.000000 0.000000 +1552 15.520000 0.000000 0.000000 +1553 15.530000 0.000000 0.000000 +1554 15.540000 0.000000 0.000000 +1555 15.550000 0.000000 0.000000 +1556 15.560000 0.000000 0.000000 +1557 15.570000 0.000000 0.000000 +1558 15.580000 0.000000 0.000000 +1559 15.590000 0.000000 0.000000 +1560 15.600000 0.000000 0.000000 +1561 15.610000 0.000000 0.000000 +1562 15.620000 0.000000 0.000000 +1563 15.630000 0.000000 0.000000 +1564 15.640000 0.000000 0.000000 +1565 15.650000 0.000000 0.000000 +1566 15.660000 0.000000 0.000000 +1567 15.670000 0.000000 0.000000 +1568 15.680000 0.000000 0.000000 +1569 15.690000 0.000000 0.000000 +1570 15.700000 0.000000 0.000000 +1571 15.710000 0.000000 0.000000 +1572 15.720000 0.000000 0.000000 +1573 15.730000 0.000000 0.000000 +1574 15.740000 0.000000 0.000000 +1575 15.750000 0.000000 0.000000 +1576 15.760000 0.000000 0.000000 +1577 15.770000 0.000000 0.000000 +1578 15.780000 0.000000 0.000000 +1579 15.790000 0.000000 0.000000 +1580 15.800000 0.000000 0.000000 +1581 15.810000 0.000000 0.000000 +1582 15.820000 0.000000 0.000000 +1583 15.830000 0.000000 0.000000 +1584 15.840000 0.000000 0.000000 +1585 15.850000 0.000000 0.000000 +1586 15.860000 0.000000 0.000000 +1587 15.870000 0.000000 0.000000 +1588 15.880000 0.000000 0.000000 +1589 15.890000 0.000000 0.000000 +1590 15.900000 0.000000 0.000000 +1591 15.910000 0.000000 0.000000 +1592 15.920000 0.000000 0.000000 +1593 15.930000 0.000000 0.000000 +1594 15.940000 0.000000 0.000000 +1595 15.950000 0.000000 0.000000 +1596 15.960000 0.000000 0.000000 +1597 15.970000 0.000000 0.000000 +1598 15.980000 0.000000 0.000000 +1599 15.990000 0.000000 0.000000 +1600 16.000000 0.000000 0.000000 +1601 16.010000 0.000000 0.000000 +1602 16.020000 0.000000 0.000000 +1603 16.030000 0.000000 0.000000 +1604 16.040000 0.000000 0.000000 +1605 16.050000 0.000000 0.000000 +1606 16.060000 0.000000 0.000000 +1607 16.070000 0.000000 0.000000 +1608 16.080000 0.000000 0.000000 +1609 16.090000 0.000000 0.000000 +1610 16.100000 0.000000 0.000000 +1611 16.110000 0.000000 0.000000 +1612 16.120000 0.000000 0.000000 +1613 16.130000 0.000000 0.000000 +1614 16.140000 0.000000 0.000000 +1615 16.150000 0.000000 0.000000 +1616 16.160000 0.000000 0.000000 +1617 16.170000 0.000000 0.000000 +1618 16.180000 0.000000 0.000000 +1619 16.190000 0.000000 0.000000 +1620 16.200000 0.000000 0.000000 +1621 16.210000 0.000000 0.000000 +1622 16.220000 0.000000 0.000000 +1623 16.230000 0.000000 0.000000 +1624 16.240000 0.000000 0.000000 +1625 16.250000 0.000000 0.000000 +1626 16.260000 0.000000 0.000000 +1627 16.270000 0.000000 0.000000 +1628 16.280000 0.000000 0.000000 +1629 16.290000 0.000000 0.000000 +1630 16.300000 0.000000 0.000000 +1631 16.310000 0.000000 0.000000 +1632 16.320000 0.000000 0.000000 +1633 16.330000 0.000000 0.000000 +1634 16.340000 0.000000 0.000000 +1635 16.350000 0.000000 0.000000 +1636 16.360000 0.000000 0.000000 +1637 16.370000 0.000000 0.000000 +1638 16.380000 0.000000 0.000000 +1639 16.390000 0.000000 0.000000 +1640 16.400000 0.000000 0.000000 +1641 16.410000 0.000000 0.000000 +1642 16.420000 0.000000 0.000000 +1643 16.430000 0.000000 0.000000 +1644 16.440000 0.000000 0.000000 +1645 16.450000 0.000000 0.000000 +1646 16.460000 0.000000 0.000000 +1647 16.470000 0.000000 0.000000 +1648 16.480000 0.000000 0.000000 +1649 16.490000 0.000000 0.000000 +1650 16.500000 0.000000 0.000000 +1651 16.510000 0.000000 0.000000 +1652 16.520000 0.000000 0.000000 +1653 16.530000 0.000000 0.000000 +1654 16.540000 0.000000 0.000000 +1655 16.550000 0.000000 0.000000 +1656 16.560000 0.000000 0.000000 +1657 16.570000 0.000000 0.000000 +1658 16.580000 0.000000 0.000000 +1659 16.590000 0.000000 0.000000 +1660 16.600000 0.000000 0.000000 +1661 16.610000 0.000000 0.000000 +1662 16.620000 0.000000 0.000000 +1663 16.630000 0.000000 0.000000 +1664 16.640000 0.000000 0.000000 +1665 16.650000 0.000000 0.000000 +1666 16.660000 0.000000 0.000000 +1667 16.670000 0.000000 0.000000 +1668 16.680000 0.000000 0.000000 +1669 16.690000 0.000000 0.000000 +1670 16.700000 0.000000 0.000000 +1671 16.710000 0.000000 0.000000 +1672 16.720000 0.000000 0.000000 +1673 16.730000 0.000000 0.000000 +1674 16.740000 0.000000 0.000000 +1675 16.750000 0.000000 0.000000 +1676 16.760000 0.000000 0.000000 +1677 16.770000 0.000000 0.000000 +1678 16.780000 0.000000 0.000000 +1679 16.790000 0.000000 0.000000 +1680 16.800000 0.000000 0.000000 +1681 16.810000 0.000000 0.000000 +1682 16.820000 0.000000 0.000000 +1683 16.830000 0.000000 0.000000 +1684 16.840000 0.000000 0.000000 +1685 16.850000 0.000000 0.000000 +1686 16.860000 0.000000 0.000000 +1687 16.870000 0.000000 0.000000 +1688 16.880000 0.000000 0.000000 +1689 16.890000 0.000000 0.000000 +1690 16.900000 0.000000 0.000000 +1691 16.910000 0.000000 0.000000 +1692 16.920000 0.000000 0.000000 +1693 16.930000 0.000000 0.000000 +1694 16.940000 0.000000 0.000000 +1695 16.950000 0.000000 0.000000 +1696 16.960000 0.000000 0.000000 +1697 16.970000 0.000000 0.000000 +1698 16.980000 0.000000 0.000000 +1699 16.990000 0.000000 0.000000 +1700 17.000000 0.000000 0.000000 +1701 17.010000 0.000000 0.000000 +1702 17.020000 0.000000 0.000000 +1703 17.030000 0.000000 0.000000 +1704 17.040000 0.000000 0.000000 +1705 17.050000 0.000000 0.000000 +1706 17.060000 0.000000 0.000000 +1707 17.070000 0.000000 0.000000 +1708 17.080000 0.000000 0.000000 +1709 17.090000 0.000000 0.000000 +1710 17.100000 0.000000 0.000000 +1711 17.110000 0.000000 0.000000 +1712 17.120000 0.000000 0.000000 +1713 17.130000 0.000000 0.000000 +1714 17.140000 0.000000 0.000000 +1715 17.150000 0.000000 0.000000 +1716 17.160000 0.000000 0.000000 +1717 17.170000 0.000000 0.000000 +1718 17.180000 0.000000 0.000000 +1719 17.190000 0.000000 0.000000 +1720 17.200000 0.000000 0.000000 +1721 17.210000 0.000000 0.000000 +1722 17.220000 0.000000 0.000000 +1723 17.230000 0.000000 0.000000 +1724 17.240000 0.000000 0.000000 +1725 17.250000 0.000000 0.000000 +1726 17.260000 0.000000 0.000000 +1727 17.270000 0.000000 0.000000 +1728 17.280000 0.000000 0.000000 +1729 17.290000 0.000000 0.000000 +1730 17.300000 0.000000 0.000000 +1731 17.310000 0.000000 0.000000 +1732 17.320000 0.000000 0.000000 +1733 17.330000 0.000000 0.000000 +1734 17.340000 0.000000 0.000000 +1735 17.350000 0.000000 0.000000 +1736 17.360000 0.000000 0.000000 +1737 17.370000 0.000000 0.000000 +1738 17.380000 0.000000 0.000000 +1739 17.390000 0.000000 0.000000 +1740 17.400000 0.000000 0.000000 +1741 17.410000 0.000000 0.000000 +1742 17.420000 0.000000 0.000000 +1743 17.430000 0.000000 0.000000 +1744 17.440000 0.000000 0.000000 +1745 17.450000 0.000000 0.000000 +1746 17.460000 0.000000 0.000000 +1747 17.470000 0.000000 0.000000 +1748 17.480000 0.000000 0.000000 +1749 17.490000 0.000000 0.000000 +1750 17.500000 0.000000 0.000000 +1751 17.510000 0.000000 0.000000 +1752 17.520000 0.000000 0.000000 +1753 17.530000 0.000000 0.000000 +1754 17.540000 0.000000 0.000000 +1755 17.550000 0.000000 0.000000 +1756 17.560000 0.000000 0.000000 +1757 17.570000 0.000000 0.000000 +1758 17.580000 0.000000 0.000000 +1759 17.590000 0.000000 0.000000 +1760 17.600000 0.000000 0.000000 +1761 17.610000 0.000000 0.000000 +1762 17.620000 0.000000 0.000000 +1763 17.630000 0.000000 0.000000 +1764 17.640000 0.000000 0.000000 +1765 17.650000 0.000000 0.000000 +1766 17.660000 0.000000 0.000000 +1767 17.670000 0.000000 0.000000 +1768 17.680000 0.000000 0.000000 +1769 17.690000 0.000000 0.000000 +1770 17.700000 0.000000 0.000000 +1771 17.710000 0.000000 0.000000 +1772 17.720000 0.000000 0.000000 +1773 17.730000 0.000000 0.000000 +1774 17.740000 0.000000 0.000000 +1775 17.750000 0.000000 0.000000 +1776 17.760000 0.000000 0.000000 +1777 17.770000 0.000000 0.000000 +1778 17.780000 0.000000 0.000000 +1779 17.790000 0.000000 0.000000 +1780 17.800000 0.000000 0.000000 +1781 17.810000 0.000000 0.000000 +1782 17.820000 0.000000 0.000000 +1783 17.830000 0.000000 0.000000 +1784 17.840000 0.000000 0.000000 +1785 17.850000 0.000000 0.000000 +1786 17.860000 0.000000 0.000000 +1787 17.870000 0.000000 0.000000 +1788 17.880000 0.000000 0.000000 +1789 17.890000 0.000000 0.000000 +1790 17.900000 0.000000 0.000000 +1791 17.910000 0.000000 0.000000 +1792 17.920000 0.000000 0.000000 +1793 17.930000 0.000000 0.000000 +1794 17.940000 0.000000 0.000000 +1795 17.950000 0.000000 0.000000 +1796 17.960000 0.000000 0.000000 +1797 17.970000 0.000000 0.000000 +1798 17.980000 0.000000 0.000000 +1799 17.990000 0.000000 0.000000 +1800 18.000000 0.000000 0.000000 +1801 18.010000 0.000000 0.000000 +1802 18.020000 0.000000 0.000000 +1803 18.030000 0.000000 0.000000 +1804 18.040000 0.000000 0.000000 +1805 18.050000 0.000000 0.000000 +1806 18.060000 0.000000 0.000000 +1807 18.070000 0.000000 0.000000 +1808 18.080000 0.000000 0.000000 +1809 18.090000 0.000000 0.000000 +1810 18.100000 0.000000 0.000000 +1811 18.110000 0.000000 0.000000 +1812 18.120000 0.000000 0.000000 +1813 18.130000 0.000000 0.000000 +1814 18.140000 0.000000 0.000000 +1815 18.150000 0.000000 0.000000 +1816 18.160000 0.000000 0.000000 +1817 18.170000 0.000000 0.000000 +1818 18.180000 0.000000 0.000000 +1819 18.190000 0.000000 0.000000 +1820 18.200000 0.000000 0.000000 +1821 18.210000 0.000000 0.000000 +1822 18.220000 0.000000 0.000000 +1823 18.230000 0.000000 0.000000 +1824 18.240000 0.000000 0.000000 +1825 18.250000 0.000000 0.000000 +1826 18.260000 0.000000 0.000000 +1827 18.270000 0.000000 0.000000 +1828 18.280000 0.000000 0.000000 +1829 18.290000 0.000000 0.000000 +1830 18.300000 0.000000 0.000000 +1831 18.310000 0.000000 0.000000 +1832 18.320000 0.000000 0.000000 +1833 18.330000 0.000000 0.000000 +1834 18.340000 0.000000 0.000000 +1835 18.350000 0.000000 0.000000 +1836 18.360000 0.000000 0.000000 +1837 18.370000 0.000000 0.000000 +1838 18.380000 0.000000 0.000000 +1839 18.390000 0.000000 0.000000 +1840 18.400000 0.000000 0.000000 +1841 18.410000 0.000000 0.000000 +1842 18.420000 0.000000 0.000000 +1843 18.430000 0.000000 0.000000 +1844 18.440000 0.000000 0.000000 +1845 18.450000 0.000000 0.000000 +1846 18.460000 0.000000 0.000000 +1847 18.470000 0.000000 0.000000 +1848 18.480000 0.000000 0.000000 +1849 18.490000 0.000000 0.000000 +1850 18.500000 0.000000 0.000000 +1851 18.510000 0.000000 0.000000 +1852 18.520000 0.000000 0.000000 +1853 18.530000 0.000000 0.000000 +1854 18.540000 0.000000 0.000000 +1855 18.550000 0.000000 0.000000 +1856 18.560000 0.000000 0.000000 +1857 18.570000 0.000000 0.000000 +1858 18.580000 0.000000 0.000000 +1859 18.590000 0.000000 0.000000 +1860 18.600000 0.000000 0.000000 +1861 18.610000 0.000000 0.000000 +1862 18.620000 0.000000 0.000000 +1863 18.630000 0.000000 0.000000 +1864 18.640000 0.000000 0.000000 +1865 18.650000 0.000000 0.000000 +1866 18.660000 0.000000 0.000000 +1867 18.670000 0.000000 0.000000 +1868 18.680000 0.000000 0.000000 +1869 18.690000 0.000000 0.000000 +1870 18.700000 0.000000 0.000000 +1871 18.710000 0.000000 0.000000 +1872 18.720000 0.000000 0.000000 +1873 18.730000 0.000000 0.000000 +1874 18.740000 0.000000 0.000000 +1875 18.750000 0.000000 0.000000 +1876 18.760000 0.000000 0.000000 +1877 18.770000 0.000000 0.000000 +1878 18.780000 0.000000 0.000000 +1879 18.790000 0.000000 0.000000 +1880 18.800000 0.000000 0.000000 +1881 18.810000 0.000000 0.000000 +1882 18.820000 0.000000 0.000000 +1883 18.830000 0.000000 0.000000 +1884 18.840000 0.000000 0.000000 +1885 18.850000 0.000000 0.000000 +1886 18.860000 0.000000 0.000000 +1887 18.870000 0.000000 0.000000 +1888 18.880000 0.000000 0.000000 +1889 18.890000 0.000000 0.000000 +1890 18.900000 0.000000 0.000000 +1891 18.910000 0.000000 0.000000 +1892 18.920000 0.000000 0.000000 +1893 18.930000 0.000000 0.000000 +1894 18.940000 0.000000 0.000000 +1895 18.950000 0.000000 0.000000 +1896 18.960000 0.000000 0.000000 +1897 18.970000 0.000000 0.000000 +1898 18.980000 0.000000 0.000000 +1899 18.990000 0.000000 0.000000 +1900 19.000000 0.000000 0.000000 +1901 19.010000 0.000000 0.000000 +1902 19.020000 0.000000 0.000000 +1903 19.030000 0.000000 0.000000 +1904 19.040000 0.000000 0.000000 +1905 19.050000 0.000000 0.000000 +1906 19.060000 0.000000 0.000000 +1907 19.070000 0.000000 0.000000 +1908 19.080000 0.000000 0.000000 +1909 19.090000 0.000000 0.000000 +1910 19.100000 0.000000 0.000000 +1911 19.110000 0.000000 0.000000 +1912 19.120000 0.000000 0.000000 +1913 19.130000 0.000000 0.000000 +1914 19.140000 0.000000 0.000000 +1915 19.150000 0.000000 0.000000 +1916 19.160000 0.000000 0.000000 +1917 19.170000 0.000000 0.000000 +1918 19.180000 0.000000 0.000000 +1919 19.190000 0.000000 0.000000 +1920 19.200000 0.000000 0.000000 +1921 19.210000 0.000000 0.000000 +1922 19.220000 0.000000 0.000000 +1923 19.230000 0.000000 0.000000 +1924 19.240000 0.000000 0.000000 +1925 19.250000 0.000000 0.000000 +1926 19.260000 0.000000 0.000000 +1927 19.270000 0.000000 0.000000 +1928 19.280000 0.000000 0.000000 +1929 19.290000 0.000000 0.000000 +1930 19.300000 0.000000 0.000000 +1931 19.310000 0.000000 0.000000 +1932 19.320000 0.000000 0.000000 +1933 19.330000 0.000000 0.000000 +1934 19.340000 0.000000 0.000000 +1935 19.350000 0.000000 0.000000 +1936 19.360000 0.000000 0.000000 +1937 19.370000 0.000000 0.000000 +1938 19.380000 0.000000 0.000000 +1939 19.390000 0.000000 0.000000 +1940 19.400000 0.000000 0.000000 +1941 19.410000 0.000000 0.000000 +1942 19.420000 0.000000 0.000000 +1943 19.430000 0.000000 0.000000 +1944 19.440000 0.000000 0.000000 +1945 19.450000 0.000000 0.000000 +1946 19.460000 0.000000 0.000000 +1947 19.470000 0.000000 0.000000 +1948 19.480000 0.000000 0.000000 +1949 19.490000 0.000000 0.000000 +1950 19.500000 0.000000 0.000000 +1951 19.510000 0.000000 0.000000 +1952 19.520000 0.000000 0.000000 +1953 19.530000 0.000000 0.000000 +1954 19.540000 0.000000 0.000000 +1955 19.550000 0.000000 0.000000 +1956 19.560000 0.000000 0.000000 +1957 19.570000 0.000000 0.000000 +1958 19.580000 0.000000 0.000000 +1959 19.590000 0.000000 0.000000 +1960 19.600000 0.000000 0.000000 +1961 19.610000 0.000000 0.000000 +1962 19.620000 0.000000 0.000000 +1963 19.630000 0.000000 0.000000 +1964 19.640000 0.000000 0.000000 +1965 19.650000 0.000000 0.000000 +1966 19.660000 0.000000 0.000000 +1967 19.670000 0.000000 0.000000 +1968 19.680000 0.000000 0.000000 +1969 19.690000 0.000000 0.000000 +1970 19.700000 0.000000 0.000000 +1971 19.710000 0.000000 0.000000 +1972 19.720000 0.000000 0.000000 +1973 19.730000 0.000000 0.000000 +1974 19.740000 0.000000 0.000000 +1975 19.750000 0.000000 0.000000 +1976 19.760000 0.000000 0.000000 +1977 19.770000 0.000000 0.000000 +1978 19.780000 0.000000 0.000000 +1979 19.790000 0.000000 0.000000 +1980 19.800000 0.000000 0.000000 +1981 19.810000 0.000000 0.000000 +1982 19.820000 0.000000 0.000000 +1983 19.830000 0.000000 0.000000 +1984 19.840000 0.000000 0.000000 +1985 19.850000 0.000000 0.000000 +1986 19.860000 0.000000 0.000000 +1987 19.870000 0.000000 0.000000 +1988 19.880000 0.000000 0.000000 +1989 19.890000 0.000000 0.000000 +1990 19.900000 0.000000 0.000000 +1991 19.910000 0.000000 0.000000 +1992 19.920000 0.000000 0.000000 +1993 19.930000 0.000000 0.000000 +1994 19.940000 0.000000 0.000000 +1995 19.950000 0.000000 0.000000 +1996 19.960000 0.000000 0.000000 +1997 19.970000 0.000000 0.000000 +1998 19.980000 0.000000 0.000000 +1999 19.990000 0.000000 0.000000 +2000 20.000000 0.000000 0.000000 +2001 20.010000 0.000000 0.000000 +2002 20.020000 0.000000 0.000000 +2003 20.030000 0.000000 0.000000 +2004 20.040000 0.000000 0.000000 +2005 20.050000 0.000000 0.000000 +2006 20.060000 0.000000 0.000000 +2007 20.070000 0.000000 0.000000 +2008 20.080000 0.000000 0.000000 +2009 20.090000 0.000000 0.000000 +2010 20.100000 0.000000 0.000000 +2011 20.110000 0.000000 0.000000 +2012 20.120000 0.000000 0.000000 +2013 20.130000 0.000000 0.000000 +2014 20.140000 0.000000 0.000000 +2015 20.150000 0.000000 0.000000 +2016 20.160000 0.000000 0.000000 +2017 20.170000 0.000000 0.000000 +2018 20.180000 0.000000 0.000000 +2019 20.190000 0.000000 0.000000 +2020 20.200000 0.000000 0.000000 +2021 20.210000 0.000000 0.000000 +2022 20.220000 0.000000 0.000000 +2023 20.230000 0.000000 0.000000 +2024 20.240000 0.000000 0.000000 +2025 20.250000 0.000000 0.000000 +2026 20.260000 0.000000 0.000000 +2027 20.270000 0.000000 0.000000 +2028 20.280000 0.000000 0.000000 +2029 20.290000 0.000000 0.000000 +2030 20.300000 0.000000 0.000000 +2031 20.310000 0.000000 0.000000 +2032 20.320000 0.000000 0.000000 +2033 20.330000 0.000000 0.000000 +2034 20.340000 0.000000 0.000000 +2035 20.350000 0.000000 0.000000 +2036 20.360000 0.000000 0.000000 +2037 20.370000 0.000000 0.000000 +2038 20.380000 0.000000 0.000000 +2039 20.390000 0.000000 0.000000 +2040 20.400000 0.000000 0.000000 +2041 20.410000 0.000000 0.000000 +2042 20.420000 0.000000 0.000000 +2043 20.430000 0.000000 0.000000 +2044 20.440000 0.000000 0.000000 +2045 20.450000 0.000000 0.000000 +2046 20.460000 0.000000 0.000000 +2047 20.470000 0.000000 0.000000 +2048 20.480000 0.000000 0.000000 +2049 20.490000 0.000000 0.000000 +2050 20.500000 0.000000 0.000000 +2051 20.510000 0.000000 0.000000 +2052 20.520000 0.000000 0.000000 +2053 20.530000 0.000000 0.000000 +2054 20.540000 0.000000 0.000000 +2055 20.550000 0.000000 0.000000 +2056 20.560000 0.000000 0.000000 +2057 20.570000 0.000000 0.000000 +2058 20.580000 0.000000 0.000000 +2059 20.590000 0.000000 0.000000 +2060 20.600000 0.000000 0.000000 +2061 20.610000 0.000000 0.000000 +2062 20.620000 0.000000 0.000000 +2063 20.630000 0.000000 0.000000 +2064 20.640000 0.000000 0.000000 +2065 20.650000 0.000000 0.000000 +2066 20.660000 0.000000 0.000000 +2067 20.670000 0.000000 0.000000 +2068 20.680000 0.000000 0.000000 +2069 20.690000 0.000000 0.000000 +2070 20.700000 0.000000 0.000000 +2071 20.710000 0.000000 0.000000 +2072 20.720000 0.000000 0.000000 +2073 20.730000 0.000000 0.000000 +2074 20.740000 0.000000 0.000000 +2075 20.750000 0.000000 0.000000 +2076 20.760000 0.000000 0.000000 +2077 20.770000 0.000000 0.000000 +2078 20.780000 0.000000 0.000000 +2079 20.790000 0.000000 0.000000 +2080 20.800000 0.000000 0.000000 +2081 20.810000 0.000000 0.000000 +2082 20.820000 0.000000 0.000000 +2083 20.830000 0.000000 0.000000 +2084 20.840000 0.000000 0.000000 +2085 20.850000 0.000000 0.000000 +2086 20.860000 0.000000 0.000000 +2087 20.870000 0.000000 0.000000 +2088 20.880000 0.000000 0.000000 +2089 20.890000 0.000000 0.000000 +2090 20.900000 0.000000 0.000000 +2091 20.910000 0.000000 0.000000 +2092 20.920000 0.000000 0.000000 +2093 20.930000 0.000000 0.000000 +2094 20.940000 0.000000 0.000000 +2095 20.950000 0.000000 0.000000 +2096 20.960000 0.000000 0.000000 +2097 20.970000 0.000000 0.000000 +2098 20.980000 0.000000 0.000000 +2099 20.990000 0.000000 0.000000 +2100 21.000000 0.000000 0.000000 +2101 21.010000 0.000000 0.000000 +2102 21.020000 0.000000 0.000000 +2103 21.030000 0.000000 0.000000 +2104 21.040000 0.000000 0.000000 +2105 21.050000 0.000000 0.000000 +2106 21.060000 0.000000 0.000000 +2107 21.070000 0.000000 0.000000 +2108 21.080000 0.000000 0.000000 +2109 21.090000 0.000000 0.000000 +2110 21.100000 0.000000 0.000000 +2111 21.110000 0.000000 0.000000 +2112 21.120000 0.000000 0.000000 +2113 21.130000 0.000000 0.000000 +2114 21.140000 0.000000 0.000000 +2115 21.150000 0.000000 0.000000 +2116 21.160000 0.000000 0.000000 +2117 21.170000 0.000000 0.000000 +2118 21.180000 0.000000 0.000000 +2119 21.190000 0.000000 0.000000 +2120 21.200000 0.000000 0.000000 +2121 21.210000 0.000000 0.000000 +2122 21.220000 0.000000 0.000000 +2123 21.230000 0.000000 0.000000 +2124 21.240000 0.000000 0.000000 +2125 21.250000 0.000000 0.000000 +2126 21.260000 0.000000 0.000000 +2127 21.270000 0.000000 0.000000 +2128 21.280000 0.000000 0.000000 +2129 21.290000 0.000000 0.000000 +2130 21.300000 0.000000 0.000000 +2131 21.310000 0.000000 0.000000 +2132 21.320000 0.000000 0.000000 +2133 21.330000 0.000000 0.000000 +2134 21.340000 0.000000 0.000000 +2135 21.350000 0.000000 0.000000 +2136 21.360000 0.000000 0.000000 +2137 21.370000 0.000000 0.000000 +2138 21.380000 0.000000 0.000000 +2139 21.390000 0.000000 0.000000 +2140 21.400000 0.000000 0.000000 +2141 21.410000 0.000000 0.000000 +2142 21.420000 0.000000 0.000000 +2143 21.430000 0.000000 0.000000 +2144 21.440000 0.000000 0.000000 +2145 21.450000 0.000000 0.000000 +2146 21.460000 0.000000 0.000000 +2147 21.470000 0.000000 0.000000 +2148 21.480000 0.000000 0.000000 +2149 21.490000 0.000000 0.000000 +2150 21.500000 0.000000 0.000000 +2151 21.510000 0.000000 0.000000 +2152 21.520000 0.000000 0.000000 +2153 21.530000 0.000000 0.000000 +2154 21.540000 0.000000 0.000000 +2155 21.550000 0.000000 0.000000 +2156 21.560000 0.000000 0.000000 +2157 21.570000 0.000000 0.000000 +2158 21.580000 0.000000 0.000000 +2159 21.590000 0.000000 0.000000 +2160 21.600000 0.000000 0.000000 +2161 21.610000 0.000000 0.000000 +2162 21.620000 0.000000 0.000000 +2163 21.630000 0.000000 0.000000 +2164 21.640000 0.000000 0.000000 +2165 21.650000 0.000000 0.000000 +2166 21.660000 0.000000 0.000000 +2167 21.670000 0.000000 0.000000 +2168 21.680000 0.000000 0.000000 +2169 21.690000 0.000000 0.000000 +2170 21.700000 0.000000 0.000000 +2171 21.710000 0.000000 0.000000 +2172 21.720000 0.000000 0.000000 +2173 21.730000 0.000000 0.000000 +2174 21.740000 0.000000 0.000000 +2175 21.750000 0.000000 0.000000 +2176 21.760000 0.000000 0.000000 +2177 21.770000 0.000000 0.000000 +2178 21.780000 0.000000 0.000000 +2179 21.790000 0.000000 0.000000 +2180 21.800000 0.000000 0.000000 +2181 21.810000 0.000000 0.000000 +2182 21.820000 0.000000 0.000000 +2183 21.830000 0.000000 0.000000 +2184 21.840000 0.000000 0.000000 +2185 21.850000 0.000000 0.000000 +2186 21.860000 0.000000 0.000000 +2187 21.870000 0.000000 0.000000 +2188 21.880000 0.000000 0.000000 +2189 21.890000 0.000000 0.000000 +2190 21.900000 0.000000 0.000000 +2191 21.910000 0.000000 0.000000 +2192 21.920000 0.000000 0.000000 +2193 21.930000 0.000000 0.000000 +2194 21.940000 0.000000 0.000000 +2195 21.950000 0.000000 0.000000 +2196 21.960000 0.000000 0.000000 +2197 21.970000 0.000000 0.000000 +2198 21.980000 0.000000 0.000000 +2199 21.990000 0.000000 0.000000 +2200 22.000000 0.000000 0.000000 +2201 22.010000 0.000000 0.000000 +2202 22.020000 0.000000 0.000000 +2203 22.030000 0.000000 0.000000 +2204 22.040000 0.000000 0.000000 +2205 22.050000 0.000000 0.000000 +2206 22.060000 0.000000 0.000000 +2207 22.070000 0.000000 0.000000 +2208 22.080000 0.000000 0.000000 +2209 22.090000 0.000000 0.000000 +2210 22.100000 0.000000 0.000000 +2211 22.110000 0.000000 0.000000 +2212 22.120000 0.000000 0.000000 +2213 22.130000 0.000000 0.000000 +2214 22.140000 0.000000 0.000000 +2215 22.150000 0.000000 0.000000 +2216 22.160000 0.000000 0.000000 +2217 22.170000 0.000000 0.000000 +2218 22.180000 0.000000 0.000000 +2219 22.190000 0.000000 0.000000 +2220 22.200000 0.000000 0.000000 +2221 22.210000 0.000000 0.000000 +2222 22.220000 0.000000 0.000000 +2223 22.230000 0.000000 0.000000 +2224 22.240000 0.000000 0.000000 +2225 22.250000 0.000000 0.000000 +2226 22.260000 0.000000 0.000000 +2227 22.270000 0.000000 0.000000 +2228 22.280000 0.000000 0.000000 +2229 22.290000 0.000000 0.000000 +2230 22.300000 0.000000 0.000000 +2231 22.310000 0.000000 0.000000 +2232 22.320000 0.000000 0.000000 +2233 22.330000 0.000000 0.000000 +2234 22.340000 0.000000 0.000000 +2235 22.350000 0.000000 0.000000 +2236 22.360000 0.000000 0.000000 +2237 22.370000 0.000000 0.000000 +2238 22.380000 0.000000 0.000000 +2239 22.390000 0.000000 0.000000 +2240 22.400000 0.000000 0.000000 +2241 22.410000 0.000000 0.000000 +2242 22.420000 0.000000 0.000000 +2243 22.430000 0.000000 0.000000 +2244 22.440000 0.000000 0.000000 +2245 22.450000 0.000000 0.000000 +2246 22.460000 0.000000 0.000000 +2247 22.470000 0.000000 0.000000 +2248 22.480000 0.000000 0.000000 +2249 22.490000 0.000000 0.000000 +2250 22.500000 0.000000 0.000000 +2251 22.510000 0.000000 0.000000 +2252 22.520000 0.000000 0.000000 +2253 22.530000 0.000000 0.000000 +2254 22.540000 0.000000 0.000000 +2255 22.550000 0.000000 0.000000 +2256 22.560000 0.000000 0.000000 +2257 22.570000 0.000000 0.000000 +2258 22.580000 0.000000 0.000000 +2259 22.590000 0.000000 0.000000 +2260 22.600000 0.000000 0.000000 +2261 22.610000 0.000000 0.000000 +2262 22.620000 0.000000 0.000000 +2263 22.630000 0.000000 0.000000 +2264 22.640000 0.000000 0.000000 +2265 22.650000 0.000000 0.000000 +2266 22.660000 0.000000 0.000000 +2267 22.670000 0.000000 0.000000 +2268 22.680000 0.000000 0.000000 +2269 22.690000 0.000000 0.000000 +2270 22.700000 0.000000 0.000000 +2271 22.710000 0.000000 0.000000 +2272 22.720000 0.000000 0.000000 +2273 22.730000 0.000000 0.000000 +2274 22.740000 0.000000 0.000000 +2275 22.750000 0.000000 0.000000 +2276 22.760000 0.000000 0.000000 +2277 22.770000 0.000000 0.000000 +2278 22.780000 0.000000 0.000000 +2279 22.790000 0.000000 0.000000 +2280 22.800000 0.000000 0.000000 +2281 22.810000 0.000000 0.000000 +2282 22.820000 0.000000 0.000000 +2283 22.830000 0.000000 0.000000 +2284 22.840000 0.000000 0.000000 +2285 22.850000 0.000000 0.000000 +2286 22.860000 0.000000 0.000000 +2287 22.870000 0.000000 0.000000 +2288 22.880000 0.000000 0.000000 +2289 22.890000 0.000000 0.000000 +2290 22.900000 0.000000 0.000000 +2291 22.910000 0.000000 0.000000 +2292 22.920000 0.000000 0.000000 +2293 22.930000 0.000000 0.000000 +2294 22.940000 0.000000 0.000000 +2295 22.950000 0.000000 0.000000 +2296 22.960000 0.000000 0.000000 +2297 22.970000 0.000000 0.000000 +2298 22.980000 0.000000 0.000000 +2299 22.990000 0.000000 0.000000 +2300 23.000000 0.000000 0.000000 +2301 23.010000 0.000000 0.000000 +2302 23.020000 0.000000 0.000000 +2303 23.030000 0.000000 0.000000 +2304 23.040000 0.000000 0.000000 +2305 23.050000 0.000000 0.000000 +2306 23.060000 0.000000 0.000000 +2307 23.070000 0.000000 0.000000 +2308 23.080000 0.000000 0.000000 +2309 23.090000 0.000000 0.000000 +2310 23.100000 0.000000 0.000000 +2311 23.110000 0.000000 0.000000 +2312 23.120000 0.000000 0.000000 +2313 23.130000 0.000000 0.000000 +2314 23.140000 0.000000 0.000000 +2315 23.150000 0.000000 0.000000 +2316 23.160000 0.000000 0.000000 +2317 23.170000 0.000000 0.000000 +2318 23.180000 0.000000 0.000000 +2319 23.190000 0.000000 0.000000 +2320 23.200000 0.000000 0.000000 +2321 23.210000 0.000000 0.000000 +2322 23.220000 0.000000 0.000000 +2323 23.230000 0.000000 0.000000 +2324 23.240000 0.000000 0.000000 +2325 23.250000 0.000000 0.000000 +2326 23.260000 0.000000 0.000000 +2327 23.270000 0.000000 0.000000 +2328 23.280000 0.000000 0.000000 +2329 23.290000 0.000000 0.000000 +2330 23.300000 0.000000 0.000000 +2331 23.310000 0.000000 0.000000 +2332 23.320000 0.000000 0.000000 +2333 23.330000 0.000000 0.000000 +2334 23.340000 0.000000 0.000000 +2335 23.350000 0.000000 0.000000 +2336 23.360000 0.000000 0.000000 +2337 23.370000 0.000000 0.000000 +2338 23.380000 0.000000 0.000000 +2339 23.390000 0.000000 0.000000 +2340 23.400000 0.000000 0.000000 +2341 23.410000 0.000000 0.000000 +2342 23.420000 0.000000 0.000000 +2343 23.430000 0.000000 0.000000 +2344 23.440000 0.000000 0.000000 +2345 23.450000 0.000000 0.000000 +2346 23.460000 0.000000 0.000000 +2347 23.470000 0.000000 0.000000 +2348 23.480000 0.000000 0.000000 +2349 23.490000 0.000000 0.000000 +2350 23.500000 0.000000 0.000000 +2351 23.510000 0.000000 0.000000 +2352 23.520000 0.000000 0.000000 +2353 23.530000 0.000000 0.000000 +2354 23.540000 0.000000 0.000000 +2355 23.550000 0.000000 0.000000 +2356 23.560000 0.000000 0.000000 +2357 23.570000 0.000000 0.000000 +2358 23.580000 0.000000 0.000000 +2359 23.590000 0.000000 0.000000 +2360 23.600000 0.000000 0.000000 +2361 23.610000 0.000000 0.000000 +2362 23.620000 0.000000 0.000000 +2363 23.630000 0.000000 0.000000 +2364 23.640000 0.000000 0.000000 +2365 23.650000 0.000000 0.000000 +2366 23.660000 0.000000 0.000000 +2367 23.670000 0.000000 0.000000 +2368 23.680000 0.000000 0.000000 +2369 23.690000 0.000000 0.000000 +2370 23.700000 0.000000 0.000000 +2371 23.710000 0.000000 0.000000 +2372 23.720000 0.000000 0.000000 +2373 23.730000 0.000000 0.000000 +2374 23.740000 0.000000 0.000000 +2375 23.750000 0.000000 0.000000 +2376 23.760000 0.000000 0.000000 +2377 23.770000 0.000000 0.000000 +2378 23.780000 0.000000 0.000000 +2379 23.790000 0.000000 0.000000 +2380 23.800000 0.000000 0.000000 +2381 23.810000 0.000000 0.000000 +2382 23.820000 0.000000 0.000000 +2383 23.830000 0.000000 0.000000 +2384 23.840000 0.000000 0.000000 +2385 23.850000 0.000000 0.000000 +2386 23.860000 0.000000 0.000000 +2387 23.870000 0.000000 0.000000 +2388 23.880000 0.000000 0.000000 +2389 23.890000 0.000000 0.000000 +2390 23.900000 0.000000 0.000000 +2391 23.910000 0.000000 0.000000 +2392 23.920000 0.000000 0.000000 +2393 23.930000 0.000000 0.000000 +2394 23.940000 0.000000 0.000000 +2395 23.950000 0.000000 0.000000 +2396 23.960000 0.000000 0.000000 +2397 23.970000 0.000000 0.000000 +2398 23.980000 0.000000 0.000000 +2399 23.990000 0.000000 0.000000 +2400 24.000000 0.000000 0.000000 +2401 24.010000 0.000000 0.000000 +2402 24.020000 0.000000 0.000000 +2403 24.030000 0.000000 0.000000 +2404 24.040000 0.000000 0.000000 +2405 24.050000 0.000000 0.000000 +2406 24.060000 0.000000 0.000000 +2407 24.070000 0.000000 0.000000 +2408 24.080000 0.000000 0.000000 +2409 24.090000 0.000000 0.000000 +2410 24.100000 0.000000 0.000000 +2411 24.110000 0.000000 0.000000 +2412 24.120000 0.000000 0.000000 +2413 24.130000 0.000000 0.000000 +2414 24.140000 0.000000 0.000000 +2415 24.150000 0.000000 0.000000 +2416 24.160000 0.000000 0.000000 +2417 24.170000 0.000000 0.000000 +2418 24.180000 0.000000 0.000000 +2419 24.190000 0.000000 0.000000 +2420 24.200000 0.000000 0.000000 +2421 24.210000 0.000000 0.000000 +2422 24.220000 0.000000 0.000000 +2423 24.230000 0.000000 0.000000 +2424 24.240000 0.000000 0.000000 +2425 24.250000 0.000000 0.000000 +2426 24.260000 0.000000 0.000000 +2427 24.270000 0.000000 0.000000 +2428 24.280000 0.000000 0.000000 +2429 24.290000 0.000000 0.000000 +2430 24.300000 0.000000 0.000000 +2431 24.310000 0.000000 0.000000 +2432 24.320000 0.000000 0.000000 +2433 24.330000 0.000000 0.000000 +2434 24.340000 0.000000 0.000000 +2435 24.350000 0.000000 0.000000 +2436 24.360000 0.000000 0.000000 +2437 24.370000 0.000000 0.000000 +2438 24.380000 0.000000 0.000000 +2439 24.390000 0.000000 0.000000 +2440 24.400000 0.000000 0.000000 +2441 24.410000 0.000000 0.000000 +2442 24.420000 0.000000 0.000000 +2443 24.430000 0.000000 0.000000 +2444 24.440000 0.000000 0.000000 +2445 24.450000 0.000000 0.000000 +2446 24.460000 0.000000 0.000000 +2447 24.470000 0.000000 0.000000 +2448 24.480000 0.000000 0.000000 +2449 24.490000 0.000000 0.000000 +2450 24.500000 0.000000 0.000000 +2451 24.510000 0.000000 0.000000 +2452 24.520000 0.000000 0.000000 +2453 24.530000 0.000000 0.000000 +2454 24.540000 0.000000 0.000000 +2455 24.550000 0.000000 0.000000 +2456 24.560000 0.000000 0.000000 +2457 24.570000 0.000000 0.000000 +2458 24.580000 0.000000 0.000000 +2459 24.590000 0.000000 0.000000 +2460 24.600000 0.000000 0.000000 +2461 24.610000 0.000000 0.000000 +2462 24.620000 0.000000 0.000000 +2463 24.630000 0.000000 0.000000 +2464 24.640000 0.000000 0.000000 +2465 24.650000 0.000000 0.000000 +2466 24.660000 0.000000 0.000000 +2467 24.670000 0.000000 0.000000 +2468 24.680000 0.000000 0.000000 +2469 24.690000 0.000000 0.000000 +2470 24.700000 0.000000 0.000000 +2471 24.710000 0.000000 0.000000 +2472 24.720000 0.000000 0.000000 +2473 24.730000 0.000000 0.000000 +2474 24.740000 0.000000 0.000000 +2475 24.750000 0.000000 0.000000 +2476 24.760000 0.000000 0.000000 +2477 24.770000 0.000000 0.000000 +2478 24.780000 0.000000 0.000000 +2479 24.790000 0.000000 0.000000 +2480 24.800000 0.000000 0.000000 +2481 24.810000 0.000000 0.000000 +2482 24.820000 0.000000 0.000000 +2483 24.830000 0.000000 0.000000 +2484 24.840000 0.000000 0.000000 +2485 24.850000 0.000000 0.000000 +2486 24.860000 0.000000 0.000000 +2487 24.870000 0.000000 0.000000 +2488 24.880000 0.000000 0.000000 +2489 24.890000 0.000000 0.000000 +2490 24.900000 0.000000 0.000000 +2491 24.910000 0.000000 0.000000 +2492 24.920000 0.000000 0.000000 +2493 24.930000 0.000000 0.000000 +2494 24.940000 0.000000 0.000000 +2495 24.950000 0.000000 0.000000 +2496 24.960000 0.000000 0.000000 +2497 24.970000 0.000000 0.000000 +2498 24.980000 0.000000 0.000000 +2499 24.990000 0.000000 0.000000 +2500 25.000000 0.000000 0.000000 diff --git a/examples/USER/bocs/log.20Apr18.methanol.g++.1 b/examples/USER/bocs/log.20Apr18.methanol.g++.1 new file mode 100644 index 0000000000..a94bd959c8 --- /dev/null +++ b/examples/USER/bocs/log.20Apr18.methanol.g++.1 @@ -0,0 +1,143 @@ +LAMMPS (20 Apr 2018) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +units real +dimension 3 +boundary p p p +atom_style atomic + +newton on +timestep 1.0 + +read_data methanol.data + orthogonal box = (0 0 0) to (40.4635 40.4635 40.4635) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 968 atoms + +velocity all create 300.0 16802 dist gaussian + +pair_style table spline 15000 + +pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0 +WARNING: 78 of 2500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:481) + +neigh_modify delay 0 every 1 check yes one 10000 +neighbor 12.0 bin + +thermo 500 +thermo_style custom step temp pe etotal press vol + +variable STEP equal step +variable TEMP equal temp +## volume from cubic angstroms to cubic nm +variable VOL equal vol/1000.0 +## pressure from atm to bar +variable PRESS equal press*1.01325 +variable PXX equal pxx*1.01325 +variable PYY equal pyy*1.01325 +variable PZZ equal pzz*1.01325 +variable PXY equal pxy*1.01325 +variable PXZ equal pxz*1.01325 +variable PYZ equal pyz*1.01325 +## energy from kcal/mol to kJ/mol +variable KE equal ke*4.184 +variable PE equal pe*4.184 +variable UVDW equal evdwl*4.184 + + +##### SPECIAL COMMANDS FOR FIX_BOCS ##### +# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2 +fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 + +# Report the modified pressure +thermo_modify press 1_press + + + +## Uncomment to save some data from simulation to files +#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no +#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no +#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no +#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no +#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no +#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no +#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no +#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no + +## Prints a configuration to dump.txt every 500 steps +#dump 1 all custom 500 dump.txt id type x y z fx fy fz + +# Write restart files to continue simulations +#restart 10000 state1.restart state2.restart + +## Run for this many steps +run_style verlet +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 24 + ghost atom cutoff = 24 + binsize = 12, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair table, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.691 | 4.691 | 4.691 Mbytes +Step Temp PotEng TotEng Press Volume + 0 300 1061.5961 1926.3291 107.006 66250.679 + 500 314.54728 1034.1091 1940.7738 194.42689 65660.282 + 1000 301.41603 1030.7027 1899.5173 -91.966709 66262.543 + 1500 298.8308 1014.8276 1876.1905 -80.178606 67053.605 + 2000 294.78476 1046.8207 1896.521 50.592942 66316.735 + 2500 301.18564 1033.9214 1902.0719 40.48255 66607.667 + 3000 301.06632 1022.0381 1889.8447 47.582344 66341.947 + 3500 297.98361 989.80983 1848.7307 -204.69879 67462.078 + 4000 299.03493 1034.6571 1896.6083 89.188888 66457.385 + 4500 306.03351 985.4121 1867.5363 -51.102407 67519.446 + 5000 305.6903 1013.8613 1894.9963 -141.13704 67240.467 + 5500 292.23444 1029.5558 1871.905 20.764579 66683.876 + 6000 287.87735 1017.7325 1847.5226 -35.288049 66630.031 + 6500 305.26461 960.08118 1839.9891 -352.42596 67612.317 + 7000 300.34449 1055.0664 1920.7923 22.04027 66187.27 + 7500 305.48612 1038.6651 1919.2115 17.807254 66324.168 + 8000 316.03232 1034.6809 1945.6262 27.482857 66502.198 + 8500 294.28636 1038.8213 1887.085 -72.840559 66851.661 + 9000 316.69029 1065.7481 1978.5899 245.61677 65678.385 + 9500 297.46127 1034.5547 1891.97 54.23428 66892.627 + 10000 301.24799 1036.5432 1904.8735 7.7134029 66150.506 +Loop time of 34.426 on 1 procs for 10000 steps with 968 atoms + +Performance: 25.097 ns/day, 0.956 hours/ns, 290.478 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 33.324 | 33.324 | 33.324 | 0.0 | 96.80 +Neigh | 0.12198 | 0.12198 | 0.12198 | 0.0 | 0.35 +Comm | 0.42865 | 0.42865 | 0.42865 | 0.0 | 1.25 +Output | 0.00059938 | 0.00059938 | 0.00059938 | 0.0 | 0.00 +Modify | 0.42553 | 0.42553 | 0.42553 | 0.0 | 1.24 +Other | | 0.1252 | | | 0.36 + +Nlocal: 968 ave 968 max 968 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 9112 ave 9112 max 9112 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 404392 ave 404392 max 404392 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 404392 +Ave neighs/atom = 417.76 +Neighbor list builds = 13 +Dangerous builds = 0 + + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:34 diff --git a/examples/USER/bocs/log.20Apr18.methanol.g++.4 b/examples/USER/bocs/log.20Apr18.methanol.g++.4 new file mode 100644 index 0000000000..cf5891f97c --- /dev/null +++ b/examples/USER/bocs/log.20Apr18.methanol.g++.4 @@ -0,0 +1,143 @@ +LAMMPS (20 Apr 2018) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +units real +dimension 3 +boundary p p p +atom_style atomic + +newton on +timestep 1.0 + +read_data methanol.data + orthogonal box = (0 0 0) to (40.4635 40.4635 40.4635) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 968 atoms + +velocity all create 300.0 16802 dist gaussian + +pair_style table spline 15000 + +pair_coeff 1 1 lammps_nb_MET-MET.table nb_METMET 12.0 +WARNING: 78 of 2500 force values in table are inconsistent with -dE/dr. + Should only be flagged at inflection points (../pair_table.cpp:481) + +neigh_modify delay 0 every 1 check yes one 10000 +neighbor 12.0 bin + +thermo 500 +thermo_style custom step temp pe etotal press vol + +variable STEP equal step +variable TEMP equal temp +## volume from cubic angstroms to cubic nm +variable VOL equal vol/1000.0 +## pressure from atm to bar +variable PRESS equal press*1.01325 +variable PXX equal pxx*1.01325 +variable PYY equal pyy*1.01325 +variable PZZ equal pzz*1.01325 +variable PXY equal pxy*1.01325 +variable PXZ equal pxz*1.01325 +variable PYZ equal pyz*1.01325 +## energy from kcal/mol to kJ/mol +variable KE equal ke*4.184 +variable PE equal pe*4.184 +variable UVDW equal evdwl*4.184 + + +##### SPECIAL COMMANDS FOR FIX_BOCS ##### +# ID group-ID style_name thermostat T_init T_end T_couple barostat P_start P_end P_couple pmatch_basis avg_vol N_sites N_coeffs coeff1 coeff2 +fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20 + +# Report the modified pressure +thermo_modify press 1_press + + + +## Uncomment to save some data from simulation to files +#fix print_temp all print 500 "${STEP} ${TEMP}" file temp.dat screen no +#fix print_vol all print 500 "${STEP} ${VOL}" file vol.dat screen no +#fix print_press all print 500 "${STEP} ${PRESS}" file press.dat screen no +#fix print_ke all print 500 "${STEP} ${KE}" file kinetic_E.dat screen no +#fix print_pe all print 500 "${STEP} ${PE}" file potential_E.dat screen no +#fix print_ve all print 500 "${STEP} ${UVDW}" file vdw_E.dat screen no +#fix print_press_tens all print 500 "${STEP} ${PXX} ${PYY} ${PZZ} ${PXY} ${PXZ} ${PYZ}" file press_tens.dat screen no +#fix print_PV_eos all print 500 "${VOL} ${PRESS}" file pv_eos.dat screen no + +## Prints a configuration to dump.txt every 500 steps +#dump 1 all custom 500 dump.txt id type x y z fx fy fz + +# Write restart files to continue simulations +#restart 10000 state1.restart state2.restart + +## Run for this many steps +run_style verlet +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 10000, page size: 100000 + master list distance cutoff = 24 + ghost atom cutoff = 24 + binsize = 12, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair table, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.37 | 3.37 | 3.371 Mbytes +Step Temp PotEng TotEng Press Volume + 0 300 1061.5961 1926.3291 107.006 66250.679 + 500 314.54728 1034.1091 1940.7738 194.42689 65660.282 + 1000 301.41603 1030.7027 1899.5173 -91.966709 66262.543 + 1500 298.8308 1014.8276 1876.1905 -80.178606 67053.605 + 2000 294.78476 1046.8207 1896.521 50.592942 66316.735 + 2500 301.18564 1033.9214 1902.0719 40.482557 66607.667 + 3000 301.06631 1022.0381 1889.8447 47.582403 66341.947 + 3500 297.98353 989.81011 1848.7308 -204.69823 67462.076 + 4000 299.03465 1034.6603 1896.6108 89.196235 66457.338 + 4500 306.04532 985.37017 1867.5285 -51.094929 67519.735 + 5000 304.72903 1014.9543 1893.3184 -127.04402 67238.517 + 5500 292.52622 1025.6599 1868.8502 -19.753932 66716.551 + 6000 296.82719 1031.5184 1887.1059 -1.2609328 66368.611 + 6500 298.63312 1018.4299 1879.2229 -24.75835 66524.898 + 7000 303.25389 1005.9283 1880.0404 -96.273504 67349.674 + 7500 292.45089 1068.2863 1911.2595 103.23295 65778.08 + 8000 301.22765 1040.6294 1908.9011 -0.83635353 66831.038 + 8500 300.19765 1047.5856 1912.8883 -31.582343 66316.305 + 9000 295.1108 1023.8234 1874.4635 -88.165532 67192.344 + 9500 302.1087 1003.6348 1874.4459 -18.707065 66369.361 + 10000 296.3083 1004.126 1858.2178 -28.293045 66862.576 +Loop time of 28.8053 on 4 procs for 10000 steps with 968 atoms + +Performance: 29.994 ns/day, 0.800 hours/ns, 347.159 timesteps/s +95.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 19.929 | 21.765 | 23.391 | 27.8 | 75.56 +Neigh | 0.067397 | 0.071231 | 0.077313 | 1.5 | 0.25 +Comm | 3.9226 | 5.5183 | 7.3214 | 53.7 | 19.16 +Output | 0.00069928 | 0.0016099 | 0.0043275 | 3.9 | 0.01 +Modify | 1.0874 | 1.1376 | 1.1888 | 4.2 | 3.95 +Other | | 0.3112 | | | 1.08 + +Nlocal: 242 ave 244 max 239 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 5718.5 ave 5736 max 5702 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 100703 ave 108064 max 93454 min +Histogram: 1 0 0 1 0 0 1 0 0 1 + +Total # of neighbors = 402813 +Ave neighs/atom = 416.129 +Neighbor list builds = 14 +Dangerous builds = 0 + + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:28 diff --git a/examples/USER/bocs/methanol.data b/examples/USER/bocs/methanol.data new file mode 100644 index 0000000000..01f66de6f6 --- /dev/null +++ b/examples/USER/bocs/methanol.data @@ -0,0 +1,991 @@ +LAMMPS Description + + 968 atoms + 0 bonds + 0 angles + 0 dihedrals + 0 impropers + + 1 atom types + 0 bond types + 0 angle types + 0 dihedral types + + 0 40.4635 xlo xhi + 0 40.4635 ylo yhi + 0 40.4635 zlo zhi + +Masses + + 1 32.0424 + +Atoms + +1 1 36.39 8.05 27.55 +2 1 18.38 15.72 26.03 +3 1 3.52 1.77 23.57 +4 1 31.09 11.38 12.17 +5 1 13.3 34.8 2.89 +6 1 1.72 38.55 10.36 +7 1 38.6 23.16 6.19 +8 1 0.74 33.21 0.17 +9 1 26.97 9.53 11.24 +10 1 31.68 12.19 17.04 +11 1 15.19 9.06 0.2 +12 1 34.39 20.63 35.71 +13 1 21.79 4.93 6.49 +14 1 28.08 33.01 24.51 +15 1 37.03 20.52 32.9 +16 1 32.69 20 30.11 +17 1 23.77 38.59 18.79 +18 1 16.01 2.31 20.15 +19 1 5.65 15.5 28.5 +20 1 8.35 17.35 20.48 +21 1 31.24 24.68 27.4 +22 1 29.41 16.64 19.79 +23 1 37.42 31.93 26.68 +24 1 18.76 39.06 30.68 +25 1 22.97 35 20.81 +26 1 39.47 18.28 29.6 +27 1 34.37 19.4 0.17 +28 1 5.94 9.53 10.95 +29 1 11.45 38.44 14.64 +30 1 39.57 11.04 1.57 +31 1 25.91 20.97 12.79 +32 1 36.3 22.1 1.68 +33 1 21.87 22.49 3.43 +34 1 5.77 18.66 3.97 +35 1 7 7.59 18.42 +36 1 39.76 27.63 17.98 +37 1 10.26 23.18 5.11 +38 1 23.23 21.37 17.38 +39 1 7.47 37.37 5.57 +40 1 0.73 21.6 14.78 +41 1 2.27 30.22 14.93 +42 1 7.39 28.22 14.88 +43 1 27.48 1.11 25.02 +44 1 8.37 13.19 14.64 +45 1 7.11 33.57 0.65 +46 1 34.19 35.11 3.17 +47 1 7.52 3.2 20.33 +48 1 1.02 17.69 37.85 +49 1 8.59 6.21 10.26 +50 1 2.89 16.81 30.02 +51 1 27.05 9.07 32.8 +52 1 12.32 14.79 21.11 +53 1 26.63 22.69 16.75 +54 1 31.6 2.79 20.45 +55 1 35.11 0.74 12.16 +56 1 29.71 31.23 37.63 +57 1 38.22 19.02 18.12 +58 1 10.95 17.4 0.39 +59 1 1.65 19.87 6.67 +60 1 5.15 1.94 14.61 +61 1 8.2 31.43 15.72 +62 1 0.55 20.85 2.45 +63 1 15.27 31.74 0.33 +64 1 17.9 9.84 23.87 +65 1 1.46 8.39 19.24 +66 1 37.79 25.11 12.24 +67 1 14.11 27.19 30.7 +68 1 29.39 24.12 38.92 +69 1 39.15 20.32 39.86 +70 1 11.79 11.38 30.6 +71 1 29.87 30.18 32.5 +72 1 11.06 37.8 30.18 +73 1 20.11 4.59 35.57 +74 1 37.19 27.23 1.44 +75 1 18.83 26.13 35.26 +76 1 29.27 7.86 36.75 +77 1 34.83 29.59 37.82 +78 1 22.16 34.68 25.27 +79 1 5.95 14.65 25.55 +80 1 -0.04 3.48 29.91 +81 1 14.69 6.75 38.06 +82 1 16.8 23.69 3.14 +83 1 14.52 38.72 21.61 +84 1 37.36 15.13 27.98 +85 1 29.79 17.03 27.55 +86 1 21.01 0.39 0.9 +87 1 35.3 6.45 14.41 +88 1 13.74 34.69 10.01 +89 1 13.83 7.92 31.88 +90 1 26.88 37.81 22.36 +91 1 31.76 7.34 10.03 +92 1 11.98 37.49 19.61 +93 1 29.19 31.74 20.69 +94 1 39.15 10.97 21.06 +95 1 1.47 5 22.21 +96 1 -0.1 1.33 16.26 +97 1 34.74 34.78 30.66 +98 1 22.09 26.78 2.27 +99 1 36.58 34.8 16.19 +100 1 19.09 24.88 15.75 +101 1 2.21 31.42 38.32 +102 1 28.02 8.18 29.77 +103 1 15.99 16.78 17.61 +104 1 32.43 12.2 35.3 +105 1 26.54 38.8 30.88 +106 1 35.58 22.23 18.31 +107 1 28.3 30.81 2.96 +108 1 8.95 32.9 9.02 +109 1 28.51 30.02 29.39 +110 1 13 5.35 34.26 +111 1 37.9 36.79 1.37 +112 1 12.78 1.99 40.66 +113 1 21.19 34.55 17.45 +114 1 10.5 20 5.07 +115 1 16.19 21.64 18.49 +116 1 14.62 26.41 19.88 +117 1 27.97 2.89 28.03 +118 1 29.44 14.35 39.04 +119 1 2.29 24.16 33.8 +120 1 39.22 15.81 32.02 +121 1 7.31 19.66 18.18 +122 1 27.67 7.98 15.53 +123 1 31.23 4.04 33 +124 1 29.52 39.44 28.71 +125 1 30.86 20.28 15.84 +126 1 32.25 7.44 19.79 +127 1 34.68 15.68 1.18 +128 1 16.58 27.98 27.97 +129 1 32.27 24.24 15.82 +130 1 3.86 6.57 39.8 +131 1 9.1 2.88 13.12 +132 1 17.84 27.8 11.79 +133 1 4.77 10.88 6.75 +134 1 16.58 24.21 24.5 +135 1 10.17 19.31 38.32 +136 1 6.27 7.81 36.44 +137 1 34.76 37.89 29.76 +138 1 40.99 38.22 35.21 +139 1 25.04 21.79 36.88 +140 1 4.78 15.35 16.44 +141 1 19.24 5.77 40.18 +142 1 13.59 11.27 37.14 +143 1 1.61 23.83 39.61 +144 1 6.02 33.07 3.77 +145 1 0.85 7.4 35.42 +146 1 6.47 40.34 4.65 +147 1 16.45 36.52 15.44 +148 1 19.58 9.5 1.64 +149 1 1.36 1.72 35.53 +150 1 11.74 5.48 4.98 +151 1 25.45 40.36 15.44 +152 1 19.09 0.74 36.18 +153 1 31.78 37.98 1.84 +154 1 23.26 18.47 38.56 +155 1 7.29 22.87 25.86 +156 1 2.36 7.83 8.78 +157 1 39.61 25.94 21.12 +158 1 7.78 18.97 25.29 +159 1 36.56 19.61 26.7 +160 1 4.64 12.06 19.9 +161 1 21.05 33.08 0.87 +162 1 33.93 22.87 39.71 +163 1 33.62 29.48 20.83 +164 1 0.64 18.79 9.52 +165 1 27.53 16.7 22.51 +166 1 17.66 9.84 14.61 +167 1 31.23 22.44 24.98 +168 1 39.3 34.88 11.03 +169 1 24.01 10.56 0.09 +170 1 15.81 33.44 18.52 +171 1 19.92 30.61 19.25 +172 1 16.49 3.95 38.28 +173 1 18.6 38.87 24.98 +174 1 33.04 25.55 8.57 +175 1 16.9 35.09 22.94 +176 1 15.18 6.74 2.33 +177 1 40.54 12.58 31.65 +178 1 21.21 37.62 14.35 +179 1 33.52 38.19 14.89 +180 1 22.06 12.49 29.81 +181 1 19.49 29.03 2.52 +182 1 26.97 18.55 38.45 +183 1 24.1 11.86 17.22 +184 1 12.02 0.55 10.39 +185 1 3.8 35.94 19.94 +186 1 8.31 14.31 37.4 +187 1 29.03 8.28 22.92 +188 1 18.92 0.22 27.87 +189 1 26.79 24.9 24.62 +190 1 36.59 18.86 21.13 +191 1 33.06 13.58 30.17 +192 1 32.37 2.02 39.69 +193 1 22.65 25.97 32.59 +194 1 21.81 38.04 33.85 +195 1 36.82 37.68 19.22 +196 1 32.48 31.43 33.66 +197 1 8.75 36.66 20.34 +198 1 14.88 15.11 28.76 +199 1 22.83 28.55 29.5 +200 1 2.98 12.06 2.88 +201 1 3.01 37 6.91 +202 1 14.79 16.69 3.66 +203 1 12.62 38.28 0.97 +204 1 40.07 21.27 25.25 +205 1 34.58 6.14 39.48 +206 1 11.51 30.52 33.53 +207 1 32.22 9.28 30.52 +208 1 0.7 4.01 38.87 +209 1 32.66 39.86 36.84 +210 1 27.34 34.57 21.76 +211 1 13.7 23.12 8.34 +212 1 28 9.71 6.29 +213 1 31.69 26.39 38.19 +214 1 2.04 20.93 36.95 +215 1 30.31 26.61 12.31 +216 1 25.37 20.63 9.4 +217 1 16.29 5.62 14.04 +218 1 1.36 1.95 4.97 +219 1 38.75 26.8 5.62 +220 1 40.28 29.89 12.27 +221 1 0.52 31.22 7.58 +222 1 15.64 21.64 14.71 +223 1 10.11 28.8 9.67 +224 1 19.03 37.3 38.87 +225 1 12.07 6.46 19.25 +226 1 36.22 21.11 15.02 +227 1 12.49 15.69 7.21 +228 1 25.2 30.8 19.71 +229 1 8.24 35.22 23.02 +230 1 9.94 4.1 1.86 +231 1 4.31 19.07 26.23 +232 1 22.03 19.99 14.19 +233 1 30.84 5.24 2.75 +234 1 35.51 30.52 32.3 +235 1 3.88 20.41 39.48 +236 1 30.86 0.39 31.56 +237 1 25.91 27.12 39.04 +238 1 33.39 5.37 4.51 +239 1 20.58 28.33 37.53 +240 1 11.83 21.81 39.11 +241 1 39.94 5.2 5.73 +242 1 29.89 33.21 15.44 +243 1 23.42 15.38 30.98 +244 1 28.66 11.56 16.13 +245 1 16.74 20.43 21.72 +246 1 9.31 0.26 22.42 +247 1 4.38 37.78 14.12 +248 1 13.86 4.65 16.99 +249 1 6.72 27.43 8.14 +250 1 33.45 18.74 19.98 +251 1 17.34 14.55 35.57 +252 1 14.21 37.39 28.76 +253 1 26.29 29.06 22.26 +254 1 36.52 26.18 15.62 +255 1 17.6 8.81 10.14 +256 1 21.95 25.19 17.69 +257 1 17.4 7.46 18.59 +258 1 6.15 29.7 35.99 +259 1 9.73 37.39 24.96 +260 1 28.58 28.21 36.19 +261 1 8.24 13.72 32.2 +262 1 13.25 34.6 22.71 +263 1 38.58 7.98 10.3 +264 1 18.29 29.75 23.51 +265 1 3.74 13.22 31.05 +266 1 30.78 0.7 24.57 +267 1 24.5 12.94 10.81 +268 1 33.88 26.44 1.96 +269 1 29.92 22.6 9.59 +270 1 15.87 21.94 33.44 +271 1 23.63 8.41 10.95 +272 1 26.53 0.01 7.58 +273 1 33.88 8.73 2.52 +274 1 39.74 31.46 36.87 +275 1 13.28 39.54 37 +276 1 24.74 35.41 32.14 +277 1 17.3 34.32 6.85 +278 1 24.43 13.36 5.63 +279 1 31.23 17.12 7.11 +280 1 15.58 37.85 34.06 +281 1 25.93 38.17 3.13 +282 1 31.84 34.34 39.67 +283 1 14.41 17.74 14.43 +284 1 9.4 1.78 29.53 +285 1 8.29 29.61 6.81 +286 1 7.13 17.36 -0.19 +287 1 38.04 19.52 11.25 +288 1 34.87 32.77 38.75 +289 1 27.18 22.49 5.69 +290 1 29.69 27.11 20.29 +291 1 25.23 2.22 39.75 +292 1 35.8 17.1 36.09 +293 1 20.53 17.67 35.47 +294 1 23.41 31.36 2.24 +295 1 25.17 20.09 29.2 +296 1 0.32 9.28 39.74 +297 1 22.49 18.77 29.89 +298 1 38.64 0.85 39.43 +299 1 18.55 5.87 9.15 +300 1 35.21 28.69 25.76 +301 1 39.24 15.68 6.36 +302 1 5.91 13.29 3.92 +303 1 0.5 21.25 21.62 +304 1 34.39 9.43 18.59 +305 1 22.7 1.03 8.79 +306 1 40.15 16.25 24.87 +307 1 16.52 13.69 10.25 +308 1 6.88 36.77 39.57 +309 1 11.95 37.1 7.59 +310 1 19.49 26.66 9.76 +311 1 36.34 29.89 29.31 +312 1 18.76 35.75 12.72 +313 1 23.15 38.68 4.96 +314 1 10.78 17.11 34.38 +315 1 13.58 14.89 0.34 +316 1 4.73 33.88 32.41 +317 1 12.68 29.51 17.07 +318 1 9.45 27 4.98 +319 1 29.02 19.27 6.45 +320 1 19.09 36.35 19.84 +321 1 23.13 6.75 19.78 +322 1 8.02 34.1 26.95 +323 1 26.03 14.18 1.57 +324 1 15.01 34.16 28.32 +325 1 28.71 36.53 15.08 +326 1 9.64 13.94 24.05 +327 1 1.24 36.96 30.41 +328 1 15.44 31.39 4.77 +329 1 25.72 14.42 38.01 +330 1 7.35 31.84 12.61 +331 1 32.33 16.79 3.07 +332 1 15.86 0.39 8.39 +333 1 27.69 7.32 25.74 +334 1 27.77 1.17 4.96 +335 1 29.38 26.68 23.48 +336 1 14.95 3.41 2.13 +337 1 2.45 38.8 17.54 +338 1 9.18 27.58 31.12 +339 1 36.62 15.23 23.66 +340 1 12.23 30.74 10.85 +341 1 12.87 0.23 24.05 +342 1 33.85 35.75 19.95 +343 1 36.36 30.35 13.94 +344 1 38.11 8.15 5.49 +345 1 15.58 1.29 29.89 +346 1 25.95 30.47 39.19 +347 1 27.69 15.5 13.37 +348 1 25.48 13.7 25.29 +349 1 0.72 39.53 4.41 +350 1 8.75 15.21 5.79 +351 1 10.49 26.46 27.25 +352 1 16.9 20.08 26.58 +353 1 3.95 4.33 20.25 +354 1 18.03 7.66 31.87 +355 1 21.35 2.88 17.26 +356 1 32.92 22.68 6.56 +357 1 21.72 4.62 12.02 +358 1 37.6 6.04 25.2 +359 1 22.22 23.78 7.36 +360 1 12.53 19.53 10.6 +361 1 17.87 26.05 19.32 +362 1 20.94 30.75 31.23 +363 1 22.33 11.87 35.79 +364 1 28.54 6.88 10.52 +365 1 29.58 26.13 8.56 +366 1 19.06 24.2 21.73 +367 1 25.05 38.41 26.91 +368 1 18.66 40.35 4.69 +369 1 11.87 6.75 12.72 +370 1 17.99 11.82 37.79 +371 1 8.97 24.7 0.61 +372 1 26.89 1.52 31.33 +373 1 6.88 22.51 14.06 +374 1 29.51 3.87 13.35 +375 1 0.95 14.53 10 +376 1 26.43 31.54 11.63 +377 1 6.1 35.16 11.28 +378 1 10.2 15.91 28.7 +379 1 13.24 25.67 24.3 +380 1 34.5 3.91 20.22 +381 1 22.48 2.17 5.2 +382 1 24.26 16.15 11.3 +383 1 20.63 32.57 27.3 +384 1 39.95 6.81 1.05 +385 1 24.38 34.78 38.27 +386 1 4.63 23.56 0.55 +387 1 33.5 8.38 36.97 +388 1 5.76 27.14 12.06 +389 1 37.45 26.58 32.25 +390 1 2.8 8.96 32.35 +391 1 5.29 39.84 30.1 +392 1 29.2 26.49 31.18 +393 1 33.91 27.39 12.89 +394 1 3.37 14.19 39.34 +395 1 30.68 28.7 27 +396 1 2.59 18.45 19.38 +397 1 13.55 0.75 27.35 +398 1 3.82 20.12 16.1 +399 1 37.72 0.72 34.29 +400 1 23.85 3.32 19.46 +401 1 4.78 0.67 38.23 +402 1 22.78 23.26 38.6 +403 1 11.56 39.29 4.23 +404 1 21.38 32.45 5.39 +405 1 8.32 19.42 9.52 +406 1 28.43 31.07 17.8 +407 1 11.02 5.75 39.84 +408 1 27.36 36.71 7.62 +409 1 34.22 16.74 27.88 +410 1 3.22 22.01 27.42 +411 1 29.2 15.76 32.33 +412 1 25.29 23.44 2.2 +413 1 10.8 32.43 39.96 +414 1 32.2 1.41 4.44 +415 1 32.94 15.59 37.21 +416 1 6.8 8.08 0.84 +417 1 10.42 9.91 37.73 +418 1 1.18 31.39 3.93 +419 1 10.1 36.38 38.57 +420 1 32.89 26.96 35.07 +421 1 28.12 11.93 25.96 +422 1 4.9 29.15 -0.25 +423 1 2.21 27.99 3.72 +424 1 11.33 3.94 25.55 +425 1 3.3 30.26 10.78 +426 1 11.57 27.26 19.31 +427 1 21.79 32.67 13.3 +428 1 4.96 26.53 33.78 +429 1 33.41 32.87 18.46 +430 1 13.92 30.37 20.3 +431 1 16.91 3.5 11.57 +432 1 -0.06 4.42 34.05 +433 1 7.04 24.33 16.85 +434 1 28.66 11.93 19.73 +435 1 30.21 1.75 36.36 +436 1 3.91 6.2 6.26 +437 1 7.01 25.6 27.34 +438 1 34 1.06 18.12 +439 1 29.14 8.5 3.09 +440 1 40.13 23.52 16.94 +441 1 21.69 22.38 26.78 +442 1 18.44 32.85 39.84 +443 1 38.87 1.99 27.63 +444 1 10.47 12.02 33.68 +445 1 9.65 19.94 21.88 +446 1 25.04 8.12 27.89 +447 1 12.18 16.78 31.09 +448 1 38.31 8.2 30.6 +449 1 0.11 5.21 18.12 +450 1 23.48 7.88 38.7 +451 1 7.9 11.99 7.04 +452 1 2.09 34.5 8.64 +453 1 19 18.3 0.42 +454 1 37.94 18.06 15.21 +455 1 25.05 33.33 29.55 +456 1 33.74 37.88 34.54 +457 1 36.07 29.5 17.47 +458 1 27.7 13.54 10.46 +459 1 27.18 23.18 21.06 +460 1 17.49 2.04 23.22 +461 1 23.84 26.31 36.76 +462 1 31.08 32.24 24.92 +463 1 17.7 28.73 16.66 +464 1 1.59 15.5 18.04 +465 1 33.49 18.99 8.75 +466 1 1.19 8.43 28.01 +467 1 5.43 20.26 22.25 +468 1 23.3 5.31 15.05 +469 1 27.09 4.47 21.96 +470 1 26.61 27.48 28.83 +471 1 13 3.18 13.4 +472 1 36.09 34.56 10.58 +473 1 19.09 15.33 7.48 +474 1 12.94 18.16 22.07 +475 1 38.8 16.16 36.73 +476 1 16.73 39.94 -0.46 +477 1 3.64 12.56 9.42 +478 1 27.64 3.31 18.29 +479 1 15.58 12.36 4.52 +480 1 15.37 11.18 18.19 +481 1 37.52 11.23 14.94 +482 1 37.16 2.3 10.01 +483 1 36.19 9.86 21.99 +484 1 36.38 21.09 4.76 +485 1 38.15 12.94 25.35 +486 1 15.1 29.65 24.64 +487 1 16.54 29.12 38.85 +488 1 33.86 11.39 14.4 +489 1 27.99 18.55 9.87 +490 1 0.66 1.26 8.28 +491 1 29.89 33.84 29.75 +492 1 6.64 33.3 6.74 +493 1 31.47 0.39 11.25 +494 1 8.76 15.96 10.74 +495 1 39.6 15.8 21.04 +496 1 22.38 28.55 19.85 +497 1 25.87 6.23 5.4 +498 1 36.24 26.67 38.61 +499 1 23.05 8.79 7.01 +500 1 32.05 4.16 8.87 +501 1 35.3 13.36 38.03 +502 1 39.91 25.91 36.45 +503 1 32.17 17.27 31.82 +504 1 29.99 21.54 20.57 +505 1 9.39 0.57 34.17 +506 1 22.12 17.22 13.03 +507 1 15.23 16.27 24.39 +508 1 26.32 25.89 13.26 +509 1 39.25 3.46 1.34 +510 1 32.56 10.28 7.96 +511 1 25.76 14.8 34.79 +512 1 32.12 5.38 36.94 +513 1 17.74 15.37 14.87 +514 1 21.93 3.26 25.26 +515 1 24.05 0.48 36.27 +516 1 8.2 19.02 33.92 +517 1 33.07 25.88 24.79 +518 1 12.54 0.52 32.8 +519 1 18.5 6.34 23.21 +520 1 35.93 10.26 34.79 +521 1 19.33 11.86 6.94 +522 1 1.63 5.31 25.43 +523 1 30.62 36.78 30.77 +524 1 12.25 26.79 13.74 +525 1 21 1.47 13.99 +526 1 22.24 29.36 34.11 +527 1 29.05 1.74 0.24 +528 1 19.34 25.14 39.77 +529 1 12.9 25.42 35.42 +530 1 4.1 20.69 33.31 +531 1 35.38 5.64 9.17 +532 1 5.01 34.03 23.36 +533 1 15.7 10.01 7.1 +534 1 25.95 19.48 24.73 +535 1 11.15 4.16 21.43 +536 1 1.47 3.23 13.72 +537 1 26.54 36.76 17.48 +538 1 7.65 30.6 27.73 +539 1 18.59 3.05 3.32 +540 1 6.92 36.14 15.67 +541 1 12.72 36.21 32.72 +542 1 16.33 26.24 14.35 +543 1 21.66 12.61 26.18 +544 1 15.72 32.37 10.71 +545 1 27.57 15.75 4.97 +546 1 20.18 39.13 18.44 +547 1 18.77 17.09 4.74 +548 1 12.75 14.08 17.89 +549 1 10.71 37.26 35.13 +550 1 20.88 32.12 9.94 +551 1 8.69 0.06 9.54 +552 1 1.58 12.61 26.42 +553 1 10.29 22.73 13.14 +554 1 23.31 25.7 4.97 +555 1 36.7 30.78 5.26 +556 1 5.6 28.71 23.76 +557 1 13.04 7.91 15.46 +558 1 40.24 33.53 34.5 +559 1 39.7 18.36 34.25 +560 1 23.52 22.84 21.14 +561 1 32.82 27.9 5.02 +562 1 1.52 33.77 27.04 +563 1 31.48 18.68 13.1 +564 1 34 24.07 34.55 +565 1 34.72 25.03 30.45 +566 1 18.92 5.7 16.54 +567 1 15.26 40.2 16.97 +568 1 24.55 16.8 26.26 +569 1 17.59 18.03 31.75 +570 1 12.08 27.38 38.42 +571 1 31.42 21.91 35.27 +572 1 9.68 6.93 36.96 +573 1 22.93 15.19 2.53 +574 1 11.83 24.38 2.24 +575 1 16.02 12.44 31.42 +576 1 20.24 10.7 20.15 +577 1 37.38 17.37 40.63 +578 1 3.74 17.41 22.49 +579 1 23.21 9.86 23.99 +580 1 2.49 36.56 38 +581 1 20.51 1.54 22.62 +582 1 8.23 33.44 33.15 +583 1 30.93 8.12 14.85 +584 1 36.35 3.92 37.65 +585 1 5.57 10.63 28.64 +586 1 30.24 22.84 4.6 +587 1 3.24 15.97 7.43 +588 1 22.64 0.7 27.09 +589 1 1.64 40.37 27.74 +590 1 30.53 35.28 3.5 +591 1 25.55 4.7 2.53 +592 1 22.04 29.56 12.29 +593 1 3.42 8.76 2.28 +594 1 16.37 37.65 7.87 +595 1 20.65 12.75 2.9 +596 1 8.07 20.49 2.6 +597 1 20.04 24.72 28.2 +598 1 29.75 0.33 16.1 +599 1 31.36 33.09 8.02 +600 1 8.6 10.56 2.65 +601 1 20.55 33.93 33.71 +602 1 23.11 -0.42 31.7 +603 1 27.07 6.69 18.5 +604 1 15.65 23.71 11.8 +605 1 23.88 24.17 30.1 +606 1 0.79 32.46 16.99 +607 1 25.96 20.19 2.43 +608 1 35.16 12.33 4.73 +609 1 16.53 17.12 10.45 +610 1 19.74 35.94 8.62 +611 1 -0.24 28.29 28.3 +612 1 33.15 4.39 12.64 +613 1 24.27 18.59 33.59 +614 1 0.3 9.61 23.54 +615 1 5.52 10.89 34.71 +616 1 9.85 26.26 34.42 +617 1 25.54 37.74 39.13 +618 1 4.11 29.65 5.81 +619 1 30.86 22.72 31.07 +620 1 39.54 34.54 23.24 +621 1 15.03 9.34 12.11 +622 1 21.93 38.49 9.53 +623 1 18.21 19.2 16.65 +624 1 38.71 32.83 14.49 +625 1 37.74 36.38 31.43 +626 1 7.57 2.2 1.07 +627 1 12.27 10.05 1.53 +628 1 18.32 19.55 12.51 +629 1 12.49 24.81 16.57 +630 1 35.07 31.62 22.85 +631 1 4.91 19.68 30.45 +632 1 11.36 2.92 36.19 +633 1 26.76 35.53 1.29 +634 1 1.13 14.55 14.77 +635 1 8.2 25.14 37.83 +636 1 -0.5 0.85 23.08 +637 1 17.95 18.01 37.61 +638 1 2.44 37.75 0.71 +639 1 3.77 23.41 17.91 +640 1 3.34 14.41 35.96 +641 1 14.89 31.42 31.76 +642 1 15.72 22.91 30.66 +643 1 37.42 3.13 5.51 +644 1 1.51 38.14 20.78 +645 1 12.55 18.16 25.81 +646 1 18.98 15.88 29.21 +647 1 17.33 32.04 27.87 +648 1 31.21 37.38 22.84 +649 1 11.88 32.4 31 +650 1 25.1 2.19 12.69 +651 1 38.85 39.1 27.87 +652 1 5.9 16.14 33.34 +653 1 6.3 17.5 36.46 +654 1 2.28 25.02 12.53 +655 1 19.33 25.49 6.78 +656 1 8.57 37.22 8.4 +657 1 22 38.61 24.14 +658 1 35.63 3.23 2.15 +659 1 37.35 22.64 9.99 +660 1 25.46 28.22 33.18 +661 1 13.99 4.21 9.07 +662 1 9.04 40.64 37.59 +663 1 17.46 6.49 27.93 +664 1 1.42 6.14 30.2 +665 1 25.82 28.28 10.33 +666 1 30.71 30.2 -0.02 +667 1 8.05 29.32 0.62 +668 1 6.49 3.17 6.65 +669 1 7.77 39.88 26.03 +670 1 28.53 12.14 30.96 +671 1 6.25 12.64 39.55 +672 1 3.78 7.96 25.83 +673 1 28.69 29.58 6.61 +674 1 5.32 18.55 8.6 +675 1 5.3 11.44 14.19 +676 1 39 12.03 36.99 +677 1 11.08 32.51 19.12 +678 1 38.48 1.03 20.34 +679 1 38.47 11.31 10.12 +680 1 3.65 20.3 11.99 +681 1 27.18 11.39 3.4 +682 1 29.61 20.72 38.86 +683 1 31.88 4.82 24.75 +684 1 14.52 36.61 25.66 +685 1 21.68 19.96 24.58 +686 1 1.2 13.59 23.16 +687 1 37.71 5.97 35.28 +688 1 19.81 22.04 37.54 +689 1 40.67 27.07 10.14 +690 1 38.57 13.96 13.75 +691 1 18.15 17.19 21.63 +692 1 3.76 27.51 30.32 +693 1 11.39 25.09 7.96 +694 1 28.95 22.02 13.33 +695 1 31.72 35.46 35.33 +696 1 15.17 6.03 23.94 +697 1 9.63 9.42 22.18 +698 1 27.76 4.1 38.61 +699 1 27.37 37.46 11.07 +700 1 35.69 15.24 6.39 +701 1 21.92 33.09 36.84 +702 1 4.79 15.51 13.28 +703 1 9.31 26.44 22.8 +704 1 30.14 38.31 6.98 +705 1 4.33 6.66 13.77 +706 1 3.66 27.15 37.83 +707 1 0.44 24.06 29.62 +708 1 35.4 9.59 9.8 +709 1 33.77 39.44 21.41 +710 1 29.2 18.74 24.38 +711 1 34.14 30 7.36 +712 1 16.02 4.37 6.43 +713 1 35.75 39.41 40.58 +714 1 15.32 11.84 23.24 +715 1 32.52 24.39 20.97 +716 1 11.45 2.9 7.16 +717 1 7.07 34.28 36.04 +718 1 11.41 8.83 7.57 +719 1 29.29 27.79 16.55 +720 1 2.41 9.16 16.14 +721 1 13.14 38.07 12.01 +722 1 37.45 14.26 18.3 +723 1 34.64 18.37 16.65 +724 1 29.26 34.28 33.46 +725 1 13.67 19.83 3.04 +726 1 19.64 2.6 32.95 +727 1 23.61 23.55 11.34 +728 1 6.87 22.5 36.5 +729 1 36.78 28.34 22.96 +730 1 11.3 13.98 9.84 +731 1 20.82 19.73 9.16 +732 1 12.65 12.61 6.16 +733 1 9.25 7.81 25.28 +734 1 25.4 29.36 5.84 +735 1 17.86 9.06 4.45 +736 1 35.84 40.51 26.06 +737 1 26.97 21.28 31.59 +738 1 39.94 38.14 24.86 +739 1 3.16 17.07 2.49 +740 1 14.08 15.4 36.99 +741 1 26.1 13.88 29.68 +742 1 26.36 20 20.56 +743 1 12.02 6.35 27.65 +744 1 11.21 19.14 15.27 +745 1 35.86 22.93 26.81 +746 1 32.26 12.62 2.68 +747 1 29.36 4.91 6.86 +748 1 20.14 7.97 29.32 +749 1 25.53 11.2 36.18 +750 1 30.36 14.25 24.79 +751 1 29.84 38.37 39.29 +752 1 15.79 36.4 4.26 +753 1 32.59 14.17 10.29 +754 1 13.89 34.54 15.42 +755 1 12.13 33.62 7.27 +756 1 25.86 23.81 33.97 +757 1 18.4 31.27 34.96 +758 1 6.58 40.49 17.57 +759 1 5.64 39.86 23.05 +760 1 25.32 33 16.24 +761 1 0.98 10.99 12.21 +762 1 32.86 23.75 12.41 +763 1 32.91 1.3 26.94 +764 1 9.46 8.66 31.47 +765 1 17.49 15.53 1.82 +766 1 8.17 18.16 15.3 +767 1 4.84 30.63 26.32 +768 1 6.75 37.1 30.8 +769 1 7.16 5.72 15.74 +770 1 20.09 17.82 19.18 +771 1 1.02 27.99 32.54 +772 1 21.44 1.28 38.4 +773 1 21.06 14.62 37.08 +774 1 27.82 18.99 15.96 +775 1 33.51 21.46 22.82 +776 1 8.29 2.79 17.09 +777 1 18.14 11.41 28.62 +778 1 17.94 28.54 32.73 +779 1 36.1 9.54 40.1 +780 1 36.55 2.62 22.97 +781 1 27.29 10.41 39.35 +782 1 22.04 37.76 2.02 +783 1 23.01 30.08 16.58 +784 1 6.34 15.31 21.61 +785 1 7.3 22.39 7.74 +786 1 38 5.77 21.04 +787 1 32.93 12.85 26.58 +788 1 22.43 15.36 16.72 +789 1 18.54 2.38 8.35 +790 1 0.62 31.88 23.84 +791 1 39.56 30.3 21.7 +792 1 7.56 11.78 25.2 +793 1 16.05 3.98 26.72 +794 1 24.33 36.16 13.16 +795 1 26.38 31.24 35.77 +796 1 14.94 26.46 -0.44 +797 1 3.53 28 19.79 +798 1 11.94 32.27 25.88 +799 1 34.59 15.06 19.23 +800 1 3.51 10.62 24.22 +801 1 13.18 21.59 35.52 +802 1 19.95 13.15 16.23 +803 1 24.48 9.63 19.58 +804 1 37.7 34.42 19.19 +805 1 22.84 19.59 5.52 +806 1 34.62 36.75 12.26 +807 1 10.33 21.85 25.15 +808 1 21.51 29.7 7.23 +809 1 34.05 3 30.58 +810 1 12.43 29.67 5.59 +811 1 18.94 21.82 29.31 +812 1 39.21 17.7 4 +813 1 7.04 2.97 37.09 +814 1 30.87 10.8 22.09 +815 1 33.54 7.16 23.15 +816 1 32.82 32.27 11.47 +817 1 21.8 14.54 21.61 +818 1 38.83 6.69 13.68 +819 1 30.37 39.05 18.66 +820 1 31.21 15.08 13.79 +821 1 1.07 11.97 35.04 +822 1 26.02 35.8 35.47 +823 1 27.64 33.32 8.04 +824 1 39.57 36.88 4.39 +825 1 14.48 30.97 36.87 +826 1 36.86 27.04 8.96 +827 1 34.73 26.27 19.55 +828 1 29.24 29.12 10.86 +829 1 8.35 39.9 13.92 +830 1 5.43 5.1 31.85 +831 1 18.36 22.31 5.89 +832 1 2.46 27.35 16.36 +833 1 21.76 37.05 27.45 +834 1 29.32 17.11 2.28 +835 1 3.58 21.98 3.09 +836 1 10.61 9.17 10.69 +837 1 25.15 17.54 6.05 +838 1 3.4 22.81 7.03 +839 1 16.12 23.66 38.29 +840 1 8.67 4.79 31.8 +841 1 27.82 0.02 20.45 +842 1 4.46 2.44 29.46 +843 1 39.11 22.69 36.33 +844 1 4.26 2.45 34.43 +845 1 13.47 3.5 30.9 +846 1 26.92 22.55 26.54 +847 1 5.66 30.07 30.65 +848 1 31.58 35.68 25.46 +849 1 31.23 5.65 27.78 +850 1 8.76 19.49 28.61 +851 1 24.13 8.02 2.3 +852 1 8.27 6.8 4.93 +853 1 15.31 34.36 37.63 +854 1 3.96 35.82 26.97 +855 1 24.95 4.01 29.96 +856 1 26.54 25.95 19.15 +857 1 17.76 29.23 5.35 +858 1 16.95 21.79 0.78 +859 1 17.52 39.02 13.01 +860 1 20.5 22.86 10.41 +861 1 27.67 27.07 2.78 +862 1 37.1 31.02 2.03 +863 1 37.17 2.24 16.34 +864 1 24.51 34.69 10.28 +865 1 17.38 13.41 21.4 +866 1 38 9.37 17.94 +867 1 35.67 25.27 5.3 +868 1 22.66 4.47 0.97 +869 1 20.06 28.17 27.42 +870 1 27.33 2.38 9.79 +871 1 36.4 10.73 31.42 +872 1 0.53 9.45 6.96 +873 1 12.89 9.03 25.13 +874 1 37.5 23.54 21.33 +875 1 7.19 28.87 19.11 +876 1 21.45 32.81 22.71 +877 1 8.76 8.3 13.51 +878 1 10.24 31.46 3.73 +879 1 15.93 9.7 35.82 +880 1 14.92 19.46 39.91 +881 1 13.02 22.03 27.3 +882 1 34.57 1.59 34.73 +883 1 0.5 21.04 30.77 +884 1 24.84 32.67 4.97 +885 1 30.96 4.24 17.34 +886 1 23.63 8.84 32.7 +887 1 6.84 3.83 26.13 +888 1 31.57 9.23 27.06 +889 1 14.99 35.15 0.07 +890 1 36.29 40.01 8.22 +891 1 18 36.86 35.66 +892 1 11.5 29.22 0.37 +893 1 35.18 36.03 24.88 +894 1 14.49 9.41 27.73 +895 1 10.12 12.91 0.99 +896 1 11.91 29.4 27.3 +897 1 25.51 28.68 14.56 +898 1 29.32 12.95 35.59 +899 1 2.96 0.59 0.53 +900 1 5.47 5.35 9.88 +901 1 8.93 39.33 1.78 +902 1 39.68 38.49 12.33 +903 1 3.78 1.24 11.85 +904 1 29.54 33.76 11.99 +905 1 7.48 6.16 28.8 +906 1 10.83 33.63 36.96 +907 1 22.03 19.06 21.39 +908 1 31.68 31 3.71 +909 1 35.32 0.3 30.88 +910 1 9.93 35.42 14.85 +911 1 21.01 10.66 12.97 +912 1 22.54 21.62 33.81 +913 1 12.48 12.46 25.15 +914 1 0.64 27.93 39.01 +915 1 13.88 27.29 3.8 +916 1 13.03 20.93 19.25 +917 1 5.7 37.48 34.09 +918 1 2.27 35.08 14.29 +919 1 21.75 26.44 13.48 +920 1 10.66 11.35 17.49 +921 1 36.67 34.72 27.69 +922 1 8.23 22.8 33.36 +923 1 4.79 4.05 3.48 +924 1 35.61 35 35.21 +925 1 31.38 37.67 10.06 +926 1 26.44 35.58 27.52 +927 1 25.53 4.47 8.03 +928 1 38.81 33.08 31.55 +929 1 29.62 39.68 34.32 +930 1 0.76 3.88 10.61 +931 1 24.06 30.13 24.84 +932 1 18.77 8.38 37.02 +933 1 2.81 24.14 24.45 +934 1 11.33 1.25 19.69 +935 1 1.61 26.53 6.48 +936 1 9.52 29.81 35.98 +937 1 7.83 31.75 20.77 +938 1 9.67 23.93 20.57 +939 1 33.96 16.95 24.79 +940 1 37.55 37.31 37.17 +941 1 6.2 24.19 31.13 +942 1 17.79 4.35 30.56 +943 1 13.51 20.25 30.45 +944 1 14.76 12.48 13.13 +945 1 32.56 27.52 30.41 +946 1 35.81 40.1 4.85 +947 1 39.01 25.43 27.07 +948 1 22.8 5.53 32.22 +949 1 2.35 39.55 32.5 +950 1 3.31 31.51 34.19 +951 1 40.63 37.01 15.9 +952 1 18.43 35.86 30.77 +953 1 37.01 39.18 15.57 +954 1 6.74 6.26 21.64 +955 1 5.22 24.94 22.53 +956 1 25.2 11.08 13.98 +957 1 14.66 -0.14 5 +958 1 14.96 8.38 20.32 +959 1 1.89 23.03 10.1 +960 1 33.01 11.23 39.32 +961 1 32.68 6.79 32.04 +962 1 6.25 25.81 3.82 +963 1 18.37 31.97 14.57 +964 1 9.74 30.21 22.71 +965 1 3.09 1.52 19.38 +966 1 33.98 37.34 5.63 +967 1 32.19 28.35 15.8 +968 1 24.4 15.49 19.39 diff --git a/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt b/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt index 072a8e3c45..f2dc506dde 100644 --- a/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt +++ b/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt @@ -32,8 +32,8 @@ thermo 50 # dump 1 all xyz 100 test_vis.xyz fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map + react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map # stable at 800K fix 1 statted_grp nvt temp 800 800 100 diff --git a/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.1 b/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.1 index f3b3840a92..653c7582f8 100644 --- a/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.1 +++ b/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.1 @@ -84,7 +84,9 @@ thermo 50 # dump 1 all xyz 100 test_vis.xyz -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map +WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) +WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) dynamic group bond_react_MASTER_group defined dynamic group statted_grp defined dynamic group bond_react_MASTER_group defined @@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 209.1 | 209.1 | 209.1 Mbytes Step Temp Press Density f_myrxns[1] f_myrxns[2] 0 800 3666.3948 0.80366765 0 0 50 673.95238 -9670.9169 0.80366765 31 0 - 100 693.69241 -4696.4359 0.80366765 57 22 - 150 715.44689 -14740.892 0.80366765 77 50 - 200 721.16898 -1411.95 0.80366765 84 66 -Loop time of 107.389 on 1 procs for 200 steps with 35200 atoms + 100 697.22819 -4624.0512 0.80366765 57 22 + 150 723.60507 -17175.571 0.80366765 76 48 + 200 736.71277 -12961.963 0.80366765 84 64 +Loop time of 102.825 on 1 procs for 200 steps with 35200 atoms -Performance: 0.161 ns/day, 149.151 hours/ns, 1.862 timesteps/s +Performance: 0.168 ns/day, 142.812 hours/ns, 1.945 timesteps/s 99.7% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 27.191 | 27.191 | 27.191 | 0.0 | 25.32 -Bond | 11.46 | 11.46 | 11.46 | 0.0 | 10.67 -Kspace | 4.2507 | 4.2507 | 4.2507 | 0.0 | 3.96 -Neigh | 55.544 | 55.544 | 55.544 | 0.0 | 51.72 -Comm | 0.41715 | 0.41715 | 0.41715 | 0.0 | 0.39 -Output | 0.0011044 | 0.0011044 | 0.0011044 | 0.0 | 0.00 -Modify | 8.4756 | 8.4756 | 8.4756 | 0.0 | 7.89 -Other | | 0.04897 | | | 0.05 +Pair | 27.193 | 27.193 | 27.193 | 0.0 | 26.45 +Bond | 11.324 | 11.324 | 11.324 | 0.0 | 11.01 +Kspace | 4.1878 | 4.1878 | 4.1878 | 0.0 | 4.07 +Neigh | 54.724 | 54.724 | 54.724 | 0.0 | 53.22 +Comm | 0.40662 | 0.40662 | 0.40662 | 0.0 | 0.40 +Output | 0.0011101 | 0.0011101 | 0.0011101 | 0.0 | 0.00 +Modify | 4.9422 | 4.9422 | 4.9422 | 0.0 | 4.81 +Other | | 0.04545 | | | 0.04 Nlocal: 35200 ave 35200 max 35200 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 38406 ave 38406 max 38406 min +Nghost: 38403 ave 38403 max 38403 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 6.92787e+06 ave 6.92787e+06 max 6.92787e+06 min +Neighs: 6.9281e+06 ave 6.9281e+06 max 6.9281e+06 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 6927872 -Ave neighs/atom = 196.815 -Ave special neighs/atom = 9.83489 +Total # of neighbors = 6928101 +Ave neighs/atom = 196.821 +Ave special neighs/atom = 9.83727 Neighbor list builds = 200 Dangerous builds = 0 # write_restart restart_longrun # write_data restart_longrun.data -Total wall time: 0:01:48 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:43 diff --git a/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.4 b/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.4 index 992a97e77e..cc0dda60c7 100644 --- a/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.4 +++ b/examples/USER/misc/bond_react/nylon,6-6_melt/log.20Apr18.large_nylon_melt.g++.4 @@ -84,7 +84,9 @@ thermo 50 # dump 1 all xyz 100 test_vis.xyz -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map +WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) +WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) dynamic group bond_react_MASTER_group defined dynamic group statted_grp defined dynamic group bond_react_MASTER_group defined @@ -132,39 +134,42 @@ Per MPI rank memory allocation (min/avg/max) = 81.11 | 81.13 | 81.15 Mbytes Step Temp Press Density f_myrxns[1] f_myrxns[2] 0 800 3666.3948 0.80366765 0 0 50 673.95238 -9670.9169 0.80366765 31 0 - 100 693.69241 -4696.4359 0.80366765 57 22 - 150 715.43654 -14742.205 0.80366765 77 50 - 200 721.1906 -1411.4303 0.80366765 84 66 -Loop time of 56.2311 on 4 procs for 200 steps with 35200 atoms + 100 697.22819 -4624.0512 0.80366765 57 22 + 150 724.40407 -17166.729 0.80366765 76 49 + 200 737.28582 -12968.224 0.80366765 84 65 +Loop time of 51.171 on 4 procs for 200 steps with 35200 atoms -Performance: 0.307 ns/day, 78.099 hours/ns, 3.557 timesteps/s -99.1% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 0.338 ns/day, 71.071 hours/ns, 3.908 timesteps/s +98.4% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 13.86 | 14.034 | 14.406 | 5.8 | 24.96 -Bond | 5.5592 | 5.5952 | 5.6492 | 1.4 | 9.95 -Kspace | 2.3969 | 2.7523 | 2.9203 | 12.5 | 4.89 -Neigh | 27.265 | 27.268 | 27.271 | 0.0 | 48.49 -Comm | 0.75523 | 0.77355 | 0.79381 | 1.7 | 1.38 -Output | 0.00051904 | 0.0007363 | 0.0013669 | 0.0 | 0.00 -Modify | 5.7629 | 5.7634 | 5.7641 | 0.0 | 10.25 -Other | | 0.04441 | | | 0.08 +Pair | 12.926 | 13.247 | 13.493 | 6.7 | 25.89 +Bond | 5.2132 | 5.2733 | 5.3367 | 1.9 | 10.31 +Kspace | 2.3601 | 2.6534 | 3.0067 | 16.0 | 5.19 +Neigh | 25.93 | 25.934 | 25.937 | 0.1 | 50.68 +Comm | 0.73273 | 0.75464 | 0.78505 | 2.3 | 1.47 +Output | 0.00045228 | 0.00067407 | 0.0013323 | 0.0 | 0.00 +Modify | 3.2682 | 3.2686 | 3.2692 | 0.0 | 6.39 +Other | | 0.03995 | | | 0.08 -Nlocal: 8800 ave 8912 max 8666 min -Histogram: 1 0 0 1 0 0 0 0 1 1 -Nghost: 18358.8 ave 18432 max 18189 min -Histogram: 1 0 0 0 0 0 0 0 1 2 -Neighs: 1.73197e+06 ave 1.77209e+06 max 1.68475e+06 min +Nlocal: 8800 ave 8913 max 8652 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 18366 ave 18461 max 18190 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Neighs: 1.73203e+06 ave 1.77261e+06 max 1.68165e+06 min Histogram: 1 0 1 0 0 0 0 0 0 2 -Total # of neighbors = 6927873 -Ave neighs/atom = 196.815 -Ave special neighs/atom = 9.83489 +Total # of neighbors = 6928132 +Ave neighs/atom = 196.822 +Ave special neighs/atom = 9.83608 Neighbor list builds = 200 Dangerous builds = 0 # write_restart restart_longrun # write_data restart_longrun.data -Total wall time: 0:00:57 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:52 diff --git a/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon b/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon index 3e21f69331..1f7e9c42b7 100644 --- a/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon +++ b/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon @@ -33,8 +33,8 @@ thermo 50 # dump 1 all xyz 1 test_vis.xyz fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map + react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map fix 1 statted_grp nvt temp 300 300 100 diff --git a/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.1 b/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.1 index a65a5306f3..344439f94c 100644 --- a/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.1 +++ b/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.1 @@ -85,7 +85,9 @@ thermo 50 # dump 1 all xyz 1 test_vis.xyz -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map +WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) +WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) dynamic group bond_react_MASTER_group defined dynamic group statted_grp defined dynamic group bond_react_MASTER_group defined @@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.34 | 33.34 Mbytes Step Temp Press Density f_myrxns[1] f_myrxns[2] 0 300 346.78165 0.0034851739 0 0 50 296.70408 -51.30066 0.0034851739 1 0 - 100 275.26011 39.120329 0.0034851739 1 1 - 150 438.68516 35.257539 0.0034851739 1 1 - 200 394.48971 15.444537 0.0034851739 1 1 - 250 356.00369 50.185792 0.0034851739 1 1 - 300 301.25816 -26.891497 0.0034851739 1 1 - 350 279.17264 12.694513 0.0034851739 1 1 - 400 248.71641 10.684558 0.0034851739 1 1 - 450 240.30602 12.963034 0.0034851739 1 1 - 500 252.71279 0.91620356 0.0034851739 1 1 - 550 300.56824 18.541436 0.0034851739 1 1 - 600 306.46441 -1.9736081 0.0034851739 1 1 - 650 336.4537 21.474831 0.0034851739 1 1 - 700 323.46217 8.486376 0.0034851739 1 1 - 750 271.87146 5.9615231 0.0034851739 1 1 - 800 268.43041 36.676068 0.0034851739 1 1 - 850 269.02683 7.6295416 0.0034851739 1 1 - 900 282.03605 -1.4688833 0.0034851739 1 1 - 950 243.69136 -22.771489 0.0034851739 1 1 - 1000 285.01348 17.925748 0.0034851739 1 1 - 1050 383.47985 0.70536985 0.0034851739 1 1 - 1100 368.97167 -4.3046933 0.0034851739 1 1 - 1150 373.64459 6.3491837 0.0034851739 1 1 - 1200 332.90575 -36.501095 0.0034851739 1 1 - 1250 314.04078 -13.382767 0.0034851739 1 1 - 1300 305.84166 4.7713641 0.0034851739 1 1 - 1350 286.22145 37.621803 0.0034851739 1 1 - 1400 265.52855 23.621002 0.0034851739 1 1 - 1450 281.807 -31.266828 0.0034851739 1 1 - 1500 275.33855 33.495565 0.0034851739 1 1 - 1550 273.04973 -22.913871 0.0034851739 1 1 - 1600 308.18478 -17.98151 0.0034851739 1 1 - 1650 333.27664 28.987529 0.0034851739 1 1 - 1700 296.16091 -1.1440455 0.0034851739 1 1 - 1750 365.75611 34.574845 0.0034851739 1 1 - 1800 292.83503 -33.199654 0.0034851739 1 1 - 1850 261.50282 42.608703 0.0034851739 1 1 - 1900 315.14188 -31.058803 0.0034851739 1 1 - 1950 335.12895 12.40597 0.0034851739 1 1 - 2000 278.08586 -5.3178633 0.0034851739 1 1 - 2050 283.23847 -3.3974302 0.0034851739 1 1 - 2100 281.38904 0.70263324 0.0034851739 1 1 - 2150 302.23197 23.372316 0.0034851739 1 1 - 2200 337.49259 -4.8716803 0.0034851739 1 1 - 2250 409.64134 -12.043721 0.0034851739 1 1 - 2300 309.21764 -21.824645 0.0034851739 1 1 - 2350 290.97879 18.690281 0.0034851739 1 1 - 2400 341.816 -16.967741 0.0034851739 1 1 - 2450 310.28034 27.375518 0.0034851739 1 1 - 2500 248.89429 17.061192 0.0034851739 1 1 - 2550 273.10927 0.10481657 0.0034851739 1 1 - 2600 289.56101 -9.7239939 0.0034851739 1 1 - 2650 298.99719 -33.140576 0.0034851739 1 1 - 2700 326.05198 -24.509827 0.0034851739 1 1 - 2750 319.20612 24.305526 0.0034851739 1 1 - 2800 304.8715 -15.076941 0.0034851739 1 1 - 2850 374.38923 2.0874883 0.0034851739 1 1 - 2900 354.01554 -20.595102 0.0034851739 1 1 - 2950 289.89296 48.39731 0.0034851739 1 1 - 3000 312.10013 -8.5105997 0.0034851739 1 1 - 3050 296.97004 -31.008446 0.0034851739 1 1 - 3100 251.72228 35.710197 0.0034851739 1 1 - 3150 315.35895 -43.331536 0.0034851739 1 1 - 3200 334.67773 13.331058 0.0034851739 1 1 - 3250 308.1669 37.236121 0.0034851739 1 1 - 3300 329.47601 30.798598 0.0034851739 1 1 - 3350 299.40055 2.0785585 0.0034851739 1 1 - 3400 272.41031 32.744922 0.0034851739 1 1 - 3450 279.34594 -26.181793 0.0034851739 1 1 - 3500 288.89969 8.935052 0.0034851739 1 1 - 3550 253.4967 9.7244709 0.0034851739 1 1 - 3600 294.83266 19.33305 0.0034851739 1 1 - 3650 290.23794 -5.4939069 0.0034851739 1 1 - 3700 332.5222 -29.834229 0.0034851739 1 1 - 3750 364.63024 20.706191 0.0034851739 1 1 - 3800 295.3842 -6.9434004 0.0034851739 1 1 - 3850 346.84424 37.796066 0.0034851739 1 1 - 3900 265.67286 -0.31628068 0.0034851739 1 1 - 3950 260.455 -2.2571902 0.0034851739 1 1 - 4000 259.82636 -2.2286205 0.0034851739 1 1 - 4050 257.79848 24.520293 0.0034851739 1 1 - 4100 295.58626 -0.42318936 0.0034851739 1 1 - 4150 265.81353 -49.092436 0.0034851739 1 1 - 4200 302.10333 51.715259 0.0034851739 1 1 - 4250 258.98448 -4.8516655 0.0034851739 1 1 - 4300 327.83401 33.717282 0.0034851739 1 1 - 4350 311.59571 23.580382 0.0034851739 1 1 - 4400 300.64237 -31.866661 0.0034851739 1 1 - 4450 294.15643 -0.11927421 0.0034851739 1 1 - 4500 299.83605 -17.560873 0.0034851739 1 1 - 4550 326.83265 32.818482 0.0034851739 1 1 - 4600 260.39068 -8.0567902 0.0034851739 1 1 - 4650 247.93553 19.462991 0.0034851739 1 1 - 4700 214.22252 -34.118303 0.0034851739 1 1 - 4750 203.15329 27.356205 0.0034851739 1 1 - 4800 257.761 -10.407989 0.0034851739 1 1 - 4850 307.1923 11.71101 0.0034851739 1 1 - 4900 319.00942 4.7808306 0.0034851739 1 1 - 4950 282.23989 24.996151 0.0034851739 1 1 - 5000 311.53284 -3.0012665 0.0034851739 1 1 - 5050 317.58212 32.567832 0.0034851739 1 1 - 5100 267.51501 -47.695087 0.0034851739 1 1 - 5150 260.19048 29.046388 0.0034851739 1 1 - 5200 239.83552 -5.4890385 0.0034851739 1 1 - 5250 234.8852 -18.172633 0.0034851739 1 1 - 5300 236.43277 -39.06212 0.0034851739 1 1 - 5350 280.90079 -2.6932923 0.0034851739 1 1 - 5400 316.65266 23.071362 0.0034851739 1 1 - 5450 345.63226 19.573323 0.0034851739 1 1 - 5500 384.57334 41.507217 0.0034851739 1 1 - 5550 317.14278 9.6992897 0.0034851739 1 1 - 5600 279.93243 -12.076895 0.0034851739 1 1 - 5650 268.06471 1.6196401 0.0034851739 1 1 - 5700 271.85714 -40.378455 0.0034851739 1 1 - 5750 313.88363 10.722639 0.0034851739 1 1 - 5800 281.54495 31.914889 0.0034851739 1 1 - 5850 293.34821 -8.3154922 0.0034851739 1 1 - 5900 249.25216 -17.307353 0.0034851739 1 1 - 5950 268.18639 -4.7222512 0.0034851739 1 1 - 6000 302.99398 -52.615528 0.0034851739 1 1 - 6050 314.57931 34.51318 0.0034851739 1 1 - 6100 345.70348 30.334721 0.0034851739 1 1 - 6150 316.59329 31.862519 0.0034851739 1 1 - 6200 317.85346 -32.235221 0.0034851739 1 1 - 6250 282.97676 0.2936745 0.0034851739 1 1 - 6300 267.91814 19.265567 0.0034851739 1 1 - 6350 226.20967 -13.093547 0.0034851739 1 1 - 6400 307.73316 17.439598 0.0034851739 1 1 - 6450 292.16253 -23.275163 0.0034851739 1 1 - 6500 335.05939 26.936463 0.0034851739 1 1 - 6550 380.73546 19.532416 0.0034851739 1 1 - 6600 373.0103 30.879532 0.0034851739 1 1 - 6650 335.37975 -2.1762828 0.0034851739 1 1 - 6700 298.94272 -10.578587 0.0034851739 1 1 - 6750 255.11531 -50.576215 0.0034851739 1 1 - 6800 222.87459 3.0499548 0.0034851739 1 1 - 6850 268.57213 -43.675945 0.0034851739 1 1 - 6900 260.3024 4.7483005 0.0034851739 1 1 - 6950 289.15855 31.62106 0.0034851739 1 1 - 7000 289.11874 21.635533 0.0034851739 1 1 - 7050 361.08776 22.445996 0.0034851739 1 1 - 7100 368.95003 4.8383881 0.0034851739 1 1 - 7150 331.47448 -36.200495 0.0034851739 1 1 - 7200 304.7251 13.982693 0.0034851739 1 1 - 7250 284.09747 0.53758275 0.0034851739 1 1 - 7300 269.17023 -41.571482 0.0034851739 1 1 - 7350 222.07071 25.564662 0.0034851739 1 1 - 7400 304.09598 15.482955 0.0034851739 1 1 - 7450 298.78752 -7.4335841 0.0034851739 1 1 - 7500 328.78697 14.666097 0.0034851739 1 1 - 7550 347.07038 -37.165295 0.0034851739 1 1 - 7600 362.85673 20.52268 0.0034851739 1 1 - 7650 347.15141 2.3383775 0.0034851739 1 1 - 7700 262.10132 33.898374 0.0034851739 1 1 - 7750 275.84724 -33.534813 0.0034851739 1 1 - 7800 281.14075 -18.284372 0.0034851739 1 1 - 7850 264.83337 -30.580199 0.0034851739 1 1 - 7900 257.35275 -35.080567 0.0034851739 1 1 - 7950 286.32446 26.594779 0.0034851739 1 1 - 8000 248.36889 15.605894 0.0034851739 1 1 - 8050 292.55015 28.811985 0.0034851739 1 1 - 8100 312.47888 0.83990451 0.0034851739 1 1 - 8150 285.58532 -15.258185 0.0034851739 1 1 - 8200 292.22819 -38.233195 0.0034851739 1 1 - 8250 321.6208 -19.052143 0.0034851739 1 1 - 8300 319.41332 54.97437 0.0034851739 1 1 - 8350 307.95647 32.009591 0.0034851739 1 1 - 8400 345.58105 8.8535539 0.0034851739 1 1 - 8450 357.75168 12.416896 0.0034851739 1 1 - 8500 370.049 4.3288665 0.0034851739 1 1 - 8550 360.62882 12.618614 0.0034851739 1 1 - 8600 290.10834 -4.8081765 0.0034851739 1 1 - 8650 297.7575 -5.1976816 0.0034851739 1 1 - 8700 286.57505 -31.469549 0.0034851739 1 1 - 8750 307.77059 19.338001 0.0034851739 1 1 - 8800 231.68316 12.159459 0.0034851739 1 1 - 8850 329.13623 -8.7262592 0.0034851739 1 1 - 8900 286.40715 10.326025 0.0034851739 1 1 - 8950 339.43101 2.7809618 0.0034851739 1 1 - 9000 402.53799 19.481869 0.0034851739 1 1 - 9050 349.56449 -4.8450179 0.0034851739 1 1 - 9100 307.64739 16.889327 0.0034851739 1 1 - 9150 276.54451 -34.808372 0.0034851739 1 1 - 9200 233.18668 4.9409791 0.0034851739 1 1 - 9250 266.48384 -19.850366 0.0034851739 1 1 - 9300 289.14808 13.520201 0.0034851739 1 1 - 9350 295.08335 17.156468 0.0034851739 1 1 - 9400 338.08757 -31.112278 0.0034851739 1 1 - 9450 336.64739 -25.697747 0.0034851739 1 1 - 9500 338.10622 1.9241797 0.0034851739 1 1 - 9550 294.82158 -12.043972 0.0034851739 1 1 - 9600 268.9836 12.235553 0.0034851739 1 1 - 9650 279.6269 28.710734 0.0034851739 1 1 - 9700 279.88562 -10.865604 0.0034851739 1 1 - 9750 287.56565 12.975819 0.0034851739 1 1 - 9800 278.39949 4.2088595 0.0034851739 1 1 - 9850 307.61259 9.341169 0.0034851739 1 1 - 9900 317.53581 2.3948493 0.0034851739 1 1 - 9950 332.52938 -14.809185 0.0034851739 1 1 - 10000 401.93365 -7.637581 0.0034851739 1 1 -Loop time of 1.94139 on 1 procs for 10000 steps with 44 atoms + 100 274.25324 46.715512 0.0034851739 1 1 + 150 471.61579 31.321598 0.0034851739 1 1 + 200 362.87766 42.061118 0.0034851739 1 1 + 250 367.58058 65.303109 0.0034851739 1 1 + 300 372.38236 -52.421725 0.0034851739 1 1 + 350 297.69957 17.869945 0.0034851739 1 1 + 400 258.30433 49.19156 0.0034851739 1 1 + 450 253.34384 -5.8162637 0.0034851739 1 1 + 500 269.96465 -43.337517 0.0034851739 1 1 + 550 303.23718 10.180246 0.0034851739 1 1 + 600 329.59579 -48.97461 0.0034851739 1 1 + 650 350.42568 50.983183 0.0034851739 1 1 + 700 342.03272 35.43465 0.0034851739 1 1 + 750 269.23405 -41.873166 0.0034851739 1 1 + 800 245.15025 13.953092 0.0034851739 1 1 + 850 257.85421 -3.1492141 0.0034851739 1 1 + 900 316.15644 7.7798301 0.0034851739 1 1 + 950 299.9124 -15.77014 0.0034851739 1 1 + 1000 302.89968 -17.049693 0.0034851739 1 1 + 1050 308.91651 71.84632 0.0034851739 1 1 + 1100 348.43932 -18.742012 0.0034851739 1 1 + 1150 309.03036 50.536311 0.0034851739 1 1 + 1200 318.9761 -16.905746 0.0034851739 1 1 + 1250 320.42806 -0.057975092 0.0034851739 1 1 + 1300 289.7824 18.200772 0.0034851739 1 1 + 1350 284.79836 -9.1978427 0.0034851739 1 1 + 1400 325.43292 42.082833 0.0034851739 1 1 + 1450 261.5041 -37.823325 0.0034851739 1 1 + 1500 298.88723 -5.1647385 0.0034851739 1 1 + 1550 291.37403 -7.7764201 0.0034851739 1 1 + 1600 293.83475 22.2458 0.0034851739 1 1 + 1650 293.80611 24.202512 0.0034851739 1 1 + 1700 291.70205 -23.397884 0.0034851739 1 1 + 1750 292.32437 -10.671214 0.0034851739 1 1 + 1800 302.01367 -11.671025 0.0034851739 1 1 + 1850 322.1651 24.438331 0.0034851739 1 1 + 1900 310.45076 45.343592 0.0034851739 1 1 + 1950 325.91745 -19.847809 0.0034851739 1 1 + 2000 276.89662 63.387098 0.0034851739 1 1 + 2050 311.33783 -24.683247 0.0034851739 1 1 + 2100 346.2336 -27.526891 0.0034851739 1 1 + 2150 345.30604 -15.722411 0.0034851739 1 1 + 2200 346.7718 -17.857633 0.0034851739 1 1 + 2250 304.28676 -1.9965581 0.0034851739 1 1 + 2300 322.56372 -31.786868 0.0034851739 1 1 + 2350 282.64326 6.1982735 0.0034851739 1 1 + 2400 286.65759 -63.207781 0.0034851739 1 1 + 2450 257.05528 32.931491 0.0034851739 1 1 + 2500 283.64386 26.912373 0.0034851739 1 1 + 2550 299.54005 27.277039 0.0034851739 1 1 + 2600 283.92503 14.660972 0.0034851739 1 1 + 2650 321.93453 -18.977358 0.0034851739 1 1 + 2700 376.7189 31.826935 0.0034851739 1 1 + 2750 372.20075 -32.821697 0.0034851739 1 1 + 2800 361.40604 83.035183 0.0034851739 1 1 + 2850 332.27269 -23.927452 0.0034851739 1 1 + 2900 331.14638 -0.12328446 0.0034851739 1 1 + 2950 303.67489 -24.078857 0.0034851739 1 1 + 3000 311.40462 21.563537 0.0034851739 1 1 + 3050 284.72849 -23.849667 0.0034851739 1 1 + 3100 303.48477 39.347763 0.0034851739 1 1 + 3150 264.2739 -0.22299879 0.0034851739 1 1 + 3200 300.03351 31.545323 0.0034851739 1 1 + 3250 288.56663 5.7225228 0.0034851739 1 1 + 3300 200.13238 -31.239655 0.0034851739 1 1 + 3350 231.32512 16.631728 0.0034851739 1 1 + 3400 260.57402 2.1717992 0.0034851739 1 1 + 3450 301.47128 -42.210623 0.0034851739 1 1 + 3500 321.77414 40.074365 0.0034851739 1 1 + 3550 353.21858 28.387783 0.0034851739 1 1 + 3600 331.45989 -57.800858 0.0034851739 1 1 + 3650 303.88123 44.86596 0.0034851739 1 1 + 3700 329.73833 -0.80615652 0.0034851739 1 1 + 3750 297.55588 -0.49626039 0.0034851739 1 1 + 3800 286.38794 -10.010003 0.0034851739 1 1 + 3850 290.17417 -43.51187 0.0034851739 1 1 + 3900 247.88933 51.23735 0.0034851739 1 1 + 3950 332.31324 -18.194985 0.0034851739 1 1 + 4000 325.56802 18.402825 0.0034851739 1 1 + 4050 338.37593 36.430977 0.0034851739 1 1 + 4100 370.95478 39.290285 0.0034851739 1 1 + 4150 348.47859 -7.0779678 0.0034851739 1 1 + 4200 241.30632 -33.371788 0.0034851739 1 1 + 4250 242.17258 -9.986197 0.0034851739 1 1 + 4300 300.85311 -7.9244294 0.0034851739 1 1 + 4350 273.15684 -21.257283 0.0034851739 1 1 + 4400 305.77463 -5.8720722 0.0034851739 1 1 + 4450 314.97697 45.0373 0.0034851739 1 1 + 4500 310.77723 16.958773 0.0034851739 1 1 + 4550 302.1742 12.156862 0.0034851739 1 1 + 4600 319.74799 6.84889 0.0034851739 1 1 + 4650 270.86805 -13.767905 0.0034851739 1 1 + 4700 249.81731 -31.197487 0.0034851739 1 1 + 4750 285.86481 -9.8916364 0.0034851739 1 1 + 4800 233.98321 7.1338571 0.0034851739 1 1 + 4850 302.60551 49.262889 0.0034851739 1 1 + 4900 316.55056 34.663247 0.0034851739 1 1 + 4950 357.32741 11.583006 0.0034851739 1 1 + 5000 400.21045 -8.1781061 0.0034851739 1 1 + 5050 390.01845 -20.490275 0.0034851739 1 1 + 5100 378.84247 -41.328757 0.0034851739 1 1 + 5150 324.02038 -15.023862 0.0034851739 1 1 + 5200 262.08429 10.937354 0.0034851739 1 1 + 5250 255.75508 16.381455 0.0034851739 1 1 + 5300 277.84989 40.68232 0.0034851739 1 1 + 5350 302.92832 9.1989494 0.0034851739 1 1 + 5400 283.7196 -1.6584671 0.0034851739 1 1 + 5450 300.71266 -4.7030295 0.0034851739 1 1 + 5500 343.5499 -0.30550044 0.0034851739 1 1 + 5550 369.51271 21.691649 0.0034851739 1 1 + 5600 372.69789 -38.67994 0.0034851739 1 1 + 5650 327.41266 11.352137 0.0034851739 1 1 + 5700 278.98614 -23.827304 0.0034851739 1 1 + 5750 308.30054 -20.756187 0.0034851739 1 1 + 5800 341.45594 28.058441 0.0034851739 1 1 + 5850 322.97844 -10.731921 0.0034851739 1 1 + 5900 304.53591 32.825279 0.0034851739 1 1 + 5950 287.1752 -36.780091 0.0034851739 1 1 + 6000 296.52681 18.781896 0.0034851739 1 1 + 6050 314.25442 15.992829 0.0034851739 1 1 + 6100 313.86576 3.4342714 0.0034851739 1 1 + 6150 325.64196 32.392039 0.0034851739 1 1 + 6200 367.42931 -27.160706 0.0034851739 1 1 + 6250 369.30798 39.020934 0.0034851739 1 1 + 6300 328.92285 -23.175157 0.0034851739 1 1 + 6350 305.63077 4.9024453 0.0034851739 1 1 + 6400 241.70341 -13.676629 0.0034851739 1 1 + 6450 265.66717 2.40612 0.0034851739 1 1 + 6500 249.36037 13.420255 0.0034851739 1 1 + 6550 294.53814 10.853462 0.0034851739 1 1 + 6600 308.2025 18.995308 0.0034851739 1 1 + 6650 305.43797 -49.56785 0.0034851739 1 1 + 6700 320.27344 11.336281 0.0034851739 1 1 + 6750 321.78666 -23.463899 0.0034851739 1 1 + 6800 303.40388 7.6224553 0.0034851739 1 1 + 6850 297.18966 51.52256 0.0034851739 1 1 + 6900 284.18909 -8.4947203 0.0034851739 1 1 + 6950 331.03663 13.233655 0.0034851739 1 1 + 7000 311.37928 -43.265479 0.0034851739 1 1 + 7050 286.81661 -14.174683 0.0034851739 1 1 + 7100 302.84119 12.048954 0.0034851739 1 1 + 7150 297.19357 -43.111968 0.0034851739 1 1 + 7200 332.47359 26.048249 0.0034851739 1 1 + 7250 262.70677 41.176242 0.0034851739 1 1 + 7300 250.61405 -23.413982 0.0034851739 1 1 + 7350 296.91117 35.88133 0.0034851739 1 1 + 7400 245.09229 -13.447194 0.0034851739 1 1 + 7450 272.28131 -23.322585 0.0034851739 1 1 + 7500 209.04985 13.871239 0.0034851739 1 1 + 7550 255.00955 4.9325621 0.0034851739 1 1 + 7600 312.30937 -37.368274 0.0034851739 1 1 + 7650 305.65903 55.245496 0.0034851739 1 1 + 7700 325.09504 -18.347711 0.0034851739 1 1 + 7750 363.28282 -22.479686 0.0034851739 1 1 + 7800 350.17429 26.849547 0.0034851739 1 1 + 7850 271.70853 -17.764575 0.0034851739 1 1 + 7900 272.66484 -11.701967 0.0034851739 1 1 + 7950 298.60202 -12.765675 0.0034851739 1 1 + 8000 274.58852 49.641532 0.0034851739 1 1 + 8050 304.72347 -0.55414183 0.0034851739 1 1 + 8100 328.30757 -39.861301 0.0034851739 1 1 + 8150 406.67601 2.8999409 0.0034851739 1 1 + 8200 332.20083 -51.217399 0.0034851739 1 1 + 8250 354.50609 53.128769 0.0034851739 1 1 + 8300 337.2758 20.68562 0.0034851739 1 1 + 8350 361.89708 -54.185869 0.0034851739 1 1 + 8400 305.63496 24.058529 0.0034851739 1 1 + 8450 303.27461 4.304683 0.0034851739 1 1 + 8500 253.53694 -10.909021 0.0034851739 1 1 + 8550 277.03017 23.241479 0.0034851739 1 1 + 8600 291.41844 -22.240665 0.0034851739 1 1 + 8650 307.85368 31.919587 0.0034851739 1 1 + 8700 309.19724 0.53529642 0.0034851739 1 1 + 8750 354.6583 11.565515 0.0034851739 1 1 + 8800 329.78598 19.5996 0.0034851739 1 1 + 8850 240.79198 21.803515 0.0034851739 1 1 + 8900 318.40749 -59.816923 0.0034851739 1 1 + 8950 308.47211 -57.808635 0.0034851739 1 1 + 9000 271.51207 50.943482 0.0034851739 1 1 + 9050 249.4005 6.7529187 0.0034851739 1 1 + 9100 221.8772 47.196092 0.0034851739 1 1 + 9150 297.9351 4.0058184 0.0034851739 1 1 + 9200 274.85051 -24.774393 0.0034851739 1 1 + 9250 336.04757 5.3799028 0.0034851739 1 1 + 9300 380.44956 -22.389381 0.0034851739 1 1 + 9350 336.9824 23.050616 0.0034851739 1 1 + 9400 304.46425 32.530218 0.0034851739 1 1 + 9450 317.55591 -22.265425 0.0034851739 1 1 + 9500 323.70901 -7.0159787 0.0034851739 1 1 + 9550 316.07308 28.062131 0.0034851739 1 1 + 9600 262.74608 -0.78519192 0.0034851739 1 1 + 9650 271.55045 -21.430123 0.0034851739 1 1 + 9700 239.6022 14.483637 0.0034851739 1 1 + 9750 338.1437 -0.72765302 0.0034851739 1 1 + 9800 334.50189 19.495144 0.0034851739 1 1 + 9850 354.87554 19.272719 0.0034851739 1 1 + 9900 334.02141 -22.393457 0.0034851739 1 1 + 9950 293.63651 19.178873 0.0034851739 1 1 + 10000 319.81736 21.904414 0.0034851739 1 1 +Loop time of 1.84987 on 1 procs for 10000 steps with 44 atoms -Performance: 445.042 ns/day, 0.054 hours/ns, 5150.945 timesteps/s -99.3% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 467.059 ns/day, 0.051 hours/ns, 5405.774 timesteps/s +99.5% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.26479 | 0.26479 | 0.26479 | 0.0 | 13.64 -Bond | 0.76875 | 0.76875 | 0.76875 | 0.0 | 39.60 -Kspace | 0.32111 | 0.32111 | 0.32111 | 0.0 | 16.54 -Neigh | 0.41333 | 0.41333 | 0.41333 | 0.0 | 21.29 -Comm | 0.025956 | 0.025956 | 0.025956 | 0.0 | 1.34 -Output | 0.0043445 | 0.0043445 | 0.0043445 | 0.0 | 0.22 -Modify | 0.12526 | 0.12526 | 0.12526 | 0.0 | 6.45 -Other | | 0.01786 | | | 0.92 +Pair | 0.26152 | 0.26152 | 0.26152 | 0.0 | 14.14 +Bond | 0.74069 | 0.74069 | 0.74069 | 0.0 | 40.04 +Kspace | 0.30505 | 0.30505 | 0.30505 | 0.0 | 16.49 +Neigh | 0.39991 | 0.39991 | 0.39991 | 0.0 | 21.62 +Comm | 0.02261 | 0.02261 | 0.02261 | 0.0 | 1.22 +Output | 0.0034585 | 0.0034585 | 0.0034585 | 0.0 | 0.19 +Modify | 0.099979 | 0.099979 | 0.099979 | 0.0 | 5.40 +Other | | 0.01666 | | | 0.90 Nlocal: 44 ave 44 max 44 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 62 ave 62 max 62 min +Nghost: 44 ave 44 max 44 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 812 ave 812 max 812 min +Neighs: 823 ave 823 max 823 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 812 -Ave neighs/atom = 18.4545 +Total # of neighbors = 823 +Ave neighs/atom = 18.7045 Ave special neighs/atom = 9.77273 Neighbor list builds = 10000 Dangerous builds = 0 # write_restart restart_longrun # write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + Total wall time: 0:00:01 diff --git a/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.4 b/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.4 index dddc9f2801..377781f48f 100644 --- a/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.4 +++ b/examples/USER/misc/bond_react/tiny_nylon/log.20Apr18.tiny_nylon.g++.4 @@ -85,7 +85,9 @@ thermo 50 # dump 1 all xyz 1 test_vis.xyz -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 5 mol3 mol4 rxn1_stp2_map +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map +WARNING: An atom in 'react #1' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) +WARNING: An atom in 'react #2' changes bond connectivity but not atom type (../fix_bond_react.cpp:1489) dynamic group bond_react_MASTER_group defined dynamic group statted_grp defined dynamic group bond_react_MASTER_group defined @@ -131,235 +133,238 @@ Per MPI rank memory allocation (min/avg/max) = 33.34 | 33.69 | 34.37 Mbytes Step Temp Press Density f_myrxns[1] f_myrxns[2] 0 300 346.78165 0.0034851739 0 0 50 296.70408 -51.30066 0.0034851739 1 0 - 100 275.26011 39.120329 0.0034851739 1 1 - 150 438.68516 35.257539 0.0034851739 1 1 - 200 394.48971 15.444537 0.0034851739 1 1 - 250 356.00369 50.185792 0.0034851739 1 1 - 300 301.25816 -26.891497 0.0034851739 1 1 - 350 279.17264 12.694513 0.0034851739 1 1 - 400 248.71641 10.684558 0.0034851739 1 1 - 450 240.30602 12.963034 0.0034851739 1 1 - 500 252.71279 0.91620356 0.0034851739 1 1 - 550 300.56824 18.541436 0.0034851739 1 1 - 600 306.46441 -1.9736081 0.0034851739 1 1 - 650 336.4537 21.474831 0.0034851739 1 1 - 700 323.46217 8.486376 0.0034851739 1 1 - 750 271.87146 5.9615231 0.0034851739 1 1 - 800 268.43041 36.676068 0.0034851739 1 1 - 850 269.02683 7.6295416 0.0034851739 1 1 - 900 282.03605 -1.4688833 0.0034851739 1 1 - 950 243.69136 -22.771489 0.0034851739 1 1 - 1000 285.01348 17.925748 0.0034851739 1 1 - 1050 383.47985 0.70536985 0.0034851739 1 1 - 1100 368.97167 -4.3046933 0.0034851739 1 1 - 1150 373.64459 6.3491837 0.0034851739 1 1 - 1200 332.90575 -36.501095 0.0034851739 1 1 - 1250 314.04078 -13.382767 0.0034851739 1 1 - 1300 305.84166 4.7713641 0.0034851739 1 1 - 1350 286.22145 37.621803 0.0034851739 1 1 - 1400 265.52855 23.621002 0.0034851739 1 1 - 1450 281.807 -31.266828 0.0034851739 1 1 - 1500 275.33855 33.495565 0.0034851739 1 1 - 1550 273.04973 -22.913871 0.0034851739 1 1 - 1600 308.18478 -17.98151 0.0034851739 1 1 - 1650 333.27664 28.987529 0.0034851739 1 1 - 1700 296.16091 -1.1440455 0.0034851739 1 1 - 1750 365.75611 34.574845 0.0034851739 1 1 - 1800 292.83503 -33.199654 0.0034851739 1 1 - 1850 261.50282 42.608703 0.0034851739 1 1 - 1900 315.14188 -31.058803 0.0034851739 1 1 - 1950 335.12895 12.40597 0.0034851739 1 1 - 2000 278.08586 -5.3178633 0.0034851739 1 1 - 2050 283.23847 -3.3974302 0.0034851739 1 1 - 2100 281.38904 0.70263324 0.0034851739 1 1 - 2150 302.23197 23.372316 0.0034851739 1 1 - 2200 337.49259 -4.8716803 0.0034851739 1 1 - 2250 409.64134 -12.043721 0.0034851739 1 1 - 2300 309.21764 -21.824645 0.0034851739 1 1 - 2350 290.97879 18.690281 0.0034851739 1 1 - 2400 341.816 -16.967741 0.0034851739 1 1 - 2450 310.28034 27.375518 0.0034851739 1 1 - 2500 248.89429 17.061192 0.0034851739 1 1 - 2550 273.10927 0.1048166 0.0034851739 1 1 - 2600 289.56101 -9.7239939 0.0034851739 1 1 - 2650 298.99719 -33.140576 0.0034851739 1 1 - 2700 326.05198 -24.509827 0.0034851739 1 1 - 2750 319.20612 24.305526 0.0034851739 1 1 - 2800 304.8715 -15.076941 0.0034851739 1 1 - 2850 374.38923 2.0874883 0.0034851739 1 1 - 2900 354.01554 -20.595102 0.0034851739 1 1 - 2950 289.89296 48.39731 0.0034851739 1 1 - 3000 312.10013 -8.5105996 0.0034851739 1 1 - 3050 296.97004 -31.008446 0.0034851739 1 1 - 3100 251.72228 35.710197 0.0034851739 1 1 - 3150 315.35895 -43.331536 0.0034851739 1 1 - 3200 334.67773 13.331058 0.0034851739 1 1 - 3250 308.1669 37.236121 0.0034851739 1 1 - 3300 329.47601 30.798598 0.0034851739 1 1 - 3350 299.40055 2.0785585 0.0034851739 1 1 - 3400 272.41031 32.744921 0.0034851739 1 1 - 3450 279.34594 -26.181793 0.0034851739 1 1 - 3500 288.89969 8.935052 0.0034851739 1 1 - 3550 253.4967 9.724471 0.0034851739 1 1 - 3600 294.83266 19.33305 0.0034851739 1 1 - 3650 290.23794 -5.493907 0.0034851739 1 1 - 3700 332.5222 -29.83423 0.0034851739 1 1 - 3750 364.63024 20.706191 0.0034851739 1 1 - 3800 295.3842 -6.9434003 0.0034851739 1 1 - 3850 346.84424 37.796066 0.0034851739 1 1 - 3900 265.67286 -0.3162804 0.0034851739 1 1 - 3950 260.455 -2.2571901 0.0034851739 1 1 - 4000 259.82636 -2.2286207 0.0034851739 1 1 - 4050 257.79848 24.520293 0.0034851739 1 1 - 4100 295.58626 -0.42318895 0.0034851739 1 1 - 4150 265.81352 -49.092436 0.0034851739 1 1 - 4200 302.10333 51.715258 0.0034851739 1 1 - 4250 258.98448 -4.8516657 0.0034851739 1 1 - 4300 327.83401 33.717283 0.0034851739 1 1 - 4350 311.59571 23.580382 0.0034851739 1 1 - 4400 300.64237 -31.866661 0.0034851739 1 1 - 4450 294.15642 -0.11927262 0.0034851739 1 1 - 4500 299.83605 -17.560872 0.0034851739 1 1 - 4550 326.83265 32.818481 0.0034851739 1 1 - 4600 260.39068 -8.0567907 0.0034851739 1 1 - 4650 247.93553 19.462991 0.0034851739 1 1 - 4700 214.22252 -34.118304 0.0034851739 1 1 - 4750 203.15329 27.356204 0.0034851739 1 1 - 4800 257.761 -10.407986 0.0034851739 1 1 - 4850 307.1923 11.711008 0.0034851739 1 1 - 4900 319.00942 4.7808342 0.0034851739 1 1 - 4950 282.2399 24.996151 0.0034851739 1 1 - 5000 311.53284 -3.0012669 0.0034851739 1 1 - 5050 317.58213 32.56782 0.0034851739 1 1 - 5100 267.51502 -47.695103 0.0034851739 1 1 - 5150 260.19047 29.046394 0.0034851739 1 1 - 5200 239.8355 -5.4890372 0.0034851739 1 1 - 5250 234.88522 -18.172649 0.0034851739 1 1 - 5300 236.43278 -39.062111 0.0034851739 1 1 - 5350 280.90083 -2.6932604 0.0034851739 1 1 - 5400 316.65269 23.071363 0.0034851739 1 1 - 5450 345.6322 19.573305 0.0034851739 1 1 - 5500 384.57334 41.50729 0.0034851739 1 1 - 5550 317.14286 9.6992981 0.0034851739 1 1 - 5600 279.93246 -12.076859 0.0034851739 1 1 - 5650 268.06471 1.6196502 0.0034851739 1 1 - 5700 271.85714 -40.378489 0.0034851739 1 1 - 5750 313.88361 10.722652 0.0034851739 1 1 - 5800 281.54499 31.914883 0.0034851739 1 1 - 5850 293.34819 -8.3155887 0.0034851739 1 1 - 5900 249.25215 -17.307228 0.0034851739 1 1 - 5950 268.18645 -4.7223601 0.0034851739 1 1 - 6000 302.99402 -52.615432 0.0034851739 1 1 - 6050 314.57946 34.513152 0.0034851739 1 1 - 6100 345.70342 30.33474 0.0034851739 1 1 - 6150 316.59329 31.862566 0.0034851739 1 1 - 6200 317.85341 -32.23511 0.0034851739 1 1 - 6250 282.97674 0.29367434 0.0034851739 1 1 - 6300 267.91823 19.265617 0.0034851739 1 1 - 6350 226.2098 -13.093573 0.0034851739 1 1 - 6400 307.73307 17.439662 0.0034851739 1 1 - 6450 292.16311 -23.275251 0.0034851739 1 1 - 6500 335.05972 26.936588 0.0034851739 1 1 - 6550 380.7351 19.532324 0.0034851739 1 1 - 6600 373.01041 30.879146 0.0034851739 1 1 - 6650 335.37897 -2.1766711 0.0034851739 1 1 - 6700 298.94275 -10.578361 0.0034851739 1 1 - 6750 255.11449 -50.575851 0.0034851739 1 1 - 6800 222.87598 3.0488985 0.0034851739 1 1 - 6850 268.57268 -43.676136 0.0034851739 1 1 - 6900 260.30442 4.7484508 0.0034851739 1 1 - 6950 289.15739 31.622589 0.0034851739 1 1 - 7000 289.11733 21.636361 0.0034851739 1 1 - 7050 361.08905 22.442487 0.0034851739 1 1 - 7100 368.95006 4.8393179 0.0034851739 1 1 - 7150 331.47878 -36.202032 0.0034851739 1 1 - 7200 304.72518 13.982604 0.0034851739 1 1 - 7250 284.0996 0.53900966 0.0034851739 1 1 - 7300 269.17156 -41.572215 0.0034851739 1 1 - 7350 222.06563 25.56579 0.0034851739 1 1 - 7400 304.09479 15.48238 0.0034851739 1 1 - 7450 298.79046 -7.4369454 0.0034851739 1 1 - 7500 328.78217 14.672853 0.0034851739 1 1 - 7550 347.06589 -37.168123 0.0034851739 1 1 - 7600 362.84157 20.514912 0.0034851739 1 1 - 7650 347.15916 2.3477485 0.0034851739 1 1 - 7700 262.09822 33.901831 0.0034851739 1 1 - 7750 275.85921 -33.536059 0.0034851739 1 1 - 7800 281.16159 -18.288414 0.0034851739 1 1 - 7850 264.83553 -30.566284 0.0034851739 1 1 - 7900 257.35224 -35.087067 0.0034851739 1 1 - 7950 286.30756 26.586163 0.0034851739 1 1 - 8000 248.38175 15.601961 0.0034851739 1 1 - 8050 292.59171 28.784541 0.0034851739 1 1 - 8100 312.52852 0.87995053 0.0034851739 1 1 - 8150 285.62346 -15.337252 0.0034851739 1 1 - 8200 292.24175 -38.192576 0.0034851739 1 1 - 8250 321.61618 -19.030398 0.0034851739 1 1 - 8300 319.42189 55.078305 0.0034851739 1 1 - 8350 308.00357 32.050518 0.0034851739 1 1 - 8400 345.68186 8.7983733 0.0034851739 1 1 - 8450 358.00849 12.434592 0.0034851739 1 1 - 8500 370.14359 4.2184721 0.0034851739 1 1 - 8550 360.6511 12.580836 0.0034851739 1 1 - 8600 290.04938 -4.8422589 0.0034851739 1 1 - 8650 297.95745 -5.3185591 0.0034851739 1 1 - 8700 286.54284 -31.490479 0.0034851739 1 1 - 8750 308.08791 19.24417 0.0034851739 1 1 - 8800 231.72534 12.262217 0.0034851739 1 1 - 8850 329.2349 -8.9133933 0.0034851739 1 1 - 8900 287.64023 10.525164 0.0034851739 1 1 - 8950 341.08296 2.80127 0.0034851739 1 1 - 9000 403.71266 17.88418 0.0034851739 1 1 - 9050 348.95132 -4.5813611 0.0034851739 1 1 - 9100 307.98322 16.707575 0.0034851739 1 1 - 9150 276.75719 -35.563923 0.0034851739 1 1 - 9200 230.15547 3.8091656 0.0034851739 1 1 - 9250 264.64479 -20.97438 0.0034851739 1 1 - 9300 285.70467 13.881735 0.0034851739 1 1 - 9350 297.515 13.599319 0.0034851739 1 1 - 9400 341.45203 -28.494544 0.0034851739 1 1 - 9450 319.29703 -27.907344 0.0034851739 1 1 - 9500 332.50473 4.9891138 0.0034851739 1 1 - 9550 293.10499 -8.3244772 0.0034851739 1 1 - 9600 255.31174 2.2568315 0.0034851739 1 1 - 9650 250.01932 5.7005159 0.0034851739 1 1 - 9700 278.37409 -8.5970424 0.0034851739 1 1 - 9750 294.86737 17.686447 0.0034851739 1 1 - 9800 277.07345 -2.0856886 0.0034851739 1 1 - 9850 295.54707 2.8365471 0.0034851739 1 1 - 9900 311.51074 29.885116 0.0034851739 1 1 - 9950 296.01363 12.206068 0.0034851739 1 1 - 10000 341.35187 -3.0045464 0.0034851739 1 1 -Loop time of 3.64332 on 4 procs for 10000 steps with 44 atoms + 100 274.25324 46.715512 0.0034851739 1 1 + 150 471.61579 31.321598 0.0034851739 1 1 + 200 362.87766 42.061118 0.0034851739 1 1 + 250 367.58058 65.303109 0.0034851739 1 1 + 300 372.38236 -52.421725 0.0034851739 1 1 + 350 297.69957 17.869945 0.0034851739 1 1 + 400 258.30433 49.19156 0.0034851739 1 1 + 450 253.34384 -5.8162637 0.0034851739 1 1 + 500 269.96465 -43.337517 0.0034851739 1 1 + 550 303.23718 10.180246 0.0034851739 1 1 + 600 329.59579 -48.97461 0.0034851739 1 1 + 650 350.42568 50.983183 0.0034851739 1 1 + 700 342.03272 35.43465 0.0034851739 1 1 + 750 269.23405 -41.873166 0.0034851739 1 1 + 800 245.15025 13.953092 0.0034851739 1 1 + 850 257.85421 -3.1492141 0.0034851739 1 1 + 900 316.15644 7.7798301 0.0034851739 1 1 + 950 299.9124 -15.77014 0.0034851739 1 1 + 1000 302.89968 -17.049693 0.0034851739 1 1 + 1050 308.91651 71.84632 0.0034851739 1 1 + 1100 348.43932 -18.742012 0.0034851739 1 1 + 1150 309.03036 50.536311 0.0034851739 1 1 + 1200 318.9761 -16.905746 0.0034851739 1 1 + 1250 320.42806 -0.057975092 0.0034851739 1 1 + 1300 289.7824 18.200772 0.0034851739 1 1 + 1350 284.79836 -9.1978427 0.0034851739 1 1 + 1400 325.43292 42.082833 0.0034851739 1 1 + 1450 261.5041 -37.823325 0.0034851739 1 1 + 1500 298.88723 -5.1647385 0.0034851739 1 1 + 1550 291.37403 -7.7764201 0.0034851739 1 1 + 1600 293.83475 22.2458 0.0034851739 1 1 + 1650 293.80611 24.202512 0.0034851739 1 1 + 1700 291.70205 -23.397884 0.0034851739 1 1 + 1750 292.32437 -10.671214 0.0034851739 1 1 + 1800 302.01367 -11.671025 0.0034851739 1 1 + 1850 322.1651 24.438331 0.0034851739 1 1 + 1900 310.45076 45.343592 0.0034851739 1 1 + 1950 325.91745 -19.847809 0.0034851739 1 1 + 2000 276.89662 63.387098 0.0034851739 1 1 + 2050 311.33783 -24.683247 0.0034851739 1 1 + 2100 346.2336 -27.526891 0.0034851739 1 1 + 2150 345.30604 -15.722411 0.0034851739 1 1 + 2200 346.7718 -17.857633 0.0034851739 1 1 + 2250 304.28676 -1.9965581 0.0034851739 1 1 + 2300 322.56372 -31.786868 0.0034851739 1 1 + 2350 282.64326 6.1982735 0.0034851739 1 1 + 2400 286.65759 -63.207781 0.0034851739 1 1 + 2450 257.05528 32.931491 0.0034851739 1 1 + 2500 283.64386 26.912373 0.0034851739 1 1 + 2550 299.54005 27.277039 0.0034851739 1 1 + 2600 283.92503 14.660972 0.0034851739 1 1 + 2650 321.93453 -18.977358 0.0034851739 1 1 + 2700 376.7189 31.826935 0.0034851739 1 1 + 2750 372.20075 -32.821697 0.0034851739 1 1 + 2800 361.40604 83.035183 0.0034851739 1 1 + 2850 332.27269 -23.927452 0.0034851739 1 1 + 2900 331.14638 -0.12328446 0.0034851739 1 1 + 2950 303.67489 -24.078857 0.0034851739 1 1 + 3000 311.40462 21.563537 0.0034851739 1 1 + 3050 284.72849 -23.849667 0.0034851739 1 1 + 3100 303.48477 39.347763 0.0034851739 1 1 + 3150 264.2739 -0.22299878 0.0034851739 1 1 + 3200 300.03351 31.545323 0.0034851739 1 1 + 3250 288.56663 5.7225229 0.0034851739 1 1 + 3300 200.13238 -31.239655 0.0034851739 1 1 + 3350 231.32512 16.631728 0.0034851739 1 1 + 3400 260.57402 2.1717992 0.0034851739 1 1 + 3450 301.47128 -42.210623 0.0034851739 1 1 + 3500 321.77414 40.074365 0.0034851739 1 1 + 3550 353.21858 28.387783 0.0034851739 1 1 + 3600 331.45989 -57.800858 0.0034851739 1 1 + 3650 303.88123 44.86596 0.0034851739 1 1 + 3700 329.73833 -0.8061567 0.0034851739 1 1 + 3750 297.55588 -0.49626022 0.0034851739 1 1 + 3800 286.38794 -10.010003 0.0034851739 1 1 + 3850 290.17417 -43.51187 0.0034851739 1 1 + 3900 247.88933 51.23735 0.0034851739 1 1 + 3950 332.31324 -18.194985 0.0034851739 1 1 + 4000 325.56802 18.402825 0.0034851739 1 1 + 4050 338.37594 36.430977 0.0034851739 1 1 + 4100 370.95478 39.290285 0.0034851739 1 1 + 4150 348.47859 -7.0779683 0.0034851739 1 1 + 4200 241.30632 -33.371789 0.0034851739 1 1 + 4250 242.17258 -9.9861962 0.0034851739 1 1 + 4300 300.85311 -7.924429 0.0034851739 1 1 + 4350 273.15684 -21.257282 0.0034851739 1 1 + 4400 305.77464 -5.8720712 0.0034851739 1 1 + 4450 314.97697 45.037299 0.0034851739 1 1 + 4500 310.77723 16.958771 0.0034851739 1 1 + 4550 302.17421 12.156862 0.0034851739 1 1 + 4600 319.74799 6.8488914 0.0034851739 1 1 + 4650 270.86805 -13.767907 0.0034851739 1 1 + 4700 249.81731 -31.197484 0.0034851739 1 1 + 4750 285.86481 -9.8916332 0.0034851739 1 1 + 4800 233.98321 7.1338518 0.0034851739 1 1 + 4850 302.60551 49.262886 0.0034851739 1 1 + 4900 316.55055 34.663238 0.0034851739 1 1 + 4950 357.32741 11.583013 0.0034851739 1 1 + 5000 400.21044 -8.1780861 0.0034851739 1 1 + 5050 390.01845 -20.490268 0.0034851739 1 1 + 5100 378.84249 -41.328772 0.0034851739 1 1 + 5150 324.02039 -15.023852 0.0034851739 1 1 + 5200 262.08427 10.937367 0.0034851739 1 1 + 5250 255.75506 16.381495 0.0034851739 1 1 + 5300 277.84991 40.682283 0.0034851739 1 1 + 5350 302.92834 9.1989644 0.0034851739 1 1 + 5400 283.71964 -1.6583895 0.0034851739 1 1 + 5450 300.71261 -4.703054 0.0034851739 1 1 + 5500 343.54987 -0.30546396 0.0034851739 1 1 + 5550 369.51272 21.691639 0.0034851739 1 1 + 5600 372.69786 -38.679919 0.0034851739 1 1 + 5650 327.41256 11.352201 0.0034851739 1 1 + 5700 278.9861 -23.82728 0.0034851739 1 1 + 5750 308.30037 -20.756238 0.0034851739 1 1 + 5800 341.4559 28.058314 0.0034851739 1 1 + 5850 322.9786 -10.731862 0.0034851739 1 1 + 5900 304.53598 32.825105 0.0034851739 1 1 + 5950 287.17515 -36.780057 0.0034851739 1 1 + 6000 296.52688 18.782156 0.0034851739 1 1 + 6050 314.25411 15.99272 0.0034851739 1 1 + 6100 313.86572 3.4344108 0.0034851739 1 1 + 6150 325.64197 32.39212 0.0034851739 1 1 + 6200 367.4298 -27.161154 0.0034851739 1 1 + 6250 369.30937 39.020881 0.0034851739 1 1 + 6300 328.92245 -23.175612 0.0034851739 1 1 + 6350 305.6293 4.9011587 0.0034851739 1 1 + 6400 241.70456 -13.675247 0.0034851739 1 1 + 6450 265.66574 2.4049735 0.0034851739 1 1 + 6500 249.3592 13.420453 0.0034851739 1 1 + 6550 294.5367 10.856753 0.0034851739 1 1 + 6600 308.20246 18.992923 0.0034851739 1 1 + 6650 305.43756 -49.57151 0.0034851739 1 1 + 6700 320.27395 11.339101 0.0034851739 1 1 + 6750 321.7875 -23.463361 0.0034851739 1 1 + 6800 303.40316 7.6256997 0.0034851739 1 1 + 6850 297.18652 51.52186 0.0034851739 1 1 + 6900 284.19084 -8.496294 0.0034851739 1 1 + 6950 331.04173 13.227745 0.0034851739 1 1 + 7000 311.38027 -43.26105 0.0034851739 1 1 + 7050 286.82046 -14.171194 0.0034851739 1 1 + 7100 302.81691 12.058085 0.0034851739 1 1 + 7150 297.18018 -43.110658 0.0034851739 1 1 + 7200 332.46131 26.051496 0.0034851739 1 1 + 7250 262.72288 41.161451 0.0034851739 1 1 + 7300 250.62739 -23.440907 0.0034851739 1 1 + 7350 296.92141 35.869216 0.0034851739 1 1 + 7400 245.06807 -13.467896 0.0034851739 1 1 + 7450 272.2659 -23.292836 0.0034851739 1 1 + 7500 209.05776 13.888665 0.0034851739 1 1 + 7550 255.03716 4.9662624 0.0034851739 1 1 + 7600 312.26011 -37.350427 0.0034851739 1 1 + 7650 305.5823 55.208039 0.0034851739 1 1 + 7700 325.13382 -18.370791 0.0034851739 1 1 + 7750 363.24898 -22.473126 0.0034851739 1 1 + 7800 350.19254 26.792307 0.0034851739 1 1 + 7850 271.76418 -17.843445 0.0034851739 1 1 + 7900 272.70301 -11.709349 0.0034851739 1 1 + 7950 298.5993 -12.736235 0.0034851739 1 1 + 8000 274.52611 49.657345 0.0034851739 1 1 + 8050 304.73711 -0.52485689 0.0034851739 1 1 + 8100 328.29239 -39.901891 0.0034851739 1 1 + 8150 406.52096 2.8669076 0.0034851739 1 1 + 8200 332.17309 -51.168754 0.0034851739 1 1 + 8250 354.68419 53.003157 0.0034851739 1 1 + 8300 337.28934 20.766408 0.0034851739 1 1 + 8350 361.81133 -54.159227 0.0034851739 1 1 + 8400 305.59597 24.011667 0.0034851739 1 1 + 8450 303.25823 4.423341 0.0034851739 1 1 + 8500 253.50747 -11.026949 0.0034851739 1 1 + 8550 277.13504 23.204625 0.0034851739 1 1 + 8600 291.40211 -22.253861 0.0034851739 1 1 + 8650 307.93765 32.14162 0.0034851739 1 1 + 8700 309.1529 0.36279434 0.0034851739 1 1 + 8750 355.10326 11.677219 0.0034851739 1 1 + 8800 330.21328 19.235269 0.0034851739 1 1 + 8850 241.29109 21.707386 0.0034851739 1 1 + 8900 319.15363 -60.010115 0.0034851739 1 1 + 8950 308.88552 -57.637014 0.0034851739 1 1 + 9000 272.22373 51.15837 0.0034851739 1 1 + 9050 248.84947 7.3390565 0.0034851739 1 1 + 9100 221.91564 48.387079 0.0034851739 1 1 + 9150 298.03506 2.9058639 0.0034851739 1 1 + 9200 274.25114 -24.597819 0.0034851739 1 1 + 9250 334.08373 5.1079577 0.0034851739 1 1 + 9300 383.07285 -23.274763 0.0034851739 1 1 + 9350 335.00581 20.94212 0.0034851739 1 1 + 9400 309.23862 34.074744 0.0034851739 1 1 + 9450 312.62262 -28.468057 0.0034851739 1 1 + 9500 324.54274 2.851136 0.0034851739 1 1 + 9550 313.32781 22.468182 0.0034851739 1 1 + 9600 269.04372 4.064934 0.0034851739 1 1 + 9650 270.98476 -21.520127 0.0034851739 1 1 + 9700 236.8736 16.250728 0.0034851739 1 1 + 9750 333.94686 1.6864148 0.0034851739 1 1 + 9800 330.91875 12.150018 0.0034851739 1 1 + 9850 343.8603 25.338853 0.0034851739 1 1 + 9900 330.93364 -28.292992 0.0034851739 1 1 + 9950 291.25518 25.795948 0.0034851739 1 1 + 10000 319.25565 25.323846 0.0034851739 1 1 +Loop time of 3.55353 on 4 procs for 10000 steps with 44 atoms -Performance: 237.146 ns/day, 0.101 hours/ns, 2744.751 timesteps/s -94.5% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 243.139 ns/day, 0.099 hours/ns, 2814.105 timesteps/s +93.4% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.0029962 | 0.10426 | 0.34564 | 43.9 | 2.86 -Bond | 0.005929 | 0.29803 | 0.95305 | 71.2 | 8.18 -Kspace | 0.83969 | 1.5992 | 1.9344 | 35.6 | 43.89 -Neigh | 0.65468 | 0.66443 | 0.67431 | 0.9 | 18.24 -Comm | 0.1727 | 0.23754 | 0.2745 | 8.0 | 6.52 -Output | 0.0048738 | 0.010774 | 0.028434 | 9.8 | 0.30 -Modify | 0.62478 | 0.70376 | 0.779 | 6.5 | 19.32 -Other | | 0.02531 | | | 0.69 +Pair | 0.0030422 | 0.10454 | 0.35211 | 44.8 | 2.94 +Bond | 0.0063896 | 0.29222 | 0.94356 | 71.3 | 8.22 +Kspace | 0.88508 | 1.6486 | 1.979 | 35.1 | 46.39 +Neigh | 0.61154 | 0.62212 | 0.63307 | 1.0 | 17.51 +Comm | 0.18944 | 0.24549 | 0.29196 | 7.9 | 6.91 +Output | 0.0050066 | 0.011804 | 0.032134 | 10.8 | 0.33 +Modify | 0.52282 | 0.60522 | 0.69588 | 7.9 | 17.03 +Other | | 0.02359 | | | 0.66 -Nlocal: 11 ave 40 max 0 min -Histogram: 2 1 0 0 0 0 0 0 0 1 -Nghost: 36 ave 47 max 7 min +Nlocal: 11 ave 44 max 0 min +Histogram: 3 0 0 0 0 0 0 0 0 1 +Nghost: 33 ave 44 max 0 min Histogram: 1 0 0 0 0 0 0 0 0 3 -Neighs: 203 ave 809 max 0 min +Neighs: 205.75 ave 823 max 0 min Histogram: 3 0 0 0 0 0 0 0 0 1 -Total # of neighbors = 812 -Ave neighs/atom = 18.4545 +Total # of neighbors = 823 +Ave neighs/atom = 18.7045 Ave special neighs/atom = 9.77273 Neighbor list builds = 10000 Dangerous builds = 0 # write_restart restart_longrun # write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + Total wall time: 0:00:03 diff --git a/lib/colvars/Makefile.deps b/lib/colvars/Makefile.deps index 9a7de0647d..a0d8515bc1 100644 --- a/lib/colvars/Makefile.deps +++ b/lib/colvars/Makefile.deps @@ -1,9 +1,9 @@ $(COLVARS_OBJ_DIR)colvaratoms.o: colvaratoms.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ colvarparse.h colvaratoms.h colvardeps.h $(COLVARS_OBJ_DIR)colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvar.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvar.h \ colvarparse.h colvardeps.h lepton/include/Lepton.h \ lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ @@ -29,7 +29,7 @@ $(COLVARS_OBJ_DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h \ lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \ colvarbias_alb.h $(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvarbias.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvarbias.h \ colvar.h colvarparse.h colvardeps.h lepton/include/Lepton.h \ lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ @@ -42,8 +42,8 @@ $(COLVARS_OBJ_DIR)colvarbias.o: colvarbias.cpp colvarmodule.h \ lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \ colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \ - colvarmodule.h colvars_version.h colvarproxy.h colvarvalue.h \ - colvartypes.h colvar.h colvarparse.h colvardeps.h \ + colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ + colvarvalue.h colvar.h colvarparse.h colvardeps.h \ lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ lepton/include/lepton/windowsIncludes.h \ @@ -55,7 +55,7 @@ $(COLVARS_OBJ_DIR)colvarbias_histogram.o: colvarbias_histogram.cpp \ lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \ colvarbias_histogram.h colvarbias.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvar.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvar.h \ colvarparse.h colvardeps.h lepton/include/Lepton.h \ lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ @@ -68,8 +68,8 @@ $(COLVARS_OBJ_DIR)colvarbias_meta.o: colvarbias_meta.cpp colvarmodule.h \ lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \ colvarbias_meta.h colvarbias.h colvargrid.h $(COLVARS_OBJ_DIR)colvarbias_restraint.o: colvarbias_restraint.cpp \ - colvarmodule.h colvars_version.h colvarproxy.h colvarvalue.h \ - colvartypes.h colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \ + colvarmodule.h colvars_version.h colvarproxy.h colvartypes.h \ + colvarvalue.h colvarbias_restraint.h colvarbias.h colvar.h colvarparse.h \ colvardeps.h lepton/include/Lepton.h \ lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ @@ -171,7 +171,7 @@ $(COLVARS_OBJ_DIR)colvar.o: colvar.cpp colvarmodule.h colvars_version.h \ lepton/include/lepton/ParsedExpression.h lepton/include/lepton/Parser.h \ colvarcomp.h colvaratoms.h colvarproxy.h colvarscript.h colvarbias.h $(COLVARS_OBJ_DIR)colvardeps.o: colvardeps.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h colvardeps.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h colvardeps.h \ colvarparse.h $(COLVARS_OBJ_DIR)colvargrid.o: colvargrid.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparse.h colvar.h \ @@ -204,7 +204,7 @@ $(COLVARS_OBJ_DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h \ $(COLVARS_OBJ_DIR)colvarparse.o: colvarparse.cpp colvarmodule.h \ colvars_version.h colvarvalue.h colvartypes.h colvarparse.h $(COLVARS_OBJ_DIR)colvarproxy.o: colvarproxy.cpp colvarmodule.h \ - colvars_version.h colvarproxy.h colvarvalue.h colvartypes.h \ + colvars_version.h colvarproxy.h colvartypes.h colvarvalue.h \ colvarscript.h colvarbias.h colvar.h colvarparse.h colvardeps.h \ lepton/include/Lepton.h lepton/include/lepton/CompiledExpression.h \ lepton/include/lepton/ExpressionTreeNode.h \ diff --git a/lib/colvars/colvarcomp.cpp b/lib/colvars/colvarcomp.cpp index c717e8f4c6..39b84b26d1 100644 --- a/lib/colvars/colvarcomp.cpp +++ b/lib/colvars/colvarcomp.cpp @@ -77,6 +77,8 @@ int colvar::cvc::init(std::string const &conf) if (cvm::debug()) cvm::log("Done initializing cvc base object.\n"); + + return error_code; } diff --git a/lib/latte/.gitignore b/lib/latte/.gitignore index a4c2a2362e..2c9ff6be9e 100644 --- a/lib/latte/.gitignore +++ b/lib/latte/.gitignore @@ -2,4 +2,4 @@ /filelink /liblink /includelink -/LATTE-master +/LATTE-* diff --git a/lib/vtk/Makefile.lammps.fedora28_vtk7 b/lib/vtk/Makefile.lammps.fedora28_vtk7 new file mode 100644 index 0000000000..6919dd36b9 --- /dev/null +++ b/lib/vtk/Makefile.lammps.fedora28_vtk7 @@ -0,0 +1,8 @@ +# Settings that the LAMMPS build will import when this package library is used + +# settings for VTK 7.1.1 on Fedora 28. This seems to work with Fedora versions going back to at least 23 and VTK version 6.x. +# You need to install vtk-devel and all its dependencies using "dnf install vtk-devel" +vtk_SYSINC = -I/usr/include/vtk +vtk_SYSLIB = -lvtkCommonCore -lvtkIOCore -lvtkCommonDataModel -lvtkIOXML -lvtkIOLegacy -lvtkIOParallelXML +vtk_SYSPATH = -L/usr/lib64/vtk + diff --git a/src/.gitignore b/src/.gitignore index 46c8f1ca08..1ff66859e8 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -734,6 +734,8 @@ /pair_hbond_dreiding_morse.h /pair_ilp_graphene_hbn.cpp /pair_ilp_graphene_hbn.h +/pair_kim.cpp +/pair_kim.h /pair_kolmogorov_crespi_full.cpp /pair_kolmogorov_crespi_full.h /pair_kolmogorov_crespi_z.cpp diff --git a/src/Depend.sh b/src/Depend.sh index a83a99ffb5..9fe30e6583 100644 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -134,6 +134,7 @@ fi if (test $1 = "USER-MISC") then depend GPU depend USER-OMP + depend USER-INTEL fi if (test $1 = "USER-REAXC") then diff --git a/src/GPU/gpu_extra.h b/src/GPU/gpu_extra.h index ddb0b5ceaa..56a4f15f1b 100644 --- a/src/GPU/gpu_extra.h +++ b/src/GPU/gpu_extra.h @@ -61,13 +61,13 @@ namespace GPU_EXTRA { else error->all(FLERR,"Unknown error in GPU library"); } - }; + } inline void gpu_ready(LAMMPS_NS::Modify *modify, LAMMPS_NS::Error *error) { int ifix = modify->find_fix("package_gpu"); if (ifix < 0) error->all(FLERR,"The package gpu command is required for gpu styles"); - }; + } } #endif diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 46e843158a..fe638214ba 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -1264,15 +1264,15 @@ void *PairKIM::extract(const char *str, int &dim) int ier; int dummyint; int isIndexed = 0; - int maxLine = 1024; + const int MAXLINE = 1024; int rank; int validParam = 0; int numParams; - int *speciesIndex = new int[maxLine]; - char *paramStr = new char[maxLine]; + int *speciesIndex = new int[MAXLINE]; + char *paramStr = new char[MAXLINE]; char *paramName; char *indexStr; - char message[maxLine]; + char message[MAXLINE]; int offset; double* paramPtr; @@ -1354,7 +1354,7 @@ void *PairKIM::extract(const char *str, int &dim) } kim_error(__LINE__,"get_rank",kimerror); - int *shape = new int[maxLine]; + int *shape = new int[MAXLINE]; dummyint = (*pkim).get_shape(paramName, shape, &kimerror); if (kimerror == KIM_STATUS_FAIL) { diff --git a/src/KSPACE/msm.cpp b/src/KSPACE/msm.cpp index cc1ea027ee..9f3221449b 100644 --- a/src/KSPACE/msm.cpp +++ b/src/KSPACE/msm.cpp @@ -2261,7 +2261,7 @@ void MSM::restriction(int n) double ***qgrid2 = qgrid[n+1]; int k = 0; - int index[p+2]; + int *index = new int[p+2]; for (int nu=-p; nu<=p; nu++) { if (nu%2 == 0 && nu != 0) continue; phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]); @@ -2317,7 +2317,7 @@ void MSM::restriction(int n) } qgrid2[kp][jp][ip] += q2sum; } - + delete[] index; } /* ---------------------------------------------------------------------- @@ -2348,7 +2348,7 @@ void MSM::prolongation(int n) double ***v5grid2 = v5grid[n+1]; int k = 0; - int index[p+2]; + int *index = new int[p+2]; for (int nu=-p; nu<=p; nu++) { if (nu%2 == 0 && nu != 0) continue; phi1d[0][k] = compute_phi(nu*delxinv[n+1]/delxinv[n]); @@ -2420,7 +2420,7 @@ void MSM::prolongation(int n) } } - + delete[] index; } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_comb3.cpp b/src/MANYBODY/pair_comb3.cpp index e38a05c6ed..b4f9c02206 100644 --- a/src/MANYBODY/pair_comb3.cpp +++ b/src/MANYBODY/pair_comb3.cpp @@ -310,10 +310,10 @@ double PairComb3::init_one(int i, int j) void PairComb3::read_lib() { - unsigned int maxlib = 1024; + const unsigned int MAXLIB = 1024; int i,j,k,l,nwords,m; int ii,jj,kk,ll,mm,iii; - char s[maxlib]; + char s[MAXLIB]; char **words = new char*[80]; // open libraray file on proc 0 @@ -327,8 +327,8 @@ void PairComb3::read_lib() } // read and store at the same time - fgets(s,maxlib,fp); - fgets(s,maxlib,fp); + fgets(s,MAXLIB,fp); + fgets(s,MAXLIB,fp); nwords = 0; words[nwords++] = strtok(s," \t\n\r\f"); while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; @@ -339,7 +339,7 @@ void PairComb3::read_lib() ccutoff[4] = atof(words[4]); ccutoff[5] = atof(words[5]); - fgets(s,maxlib,fp); + fgets(s,MAXLIB,fp); nwords = 0; words[nwords++] = strtok(s," \t\n\r\f"); while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; @@ -351,7 +351,7 @@ void PairComb3::read_lib() ch_a[5] = atof(words[5]); ch_a[6] = atof(words[6]); - fgets(s,maxlib,fp); + fgets(s,MAXLIB,fp); nwords = 0; words[nwords++] = strtok(s," \t\n\r\f"); while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; @@ -359,7 +359,7 @@ void PairComb3::read_lib() nsplrad = atoi(words[1]); nspltor = atoi(words[2]); - fgets(s,maxlib,fp); + fgets(s,MAXLIB,fp); nwords = 0; words[nwords++] = strtok(s," \t\n\r\f"); while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; @@ -367,7 +367,7 @@ void PairComb3::read_lib() maxy = atoi(words[1]); maxz = atoi(words[2]); - fgets(s,maxlib,fp); + fgets(s,MAXLIB,fp); nwords = 0; words[nwords++] = strtok(s," \t\n\r\f"); while ((words[nwords++] = strtok(NULL," \t\n\r\f")))continue; @@ -376,7 +376,7 @@ void PairComb3::read_lib() maxconj = atoi(words[2]); for (l=0; lx[i],molcoords[i]); @@ -1472,6 +1472,7 @@ void FixGCMC::attempt_molecule_insertion() update_gas_atoms_list(); ninsertion_successes += 1.0; } + delete[] procflag; } /* ---------------------------------------------------------------------- @@ -1934,7 +1935,7 @@ void FixGCMC::attempt_molecule_deletion_full() grow_molecule_arrays(nmolq); int m = 0; - int tmpmask[atom->nlocal]; + int *tmpmask = new int[atom->nlocal]; for (int i = 0; i < atom->nlocal; i++) { if (atom->molecule[i] == deletion_molecule) { tmpmask[i] = atom->mask[i]; @@ -1982,6 +1983,7 @@ void FixGCMC::attempt_molecule_deletion_full() if (force->kspace) force->kspace->qsum_qsq(); } update_gas_atoms_list(); + delete[] tmpmask; } /* ---------------------------------------------------------------------- @@ -2426,9 +2428,9 @@ void FixGCMC::update_gas_atoms_list() for (int i = 0; i < nlocal; i++) maxmol = MAX(maxmol,molecule[i]); tagint maxmol_all; MPI_Allreduce(&maxmol,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world); - double comx[maxmol_all]; - double comy[maxmol_all]; - double comz[maxmol_all]; + double *comx = new double[maxmol_all]; + double *comy = new double[maxmol_all]; + double *comz = new double[maxmol_all]; for (int imolecule = 0; imolecule < maxmol_all; imolecule++) { for (int i = 0; i < nlocal; i++) { if (molecule[i] == imolecule) { @@ -2458,7 +2460,9 @@ void FixGCMC::update_gas_atoms_list() } } } - + delete[] comx; + delete[] comy; + delete[] comz; } else { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { diff --git a/src/MSCG/fix_mscg.cpp b/src/MSCG/fix_mscg.cpp index 2e9e03c941..b282595240 100644 --- a/src/MSCG/fix_mscg.cpp +++ b/src/MSCG/fix_mscg.cpp @@ -21,6 +21,7 @@ #include "fix_mscg.h" #include "mscg.h" #include "atom.h" +#include "comm.h" #include "domain.h" #include "error.h" #include "force.h" @@ -284,11 +285,9 @@ void FixMSCG::end_of_step() if (domain->triclinic == 1) error->all(FLERR,"Fix mscg does not yet support triclinic geometries"); - int natoms = atom->natoms; int nlocal = atom->nlocal; tagint *tag = atom->tag; double **x = atom->x; - double *prd_half = domain->prd_half; int i,ii,j; // trajectory information diff --git a/src/Makefile b/src/Makefile index 03f4072132..d17a2ccbd9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -57,10 +57,10 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \ molecule mpiio mscg opt peri poems \ python qeq reax replica rigid shock snap srd voronoi -PACKUSER = user-atc user-awpmd user-cgdna user-cgsdk user-colvars \ +PACKUSER = user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \ user-diffraction user-dpd user-drude user-eff user-fep user-h5md \ user-intel user-lb user-manifold user-meamc user-meso \ - user-mgpt user-misc user-molfile \ + user-mgpt user-misc user-mofff user-molfile \ user-netcdf user-omp user-phonon user-qmmm user-qtb \ user-quip user-reaxc user-smd user-smtbq user-sph user-tally \ user-uef user-vtk @@ -267,7 +267,7 @@ package: @echo 'make yes-all install all pgks in src dir' @echo 'make no-all remove all pkgs from src dir' @echo 'make yes-standard (yes-std) install all standard pkgs' - @echo 'make no-standard (no-srd) remove all standard pkgs' + @echo 'make no-standard (no-std) remove all standard pkgs' @echo 'make yes-user install all user pkgs' @echo 'make no-user remove all user pkgs' @echo 'make yes-lib install all pkgs with libs (included or ext)' diff --git a/src/PYTHON/fix_python_move.cpp b/src/PYTHON/fix_python_move.cpp index 7331a75db6..b330ab7945 100644 --- a/src/PYTHON/fix_python_move.cpp +++ b/src/PYTHON/fix_python_move.cpp @@ -47,7 +47,7 @@ FixPythonMove::FixPythonMove(LAMMPS *lmp, int narg, char **arg) : PyGILState_STATE gstate = PyGILState_Ensure(); // add current directory to PYTHONPATH - PyObject * py_path = PySys_GetObject("path"); + PyObject * py_path = PySys_GetObject((char *)"path"); PyList_Append(py_path, PY_STRING_FROM_STRING(".")); @@ -136,7 +136,7 @@ void FixPythonMove::init() { PyGILState_STATE gstate = PyGILState_Ensure(); PyObject *py_move_obj = (PyObject *) py_move; - PyObject *py_init = PyObject_GetAttrString(py_move_obj,"init"); + PyObject *py_init = PyObject_GetAttrString(py_move_obj,(char *)"init"); if (!py_init) { PyErr_Print(); PyErr_Clear(); diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index 35225b3c1e..c9aedf7401 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -303,7 +303,7 @@ void NEB::run() update->minimize->setup(); if (me_universe == 0) { - if (uscreen) + if (uscreen) { if (verbose) { fprintf(uscreen,"Step MaxReplicaForce MaxAtomForce " "GradV0 GradV1 GradVc EBF EBR RDT " @@ -317,7 +317,8 @@ void NEB::run() "EBF EBR RDT " "RD1 PE1 RD2 PE2 ... RDN PEN\n"); } - if (ulogfile) + } + if (ulogfile) { if (verbose) { fprintf(ulogfile,"Step MaxReplicaForce MaxAtomForce " "GradV0 GradV1 GradVc EBF EBR RDT " @@ -331,6 +332,7 @@ void NEB::run() "EBF EBR RDT " "RD1 PE1 RD2 PE2 ... RDN PEN\n"); } + } } print_status(); @@ -588,7 +590,7 @@ void NEB::print_status() MPI_Allgather(&fnorminf,1,MPI_DOUBLE,&fmaxatomInRepl[0],1,MPI_DOUBLE,roots); } - double one[numall]; + double one[7]; one[0] = fneb->veng; one[1] = fneb->plen; one[2] = fneb->nlen; diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 554412330c..3d9e24ced9 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -2342,7 +2342,7 @@ void FixRigid::write_restart_file(char *file) sprintf(outfile,"%s.rigid",file); FILE *fp = fopen(outfile,"w"); if (fp == NULL) { - char str[128]; + char str[192]; sprintf(str,"Cannot open fix rigid restart file %s",outfile); error->one(FLERR,str); } diff --git a/src/USER-BOCS/README b/src/USER-BOCS/README new file mode 100644 index 0000000000..adeb34c387 --- /dev/null +++ b/src/USER-BOCS/README @@ -0,0 +1,19 @@ +This user package implements the pressure correction to the barostat as +outlined in: + +N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that +accurately describe the structure, pressure, and compressibility of +molecular liquids," J. Chem. Phys. 143, 243148 (2015). + +doi: 10.1063/1.4937383 + +The USER-BOCS user package for LAMMPS is part of the BOCS software package: +https://github.com/noid-group/BOCS + +See the following reference for information about the entire package: + +Dunn, NJH; Lebold, KM; DeLyser, MR; Rudzinski, JF; Noid, WG. +"BOCS: Bottom-Up Open-Source Coarse-Graining Software." +J. Phys. Chem. B. 122, 13, 3363-3377 (2018). + +Example inputs are in the examples/USER/bocs folder. diff --git a/src/USER-BOCS/compute_pressure_bocs.cpp b/src/USER-BOCS/compute_pressure_bocs.cpp new file mode 100644 index 0000000000..fc24efab4c --- /dev/null +++ b/src/USER-BOCS/compute_pressure_bocs.cpp @@ -0,0 +1,444 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- + USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser + from The Pennsylvania State University +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "compute_pressure_bocs.h" +#include "atom.h" +#include "update.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "force.h" +#include "pair.h" +#include "bond.h" +#include "angle.h" +#include "dihedral.h" +#include "improper.h" +#include "kspace.h" +#include "error.h" + + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputePressureBocs::ComputePressureBocs(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + vptr(NULL), id_temp(NULL) +{ + if (narg < 4) error->all(FLERR,"Illegal compute pressure/bocs command"); + if (igroup) error->all(FLERR,"Compute pressure/bocs must use group all"); + + scalar_flag = vector_flag = 1; + size_vector = 6; + extscalar = 0; + extvector = 0; + pressflag = 1; + timeflag = 1; + + p_match_flag = 0; + phi_coeff = NULL; + + // store temperature ID used by pressure 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 pressure/bocs temperature ID"); + if (modify->compute[icompute]->tempflag == 0) + error->all(FLERR,"Compute pressure/bocs temperature ID does not " + "compute temperature"); + } + + // process optional args + + if (narg == 4) { + keflag = 1; + pairflag = 1; + bondflag = angleflag = dihedralflag = improperflag = 1; + kspaceflag = fixflag = 1; + } else { + keflag = 0; + pairflag = 0; + bondflag = angleflag = dihedralflag = improperflag = 0; + kspaceflag = fixflag = 0; + int iarg = 4; + while (iarg < narg) { + if (strcmp(arg[iarg],"ke") == 0) keflag = 1; + else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; + else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1; + else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; + else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1; + else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1; + else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1; + else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1; + else if (strcmp(arg[iarg],"virial") == 0) { + pairflag = 1; + bondflag = angleflag = dihedralflag = improperflag = 1; + kspaceflag = fixflag = 1; + } else error->all(FLERR,"Illegal compute pressure/bocs command"); + iarg++; + } + } + + // error check + + if (keflag && id_temp == NULL) + error->all(FLERR,"Compute pressure/bocs requires temperature ID " + "to include kinetic energy"); + + vector = new double[6]; + nvirial = 0; + vptr = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputePressureBocs::~ComputePressureBocs() +{ + delete [] id_temp; + delete [] vector; + delete [] vptr; + if (phi_coeff) free(phi_coeff); +} + +/* ---------------------------------------------------------------------- */ + +void ComputePressureBocs::init() +{ + boltz = force->boltz; + nktv2p = force->nktv2p; + dimension = domain->dimension; + + // set temperature compute, must be done in init() + // fixes could have changed or compute_modify could have changed it + + if (keflag) { + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Could not find compute pressure/bocs temperature ID"); + temperature = modify->compute[icompute]; + } + + // detect contributions to virial + // vptr points to all virial[6] contributions + + delete [] vptr; + nvirial = 0; + vptr = NULL; + + if (pairflag && force->pair) nvirial++; + if (bondflag && atom->molecular && force->bond) nvirial++; + if (angleflag && atom->molecular && force->angle) nvirial++; + if (dihedralflag && atom->molecular && force->dihedral) nvirial++; + if (improperflag && atom->molecular && force->improper) nvirial++; + if (fixflag) + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->virial_flag) nvirial++; + + if (nvirial) { + vptr = new double*[nvirial]; + nvirial = 0; + if (pairflag && force->pair) vptr[nvirial++] = force->pair->virial; + if (bondflag && force->bond) vptr[nvirial++] = force->bond->virial; + if (angleflag && force->angle) vptr[nvirial++] = force->angle->virial; + if (dihedralflag && force->dihedral) + vptr[nvirial++] = force->dihedral->virial; + if (improperflag && force->improper) + vptr[nvirial++] = force->improper->virial; + if (fixflag) + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->virial_flag) + vptr[nvirial++] = modify->fix[i]->virial; + } + + // flag Kspace contribution separately, since not summed across procs + + if (kspaceflag && force->kspace) kspace_virial = force->kspace->virial; + else kspace_virial = NULL; +} + +/* Extra functions added for BOCS */ + +/* ---------------------------------------------------------------------- + Compute the pressure correction for the analytical basis set +------------------------------------------------------------------------- */ +double ComputePressureBocs::get_cg_p_corr(int N_basis, double *phi_coeff, + int N_mol, double vavg, double vCG) +{ + double correction = 0.0; + for (int i = 1; i <= N_basis; ++i) + { + correction -= phi_coeff[i-1] * ( N_mol * i / vavg ) * + pow( ( 1 / vavg ) * ( vCG - vavg ),i-1); + } + return correction; +} + +/* ---------------------------------------------------------------------- + Find the relevant index position if using a spline basis set +------------------------------------------------------------------------- */ +double ComputePressureBocs::find_index(double * grid, double value) +{ + int i; + double spacing = fabs(grid[1]-grid[0]); + int gridsize = spline_length; + for (i = 0; i < (gridsize-1); ++i) + { + if (value >= grid[i] && value <= grid[i+1]) { return i; } + } + + if (value >= grid[i] && value <= (grid[i] + spacing)) { return i; } + + for (int i = 0; i < gridsize; ++i) + { + fprintf(stderr, "grid %d: %f\n",i,grid[i]); + } + char * errmsg = (char *) calloc(100,sizeof(char)); + sprintf(errmsg,"Value %f does not fall within spline grid.\n",value); + error->all(FLERR,errmsg); + + exit(1); +} + +/* ---------------------------------------------------------------------- + Compute the pressure correction for a spline basis set +------------------------------------------------------------------------- */ + +double ComputePressureBocs::get_cg_p_corr(double ** grid, int basis_type, + double vCG) +{ + int i = find_index(grid[0],vCG); + double correction, deltax = vCG - grid[0][i]; + + if (basis_type == 1) + { + correction = grid[1][i] + (deltax) * + ( grid[1][i+1] - grid[1][i] ) / ( grid[0][i+1] - grid[0][i] ); + } + else if (basis_type == 2) + { + correction = grid[1][i] + (grid[2][i] * deltax) + + (grid[3][i] * pow(deltax,2)) + (grid[4][i] * pow(deltax,3)); + } + else + { + error->all(FLERR,"bad spline type passed to get_cg_p_corr()\n"); + } + return correction; +} + +/* ---------------------------------------------------------------------- + send cg info from fix_bocs to compute_pressure_bocs for the analytical + basis set +------------------------------------------------------------------------- */ +void ComputePressureBocs::send_cg_info(int basis_type, int sent_N_basis, + double *sent_phi_coeff, int sent_N_mol, double sent_vavg) +{ + if (basis_type == 0) { p_basis_type = 0; } + else + { + error->all(FLERR,"Incorrect basis type passed to ComputePressureBocs\n"); + } + + p_match_flag = 1; + + N_basis = sent_N_basis; + if (phi_coeff) free(phi_coeff); + phi_coeff = ((double *) calloc(N_basis, sizeof(double)) ); + for (int i=0; iall(FLERR,"Incorrect basis type passed to ComputePressureBocs\n"); + } + splines = in_splines; + spline_length = gridsize; + p_match_flag = 1; +} + +/* End of new functions for BOCS */ + +/* ---------------------------------------------------------------------- + compute total pressure, averaged over Pxx, Pyy, Pzz +------------------------------------------------------------------------- */ +double ComputePressureBocs::compute_scalar() +{ + invoked_scalar = update->ntimestep; + if (update->vflag_global != invoked_scalar) + error->all(FLERR,"Virial was not tallied on needed timestep"); + + // invoke temperature if it hasn't been already + + double t; + double volume, correction = 0; + if (keflag) { + if (temperature->invoked_scalar != update->ntimestep) + t = temperature->compute_scalar(); + else t = temperature->scalar; + } + + if (dimension == 3) { + inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd); + volume = (domain->xprd * domain->yprd * domain->zprd); + + /* MRD NJD if block */ + if ( p_basis_type == 0 ) + { + correction = get_cg_p_corr(N_basis,phi_coeff,N_mol,vavg,volume); + } + else if ( p_basis_type == 1 || p_basis_type == 2 ) + { + correction = get_cg_p_corr(splines, p_basis_type, volume); + } + + virial_compute(3,3); + if (keflag) + scalar = (temperature->dof * boltz * t + + virial[0] + virial[1] + virial[2]) / 3.0 * + inv_volume * nktv2p + (correction); + else + scalar = (virial[0] + virial[1] + virial[2]) / 3.0 * + inv_volume * nktv2p + (correction); + } else { + if (p_match_flag) + { + error->all(FLERR,"Pressure matching not implemented in 2-d.\n"); + exit(1); + } // The rest of this can probably be deleted. + inv_volume = 1.0 / (domain->xprd * domain->yprd); + virial_compute(2,2); + if (keflag) + scalar = (temperature->dof * boltz * t + + virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p; + else + scalar = (virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p; + } + + return scalar; +} + +/* ---------------------------------------------------------------------- + compute pressure tensor + assume KE tensor has already been computed +------------------------------------------------------------------------- */ + +void ComputePressureBocs::compute_vector() +{ + invoked_vector = update->ntimestep; + if (update->vflag_global != invoked_vector) + error->all(FLERR,"Virial was not tallied on needed timestep"); + + if (force->kspace && kspace_virial && force->kspace->scalar_pressure_flag) + error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for " + "tensor components with kspace_style msm"); + + // invoke temperature if it hasn't been already + + double *ke_tensor; + if (keflag) { + if (temperature->invoked_vector != update->ntimestep) + temperature->compute_vector(); + ke_tensor = temperature->vector; + } + + if (dimension == 3) { + inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd); + virial_compute(6,3); + if (keflag) { + for (int i = 0; i < 6; i++) + vector[i] = (ke_tensor[i] + virial[i]) * inv_volume * nktv2p; + } else + for (int i = 0; i < 6; i++) + vector[i] = virial[i] * inv_volume * nktv2p; + } else { + inv_volume = 1.0 / (domain->xprd * domain->yprd); + virial_compute(4,2); + if (keflag) { + vector[0] = (ke_tensor[0] + virial[0]) * inv_volume * nktv2p; + vector[1] = (ke_tensor[1] + virial[1]) * inv_volume * nktv2p; + vector[3] = (ke_tensor[3] + virial[3]) * inv_volume * nktv2p; + vector[2] = vector[4] = vector[5] = 0.0; + } else { + vector[0] = virial[0] * inv_volume * nktv2p; + vector[1] = virial[1] * inv_volume * nktv2p; + vector[3] = virial[3] * inv_volume * nktv2p; + vector[2] = vector[4] = vector[5] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void ComputePressureBocs::virial_compute(int n, int ndiag) +{ + int i,j; + double v[6],*vcomponent; + + for (i = 0; i < n; i++) v[i] = 0.0; + + // sum contributions to virial from forces and fixes + + for (j = 0; j < nvirial; j++) { + vcomponent = vptr[j]; + for (i = 0; i < n; i++) v[i] += vcomponent[i]; + } + + // sum virial across procs + + MPI_Allreduce(v,virial,n,MPI_DOUBLE,MPI_SUM,world); + + // KSpace virial contribution is already summed across procs + + if (kspace_virial) + for (i = 0; i < n; i++) virial[i] += kspace_virial[i]; + + // LJ long-range tail correction, only if pair contributions are included + + if (force->pair && pairflag && force->pair->tail_flag) + for (i = 0; i < ndiag; i++) virial[i] += force->pair->ptail * inv_volume; +} + +/* ---------------------------------------------------------------------- */ + +void ComputePressureBocs::reset_extra_compute_fix(const char *id_new) +{ + delete [] id_temp; + int n = strlen(id_new) + 1; + id_temp = new char[n]; + strcpy(id_temp,id_new); +} diff --git a/src/USER-BOCS/compute_pressure_bocs.h b/src/USER-BOCS/compute_pressure_bocs.h new file mode 100644 index 0000000000..4fb932c508 --- /dev/null +++ b/src/USER-BOCS/compute_pressure_bocs.h @@ -0,0 +1,114 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- + USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser + from The Pennsylvania State University +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(PRESSURE/BOCS,ComputePressureBocs) + +#else + + +#ifndef LMP_COMPUTE_PRESSURE_BOCS_H +#define LMP_COMPUTE_PRESSURE_BOCS_H + +#include "compute.h" + +namespace LAMMPS_NS { +// ComputePressure -> ComputePressureBocs MRD NJD +class ComputePressureBocs : public Compute { + public: + ComputePressureBocs(class LAMMPS *, int, char **); + virtual ~ComputePressureBocs(); + virtual void init(); + virtual double compute_scalar(); + virtual void compute_vector(); + void reset_extra_compute_fix(const char *); + + double compute_cg_scalar(); + double get_cg_p_corr(int, double *, int, double, double); + double get_cg_fluct(double, double); + void send_cg_info(int, int, double*, int, double); + void send_cg_info(int, double **, int); + double get_cg_p_corr(double **, int, double); + double find_index(double* , double); + + protected: + double boltz,nktv2p,inv_volume; + int nvirial,dimension; + double **vptr; + double *kspace_virial; + Compute *temperature; + char *id_temp; + double virial[6]; + int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag; + int fixflag,kspaceflag; + +// NJD MRD + int p_basis_type; + int p_match_flag; + double vavg; + int N_mol; + int N_basis; + double *phi_coeff; + double ** splines; + int spline_length; + + void virial_compute(int, int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Compute pressure must use group all + +Virial contributions computed by potentials (pair, bond, etc) are +computed on all atoms. + +E: Could not find compute pressure temperature ID + +The compute ID for calculating temperature does not exist. + +E: Compute pressure temperature ID does not compute temperature + +The compute ID assigned to a pressure computation must compute +temperature. + +E: Compute pressure requires temperature ID to include kinetic energy + +The keflag cannot be used unless a temperature compute is provided. + +E: Virial was not tallied on needed timestep + +You are using a thermo keyword that requires potentials to +have tallied the virial, but they didn't on this timestep. See the +variable doc page for ideas on how to make this work. + +E: Must use 'kspace_modify pressure/scalar no' for tensor components with kspace_style msm + +Otherwise MSM will compute only a scalar pressure. See the kspace_modify +command for details on this setting. + +*/ diff --git a/src/USER-BOCS/fix_bocs.cpp b/src/USER-BOCS/fix_bocs.cpp new file mode 100644 index 0000000000..37e128f556 --- /dev/null +++ b/src/USER-BOCS/fix_bocs.cpp @@ -0,0 +1,2431 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- + USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser + from The Pennsylvania State University +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "fix_bocs.h" +#include "math_extra.h" +#include "atom.h" +#include "force.h" +#include "group.h" +#include "comm.h" +#include "neighbor.h" +#include "irregular.h" +#include "modify.h" +#include "fix_deform.h" +#include "compute.h" +#include "kspace.h" +#include "update.h" +#include "respa.h" +#include "domain.h" +#include "memory.h" +#include "error.h" +#include "citeme.h" + +#include "compute_pressure_bocs.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +static const char cite_user_bocs_package[] = + "USER-BOCS package:\n\n" + "@Article{Dunn2018,\n" + " author = {NJH Dunn, KM Lebold, MR DeLyser, JF Rudzinski, WG Noid},\n" + " title = {BOCS: Bottom-Up Open-Source Coarse-Graining Software},\n" + " journal = {J. Phys. Chem. B},\n" + " year = 2018,\n" + " volume = 122,\n" + " pages = {3363--3377}\n" + "}\n\n"; + + +#define DELTAFLIP 0.1 +#define TILTMAX 1.5 + +enum{NOBIAS,BIAS}; +enum{NONE,XYZ,XY,YZ,XZ}; +enum{ISO,ANISO,TRICLINIC}; + +/* ---------------------------------------------------------------------- + NVT,NPH,NPT integrators for improved Nose-Hoover equations of motion + ---------------------------------------------------------------------- */ + +FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + rfix(NULL), id_dilate(NULL), irregular(NULL), id_temp(NULL), id_press(NULL), + eta(NULL), eta_dot(NULL), eta_dotdot(NULL), + eta_mass(NULL), etap(NULL), etap_dot(NULL), etap_dotdot(NULL), + etap_mass(NULL) +{ + if (lmp->citeme) lmp->citeme->add(cite_user_bocs_package); + + if (narg < 4) error->all(FLERR,"Illegal fix bocs command"); + + restart_global = 1; + dynamic_group_allow = 1; + time_integrate = 1; + scalar_flag = 1; + vector_flag = 1; + global_freq = 1; + extscalar = 1; + extvector = 0; + + // default values + + pcouple = NONE; + drag = 0.0; + allremap = 1; + id_dilate = NULL; + mtchain = mpchain = 3; + nc_tchain = nc_pchain = 1; + mtk_flag = 1; + deviatoric_flag = 0; + nreset_h0 = 0; + eta_mass_flag = 1; + omega_mass_flag = 0; + etap_mass_flag = 0; + flipflag = 1; + dipole_flag = 0; + dlm_flag = 0; + + tcomputeflag = 0; + pcomputeflag = 0; + id_temp = NULL; + id_press = NULL; + + p_match_coeffs = NULL; + + // turn on tilt factor scaling, whenever applicable + + dimension = domain->dimension; + + scaleyz = scalexz = scalexy = 0; + if (domain->yperiodic && domain->xy != 0.0) scalexy = 1; + if (domain->zperiodic && dimension == 3) { + if (domain->yz != 0.0) scaleyz = 1; + if (domain->xz != 0.0) scalexz = 1; + } + + // set fixed-point to default = center of cell + + fixedpoint[0] = 0.5*(domain->boxlo[0]+domain->boxhi[0]); + fixedpoint[1] = 0.5*(domain->boxlo[1]+domain->boxhi[1]); + fixedpoint[2] = 0.5*(domain->boxlo[2]+domain->boxhi[2]); + + // used by FixNVTSllod to preserve non-default value + + mtchain_default_flag = 1; + + tstat_flag = 0; + double t_period = 0.0; + + double p_period[6]; + for (int i = 0; i < 6; i++) { + p_start[i] = p_stop[i] = p_period[i] = p_target[i] = 0.0; + p_flag[i] = 0; + } + + // process keywords + + int iarg = 3; + + while (iarg < narg) { + if (strcmp(arg[iarg],"temp") == 0) { + if (iarg+4 > narg) error->all(FLERR,"Illegal fix bocs command"); + tstat_flag = 1; + t_start = force->numeric(FLERR,arg[iarg+1]); + t_target = t_start; + t_stop = force->numeric(FLERR,arg[iarg+2]); + t_period = force->numeric(FLERR,arg[iarg+3]); + if (t_start <= 0.0 || t_stop <= 0.0) + error->all(FLERR, + "Target temperature for fix bocs cannot be 0.0"); + iarg += 4; + } else if (strcmp(arg[iarg],"iso") == 0) { + error->all(FLERR,"Illegal fix bocs command. Pressure fix must be " + "cgiso . Use regular fix bocs for iso"); // MRD NJD + } else if (strcmp(arg[iarg],"cgiso") == 0) { // MRD NJD the whole else if + if (iarg+4 > narg) + error->all(FLERR,"Illegal fix bocs command. cgiso must be " + "followed by: P_0 P_f P_coupl"); + p_match_flag = 1; + pcouple = XYZ; + p_start[0] = p_start[1] = p_start[2] = + force->numeric(FLERR,arg[iarg+1]); + p_stop[0] = p_stop[1] = p_stop[2] = + force->numeric(FLERR,arg[iarg+2]); + p_period[0] = p_period[1] = p_period[2] = + force->numeric(FLERR,arg[iarg+3]); + + p_flag[0] = p_flag[1] = p_flag[2] = 1; + p_flag[3] = p_flag[4] = p_flag[5] = 0; // MRD + if (dimension == 2) { // Later I force 3D... MRD + p_start[2] = p_stop[2] = p_period[2] = 0.0; + p_flag[2] = 0; + } + iarg += 4; + + if ( strcmp(arg[iarg], "analytic") == 0 ) { + if (iarg + 4 > narg) { + error->all(FLERR,"Illegal fix bocs command. basis type analytic" + " must be followed by: avg_vol n_mol n_pmatch_coeff"); + } + p_basis_type = 0; + vavg = force->numeric(FLERR,arg[iarg+1]); + N_mol = force->inumeric(FLERR,arg[iarg+2]); + N_p_match = force->inumeric(FLERR,arg[iarg+3]); + p_match_coeffs = (double *) (calloc(N_p_match, sizeof(double)) ); + iarg += 4; + if (iarg + N_p_match > narg) + error->all(FLERR,"Illegal fix bocs command. Missing coeffs."); + for (int pmatchi = 0; pmatchi < N_p_match; pmatchi++) + p_match_coeffs[pmatchi] = force->numeric(FLERR,arg[iarg+pmatchi]); + iarg += (N_p_match); + } else if (strcmp(arg[iarg], "linear_spline") == 0 ) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command. " + "Supply a file name after linear_spline."); + p_basis_type = 1; + spline_length = read_F_table( arg[iarg+1], p_basis_type ); + iarg += 2; + } else if (strcmp(arg[iarg], "cubic_spline") == 0 ) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command. " + "Supply a file name after cubic_spline."); + p_basis_type = 2; + spline_length = read_F_table( arg[iarg+1], p_basis_type ); + iarg += 2; + } else + { + char * errmsg = (char *) calloc(150,sizeof(char)); + sprintf(errmsg,"CG basis type %s is not recognized\nSupported " + "basis types: analytic linear_spline cubic_spline",arg[iarg]); + error->all(FLERR,errmsg); + } // END NJD MRD + } else if (strcmp(arg[iarg],"tchain") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command"); + mtchain = force->inumeric(FLERR,arg[iarg+1]); + // used by FixNVTSllod to preserve non-default value + mtchain_default_flag = 0; + if (mtchain < 1) error->all(FLERR,"Illegal fix bocs command"); + iarg += 2; + } else if (strcmp(arg[iarg],"pchain") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command"); + mpchain = force->inumeric(FLERR,arg[iarg+1]); + if (mpchain < 0) error->all(FLERR,"Illegal fix bocs command"); + iarg += 2; + } else if (strcmp(arg[iarg],"mtk") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command"); + if (strcmp(arg[iarg+1],"yes") == 0) mtk_flag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) mtk_flag = 0; + else error->all(FLERR,"Illegal fix bocs command"); + iarg += 2; + } else if (strcmp(arg[iarg],"tloop") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command"); + nc_tchain = force->inumeric(FLERR,arg[iarg+1]); + if (nc_tchain < 0) error->all(FLERR,"Illegal fix bocs command"); + iarg += 2; + } else if (strcmp(arg[iarg],"ploop") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bocs command"); + nc_pchain = force->inumeric(FLERR,arg[iarg+1]); + if (nc_pchain < 0) error->all(FLERR,"Illegal fix bocs command"); + iarg += 2; + } else { + char * errmsg = (char *) calloc(80,sizeof(char)); + sprintf(errmsg,"Illegal fix bocs command: unrecognized keyword %s" + ,arg[iarg]); + error->all(FLERR,errmsg); + } + } + // error checks + + if (dimension != 3) // MRD NJD + error->all(FLERR,"Invalid fix bocs command. Must use 3 dimensions"); + +// With cgiso, p_flag[0] = p_flag[1] = p_flag[2] = 1 + + // require periodicity in tensile dimension + + if (p_flag[0] && domain->xperiodic == 0) + error->all(FLERR,"Cannot use fix bocs on a non-periodic dimension"); + if (p_flag[1] && domain->yperiodic == 0) + error->all(FLERR,"Cannot use fix bocs on a non-periodic dimension"); + if (p_flag[2] && domain->zperiodic == 0) + error->all(FLERR,"Cannot use fix bocs on a non-periodic dimension"); + + if (dipole_flag) { + if (!atom->sphere_flag) + error->all(FLERR,"Using update dipole flag requires atom style sphere"); + if (!atom->mu_flag) + error->all(FLERR,"Using update dipole flag requires atom attribute mu"); + } + + if ((tstat_flag && t_period <= 0.0) || + (p_flag[0] && p_period[0] <= 0.0) || + (p_flag[1] && p_period[1] <= 0.0) || + (p_flag[2] && p_period[2] <= 0.0) || + (p_flag[3] && p_period[3] <= 0.0) || + (p_flag[4] && p_period[4] <= 0.0) || + (p_flag[5] && p_period[5] <= 0.0)) + error->all(FLERR,"Fix bocs damping parameters must be > 0.0"); + + // set pstat_flag and box change and restart_pbc variables + + pre_exchange_flag = 0; + pstat_flag = 0; + pstyle = ISO; + + for (int i = 0; i < 6; i++) + if (p_flag[i]) pstat_flag = 1; + + if (pstat_flag) { + if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; + if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; + no_change_box = 1; + if (allremap == 0) restart_pbc = 1; + + pstyle = ISO; // MRD this is the only one that can happen + + // pre_exchange only required if flips can occur due to shape changes + + if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) + pre_exchange_flag = 1; + if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || + domain->xy != 0.0)) + pre_exchange_flag = 1; + } + + // convert input periods to frequencies + + t_freq = 0.0; + p_freq[0] = p_freq[1] = p_freq[2] = p_freq[3] = p_freq[4] = p_freq[5] = 0.0; + + if (tstat_flag) t_freq = 1.0 / t_period; + if (p_flag[0]) p_freq[0] = 1.0 / p_period[0]; + if (p_flag[1]) p_freq[1] = 1.0 / p_period[1]; + if (p_flag[2]) p_freq[2] = 1.0 / p_period[2]; + if (p_flag[3]) p_freq[3] = 1.0 / p_period[3]; + if (p_flag[4]) p_freq[4] = 1.0 / p_period[4]; + if (p_flag[5]) p_freq[5] = 1.0 / p_period[5]; + + // Nose/Hoover temp and pressure init + + size_vector = 0; + + if (tstat_flag) { + int ich; + eta = new double[mtchain]; + + // add one extra dummy thermostat, set to zero + + eta_dot = new double[mtchain+1]; + eta_dot[mtchain] = 0.0; + eta_dotdot = new double[mtchain]; + for (ich = 0; ich < mtchain; ich++) { + eta[ich] = eta_dot[ich] = eta_dotdot[ich] = 0.0; + } + eta_mass = new double[mtchain]; + size_vector += 2*2*mtchain; + } + + if (pstat_flag) { + omega[0] = omega[1] = omega[2] = 0.0; + omega_dot[0] = omega_dot[1] = omega_dot[2] = 0.0; + omega_mass[0] = omega_mass[1] = omega_mass[2] = 0.0; + omega[3] = omega[4] = omega[5] = 0.0; + omega_dot[3] = omega_dot[4] = omega_dot[5] = 0.0; + omega_mass[3] = omega_mass[4] = omega_mass[5] = 0.0; + if (pstyle == ISO) size_vector += 2*2*1; + else if (pstyle == ANISO) size_vector += 2*2*3; + else if (pstyle == TRICLINIC) size_vector += 2*2*6; + + if (mpchain) { + int ich; + etap = new double[mpchain]; + + // add one extra dummy thermostat, set to zero + + etap_dot = new double[mpchain+1]; + etap_dot[mpchain] = 0.0; + etap_dotdot = new double[mpchain]; + for (ich = 0; ich < mpchain; ich++) { + etap[ich] = etap_dot[ich] = + etap_dotdot[ich] = 0.0; + } + etap_mass = new double[mpchain]; + size_vector += 2*2*mpchain; + } + + if (deviatoric_flag) size_vector += 1; + } + + nrigid = 0; + rfix = NULL; + + if (pre_exchange_flag) irregular = new Irregular(lmp); + else irregular = NULL; + + // initialize vol0,t0 to zero to signal uninitialized + // values then assigned in init(), if necessary + + vol0 = t0 = 0.0; + + /*~ MRD I copied this from fix_npt.cpp 8/17/17 ~*/ + + if (!tstat_flag) + error->all(FLERR,"Temperature control must be used with fix bocs"); + if (!pstat_flag) + error->all(FLERR,"Pressure control must be used with fix bocs"); + + // create a new compute temp style + // id = fix-ID + temp + // compute group = all since pressure is always global (group all) + // and thus its KE/temperature contribution should use group all + + + int n = strlen(id) + 6; + id_temp = new char[n]; + strcpy(id_temp,id); + strcat(id_temp,"_temp"); + + char **newarg = new char*[3]; + newarg[0] = id_temp; + newarg[1] = (char *) "all"; + newarg[2] = (char *) "temp"; + + + modify->add_compute(3,newarg); + delete [] newarg; + tcomputeflag = 1; + + // create a new compute pressure style + // id = fix-ID + press, compute group = all + // pass id_temp as 4th arg to pressure constructor + + n = strlen(id) + 7; + id_press = new char[n]; + strcpy(id_press,id); + strcat(id_press,"_press"); + + newarg = new char*[4]; + newarg[0] = id_press; + newarg[1] = (char *) "all"; + newarg[2] = (char *) "PRESSURE/BOCS"; + newarg[3] = id_temp; + modify->add_compute(4,newarg); + delete [] newarg; + pcomputeflag = 1; + +/*~ MRD End of stuff copied from fix_npt.cpp~*/ + +} + +/* ---------------------------------------------------------------------- */ + +FixBocs::~FixBocs() +{ + if (copymode) return; + + delete [] id_dilate; + delete [] rfix; + + delete irregular; + + // delete temperature and pressure if fix created them + + if (tcomputeflag) modify->delete_compute(id_temp); + delete [] id_temp; + + if (tstat_flag) { + delete [] eta; + delete [] eta_dot; + delete [] eta_dotdot; + delete [] eta_mass; + } + + if (pstat_flag) { + if (pcomputeflag) modify->delete_compute(id_press); + delete [] id_press; + if (mpchain) { + delete [] etap; + delete [] etap_dot; + delete [] etap_dotdot; + delete [] etap_mass; + } + } + if (p_match_coeffs) free(p_match_coeffs); +} + +/* ---------------------------------------------------------------------- */ + +int FixBocs::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= THERMO_ENERGY; + mask |= INITIAL_INTEGRATE_RESPA; + mask |= FINAL_INTEGRATE_RESPA; + if (pre_exchange_flag) mask |= PRE_EXCHANGE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::init() +{ + // recheck that dilate group has not been deleted + if (allremap == 0) { + int idilate = group->find(id_dilate); + if (idilate == -1) + error->all(FLERR,"Fix bocs dilate group ID does not exist"); + dilate_group_bit = group->bitmask[idilate]; + } + + // ensure no conflict with fix deform + + if (pstat_flag) + { + for (int i = 0; i < modify->nfix; i++) + if (strcmp(modify->fix[i]->style,"deform") == 0) { + int *dimflag = ((FixDeform *) modify->fix[i])->dimflag; + if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || + (p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) || + (p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5])) + error->all(FLERR,"Cannot use fix bocs and fix deform on " + "same component of stress tensor"); + } + } + + // set temperature and pressure ptrs + int icompute = modify->find_compute(id_temp); + if (icompute < 0) + error->all(FLERR,"Temperature ID for fix bocs does not exist"); + temperature = modify->compute[icompute]; + + if (temperature->tempbias) which = BIAS; + else which = NOBIAS; + + if (pstat_flag) { + icompute = modify->find_compute(id_press); + if (icompute < 0) + error->all(FLERR,"Pressure ID for fix bocs does not exist"); + pressure = modify->compute[icompute]; + } + + + if (pstat_flag) + { + if (p_match_flag) // MRD NJD + { + if (pressure) + { + if (p_basis_type == 0) + { + ((ComputePressureBocs *)pressure)->send_cg_info(p_basis_type, + N_p_match, p_match_coeffs, N_mol, vavg); + } + else if ( p_basis_type == 1 || p_basis_type == 2 ) + { + ((ComputePressureBocs *)pressure)->send_cg_info(p_basis_type, + splines, spline_length); + } + } + else + { + error->all(FLERR,"Unable to find pressure. Are you sure you included" + " the compute bocsPress and fix_modify commands?"); + } + } + } + + + // set timesteps and frequencies + + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; + dthalf = 0.5 * update->dt; + dt4 = 0.25 * update->dt; + dt8 = 0.125 * update->dt; + dto = dthalf; + + p_freq_max = 0.0; + if (pstat_flag) { + p_freq_max = MAX(p_freq[0],p_freq[1]); + p_freq_max = MAX(p_freq_max,p_freq[2]); + if (pstyle == TRICLINIC) { + p_freq_max = MAX(p_freq_max,p_freq[3]); + p_freq_max = MAX(p_freq_max,p_freq[4]); + p_freq_max = MAX(p_freq_max,p_freq[5]); + } + pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); + } + + if (tstat_flag) + tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain); + + // tally the number of dimensions that are barostatted + // set initial volume and reference cell, if not already done + + if (pstat_flag) { + pdim = p_flag[0] + p_flag[1] + p_flag[2]; + if (vol0 == 0.0) { + if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd; + else vol0 = domain->xprd * domain->yprd; + h0_inv[0] = domain->h_inv[0]; + h0_inv[1] = domain->h_inv[1]; + h0_inv[2] = domain->h_inv[2]; + h0_inv[3] = domain->h_inv[3]; + h0_inv[4] = domain->h_inv[4]; + h0_inv[5] = domain->h_inv[5]; + } + } + + boltz = force->boltz; + nktv2p = force->nktv2p; + + if (force->kspace) kspace_flag = 1; + else kspace_flag = 0; + + if (strstr(update->integrate_style,"respa")) { + nlevels_respa = ((Respa *) update->integrate)->nlevels; + step_respa = ((Respa *) update->integrate)->step; + dto = 0.5*step_respa[0]; + } + + // detect if any rigid fixes exist so rigid bodies move when box is remapped + // rfix[] = indices to each fix rigid + + delete [] rfix; + nrigid = 0; + rfix = NULL; + + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->rigid_flag) nrigid++; + if (nrigid) { + rfix = new int[nrigid]; + nrigid = 0; + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->rigid_flag) rfix[nrigid++] = i; + } +} + +// NJD MRD 2 functions +int FixBocs::read_F_table( char *filename, int p_basis_type ) +{ + char separator = ','; + FILE *fpi; + int N_columns = 2, n_entries = 0, i; + float f1, f2; + double n1, n2; + int test_sscanf; + double **data = (double **) calloc(N_columns,sizeof(double *)); + char * line = (char *) calloc(200,sizeof(char)); + + fpi = fopen(filename,"r"); + if (fpi) + { + while (fgets(line,199,fpi)) { ++n_entries; } + fclose(fpi); + for (i = 0; i < N_columns; ++i) + { + data[i] = (double *) calloc(n_entries,sizeof(double)); + } + } + else + { + char * errmsg = (char *) calloc(50,sizeof(char)); + sprintf(errmsg,"Unable to open file: %s\n",filename); + error->all(FLERR,errmsg); + } + + n_entries = 0; + fpi = fopen(filename,"r"); + if (fpi) + { + while( fgets(line,199,fpi)) + { + ++n_entries; + test_sscanf = sscanf(line," %f , %f ",&f1, &f2); + if (test_sscanf == 2) + { + data[0][n_entries-1] = (double) f1; + data[1][n_entries-1] = (double) f2; + } + else + { + fprintf(stderr,"WARNING: did not find 2 comma separated values in " + "line %d of file %s\n\tline: %s",n_entries,filename,line); + } + } + } + else + { + char * errmsg = (char *) calloc(50,sizeof(char)); + sprintf(errmsg,"Unable to open file: %s\n",filename); + error->all(FLERR,errmsg); + } + fclose(fpi); + + if (p_basis_type == 1) + { + splines = (double **) calloc(2,sizeof(double *)); + splines[0] = (double *) calloc(n_entries,sizeof(double)); + splines[1] = (double *) calloc(n_entries,sizeof(double)); + int idxa, idxb; + for (idxa = 0; idxa < 2; ++idxa) + { + for (idxb = 0; idxb < n_entries; ++idxb) + { + splines[idxa][idxb] = data[idxa][idxb]; + } + } + } + else if (p_basis_type == 2) + { + spline_length = n_entries; + build_cubic_splines(data); + n_entries -= 1; + } + else + { + char * errmsg = (char *) calloc(70,sizeof(char)); + sprintf(errmsg,"ERROR: invalid p_basis_type value " + "of %d in read_F_table",p_basis_type); + error->all(FLERR,errmsg); + } + return n_entries; +} + +void FixBocs::build_cubic_splines( double **data ) +{ + double *a, *b, *d, *h, *alpha, *c, *l, *mu, *z; + int n = spline_length; + double alpha_i; + a = (double *) calloc(n,sizeof(double)); + b = (double *) calloc(n+1,sizeof(double)); + d = (double *) calloc(n+1,sizeof(double)); + h = (double *) calloc(n,sizeof(double)); + alpha = (double *) calloc(n,sizeof(double)); + c = (double *) calloc(n+1,sizeof(double)); + l = (double *) calloc(n,sizeof(double)); + mu = (double *) calloc(n,sizeof(double)); + z = (double *) calloc(n,sizeof(double)); + int idx; + for (int i=0; i1 && i<(n-1)) + { + alpha_i = (3.0 / h[i]) * ( data[1][i+1] - data[1][i]) - (3.0 / h[i-1] ) + * ( data[1][i] - data[1][i-1] ); + alpha[i-1] = alpha_i; + } + } + l[0] = 1.0; + mu[0] = 0.0; + z[0] = 0.0; + + for (int i=1; i=0; j--) + { + c[j] = z[j] - mu[j]*c[j+1]; + + b[j] = (a[j+1]-a[j])/h[j] - h[j]*(c[j+1] + 2.0 * c[j])/3.0; + + d[j] = (c[j+1]-c[j])/(3.0 * h[j]); + } + splines = (double **) calloc(5,sizeof(double *)); + + for ( idx = 0; idx < 5; ++idx) + { + splines[idx] = (double *) calloc(n-1,sizeof(double)); + } + idx = 0; + for ( idx = 0; idx < n - 1; ++idx) + { + splines[1][idx] = a[idx]; + splines[2][idx] = b[idx]; + splines[3][idx] = c[idx]; + splines[4][idx] = d[idx]; + splines[0][idx] = data[0][idx]; + } +} +// END NJD MRD 2 functions + +/* ---------------------------------------------------------------------- + compute T,P before integrator starts +------------------------------------------------------------------------- */ + +void FixBocs::setup(int vflag) +{ + // tdof needed by compute_temp_target() + + t_current = temperature->compute_scalar(); + tdof = temperature->dof; + + // t_target is needed by NVT and NPT in compute_scalar() + // If no thermostat or using fix nphug, + // t_target must be defined by other means. + + if (tstat_flag && strstr(style,"nphug") == NULL) { + compute_temp_target(); + } else if (pstat_flag) { + + // t0 = reference temperature for masses + // cannot be done in init() b/c temperature cannot be called there + // is b/c Modify::init() inits computes after fixes due to dof dependence + // guesstimate a unit-dependent t0 if actual T = 0.0 + // if it was read in from a restart file, leave it be + + if (t0 == 0.0) { + t0 = temperature->compute_scalar(); + if (t0 == 0.0) { + if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0; + else t0 = 300.0; + } + } + t_target = t0; + } + + if (pstat_flag) compute_press_target(); + + if (pstat_flag) { + if (pstyle == ISO) pressure->compute_scalar(); + else pressure->compute_vector(); + couple(); + pressure->addstep(update->ntimestep+1); + } + + // masses and initial forces on thermostat variables + + if (tstat_flag) { + eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); + for (int ich = 1; ich < mtchain; ich++) + eta_mass[ich] = boltz * t_target / (t_freq*t_freq); + for (int ich = 1; ich < mtchain; ich++) { + eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1] - + boltz * t_target) / eta_mass[ich]; + } + } + + // masses and initial forces on barostat variables + + if (pstat_flag) { + double kt = boltz * t_target; + double nkt = atom->natoms * kt; + + for (int i = 0; i < 3; i++) + if (p_flag[i]) + omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + + if (pstyle == TRICLINIC) { + for (int i = 3; i < 6; i++) + if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + } + + // masses and initial forces on barostat thermostat variables + + if (mpchain) { + etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_dotdot[ich] = + (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - + boltz * t_target) / etap_mass[ich]; + } + } +} + +/* ---------------------------------------------------------------------- + 1st half of Verlet update +------------------------------------------------------------------------- */ + +void FixBocs::initial_integrate(int vflag) +{ + // update eta_press_dot + + if (pstat_flag && mpchain) nhc_press_integrate(); + + // update eta_dot + + if (tstat_flag) { + compute_temp_target(); + nhc_temp_integrate(); + } + + // need to recompute pressure to account for change in KE + // t_current is up-to-date, but compute_temperature is not + // compute appropriately coupled elements of mvv_current + + if (pstat_flag) { + if (pstyle == ISO) { + temperature->compute_scalar(); + pressure->compute_scalar(); + } else { + temperature->compute_vector(); + pressure->compute_vector(); + } + couple(); + pressure->addstep(update->ntimestep+1); + } + + if (pstat_flag) { + compute_press_target(); + nh_omega_dot(); + nh_v_press(); + } + + nve_v(); + + // remap simulation box by 1/2 step + + if (pstat_flag) remap(); + + nve_x(); + + // remap simulation box by 1/2 step + // redo KSpace coeffs since volume has changed + + if (pstat_flag) { + remap(); + if (kspace_flag) force->kspace->setup(); + } +} + +/* ---------------------------------------------------------------------- + 2nd half of Verlet update +------------------------------------------------------------------------- */ + +void FixBocs::final_integrate() +{ + nve_v(); + + // re-compute temp before nh_v_press() + // only needed for temperature computes with BIAS on reneighboring steps: + // b/c some biases store per-atom values (e.g. temp/profile) + // per-atom values are invalid if reneigh/comm occurred + // since temp->compute() in initial_integrate() + + if (which == BIAS && neighbor->ago == 0) + t_current = temperature->compute_scalar(); + + if (pstat_flag) nh_v_press(); + + // compute new T,P after velocities rescaled by nh_v_press() + // compute appropriately coupled elements of mvv_current + + t_current = temperature->compute_scalar(); + tdof = temperature->dof; + + if (pstat_flag) { + if (pstyle == ISO) pressure->compute_scalar(); + else pressure->compute_vector(); + couple(); + pressure->addstep(update->ntimestep+1); + } + + if (pstat_flag) nh_omega_dot(); + + // update eta_dot + // update eta_press_dot + + if (tstat_flag) nhc_temp_integrate(); + if (pstat_flag && mpchain) nhc_press_integrate(); +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::initial_integrate_respa(int vflag, int ilevel, int iloop) +{ + // set timesteps by level + + dtv = step_respa[ilevel]; + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + dthalf = 0.5 * step_respa[ilevel]; + + // outermost level - update eta_dot and omega_dot, apply to v + // all other levels - NVE update of v + // x,v updates only performed for atoms in group + + if (ilevel == nlevels_respa-1) { + + // update eta_press_dot + + if (pstat_flag && mpchain) nhc_press_integrate(); + + // update eta_dot + + if (tstat_flag) { + compute_temp_target(); + nhc_temp_integrate(); + } + + // recompute pressure to account for change in KE + // t_current is up-to-date, but compute_temperature is not + // compute appropriately coupled elements of mvv_current + + if (pstat_flag) { + if (pstyle == ISO) { + temperature->compute_scalar(); + pressure->compute_scalar(); + } else { + temperature->compute_vector(); + pressure->compute_vector(); + } + couple(); + pressure->addstep(update->ntimestep+1); + } + + if (pstat_flag) { + compute_press_target(); + nh_omega_dot(); + nh_v_press(); + } + + nve_v(); + + } else nve_v(); + + // innermost level - also update x only for atoms in group + // if barostat, perform 1/2 step remap before and after + + if (ilevel == 0) { + if (pstat_flag) remap(); + nve_x(); + if (pstat_flag) remap(); + } + + // if barostat, redo KSpace coeffs at outermost level, + // since volume has changed + + if (ilevel == nlevels_respa-1 && kspace_flag && pstat_flag) + force->kspace->setup(); +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::final_integrate_respa(int ilevel, int iloop) +{ + // set timesteps by level + + dtf = 0.5 * step_respa[ilevel] * force->ftm2v; + dthalf = 0.5 * step_respa[ilevel]; + + // outermost level - update eta_dot and omega_dot, apply via final_integrate + // all other levels - NVE update of v + + if (ilevel == nlevels_respa-1) final_integrate(); + else nve_v(); +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::couple() +{ + double *tensor = pressure->vector; + + if (pstyle == ISO) + p_current[0] = p_current[1] = p_current[2] = pressure->scalar; + else if (pcouple == XYZ) { + double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]); + p_current[0] = p_current[1] = p_current[2] = ave; + } else if (pcouple == XY) { + double ave = 0.5 * (tensor[0] + tensor[1]); + p_current[0] = p_current[1] = ave; + p_current[2] = tensor[2]; + } else if (pcouple == YZ) { + double ave = 0.5 * (tensor[1] + tensor[2]); + p_current[1] = p_current[2] = ave; + p_current[0] = tensor[0]; + } else if (pcouple == XZ) { + double ave = 0.5 * (tensor[0] + tensor[2]); + p_current[0] = p_current[2] = ave; + p_current[1] = tensor[1]; + } else { + p_current[0] = tensor[0]; + p_current[1] = tensor[1]; + p_current[2] = tensor[2]; + } + + if (!std::isfinite(p_current[0]) || !std::isfinite(p_current[1]) || !std::isfinite(p_current[2])) + error->all(FLERR,"Non-numeric pressure - simulation unstable"); + + // switch order from xy-xz-yz to Voigt + + if (pstyle == TRICLINIC) { + p_current[3] = tensor[5]; + p_current[4] = tensor[4]; + p_current[5] = tensor[3]; + + if (!std::isfinite(p_current[3]) || !std::isfinite(p_current[4]) || !std::isfinite(p_current[5])) + error->all(FLERR,"Non-numeric pressure - simulation unstable"); + } +} + +/* ---------------------------------------------------------------------- + change box size + remap all atoms or dilate group atoms depending on allremap flag + if rigid bodies exist, scale rigid body centers-of-mass +------------------------------------------------------------------------- */ + +void FixBocs::remap() +{ + int i; + double oldlo,oldhi; + double expfac; + + double **x = atom->x; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double *h = domain->h; + + // omega is not used, except for book-keeping + + for (int i = 0; i < 6; i++) omega[i] += dto*omega_dot[i]; + + // convert pertinent atoms and rigid bodies to lamda coords + + if (allremap) domain->x2lamda(nlocal); + else { + for (i = 0; i < nlocal; i++) + if (mask[i] & dilate_group_bit) + domain->x2lamda(x[i],x[i]); + } + + if (nrigid) + for (i = 0; i < nrigid; i++) + modify->fix[rfix[i]]->deform(0); + + // reset global and local box to new size/shape + + // this operation corresponds to applying the + // translate and scale operations + // corresponding to the solution of the following ODE: + // + // h_dot = omega_dot * h + // + // where h_dot, omega_dot and h are all upper-triangular + // 3x3 tensors. In Voigt notation, the elements of the + // RHS product tensor are: + // h_dot = [0*0, 1*1, 2*2, 1*3+3*2, 0*4+5*3+4*2, 0*5+5*1] + // + // Ordering of operations preserves time symmetry. + + double dto2 = dto/2.0; + double dto4 = dto/4.0; + double dto8 = dto/8.0; + + // off-diagonal components, first half + + if (pstyle == TRICLINIC) { + + if (p_flag[4]) { + expfac = exp(dto8*omega_dot[0]); + h[4] *= expfac; + h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); + h[4] *= expfac; + } + + if (p_flag[3]) { + expfac = exp(dto4*omega_dot[1]); + h[3] *= expfac; + h[3] += dto2*(omega_dot[3]*h[2]); + h[3] *= expfac; + } + + if (p_flag[5]) { + expfac = exp(dto4*omega_dot[0]); + h[5] *= expfac; + h[5] += dto2*(omega_dot[5]*h[1]); + h[5] *= expfac; + } + + if (p_flag[4]) { + expfac = exp(dto8*omega_dot[0]); + h[4] *= expfac; + h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); + h[4] *= expfac; + } + } + + // scale diagonal components + // scale tilt factors with cell, if set + + if (p_flag[0]) { + oldlo = domain->boxlo[0]; + oldhi = domain->boxhi[0]; + expfac = exp(dto*omega_dot[0]); + domain->boxlo[0] = (oldlo-fixedpoint[0])*expfac + fixedpoint[0]; + domain->boxhi[0] = (oldhi-fixedpoint[0])*expfac + fixedpoint[0]; + } + + if (p_flag[1]) { + oldlo = domain->boxlo[1]; + oldhi = domain->boxhi[1]; + expfac = exp(dto*omega_dot[1]); + domain->boxlo[1] = (oldlo-fixedpoint[1])*expfac + fixedpoint[1]; + domain->boxhi[1] = (oldhi-fixedpoint[1])*expfac + fixedpoint[1]; + if (scalexy) h[5] *= expfac; + } + + if (p_flag[2]) { + oldlo = domain->boxlo[2]; + oldhi = domain->boxhi[2]; + expfac = exp(dto*omega_dot[2]); + domain->boxlo[2] = (oldlo-fixedpoint[2])*expfac + fixedpoint[2]; + domain->boxhi[2] = (oldhi-fixedpoint[2])*expfac + fixedpoint[2]; + if (scalexz) h[4] *= expfac; + if (scaleyz) h[3] *= expfac; + } + + // off-diagonal components, second half + + if (pstyle == TRICLINIC) { + + if (p_flag[4]) { + expfac = exp(dto8*omega_dot[0]); + h[4] *= expfac; + h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); + h[4] *= expfac; + } + + if (p_flag[3]) { + expfac = exp(dto4*omega_dot[1]); + h[3] *= expfac; + h[3] += dto2*(omega_dot[3]*h[2]); + h[3] *= expfac; + } + + if (p_flag[5]) { + expfac = exp(dto4*omega_dot[0]); + h[5] *= expfac; + h[5] += dto2*(omega_dot[5]*h[1]); + h[5] *= expfac; + } + + if (p_flag[4]) { + expfac = exp(dto8*omega_dot[0]); + h[4] *= expfac; + h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); + h[4] *= expfac; + } + + } + + domain->yz = h[3]; + domain->xz = h[4]; + domain->xy = h[5]; + + // tilt factor to cell length ratio can not exceed TILTMAX in one step + + if (domain->yz < -TILTMAX*domain->yprd || + domain->yz > TILTMAX*domain->yprd || + domain->xz < -TILTMAX*domain->xprd || + domain->xz > TILTMAX*domain->xprd || + domain->xy < -TILTMAX*domain->xprd || + domain->xy > TILTMAX*domain->xprd) + error->all(FLERR,"Fix bocs has tilted box too far in one step - " + "periodic cell is too far from equilibrium state"); + + domain->set_global_box(); + domain->set_local_box(); + + // convert pertinent atoms and rigid bodies back to box coords + + if (allremap) domain->lamda2x(nlocal); + else { + for (i = 0; i < nlocal; i++) + if (mask[i] & dilate_group_bit) + domain->lamda2x(x[i],x[i]); + } + + if (nrigid) + for (i = 0; i < nrigid; i++) + modify->fix[rfix[i]]->deform(1); +} + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixBocs::write_restart(FILE *fp) +{ + int nsize = size_restart_global(); + + double *list; + memory->create(list,nsize,"nh:list"); + + pack_restart_data(list); + + if (comm->me == 0) { + int size = nsize * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),nsize,fp); + } + + memory->destroy(list); +} + +/* ---------------------------------------------------------------------- + calculate the number of data to be packed +------------------------------------------------------------------------- */ + +int FixBocs::size_restart_global() +{ + int nsize = 2; + if (tstat_flag) nsize += 1 + 2*mtchain; + if (pstat_flag) { + nsize += 16 + 2*mpchain; + if (deviatoric_flag) nsize += 6; + } + + return nsize; +} + +/* ---------------------------------------------------------------------- + pack restart data +------------------------------------------------------------------------- */ + +int FixBocs::pack_restart_data(double *list) +{ + int n = 0; + + list[n++] = tstat_flag; + if (tstat_flag) { + list[n++] = mtchain; + for (int ich = 0; ich < mtchain; ich++) + list[n++] = eta[ich]; + for (int ich = 0; ich < mtchain; ich++) + list[n++] = eta_dot[ich]; + } + + list[n++] = pstat_flag; + if (pstat_flag) { + list[n++] = omega[0]; + list[n++] = omega[1]; + list[n++] = omega[2]; + list[n++] = omega[3]; + list[n++] = omega[4]; + list[n++] = omega[5]; + list[n++] = omega_dot[0]; + list[n++] = omega_dot[1]; + list[n++] = omega_dot[2]; + list[n++] = omega_dot[3]; + list[n++] = omega_dot[4]; + list[n++] = omega_dot[5]; + list[n++] = vol0; + list[n++] = t0; + list[n++] = mpchain; + if (mpchain) { + for (int ich = 0; ich < mpchain; ich++) + list[n++] = etap[ich]; + for (int ich = 0; ich < mpchain; ich++) + list[n++] = etap_dot[ich]; + } + + list[n++] = deviatoric_flag; + if (deviatoric_flag) { + list[n++] = h0_inv[0]; + list[n++] = h0_inv[1]; + list[n++] = h0_inv[2]; + list[n++] = h0_inv[3]; + list[n++] = h0_inv[4]; + list[n++] = h0_inv[5]; + } + } + + return n; +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixBocs::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + int flag = static_cast (list[n++]); + if (flag) { + int m = static_cast (list[n++]); + if (tstat_flag && m == mtchain) { + for (int ich = 0; ich < mtchain; ich++) + eta[ich] = list[n++]; + for (int ich = 0; ich < mtchain; ich++) + eta_dot[ich] = list[n++]; + } else n += 2*m; + } + flag = static_cast (list[n++]); + if (flag) { + omega[0] = list[n++]; + omega[1] = list[n++]; + omega[2] = list[n++]; + omega[3] = list[n++]; + omega[4] = list[n++]; + omega[5] = list[n++]; + omega_dot[0] = list[n++]; + omega_dot[1] = list[n++]; + omega_dot[2] = list[n++]; + omega_dot[3] = list[n++]; + omega_dot[4] = list[n++]; + omega_dot[5] = list[n++]; + vol0 = list[n++]; + t0 = list[n++]; + int m = static_cast (list[n++]); + if (pstat_flag && m == mpchain) { + for (int ich = 0; ich < mpchain; ich++) + etap[ich] = list[n++]; + for (int ich = 0; ich < mpchain; ich++) + etap_dot[ich] = list[n++]; + } else n+=2*m; + flag = static_cast (list[n++]); + if (flag) { + h0_inv[0] = list[n++]; + h0_inv[1] = list[n++]; + h0_inv[2] = list[n++]; + h0_inv[3] = list[n++]; + h0_inv[4] = list[n++]; + h0_inv[5] = list[n++]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int FixBocs::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"temp") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + if (tcomputeflag) { + modify->delete_compute(id_temp); + tcomputeflag = 0; + } + delete [] id_temp; + int n = strlen(arg[1]) + 1; + id_temp = new char[n]; + strcpy(id_temp,arg[1]); + + int icompute = modify->find_compute(arg[1]); + if (icompute < 0) + error->all(FLERR,"Could not find fix_modify temperature ID"); + temperature = modify->compute[icompute]; + + if (temperature->tempflag == 0) + error->all(FLERR, + "Fix_modify temperature ID does not compute temperature"); + if (temperature->igroup != 0 && comm->me == 0) + error->warning(FLERR,"Temperature for fix modify is not for group all"); + + // reset id_temp of pressure to new temperature ID + + if (pstat_flag) { + icompute = modify->find_compute(id_press); + if (icompute < 0) + error->all(FLERR,"Pressure ID for fix modify does not exist"); + modify->compute[icompute]->reset_extra_compute_fix(id_temp); + } + + return 2; + + } else if (strcmp(arg[0],"press") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + if (!pstat_flag) error->all(FLERR,"Illegal fix_modify command"); + if (pcomputeflag) { + modify->delete_compute(id_press); + pcomputeflag = 0; + } + delete [] id_press; + int n = strlen(arg[1]) + 1; + id_press = new char[n]; + strcpy(id_press,arg[1]); + + int icompute = modify->find_compute(arg[1]); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); + pressure = modify->compute[icompute]; + + if (p_match_flag) // NJD MRD + { + if ( p_basis_type == 0 ) + { + ((ComputePressureBocs *)pressure)->send_cg_info(p_basis_type, N_p_match, + p_match_coeffs, N_mol, vavg); + } + else if ( p_basis_type == 1 || p_basis_type == 2 ) + { + ((ComputePressureBocs *)pressure)->send_cg_info(p_basis_type, splines, + spline_length ); + } + } + + if (pressure->pressflag == 0) + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); + return 2; + } + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +double FixBocs::compute_scalar() +{ + int i; + double volume; + double energy; + double kt = boltz * t_target; + double lkt_press = kt; + int ich; + if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; + else volume = domain->xprd * domain->yprd; + + energy = 0.0; + + // thermostat chain energy is equivalent to Eq. (2) in + // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117 + // Sum(0.5*p_eta_k^2/Q_k,k=1,M) + L*k*T*eta_1 + Sum(k*T*eta_k,k=2,M), + // where L = tdof + // M = mtchain + // p_eta_k = Q_k*eta_dot[k-1] + // Q_1 = L*k*T/t_freq^2 + // Q_k = k*T/t_freq^2, k > 1 + + if (tstat_flag) { + energy += ke_target * eta[0] + 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0]; + for (ich = 1; ich < mtchain; ich++) + energy += kt * eta[ich] + 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich]; + } + + // barostat energy is equivalent to Eq. (8) in + // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117 + // Sum(0.5*p_omega^2/W + P*V), + // where N = natoms + // p_omega = W*omega_dot + // W = N*k*T/p_freq^2 + // sum is over barostatted dimensions + + if (pstat_flag) { + for (i = 0; i < 3; i++) + if (p_flag[i]) + energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i] + + p_hydro*(volume-vol0) / (pdim*nktv2p); + + if (pstyle == TRICLINIC) { + for (i = 3; i < 6; i++) + if (p_flag[i]) + energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i]; + } + + // extra contributions from thermostat chain for barostat + + if (mpchain) { + energy += lkt_press * etap[0] + 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0]; + for (ich = 1; ich < mpchain; ich++) + energy += kt * etap[ich] + + 0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich]; + } + + // extra contribution from strain energy + + if (deviatoric_flag) energy += compute_strain_energy(); + } + + return energy; +} + +/* ---------------------------------------------------------------------- + return a single element of the following vectors, in this order: + eta[tchain], eta_dot[tchain], omega[ndof], omega_dot[ndof] + etap[pchain], etap_dot[pchain], PE_eta[tchain], KE_eta_dot[tchain] + PE_omega[ndof], KE_omega_dot[ndof], PE_etap[pchain], KE_etap_dot[pchain] + PE_strain[1] + if no thermostat exists, related quantities are omitted from the list + if no barostat exists, related quantities are omitted from the list + ndof = 1,3,6 degrees of freedom for pstyle = ISO,ANISO,TRI +------------------------------------------------------------------------- */ + +double FixBocs::compute_vector(int n) +{ + int ilen; + + if (tstat_flag) { + ilen = mtchain; + if (n < ilen) return eta[n]; + n -= ilen; + ilen = mtchain; + if (n < ilen) return eta_dot[n]; + n -= ilen; + } + + if (pstat_flag) { + if (pstyle == ISO) { + ilen = 1; + if (n < ilen) return omega[n]; + n -= ilen; + } else if (pstyle == ANISO) { + ilen = 3; + if (n < ilen) return omega[n]; + n -= ilen; + } else { + ilen = 6; + if (n < ilen) return omega[n]; + n -= ilen; + } + + if (pstyle == ISO) { + ilen = 1; + if (n < ilen) return omega_dot[n]; + n -= ilen; + } else if (pstyle == ANISO) { + ilen = 3; + if (n < ilen) return omega_dot[n]; + n -= ilen; + } else { + ilen = 6; + if (n < ilen) return omega_dot[n]; + n -= ilen; + } + + if (mpchain) { + ilen = mpchain; + if (n < ilen) return etap[n]; + n -= ilen; + ilen = mpchain; + if (n < ilen) return etap_dot[n]; + n -= ilen; + } + } + + double volume; + double kt = boltz * t_target; + double lkt_press = kt; + int ich; + if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; + else volume = domain->xprd * domain->yprd; + + if (tstat_flag) { + ilen = mtchain; + if (n < ilen) { + ich = n; + if (ich == 0) + return ke_target * eta[0]; + else + return kt * eta[ich]; + } + n -= ilen; + ilen = mtchain; + if (n < ilen) { + ich = n; + if (ich == 0) + return 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0]; + else + return 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich]; + } + n -= ilen; + } + + if (pstat_flag) { + if (pstyle == ISO) { + ilen = 1; + if (n < ilen) + return p_hydro*(volume-vol0) / nktv2p; + n -= ilen; + } else if (pstyle == ANISO) { + ilen = 3; + if (n < ilen) { + if (p_flag[n]) + return p_hydro*(volume-vol0) / (pdim*nktv2p); + else + return 0.0; + } + n -= ilen; + } else { + ilen = 6; + if (n < ilen) { + if (n > 2) return 0.0; + else if (p_flag[n]) + return p_hydro*(volume-vol0) / (pdim*nktv2p); + else + return 0.0; + } + n -= ilen; + } + + if (pstyle == ISO) { + ilen = 1; + if (n < ilen) + return pdim*0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; + n -= ilen; + } else if (pstyle == ANISO) { + ilen = 3; + if (n < ilen) { + if (p_flag[n]) + return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; + else return 0.0; + } + n -= ilen; + } else { + ilen = 6; + if (n < ilen) { + if (p_flag[n]) + return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; + else return 0.0; + } + n -= ilen; + } + + if (mpchain) { + ilen = mpchain; + if (n < ilen) { + ich = n; + if (ich == 0) return lkt_press * etap[0]; + else return kt * etap[ich]; + } + n -= ilen; + ilen = mpchain; + if (n < ilen) { + ich = n; + if (ich == 0) + return 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0]; + else + return 0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich]; + } + n -= ilen; + } + + if (deviatoric_flag) { + ilen = 1; + if (n < ilen) + return compute_strain_energy(); + n -= ilen; + } + } + + return 0.0; +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::reset_target(double t_new) +{ + t_target = t_start = t_stop = t_new; +} + +/* ---------------------------------------------------------------------- */ + +void FixBocs::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; + dthalf = 0.5 * update->dt; + dt4 = 0.25 * update->dt; + dt8 = 0.125 * update->dt; + dto = dthalf; + + // If using respa, then remap is performed in innermost level + + if (strstr(update->integrate_style,"respa")) + dto = 0.5*step_respa[0]; + + if (pstat_flag) + pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); + + if (tstat_flag) + tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain); +} + +/* ---------------------------------------------------------------------- + extract thermostat properties +------------------------------------------------------------------------- */ + +void *FixBocs::extract(const char *str, int &dim) +{ + dim=0; + if (tstat_flag && strcmp(str,"t_target") == 0) { + return &t_target; + } else if (tstat_flag && strcmp(str,"t_start") == 0) { + return &t_start; + } else if (tstat_flag && strcmp(str,"t_stop") == 0) { + return &t_stop; + } else if (tstat_flag && strcmp(str,"mtchain") == 0) { + return &mtchain; + } else if (pstat_flag && strcmp(str,"mpchain") == 0) { + return &mtchain; + } + dim=1; + if (tstat_flag && strcmp(str,"eta") == 0) { + return η + } else if (pstat_flag && strcmp(str,"etap") == 0) { + return η + } else if (pstat_flag && strcmp(str,"p_flag") == 0) { + return &p_flag; + } else if (pstat_flag && strcmp(str,"p_start") == 0) { + return &p_start; + } else if (pstat_flag && strcmp(str,"p_stop") == 0) { + return &p_stop; + } else if (pstat_flag && strcmp(str,"p_target") == 0) { + return &p_target; + } + return NULL; +} + +/* ---------------------------------------------------------------------- + perform half-step update of chain thermostat variables +------------------------------------------------------------------------- */ + +void FixBocs::nhc_temp_integrate() +{ + int ich; + double expfac; + double kecurrent = tdof * boltz * t_current; + + // Update masses, to preserve initial freq, if flag set + + if (eta_mass_flag) { + eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); + for (int ich = 1; ich < mtchain; ich++) + eta_mass[ich] = boltz * t_target / (t_freq*t_freq); + } + + if (eta_mass[0] > 0.0) + eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0]; + else eta_dotdot[0] = 0.0; + + double ncfac = 1.0/nc_tchain; + for (int iloop = 0; iloop < nc_tchain; iloop++) { + + for (ich = mtchain-1; ich > 0; ich--) { + expfac = exp(-ncfac*dt8*eta_dot[ich+1]); + eta_dot[ich] *= expfac; + eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4; + eta_dot[ich] *= tdrag_factor; + eta_dot[ich] *= expfac; + } + + expfac = exp(-ncfac*dt8*eta_dot[1]); + eta_dot[0] *= expfac; + eta_dot[0] += eta_dotdot[0] * ncfac*dt4; + eta_dot[0] *= tdrag_factor; + eta_dot[0] *= expfac; + + factor_eta = exp(-ncfac*dthalf*eta_dot[0]); + nh_v_temp(); + + // rescale temperature due to velocity scaling + // should not be necessary to explicitly recompute the temperature + + t_current *= factor_eta*factor_eta; + kecurrent = tdof * boltz * t_current; + + if (eta_mass[0] > 0.0) + eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0]; + else eta_dotdot[0] = 0.0; + + for (ich = 0; ich < mtchain; ich++) + eta[ich] += ncfac*dthalf*eta_dot[ich]; + + eta_dot[0] *= expfac; + eta_dot[0] += eta_dotdot[0] * ncfac*dt4; + eta_dot[0] *= expfac; + + for (ich = 1; ich < mtchain; ich++) { + expfac = exp(-ncfac*dt8*eta_dot[ich+1]); + eta_dot[ich] *= expfac; + eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1] + - boltz * t_target)/eta_mass[ich]; + eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4; + eta_dot[ich] *= expfac; + } + } +} + +/* ---------------------------------------------------------------------- + perform half-step update of chain thermostat variables for barostat + scale barostat velocities +------------------------------------------------------------------------- */ + +void FixBocs::nhc_press_integrate() +{ + int ich,i; + double expfac,factor_etap,kecurrent; + double kt = boltz * t_target; + double lkt_press = kt; + + // Update masses, to preserve initial freq, if flag set + + if (omega_mass_flag) { + double nkt = atom->natoms * kt; + for (int i = 0; i < 3; i++) + if (p_flag[i]) + omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + + if (pstyle == TRICLINIC) { + for (int i = 3; i < 6; i++) + if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); + } + } + + if (etap_mass_flag) { + if (mpchain) { + etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max); + for (int ich = 1; ich < mpchain; ich++) + etap_dotdot[ich] = + (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - + boltz * t_target) / etap_mass[ich]; + } + } + + kecurrent = 0.0; + for (i = 0; i < 3; i++) + if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; + + if (pstyle == TRICLINIC) { + for (i = 3; i < 6; i++) + if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; + } + + etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0]; + + double ncfac = 1.0/nc_pchain; + for (int iloop = 0; iloop < nc_pchain; iloop++) { + + for (ich = mpchain-1; ich > 0; ich--) { + expfac = exp(-ncfac*dt8*etap_dot[ich+1]); + etap_dot[ich] *= expfac; + etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4; + etap_dot[ich] *= pdrag_factor; + etap_dot[ich] *= expfac; + } + + expfac = exp(-ncfac*dt8*etap_dot[1]); + etap_dot[0] *= expfac; + etap_dot[0] += etap_dotdot[0] * ncfac*dt4; + etap_dot[0] *= pdrag_factor; + etap_dot[0] *= expfac; + + for (ich = 0; ich < mpchain; ich++) + etap[ich] += ncfac*dthalf*etap_dot[ich]; + + factor_etap = exp(-ncfac*dthalf*etap_dot[0]); + for (i = 0; i < 3; i++) + if (p_flag[i]) omega_dot[i] *= factor_etap; + + if (pstyle == TRICLINIC) { + for (i = 3; i < 6; i++) + if (p_flag[i]) omega_dot[i] *= factor_etap; + } + + kecurrent = 0.0; + for (i = 0; i < 3; i++) + if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; + + if (pstyle == TRICLINIC) { + for (i = 3; i < 6; i++) + if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; + } + + etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0]; + + etap_dot[0] *= expfac; + etap_dot[0] += etap_dotdot[0] * ncfac*dt4; + etap_dot[0] *= expfac; + + for (ich = 1; ich < mpchain; ich++) { + expfac = exp(-ncfac*dt8*etap_dot[ich+1]); + etap_dot[ich] *= expfac; + etap_dotdot[ich] = + (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz*t_target) / + etap_mass[ich]; + etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4; + etap_dot[ich] *= expfac; + } + } +} + +/* ---------------------------------------------------------------------- + perform half-step barostat scaling of velocities +-----------------------------------------------------------------------*/ + +void FixBocs::nh_v_press() +{ + double factor[3]; + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + factor[0] = exp(-dt4*(omega_dot[0]+mtk_term2)); + factor[1] = exp(-dt4*(omega_dot[1]+mtk_term2)); + factor[2] = exp(-dt4*(omega_dot[2]+mtk_term2)); + + if (which == NOBIAS) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + v[i][0] *= factor[0]; + v[i][1] *= factor[1]; + v[i][2] *= factor[2]; + if (pstyle == TRICLINIC) { + v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]); + v[i][1] += -dthalf*v[i][2]*omega_dot[3]; + } + v[i][0] *= factor[0]; + v[i][1] *= factor[1]; + v[i][2] *= factor[2]; + } + } + } else if (which == BIAS) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + temperature->remove_bias(i,v[i]); + v[i][0] *= factor[0]; + v[i][1] *= factor[1]; + v[i][2] *= factor[2]; + if (pstyle == TRICLINIC) { + v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]); + v[i][1] += -dthalf*v[i][2]*omega_dot[3]; + } + v[i][0] *= factor[0]; + v[i][1] *= factor[1]; + v[i][2] *= factor[2]; + temperature->restore_bias(i,v[i]); + } + } + } +} + +/* ---------------------------------------------------------------------- + perform half-step update of velocities +-----------------------------------------------------------------------*/ + +void FixBocs::nve_v() +{ + double dtfm; + double **v = atom->v; + double **f = atom->f; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + if (rmass) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + dtfm = dtf / rmass[i]; + v[i][0] += dtfm*f[i][0]; + v[i][1] += dtfm*f[i][1]; + v[i][2] += dtfm*f[i][2]; + } + } + } else { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + dtfm = dtf / mass[type[i]]; + v[i][0] += dtfm*f[i][0]; + v[i][1] += dtfm*f[i][1]; + v[i][2] += dtfm*f[i][2]; + } + } + } +} + +/* ---------------------------------------------------------------------- + perform full-step update of positions +-----------------------------------------------------------------------*/ + +void FixBocs::nve_x() +{ + double **x = atom->x; + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // x update by full step only for atoms in group + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + } + } +} + +/* ---------------------------------------------------------------------- + perform half-step thermostat scaling of velocities +-----------------------------------------------------------------------*/ + +void FixBocs::nh_v_temp() +{ + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + if (which == NOBIAS) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + v[i][0] *= factor_eta; + v[i][1] *= factor_eta; + v[i][2] *= factor_eta; + } + } + } else if (which == BIAS) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + temperature->remove_bias(i,v[i]); + v[i][0] *= factor_eta; + v[i][1] *= factor_eta; + v[i][2] *= factor_eta; + temperature->restore_bias(i,v[i]); + } + } + } +} + +/* ---------------------------------------------------------------------- + compute sigma tensor + needed whenever p_target or h0_inv changes +-----------------------------------------------------------------------*/ + +void FixBocs::compute_sigma() +{ + // if nreset_h0 > 0, reset vol0 and h0_inv + // every nreset_h0 timesteps + + if (nreset_h0 > 0) { + int delta = update->ntimestep - update->beginstep; + if (delta % nreset_h0 == 0) { + if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd; + else vol0 = domain->xprd * domain->yprd; + h0_inv[0] = domain->h_inv[0]; + h0_inv[1] = domain->h_inv[1]; + h0_inv[2] = domain->h_inv[2]; + h0_inv[3] = domain->h_inv[3]; + h0_inv[4] = domain->h_inv[4]; + h0_inv[5] = domain->h_inv[5]; + } + } + + // generate upper-triangular half of + // sigma = vol0*h0inv*(p_target-p_hydro)*h0inv^t + // units of sigma are are PV/L^2 e.g. atm.A + // + // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ] + // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ] + // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ] + + sigma[0] = + vol0*(h0_inv[0]*((p_target[0]-p_hydro)*h0_inv[0] + + p_target[5]*h0_inv[5]+p_target[4]*h0_inv[4]) + + h0_inv[5]*(p_target[5]*h0_inv[0] + + (p_target[1]-p_hydro)*h0_inv[5]+p_target[3]*h0_inv[4]) + + h0_inv[4]*(p_target[4]*h0_inv[0]+p_target[3]*h0_inv[5] + + (p_target[2]-p_hydro)*h0_inv[4])); + sigma[1] = + vol0*(h0_inv[1]*((p_target[1]-p_hydro)*h0_inv[1] + + p_target[3]*h0_inv[3]) + + h0_inv[3]*(p_target[3]*h0_inv[1] + + (p_target[2]-p_hydro)*h0_inv[3])); + sigma[2] = + vol0*(h0_inv[2]*((p_target[2]-p_hydro)*h0_inv[2])); + sigma[3] = + vol0*(h0_inv[1]*(p_target[3]*h0_inv[2]) + + h0_inv[3]*((p_target[2]-p_hydro)*h0_inv[2])); + sigma[4] = + vol0*(h0_inv[0]*(p_target[4]*h0_inv[2]) + + h0_inv[5]*(p_target[3]*h0_inv[2]) + + h0_inv[4]*((p_target[2]-p_hydro)*h0_inv[2])); + sigma[5] = + vol0*(h0_inv[0]*(p_target[5]*h0_inv[1]+p_target[4]*h0_inv[3]) + + h0_inv[5]*((p_target[1]-p_hydro)*h0_inv[1]+p_target[3]*h0_inv[3]) + + h0_inv[4]*(p_target[3]*h0_inv[1]+(p_target[2]-p_hydro)*h0_inv[3])); +} + +/* ---------------------------------------------------------------------- + compute strain energy +-----------------------------------------------------------------------*/ + +double FixBocs::compute_strain_energy() +{ + // compute strain energy = 0.5*Tr(sigma*h*h^t) in energy units + + double* h = domain->h; + double d0,d1,d2; + + d0 = + sigma[0]*(h[0]*h[0]+h[5]*h[5]+h[4]*h[4]) + + sigma[5]*( h[1]*h[5]+h[3]*h[4]) + + sigma[4]*( h[2]*h[4]); + d1 = + sigma[5]*( h[5]*h[1]+h[4]*h[3]) + + sigma[1]*( h[1]*h[1]+h[3]*h[3]) + + sigma[3]*( h[2]*h[3]); + d2 = + sigma[4]*( h[4]*h[2]) + + sigma[3]*( h[3]*h[2]) + + sigma[2]*( h[2]*h[2]); + + double energy = 0.5*(d0+d1+d2)/nktv2p; + return energy; +} + +/* ---------------------------------------------------------------------- + compute deviatoric barostat force = h*sigma*h^t +-----------------------------------------------------------------------*/ + +void FixBocs::compute_deviatoric() +{ + // generate upper-triangular part of h*sigma*h^t + // units of fdev are are PV, e.g. atm*A^3 + // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ] + // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ] + // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ] + + double* h = domain->h; + + fdev[0] = + h[0]*(sigma[0]*h[0]+sigma[5]*h[5]+sigma[4]*h[4]) + + h[5]*(sigma[5]*h[0]+sigma[1]*h[5]+sigma[3]*h[4]) + + h[4]*(sigma[4]*h[0]+sigma[3]*h[5]+sigma[2]*h[4]); + fdev[1] = + h[1]*( sigma[1]*h[1]+sigma[3]*h[3]) + + h[3]*( sigma[3]*h[1]+sigma[2]*h[3]); + fdev[2] = + h[2]*( sigma[2]*h[2]); + fdev[3] = + h[1]*( sigma[3]*h[2]) + + h[3]*( sigma[2]*h[2]); + fdev[4] = + h[0]*( sigma[4]*h[2]) + + h[5]*( sigma[3]*h[2]) + + h[4]*( sigma[2]*h[2]); + fdev[5] = + h[0]*( sigma[5]*h[1]+sigma[4]*h[3]) + + h[5]*( sigma[1]*h[1]+sigma[3]*h[3]) + + h[4]*( sigma[3]*h[1]+sigma[2]*h[3]); +} + +/* ---------------------------------------------------------------------- + compute target temperature and kinetic energy +-----------------------------------------------------------------------*/ + +void FixBocs::compute_temp_target() +{ + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + t_target = t_start + delta * (t_stop-t_start); + ke_target = tdof * boltz * t_target; +} + +/* ---------------------------------------------------------------------- + compute hydrostatic target pressure +-----------------------------------------------------------------------*/ + +void FixBocs::compute_press_target() +{ + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + + p_hydro = 0.0; + for (int i = 0; i < 3; i++) + if (p_flag[i]) { + p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); + p_hydro += p_target[i]; + } + if (pdim > 0) p_hydro /= pdim; + + if (pstyle == TRICLINIC) + for (int i = 3; i < 6; i++) + p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); + + // if deviatoric, recompute sigma each time p_target changes + + if (deviatoric_flag) compute_sigma(); +} + +/* ---------------------------------------------------------------------- + update omega_dot, omega +-----------------------------------------------------------------------*/ + +void FixBocs::nh_omega_dot() +{ + double f_omega,volume; + + if (dimension == 3) volume = domain->xprd*domain->yprd*domain->zprd; + else volume = domain->xprd*domain->yprd; + + if (deviatoric_flag) compute_deviatoric(); + + mtk_term1 = 0.0; + if (mtk_flag) { + if (pstyle == ISO) { + mtk_term1 = tdof * boltz * t_current; + mtk_term1 /= pdim * atom->natoms; + } else { + double *mvv_current = temperature->vector; + for (int i = 0; i < 3; i++) + if (p_flag[i]) + mtk_term1 += mvv_current[i]; + mtk_term1 /= pdim * atom->natoms; + } + } + + for (int i = 0; i < 3; i++) + if (p_flag[i]) { + f_omega = (p_current[i]-p_hydro)*volume / + (omega_mass[i] * nktv2p) + mtk_term1 / omega_mass[i]; + if (deviatoric_flag) f_omega -= fdev[i]/(omega_mass[i] * nktv2p); + omega_dot[i] += f_omega*dthalf; + omega_dot[i] *= pdrag_factor; + } + + mtk_term2 = 0.0; + if (mtk_flag) { + for (int i = 0; i < 3; i++) + if (p_flag[i]) + mtk_term2 += omega_dot[i]; + if (pdim > 0) mtk_term2 /= pdim * atom->natoms; + } + + if (pstyle == TRICLINIC) { + for (int i = 3; i < 6; i++) { + if (p_flag[i]) { + f_omega = p_current[i]*volume/(omega_mass[i] * nktv2p); + if (deviatoric_flag) + f_omega -= fdev[i]/(omega_mass[i] * nktv2p); + omega_dot[i] += f_omega*dthalf; + omega_dot[i] *= pdrag_factor; + } + } + } +} + +/* ---------------------------------------------------------------------- + if any tilt ratios exceed limits, set flip = 1 and compute new tilt values + do not flip in x or y if non-periodic (can tilt but not flip) + this is b/c the box length would be changed (dramatically) by flip + if yz tilt exceeded, adjust C vector by one B vector + if xz tilt exceeded, adjust C vector by one A vector + if xy tilt exceeded, adjust B vector by one A vector + check yz first since it may change xz, then xz check comes after + if any flip occurs, create new box in domain + image_flip() adjusts image flags due to box shape change induced by flip + remap() puts atoms outside the new box back into the new box + perform irregular on atoms in lamda coords to migrate atoms to new procs + important that image_flip comes before remap, since remap may change + image flags to new values, making eqs in doc of Domain:image_flip incorrect +------------------------------------------------------------------------- */ + +void FixBocs::pre_exchange() +{ + double xprd = domain->xprd; + double yprd = domain->yprd; + + // flip is only triggered when tilt exceeds 0.5 by DELTAFLIP + // this avoids immediate re-flipping due to tilt oscillations + + double xtiltmax = (0.5+DELTAFLIP)*xprd; + double ytiltmax = (0.5+DELTAFLIP)*yprd; + + int flipxy,flipxz,flipyz; + flipxy = flipxz = flipyz = 0; + + if (domain->yperiodic) { + if (domain->yz < -ytiltmax) { + domain->yz += yprd; + domain->xz += domain->xy; + flipyz = 1; + } else if (domain->yz >= ytiltmax) { + domain->yz -= yprd; + domain->xz -= domain->xy; + flipyz = -1; + } + } + + if (domain->xperiodic) { + if (domain->xz < -xtiltmax) { + domain->xz += xprd; + flipxz = 1; + } else if (domain->xz >= xtiltmax) { + domain->xz -= xprd; + flipxz = -1; + } + if (domain->xy < -xtiltmax) { + domain->xy += xprd; + flipxy = 1; + } else if (domain->xy >= xtiltmax) { + domain->xy -= xprd; + flipxy = -1; + } + } + + int flip = 0; + if (flipxy || flipxz || flipyz) flip = 1; + + if (flip) { + domain->set_global_box(); + domain->set_local_box(); + + domain->image_flip(flipxy,flipxz,flipyz); + + double **x = atom->x; + imageint *image = atom->image; + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); + + domain->x2lamda(atom->nlocal); + irregular->migrate_atoms(); + domain->lamda2x(atom->nlocal); + } +} + +/* ---------------------------------------------------------------------- + memory usage of Irregular +------------------------------------------------------------------------- */ + +double FixBocs::memory_usage() +{ + double bytes = 0.0; + if (irregular) bytes += irregular->memory_usage(); + return bytes; +} diff --git a/src/USER-BOCS/fix_bocs.h b/src/USER-BOCS/fix_bocs.h new file mode 100644 index 0000000000..34090e4f3a --- /dev/null +++ b/src/USER-BOCS/fix_bocs.h @@ -0,0 +1,302 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- + USER-BOCS written by: Nicholas J. H. Dunn and Michael R. DeLyser + from The Pennsylvania State University +------------------------------------------------------------------------- */ + + +#ifdef FIX_CLASS + +FixStyle(bocs,FixBocs) + +#else + +#ifndef LMP_FIX_BOCS_H +#define LMP_FIX_BOCS_H + +#include "fix.h" + + +namespace LAMMPS_NS { + +class FixBocs : public Fix { + public: + FixBocs(class LAMMPS *, int, char **); // MRD NJD + virtual ~FixBocs(); // MRD NJD + int setmask(); + virtual void init(); + virtual void setup(int); + virtual void initial_integrate(int); + virtual void final_integrate(); + void initial_integrate_respa(int, int, int); + void final_integrate_respa(int, int); + virtual void pre_exchange(); + double compute_scalar(); + virtual double compute_vector(int); + void write_restart(FILE *); + virtual int pack_restart_data(double *); // pack restart data + virtual void restart(char *); + int modify_param(int, char **); + void reset_target(double); + void reset_dt(); + virtual void *extract(const char*,int &); + double memory_usage(); + + + protected: + int dimension,which; + double dtv,dtf,dthalf,dt4,dt8,dto; + double boltz,nktv2p,tdof; + double vol0; // reference volume + double t0; // reference temperature + // used for barostat mass + double t_start,t_stop; + double t_current,t_target,ke_target; + double t_freq; + + int tstat_flag; // 1 if control T + int pstat_flag; // 1 if control P + + int pstyle,pcouple,allremap; + int p_flag[6]; // 1 if control P on this dim, 0 if not + double p_start[6],p_stop[6]; + double p_freq[6],p_target[6]; + double omega[6],omega_dot[6]; + double omega_mass[6]; + double p_current[6]; + double drag,tdrag_factor; // drag factor on particle thermostat + double pdrag_factor; // drag factor on barostat + int kspace_flag; // 1 if KSpace invoked, 0 if not + int nrigid; // number of rigid fixes + int dilate_group_bit; // mask for dilation group + int *rfix; // indices of rigid fixes + char *id_dilate; // group name to dilate + class Irregular *irregular; // for migrating atoms after box flips + +// MRD NJD + int p_basis_type; + int p_match_flag; + double vavg; + int N_mol; + int N_p_match; + double *p_match_coeffs; + double ** splines; + int spline_length; + + + int nlevels_respa; + double *step_respa; + + char *id_temp,*id_press; + class Compute *temperature,*pressure; + int tcomputeflag,pcomputeflag; // 1 = compute was created by fix + // 0 = created externally + + double *eta,*eta_dot; // chain thermostat for particles + double *eta_dotdot; + double *eta_mass; + int mtchain; // length of chain + int mtchain_default_flag; // 1 = mtchain is default + + double *etap; // chain thermostat for barostat + double *etap_dot; + double *etap_dotdot; + double *etap_mass; + int mpchain; // length of chain + + int mtk_flag; // 0 if using Hoover barostat + int pdim; // number of barostatted dims + double p_freq_max; // maximum barostat frequency + + double p_hydro; // hydrostatic target pressure + + int nc_tchain,nc_pchain; + double factor_eta; + double sigma[6]; // scaled target stress + double fdev[6]; // deviatoric force on barostat + int deviatoric_flag; // 0 if target stress tensor is hydrostatic + double h0_inv[6]; // h_inv of reference (zero strain) box + int nreset_h0; // interval for resetting h0 + + double mtk_term1,mtk_term2; // Martyna-Tobias-Klein corrections + + int eta_mass_flag; // 1 if eta_mass updated, 0 if not. + int omega_mass_flag; // 1 if omega_mass updated, 0 if not. + int etap_mass_flag; // 1 if etap_mass updated, 0 if not. + int dipole_flag; // 1 if dipole is updated, 0 if not. + int dlm_flag; // 1 if using the DLM rotational integrator, 0 if not + + int scaleyz; // 1 if yz scaled with lz + int scalexz; // 1 if xz scaled with lz + int scalexy; // 1 if xy scaled with ly + int flipflag; // 1 if box flips are invoked as needed + + int pre_exchange_flag; // set if pre_exchange needed for box flips + + double fixedpoint[3]; // location of dilation fixed-point + + void couple(); + virtual void remap(); + void nhc_temp_integrate(); + void nhc_press_integrate(); + + int read_F_table(char *, int); + void build_cubic_splines(double **); + + virtual void nve_x(); // may be overwritten by child classes + virtual void nve_v(); + virtual void nh_v_press(); + virtual void nh_v_temp(); + virtual void compute_temp_target(); + virtual int size_restart_global(); + + void compute_sigma(); + void compute_deviatoric(); + double compute_strain_energy(); + void compute_press_target(); + void nh_omega_dot(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Target temperature for fix bocs cannot be 0.0 + +Self-explanatory. + +E: Invalid fix bocs command for a 2d simulation + +Cannot control z dimension in a 2d model. + +E: Fix bocs dilate group ID does not exist + +Self-explanatory. + +E: Invalid fix bocs command pressure settings + +If multiple dimensions are coupled, those dimensions must be +specified. + +E: Cannot use fix bocs on a non-periodic dimension + +When specifying a diagonal pressure component, the dimension must be +periodic. + +E: Cannot use fix bocs on a 2nd non-periodic dimension + +When specifying an off-diagonal pressure component, the 2nd of the two +dimensions must be periodic. E.g. if the xy component is specified, +then the y dimension must be periodic. + +E: Cannot use fix bocs with yz scaling when z is non-periodic dimension + +The 2nd dimension in the barostatted tilt factor must be periodic. + +E: Cannot use fix bocs with xz scaling when z is non-periodic dimension + +The 2nd dimension in the barostatted tilt factor must be periodic. + +E: Cannot use fix bocs with xy scaling when y is non-periodic dimension + +The 2nd dimension in the barostatted tilt factor must be periodic. + +E: Cannot use fix bocs with both yz dynamics and yz scaling + +Self-explanatory. + +E: Cannot use fix bocs with both xz dynamics and xz scaling + +Self-explanatory. + +E: Cannot use fix bocs with both xy dynamics and xy scaling + +Self-explanatory. + +E: Can not specify Pxy/Pxz/Pyz in fix bocs with non-triclinic box + +Only triclinic boxes can be used with off-diagonal pressure components. +See the region prism command for details. + +E: Invalid fix bocs pressure settings + +Settings for coupled dimensions must be the same. + +E: Using update dipole flag requires atom style sphere + +Self-explanatory. + +E: Using update dipole flag requires atom attribute mu + +Self-explanatory. + +E: The dlm flag must be used with update dipole + +Self-explanatory. + +E: Fix bocs damping parameters must be > 0.0 + +Self-explanatory. + +E: Cannot use fix npt and fix deform on same component of stress tensor + +This would be changing the same box dimension twice. + +E: Temperature ID for fix bocs does not exist + +Self-explanatory. + +E: Pressure ID for fix bocs does not exist + +Self-explanatory. + +E: Fix bocs has tilted box too far in one step - periodic cell is too far from equilibrium state + +Self-explanatory. The change in the box tilt is too extreme +on a short timescale. + +E: Could not find fix_modify temperature ID + +The compute ID for computing temperature does not exist. + +E: Fix_modify temperature ID does not compute temperature + +The compute ID assigned to the fix must compute temperature. + +W: Temperature for fix modify is not for group all + +The temperature compute is being used with a pressure calculation +which does operate on group all, so this may be inconsistent. + +E: Pressure ID for fix modify does not exist + +Self-explanatory. + +E: Could not find fix_modify pressure ID + +The compute ID for computing pressure does not exist. + +E: Fix_modify pressure ID does not compute pressure + +The compute ID assigned to the fix must compute pressure. + +*/ diff --git a/src/USER-CGDNA/bond_oxdna_fene.cpp b/src/USER-CGDNA/bond_oxdna_fene.cpp index da1eb38e76..47d8d8f60b 100644 --- a/src/USER-CGDNA/bond_oxdna_fene.cpp +++ b/src/USER-CGDNA/bond_oxdna_fene.cpp @@ -242,7 +242,7 @@ void BondOxdnaFene::coeff(int narg, char **arg) void BondOxdnaFene::init_style() { /* special bonds have to be lj = 0 1 1 and coul = 1 1 1 to exclude - the ss excluded volume interaction between nearest neighbours */ + the ss excluded volume interaction between nearest neighbors */ force->special_lj[1] = 0.0; force->special_lj[2] = 1.0; diff --git a/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp b/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp index 3a80de436a..151e752692 100644 --- a/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp +++ b/src/USER-CGDNA/pair_oxdna2_coaxstk.cpp @@ -157,7 +157,7 @@ void PairOxdna2Coaxstk::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -183,7 +183,7 @@ void PairOxdna2Coaxstk::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; diff --git a/src/USER-CGDNA/pair_oxdna2_dh.cpp b/src/USER-CGDNA/pair_oxdna2_dh.cpp index f4f78685b7..974ade89c1 100644 --- a/src/USER-CGDNA/pair_oxdna2_dh.cpp +++ b/src/USER-CGDNA/pair_oxdna2_dh.cpp @@ -122,7 +122,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -145,7 +145,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; @@ -186,7 +186,7 @@ void PairOxdna2Dh::compute(int eflag, int vflag) } - // knock out nearest-neighbour interaction between adjacent backbone sites + // knock out nearest-neighbor interaction between adjacent backbone sites fpair *= factor_lj; evdwl *= factor_lj; diff --git a/src/USER-CGDNA/pair_oxdna_coaxstk.cpp b/src/USER-CGDNA/pair_oxdna_coaxstk.cpp index 11689df738..0eb75fbb43 100644 --- a/src/USER-CGDNA/pair_oxdna_coaxstk.cpp +++ b/src/USER-CGDNA/pair_oxdna_coaxstk.cpp @@ -163,7 +163,7 @@ void PairOxdnaCoaxstk::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -189,7 +189,7 @@ void PairOxdnaCoaxstk::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; diff --git a/src/USER-CGDNA/pair_oxdna_excv.cpp b/src/USER-CGDNA/pair_oxdna_excv.cpp index 31762018a3..e2b8334078 100644 --- a/src/USER-CGDNA/pair_oxdna_excv.cpp +++ b/src/USER-CGDNA/pair_oxdna_excv.cpp @@ -152,7 +152,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -179,7 +179,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; @@ -222,7 +222,7 @@ void PairOxdnaExcv::compute(int eflag, int vflag) evdwl = F3(rsq_ss,cutsq_ss_ast[atype][btype],cut_ss_c[atype][btype],lj1_ss[atype][btype], lj2_ss[atype][btype],epsilon_ss[atype][btype],b_ss[atype][btype],fpair); - // knock out nearest-neighbour interaction between ss + // knock out nearest-neighbor interaction between ss fpair *= factor_lj; evdwl *= factor_lj; diff --git a/src/USER-CGDNA/pair_oxdna_hbond.cpp b/src/USER-CGDNA/pair_oxdna_hbond.cpp index 3d3ba9b456..ce1bfe036a 100644 --- a/src/USER-CGDNA/pair_oxdna_hbond.cpp +++ b/src/USER-CGDNA/pair_oxdna_hbond.cpp @@ -168,7 +168,7 @@ void PairOxdnaHbond::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -188,7 +188,7 @@ void PairOxdnaHbond::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; diff --git a/src/USER-CGDNA/pair_oxdna_xstk.cpp b/src/USER-CGDNA/pair_oxdna_xstk.cpp index d456c0117c..e5b9de81c0 100644 --- a/src/USER-CGDNA/pair_oxdna_xstk.cpp +++ b/src/USER-CGDNA/pair_oxdna_xstk.cpp @@ -160,7 +160,7 @@ void PairOxdnaXstk::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // loop over pair interaction neighbours of my atoms + // loop over pair interaction neighbors of my atoms for (ia = 0; ia < anum; ia++) { @@ -180,7 +180,7 @@ void PairOxdnaXstk::compute(int eflag, int vflag) for (ib = 0; ib < bnum; ib++) { b = blist[ib]; - factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbours + factor_lj = special_lj[sbmask(b)]; // = 0 for nearest neighbors b &= NEIGHMASK; btype = type[b]; diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index b8b002a7fa..c370f8abe6 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -260,6 +260,7 @@ void FixRX::post_constructor() error->all(FLERR,"fix rx cannot be combined with fix property/atom"); char **tmpspecies = new char*[maxspecies]; + int tmpmaxstrlen = 0; for(int jj=0; jj < maxspecies; jj++) tmpspecies[jj] = NULL; @@ -320,6 +321,7 @@ void FixRX::post_constructor() error->all(FLERR,"Exceeded the maximum number of species permitted in fix rx."); tmpspecies[nUniqueSpecies] = new char[strlen(word)+1]; strcpy(tmpspecies[nUniqueSpecies],word); + tmpmaxstrlen = MAX(tmpmaxstrlen,strlen(word)); nUniqueSpecies++; } word = strtok(NULL, " \t\n\r\f"); @@ -354,9 +356,9 @@ void FixRX::post_constructor() newarg2[0] = id_fix_species_old; newarg2[1] = group->names[igroup]; newarg2[2] = (char *) "property/atom"; + char *str1 = new char[tmpmaxstrlen+3]; + char *str2 = new char[tmpmaxstrlen+6]; for(int ii=0; ii::setup(int) { if (!rmass) { if (!mcoeff) mcoeff = new double[ntypes+1]; - double mcoeff_loc[ntypes+1]; + double *mcoeff_loc = new double[ntypes+1]; for (int itype=0; itype<=ntypes; itype++) mcoeff_loc[itype] = 2.; // an impossible value: mcoeff is at most 1. for (int i=0; i::setup(int) { // mcoeff is 2 for non polarizable // 0 < mcoeff < 1 for drude // mcoeff < 0 for core + delete[] mcoeff_loc; } } @@ -313,6 +314,6 @@ void FixDrudeTransform::unpack_forward_comm(int n, int first, double *b } /* ---------------------------------------------------------------------- */ -template class FixDrudeTransform; -template class FixDrudeTransform; +template class LAMMPS_NS::FixDrudeTransform; +template class LAMMPS_NS::FixDrudeTransform; diff --git a/src/USER-INTEL/Install.sh b/src/USER-INTEL/Install.sh index da553d158a..8c291f0ae2 100644 --- a/src/USER-INTEL/Install.sh +++ b/src/USER-INTEL/Install.sh @@ -38,6 +38,8 @@ for file in *_intel.h; do action $file $dep done +# step 2: handle cases and tasks not handled in step 1. + action intel_preprocess.h action intel_buffers.h action intel_buffers.cpp @@ -50,8 +52,6 @@ action intel_simd.h action intel_intrinsics.h pair_tersoff_intel.cpp action intel_intrinsics_airebo.h pair_airebo_intel.cpp -# step 2: handle cases and tasks not handled in step 1. - if (test $mode = 1) then if (test -e ../Makefile.package) then diff --git a/src/USER-INTEL/dihedral_opls_intel.cpp b/src/USER-INTEL/dihedral_opls_intel.cpp index f85eb50b02..832ce7ed50 100644 --- a/src/USER-INTEL/dihedral_opls_intel.cpp +++ b/src/USER-INTEL/dihedral_opls_intel.cpp @@ -185,13 +185,6 @@ void DihedralOPLSIntel::eval(const int vflag, const flt_t vb3y = x[i4].y - x[i3].y; const flt_t vb3z = x[i4].z - x[i3].z; - // 1-4 - - const flt_t delx = x[i1].x - x[i4].x; - const flt_t dely = x[i1].y - x[i4].y; - const flt_t delz = x[i1].z - x[i4].z; - - // c0 calculation // 1st and 2nd angle diff --git a/src/USER-LB/fix_lb_momentum.cpp b/src/USER-LB/fix_lb_momentum.cpp index 6cf2d3bfd0..490b95ef71 100644 --- a/src/USER-LB/fix_lb_momentum.cpp +++ b/src/USER-LB/fix_lb_momentum.cpp @@ -102,8 +102,8 @@ void FixLbMomentum::end_of_step() double masslb,masslbloc; double momentumlbloc[3],momentumlb[3]; double vcmtotal[3]; - int numvel = fix_lb_fluid->numvel; - double etacov[numvel]; + const int numvel = fix_lb_fluid->numvel; + double etacov[19]; // = double etacov[numvel]; i.e. 15 or 19 double rho; if (linear) { diff --git a/src/USER-MEAMC/meam.h b/src/USER-MEAMC/meam.h index 8a439a2118..42fd722e01 100644 --- a/src/USER-MEAMC/meam.h +++ b/src/USER-MEAMC/meam.h @@ -255,5 +255,5 @@ static inline double fdiv_zero(const double n, const double d) { return n / d; } -}; +} #endif diff --git a/src/USER-MESO/pair_edpd.cpp b/src/USER-MESO/pair_edpd.cpp index f1d9c215b4..351637a842 100644 --- a/src/USER-MESO/pair_edpd.cpp +++ b/src/USER-MESO/pair_edpd.cpp @@ -59,7 +59,6 @@ static const char cite_pair_edpd[] = " volume = {51},\n" " pages = {11038--11040}\n" "}\n\n"; -; /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MESO/pair_tdpd.cpp b/src/USER-MESO/pair_tdpd.cpp index 0d0d2a3a0a..b8bbf6d622 100644 --- a/src/USER-MESO/pair_tdpd.cpp +++ b/src/USER-MESO/pair_tdpd.cpp @@ -280,7 +280,9 @@ void PairTDPD::coeff(int narg, char **arg) double power_one = force->numeric(FLERR,arg[4]); double cut_one = force->numeric(FLERR,arg[5]); double cutcc_one = force->numeric(FLERR,arg[6]); - double kappa_one[cc_species],epsilon_one[cc_species],powercc_one[cc_species]; + double *kappa_one = new double[cc_species]; + double *epsilon_one = new double[cc_species]; + double *powercc_one = new double[cc_species]; for(int k=0; knumeric(FLERR,arg[7+3*k]); epsilon_one[k] = force->numeric(FLERR,arg[8+3*k]); @@ -304,6 +306,9 @@ void PairTDPD::coeff(int narg, char **arg) setflag[i][j] = 1; count++; } + delete[] kappa_one; + delete[] epsilon_one; + delete[] powercc_one; if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); } diff --git a/src/USER-MISC/compute_ackland_atom.cpp b/src/USER-MISC/compute_ackland_atom.cpp index dcf17ca489..a17aefe71b 100644 --- a/src/USER-MISC/compute_ackland_atom.cpp +++ b/src/USER-MISC/compute_ackland_atom.cpp @@ -12,8 +12,9 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: G. Ziegenhain, gerolf@ziegenhain.com - Copyright (C) 2007 + Contributing author: G. Ziegenhain, gerolf@ziegenhain.com + Copyright (C) 2007 + Updated algorithm by: Brian Barnes, brian.c.barnes11.civ@mail.mil ------------------------------------------------------------------------- */ #include @@ -40,7 +41,8 @@ enum{UNKNOWN,BCC,FCC,HCP,ICO}; ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal compute ackland/atom command"); + if ((narg < 3) || (narg > 5)) + error->all(FLERR,"Illegal compute ackland/atom command"); peratom_flag = 1; size_peratom_cols = 0; @@ -48,10 +50,26 @@ ComputeAcklandAtom::ComputeAcklandAtom(LAMMPS *lmp, int narg, char **arg) : nmax = 0; structure = NULL; maxneigh = 0; + legacy = 0; distsq = NULL; nearest = NULL; nearest_n0 = NULL; nearest_n1 = NULL; + + int iarg = 3; + while (narg > iarg) { + if (strcmp("legacy",arg[iarg]) == 0) { + ++iarg; + if (iarg >= narg) + error->all(FLERR,"Invalid compute ackland/atom command"); + if (strcmp("yes",arg[iarg]) == 0) + legacy = 1; + else if (strcmp("no",arg[iarg]) == 0) + legacy = 0; + else error->all(FLERR,"Invalid compute ackland/atom command"); + } + ++iarg; + } } /* ---------------------------------------------------------------------- */ @@ -140,13 +158,13 @@ void ComputeAcklandAtom::compute_peratom() // ensure distsq and nearest arrays are long enough if (jnum > maxneigh) { - memory->destroy(distsq); - memory->destroy(nearest); + memory->destroy(distsq); + memory->destroy(nearest); memory->destroy(nearest_n0); memory->destroy(nearest_n1); - maxneigh = jnum; - memory->create(distsq,maxneigh,"compute/ackland/atom:distsq"); - memory->create(nearest,maxneigh,"compute/ackland/atom:nearest"); + maxneigh = jnum; + memory->create(distsq,maxneigh,"compute/ackland/atom:distsq"); + memory->create(nearest,maxneigh,"compute/ackland/atom:nearest"); memory->create(nearest_n0,maxneigh,"compute/ackland/atom:nearest_n0"); memory->create(nearest_n1,maxneigh,"compute/ackland/atom:nearest_n1"); } @@ -157,14 +175,14 @@ void ComputeAcklandAtom::compute_peratom() n = 0; for (jj = 0; jj < jnum; jj++) { - j = jlist[jj]; + j = jlist[jj]; j &= NEIGHMASK; - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - if (rsq < cutsq) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { distsq[n] = rsq; nearest[n++] = j; } @@ -188,12 +206,12 @@ void ComputeAcklandAtom::compute_peratom() n1_dist_sq = 1.55*r0_sq; int n0 = 0, n1 = 0; for (j = 0; j < n; j++) { - if (distsq[j] < n1_dist_sq) { - nearest_n1[n1++] = nearest[j]; - if (distsq[j] < n0_dist_sq) { - nearest_n0[n0++] = nearest[j]; - } - } + if (distsq[j] < n1_dist_sq) { + nearest_n1[n1++] = nearest[j]; + if (distsq[j] < n0_dist_sq) { + nearest_n0[n0++] = nearest[j]; + } + } } // Evaluate all angles <(r_ij,rik) forall n0 particles with: @@ -231,47 +249,98 @@ void ComputeAcklandAtom::compute_peratom() else chi[7]++; } } + if (legacy) { - if (chi[7] > 0 || n0 < 11) structure[i] = UNKNOWN; - else if (chi[0] == 7) structure[i] = BCC; - else if (chi[0] == 6) structure[i] = FCC; - else if (chi[0] == 3) structure[i] = HCP; - else { + // This is the original implementation by Gerolf Ziegenhain // Deviations from the different lattice structures + double delta_bcc = 0.35*chi[4]/(double)(chi[5]+chi[6]-chi[4]); double delta_cp = fabs(1.-(double)chi[6]/24.); + double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6.))+ + (double)chi[2])/6.0; + double delta_hcp = (fabs((double)chi[0]-3.)+ + fabs((double)chi[0]+(double)chi[1]+ + (double)chi[2]+(double)chi[3]-9.0))/12.0; - // ensure we do not get divide by zero - // and if we will, make delta_bcc irrelevant - double delta_bcc = delta_cp + 1.0; - int chi56m4 = chi[5]+chi[6]-chi[4]; + // Identification of the local structure according to the reference - // note that chi[7] presumed zero - if (chi56m4 != 0) delta_bcc = 0.35*chi[4]/(double)chi56m4; + if (chi[0] == 7) { delta_bcc = 0.; } + else if (chi[0] == 6) { delta_fcc = 0.; } + else if (chi[0] <= 3) { delta_hcp = 0.; } - double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6)) - +(double)chi[2])/6.0; - - double delta_hcp = (fabs((double)chi[0]-3.)+fabs((double)chi[0] - +(double)chi[1]+(double)chi[2]+(double)chi[3] - -9.0))/12.0; - - // Identification of the local structure according to the reference - - if (delta_bcc >= 0.1 && delta_cp >= 0.1 && delta_fcc >= 0.1 - && delta_hcp >= 0.1) structure[i] = UNKNOWN; - - // not part of Ackland-Jones 2006; included for backward compatibility - if (chi[4] < 3. && n1 == 12) structure[i] = ICO; - - else { - if (delta_bcc <= delta_cp && n1 > 10 && n1 < 13) structure[i] = BCC; - else { - if (n0 > 12) structure[i] = UNKNOWN; - else { - if (delta_fcc < delta_hcp) structure[i] = FCC; + if (chi[7] > 0.) + structure[i] = UNKNOWN; + else + if (chi[4] < 3.) + { + if (n1 > 13 || n1 < 11) + structure[i] = UNKNOWN; else - structure[i] = HCP; + structure[i] = ICO; + } else + if (delta_bcc <= delta_cp) + { + if (n1 < 11) + structure[i] = UNKNOWN; + else + structure[i] = BCC; + } else + if (n1 > 12 || n1 < 11) + structure[i] = UNKNOWN; + else + if (delta_fcc < delta_hcp) + structure[i] = FCC; + else + structure[i] = HCP; + + } else { + + // This is the updated implementation by Brian Barnes + + if (chi[7] > 0 || n0 < 11) structure[i] = UNKNOWN; + else if (chi[0] == 7) structure[i] = BCC; + else if (chi[0] == 6) structure[i] = FCC; + else if (chi[0] == 3) structure[i] = HCP; + else { + // Deviations from the different lattice structures + + double delta_cp = fabs(1.-(double)chi[6]/24.); + + // ensure we do not get divide by zero + // and if we will, make delta_bcc irrelevant + double delta_bcc = delta_cp + 1.0; + int chi56m4 = chi[5]+chi[6]-chi[4]; + + // note that chi[7] presumed zero + if (chi56m4 != 0) delta_bcc = 0.35*chi[4]/(double)chi56m4; + + double delta_fcc = 0.61*(fabs((double)(chi[0]+chi[1]-6)) + +(double)chi[2])/6.0; + + double delta_hcp = (fabs((double)chi[0]-3.) + +fabs((double)chi[0] + +(double)chi[1] + +(double)chi[2] + +(double)chi[3] + -9.0))/12.0; + + // Identification of the local structure according to the reference + + if (delta_bcc >= 0.1 && delta_cp >= 0.1 && delta_fcc >= 0.1 + && delta_hcp >= 0.1) structure[i] = UNKNOWN; + + // not part of Ackland-Jones 2006; included for backward compatibility + if (chi[4] < 3. && n1 == 12) structure[i] = ICO; + + else { + if (delta_bcc <= delta_cp && n1 > 10 && n1 < 13) structure[i] = BCC; + else { + if (n0 > 12) structure[i] = UNKNOWN; + else { + if (delta_fcc < delta_hcp) structure[i] = FCC; + else + structure[i] = HCP; + } } } } diff --git a/src/USER-MISC/compute_ackland_atom.h b/src/USER-MISC/compute_ackland_atom.h index 5464a10f87..dd70762627 100644 --- a/src/USER-MISC/compute_ackland_atom.h +++ b/src/USER-MISC/compute_ackland_atom.h @@ -34,7 +34,7 @@ class ComputeAcklandAtom : public Compute { double memory_usage(); private: - int nmax,maxneigh; + int nmax,maxneigh,legacy; double *distsq; int *nearest, *nearest_n0, *nearest_n1; double *structure; diff --git a/src/USER-MISC/compute_basal_atom.cpp b/src/USER-MISC/compute_basal_atom.cpp index 1da43a6baf..4d8627a11f 100644 --- a/src/USER-MISC/compute_basal_atom.cpp +++ b/src/USER-MISC/compute_basal_atom.cpp @@ -204,8 +204,11 @@ void ComputeBasalAtom::compute_peratom() double bond_angle; double norm_j, norm_k; chi[0] = chi[1] = chi[2] = chi[3] = chi[4] = chi[5] = chi[6] = chi[7] = 0; - double x_ij, y_ij, z_ij, x_ik, y_ik, z_ik,x3[n0],y3[n0],z3[n0], - xmean5, ymean5, zmean5, xmean6, ymean6, zmean6, xmean7, ymean7, zmean7; + double x_ij, y_ij, z_ij, x_ik, y_ik, z_ik, xmean5, ymean5, zmean5, + xmean6, ymean6, zmean6, xmean7, ymean7, zmean7; + double *x3 = new double[n0]; + double *y3 = new double[n0]; + double *z3 = new double[n0]; for (j = 0; j < n0; j++) { x_ij = x[i][0]-x[nearest_n0[j]][0]; y_ij = x[i][1]-x[nearest_n0[j]][1]; @@ -411,9 +414,12 @@ void ComputeBasalAtom::compute_peratom() } } } - } - //if there are less than two ~180 degree bond angles, the algorithm returns null - else BPV[i][0] = BPV[i][1] = BPV[i][2] = 0.0; + //if there are less than two ~180 degree bond angles, the algorithm returns null + } else BPV[i][0] = BPV[i][1] = BPV[i][2] = 0.0; + + delete[] x3; + delete[] y3; + delete[] z3; //normalize BPV: double Mag = sqrt(BPV[i][0]*BPV[i][0] + diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index b3c92eed67..86da8a0c4f 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -43,6 +43,17 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu) using namespace LAMMPS_NS; using namespace FixConst; +static const char cite_fix_bond_react[] = + "fix bond/react:\n\n" + "@Article{Gissinger17,\n" + " author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n" + " title = {Modeling chemical reactions in classical molecular dynamics simulations},\n" + " journal = {Polymer},\n" + " year = 2017,\n" + " volume = 128,\n" + " pages = {211--217}\n" + "}\n\n"; + #define BIG 1.0e20 #define DELTA 16 #define MAXLINE 256 @@ -62,6 +73,8 @@ enum{ACCEPT,REJECT,PROCEED,CONTINUE,GUESSFAIL,RESTORE}; FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { + if (lmp->citeme) lmp->citeme->add(cite_fix_bond_react); + fix1 = NULL; fix2 = NULL; @@ -71,7 +84,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : MPI_Comm_size(world,&nprocs); attempted_rxn = 0; - ghostcheck_flag = 0; force_reneighbor = 1; next_reneighbor = -1; vector_flag = 1; @@ -127,7 +139,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : // this looks excessive // the price of vectorization (all reactions in one command)? memory->create(nevery,nreacts,"bond/react:nevery"); - memory->create(cutsq,nreacts,"bond/react:cutsq"); + memory->create(cutsq,nreacts,2,"bond/react:cutsq"); memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol"); memory->create(reacted_mol,nreacts,"bond/react:reacted_mol"); memory->create(fraction,nreacts,"bond/react:fraction"); @@ -138,6 +150,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(jatomtype,nreacts,"bond/react:jatomtype"); memory->create(ibonding,nreacts,"bond/react:ibonding"); memory->create(jbonding,nreacts,"bond/react:jbonding"); + memory->create(closeneigh,nreacts,"bond/react:closeneigh"); memory->create(groupbits,nreacts,"bond/react:groupbits"); memory->create(reaction_count,nreacts,"bond/react:reaction_count"); memory->create(local_rxn_count,nreacts,"bond/react:local_rxn_count"); @@ -176,7 +189,11 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : double cutoff = force->numeric(FLERR,arg[iarg++]); if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.5"); - cutsq[rxn] = cutoff*cutoff; + cutsq[rxn][0] = cutoff*cutoff; + + cutoff = force->numeric(FLERR,arg[iarg++]); + if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/react command 0.55"); + cutsq[rxn][1] = cutoff*cutoff; unreacted_mol[rxn] = atom->find_molecule(arg[iarg++]); if (unreacted_mol[rxn] == -1) error->all(FLERR,"Unreacted molecule template ID for " @@ -241,6 +258,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : if (atom->molecular != 1) error->all(FLERR,"Cannot use fix bond/react with non-molecular systems"); + // check if bonding atoms are 1-2, 1-3, or 1-4 bonded neighbors + // if so, we don't need non-bonded neighbor list + for (int myrxn = 0; myrxn < nreacts; myrxn++) { + closeneigh[myrxn] = -1; // indicates will search non-bonded neighbors + onemol = atom->molecules[unreacted_mol[myrxn]]; + for (int k = 0; k < onemol->nspecial[ibonding[myrxn]-1][2]; k++) { + if (onemol->special[ibonding[myrxn]-1][k] == jbonding[myrxn]) { + closeneigh[myrxn] = 2; // index for 1-4 neighbor + if (k < onemol->nspecial[ibonding[myrxn]-1][1]) + closeneigh[myrxn] = 1; // index for 1-3 neighbor + if (k < onemol->nspecial[ibonding[myrxn]-1][0]) + closeneigh[myrxn] = 0; // index for 1-2 neighbor + break; + } + } + } + // initialize Marsaglia RNG with processor-unique seed random = new class RanMars*[nreacts]; @@ -259,6 +293,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : nmax = 0; partner = finalpartner = NULL; distsq = NULL; + probability = NULL; maxcreate = 0; created = NULL; local_ncreate = NULL; @@ -302,6 +337,7 @@ FixBondReact::~FixBondReact() memory->destroy(local_ncreate); memory->destroy(ncreate); memory->destroy(distsq); + memory->destroy(probability); memory->destroy(created); memory->destroy(edge); memory->destroy(equivalences); @@ -320,6 +356,7 @@ FixBondReact::~FixBondReact() memory->destroy(jatomtype); memory->destroy(ibonding); memory->destroy(jbonding); + memory->destroy(closeneigh); memory->destroy(groupbits); memory->destroy(reaction_count); memory->destroy(local_rxn_count); @@ -372,7 +409,7 @@ it will have the name 'i_limit_tags' and will be intitialized to 0 (not in group void FixBondReact::post_constructor() { - //let's add the limit_tags per-atom property fix + // let's add the limit_tags per-atom property fix int len = strlen("per_atom_props") + 1; id_fix2 = new char[len]; strcpy(id_fix2,"per_atom_props"); @@ -521,7 +558,7 @@ void FixBondReact::init() // check cutoff for iatomtype,jatomtype for (int i = 0; i < nreacts; i++) { - if (force->pair == NULL || cutsq[i] > force->pair->cutsq[iatomtype[i]][jatomtype[i]]) + if (force->pair == NULL || cutsq[i][1] > force->pair->cutsq[iatomtype[i]][jatomtype[i]]) error->all(FLERR,"Fix bond/react cutoff is longer than pairwise cutoff"); } @@ -548,10 +585,6 @@ void FixBondReact::init_list(int id, NeighList *ptr) void FixBondReact::post_integrate() { - int inum,jnum,itype,jtype,possible; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *ilist,*jlist,*numneigh,**firstneigh; - // check if any reactions could occur on this timestep int nevery_check = 1; for (int i = 0; i < nreacts; i++) { @@ -578,7 +611,6 @@ void FixBondReact::post_integrate() comm->forward_comm(); // resize bond partner list and initialize it - // probability array overlays distsq array // needs to be atom->nmax in length if (atom->nmax > nmax) { @@ -587,13 +619,14 @@ void FixBondReact::post_integrate() memory->destroy(distsq); memory->destroy(local_ncreate); memory->destroy(ncreate); + memory->destroy(probability); nmax = atom->nmax; memory->create(partner,nmax,"bond/react:partner"); memory->create(finalpartner,nmax,"bond/react:finalpartner"); - memory->create(distsq,nmax,"bond/react:distsq"); + memory->create(distsq,nmax,2,"bond/react:distsq"); memory->create(local_ncreate,nreacts,"bond/react:local_ncreate"); memory->create(ncreate,nreacts,"bond/react:ncreate"); - probability = distsq; + memory->create(probability,nmax,"bond/react:probability"); } // reset create counts @@ -605,129 +638,28 @@ void FixBondReact::post_integrate() int nlocal = atom->nlocal; int nall = atom->nlocal + atom->nghost; - // NOTE: this might be faster if we remembered neighbor distances from - // previous timestep and used those --JG - // loop over neighbors of my atoms // each atom sets one closest eligible partner atom ID to bond with - double **x = atom->x; tagint *tag = atom->tag; - int **nspecial = atom->nspecial; - tagint **special = atom->special; - int *mask = atom->mask; int *type = atom->type; neighbor->build_one(list,1); - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - // per-atom property indicating if in bond/react master group - int flag; - int index1 = atom->find_custom("limit_tags",flag); - int *i_limit_tags = atom->ivector[index1]; + int j; - int i,j; - - for (int myrxn = 0; myrxn < nreacts; myrxn++) { + for (rxnID = 0; rxnID < nreacts; rxnID++) { for (int ii = 0; ii < nall; ii++) { partner[ii] = 0; finalpartner[ii] = 0; - distsq[ii] = BIG; + distsq[ii][0] = 0.0; + distsq[ii][1] = BIG; } - for (int ii = 0; ii < inum; ii++) { // inum vs nlocal - i = ilist[ii]; - if (!(mask[i] & groupbits[myrxn])) continue; - if (i_limit_tags[i] != 0) continue; - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (int jj = 0; jj < jnum; jj++) { - j = jlist[jj]; - j &= NEIGHMASK; - - if (!(mask[j] & groupbits[myrxn])) { - continue; - } - - if (i_limit_tags[j] != 0) { - continue; - } - - jtype = type[j]; - possible = 0; - - if (itype == iatomtype[myrxn] && jtype == jatomtype[myrxn]) { - possible = 1; - } else if (itype == jatomtype[myrxn] && jtype == iatomtype[myrxn]) { - possible = 1; - } - - if (possible == 0) continue; - - for (int k = 0; k < nspecial[i][0]; k++) - if (special[i][k] == tag[j]) possible = 0; - if (!possible) continue; - - // NOTE(for below): certain neighbor list settings prevent 3-cycles anyway! - // e.g., in my examples, must use kspace command to include 1-3 neighbors for consideration here - - // do not allow a three-membered ring to be created (by the new bond) - // check 1-3 neighbors of atom I - for (int k = nspecial[i][0]; k < nspecial[i][1]; k++) - if (special[i][k] == tag[j]) possible = 0; - if (possible == 0) { - continue; - } - - // do not allow a four-membered ring to be created (by the new bond) - // check 1-4 neighbors of atom I -> probably make an option - - /* - for (k = nspecial[i][1]; k < nspecial[i][2]; k++) - if (special[i][k] == tag[j]) { - possible = 0; - } - if (possible == 0) continue; - */ - - // do not allow 5 membered rings -> probably make this an option - - /* - for (k = nspecial[i][1]; k < nspecial[i][2]; k++) { - for (m = nspecial[atom->map(special[i][k])][1]; m < nspecial[atom->map(special[i][k])][2]; m++) { - if (special[atom->map(special[i][k])][m] == tag[j]) possible = 0; - / } - } - if (possible == 0) continue; - */ - - delx = xtmp - x[j][0]; - dely = ytmp - x[j][1]; - delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; - - if (rsq >= cutsq[myrxn]) { - continue; - } - if (rsq < distsq[i]) { - partner[i] = tag[j]; - distsq[i] = rsq; - } - if (rsq < distsq[j]) { - partner[j] = tag[i]; - distsq[j] = rsq; - } - } - } + // fork between far and close_partner here + if (closeneigh[rxnID] < 0) far_partner(); + else close_partner(); // reverse comm of distsq and partner // not needed if newton_pair off since I,J pair was seen by both procs @@ -739,9 +671,9 @@ void FixBondReact::post_integrate() // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it - if (fraction[myrxn] < 1.0) { + if (fraction[rxnID] < 1.0) { for (int i = 0; i < nlocal; i++) - if (partner[i]) probability[i] = random[myrxn]->uniform(); + if (partner[i]) probability[i] = random[rxnID]->uniform(); } commflag = 2; @@ -764,11 +696,11 @@ void FixBondReact::post_integrate() // apply probability constraint using RN for atom with smallest ID - if (fraction[myrxn] < 1.0) { + if (fraction[rxnID] < 1.0) { if (tag[i] < tag[j]) { - if (probability[i] >= fraction[myrxn]) continue; + if (probability[i] >= fraction[rxnID]) continue; } else { - if (probability[j] >= fraction[myrxn]) continue; + if (probability[j] >= fraction[rxnID]) continue; } } @@ -780,31 +712,17 @@ void FixBondReact::post_integrate() if (tag[i] < tag[j]) temp_ncreate++; } - local_ncreate[myrxn] = temp_ncreate; + local_ncreate[rxnID] = temp_ncreate; // break loop if no even eligible bonding atoms were found (on any proc) int some_chance; MPI_Allreduce(&temp_ncreate,&some_chance,1,MPI_INT,MPI_SUM,world); - if (!some_chance) { - continue; - } + if (!some_chance) continue; // communicate final partner commflag = 3; comm->forward_comm_fix(this); -//obsolete comment block -/* - // I think this also simplifies for bond/react. - // but currently unsure how to adapt it - JG - // create list of created bonds that influence my owned atoms - // even if between owned-ghost or ghost-ghost atoms - // finalpartner is now set for owned and ghost atoms so loop over nall - // OK if duplicates in created list due to ghosts duplicating owned atoms - // check J < 0 to insure a created bond to unknown atom is included - // i.e. a bond partner outside of skin length -*/ - // add instance to 'created' only if this processor // owns the atoms with smaller global ID // NOTE: we no longer care about ghost-ghost instances as bond/create did @@ -816,21 +734,21 @@ void FixBondReact::post_integrate() j = atom->map(finalpartner[i]); // if (j < 0 || tag[i] < tag[j]) { if (tag[i] < tag[j]) { //atom->map(std::min(tag[i],tag[j])) <= nlocal && - if (ncreate[myrxn] == maxcreate) { + if (ncreate[rxnID] == maxcreate) { maxcreate += DELTA; // third column of 'created': bond/react integer ID memory->grow(created,maxcreate,2,nreacts,"bond/react:created"); } // to ensure types remain in same order // unnecessary now taken from reaction map file - if (iatomtype[myrxn] == type[i]) { - created[ncreate[myrxn]][0][myrxn] = tag[i]; - created[ncreate[myrxn]][1][myrxn] = finalpartner[i]; + if (iatomtype[rxnID] == type[i]) { + created[ncreate[rxnID]][0][rxnID] = tag[i]; + created[ncreate[rxnID]][1][rxnID] = finalpartner[i]; } else { - created[ncreate[myrxn]][0][myrxn] = finalpartner[i]; - created[ncreate[myrxn]][1][myrxn] = tag[i]; + created[ncreate[rxnID]][0][rxnID] = finalpartner[i]; + created[ncreate[rxnID]][1][rxnID] = tag[i]; } - ncreate[myrxn]++; + ncreate[rxnID]++; } } unlimit_bond(); //free atoms that have been relaxed @@ -854,7 +772,152 @@ void FixBondReact::post_integrate() superimpose_algorithm(); // free atoms that have been limited after reacting unlimit_bond(); +} +/* ---------------------------------------------------------------------- + Search non-bonded neighbor lists if bonding atoms are not in special list +------------------------------------------------------------------------- */ + +void FixBondReact::far_partner() +{ + int inum,jnum,itype,jtype,possible; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *ilist,*jlist,*numneigh,**firstneigh; + + // loop over neighbors of my atoms + // each atom sets one closest eligible partner atom ID to bond with + + double **x = atom->x; + tagint *tag = atom->tag; + int **nspecial = atom->nspecial; + tagint **special = atom->special; + int *mask = atom->mask; + int *type = atom->type; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // per-atom property indicating if in bond/react master group + int flag; + int index1 = atom->find_custom("limit_tags",flag); + int *i_limit_tags = atom->ivector[index1]; + + int i,j; + + for (int ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbits[rxnID])) continue; + if (i_limit_tags[i] != 0) continue; + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + if (!(mask[j] & groupbits[rxnID])) { + continue; +} + + if (i_limit_tags[j] != 0) { + continue; + } + + jtype = type[j]; + possible = 0; + + if (itype == iatomtype[rxnID] && jtype == jatomtype[rxnID]) { + possible = 1; + } else if (itype == jatomtype[rxnID] && jtype == iatomtype[rxnID]) { + possible = 1; + } + + if (possible == 0) continue; + + // do not allow bonding atoms within special list + for (int k = 0; k < nspecial[i][2]; k++) + if (special[i][k] == tag[j]) possible = 0; + if (!possible) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) { + continue; + } + if (rsq < distsq[i][1]) { + partner[i] = tag[j]; + distsq[i][1] = rsq; + } + if (rsq < distsq[j][1]) { + partner[j] = tag[i]; + distsq[j][1] = rsq; + } + } + } +} + +/* ---------------------------------------------------------------------- + Slightly simpler to find bonding partner when a close neighbor +------------------------------------------------------------------------- */ + +void FixBondReact::close_partner() +{ + int n,i1,i2,itype,jtype; + double delx,dely,delz,rsq; + + double **x = atom->x; + tagint *tag = atom->tag; + int *type = atom->type; + int *mask = atom->mask; + int **nspecial = atom->nspecial; + tagint **special = atom->special; + + // per-atom property indicating if in bond/react master group + int flag; + int index1 = atom->find_custom("limit_tags",flag); + int *i_limit_tags = atom->ivector[index1]; + + // loop over special list + for (int ii = 0; ii < atom->nlocal; ii++) { + itype = type[ii]; + n = 0; + if (closeneigh[rxnID] != 0) + n = nspecial[ii][closeneigh[rxnID]-1]; + for (; n < nspecial[ii][closeneigh[rxnID]]; n++) { + i1 = ii; + i2 = atom->map(special[ii][n]); + jtype = type[i2]; + if (!(mask[i1] & groupbits[rxnID])) continue; + if (!(mask[i2] & groupbits[rxnID])) continue; + if (i_limit_tags[i1] != 0) continue; + if (i_limit_tags[i2] != 0) continue; + if (itype != iatomtype[rxnID] || jtype != jatomtype[rxnID]) continue; + + delx = x[i1][0] - x[i2][0]; + dely = x[i1][1] - x[i2][1]; + delz = x[i1][2] - x[i2][2]; + rsq = delx*delx + dely*dely + delz*delz; + if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) continue; + + if (rsq > distsq[i1][0]) { + partner[i1] = tag[i2]; + distsq[i1][0] = rsq; + } + if (rsq > distsq[i2][0]) { + partner[i2] = tag[i1]; + distsq[i2][0] = rsq; + } + } + } } /* ---------------------------------------------------------------------- @@ -1076,8 +1139,8 @@ void FixBondReact::make_a_guess() if (assigned_count == nfirst_neighs) status = GUESSFAIL; // check if all neigh atom types are the same between simulation and unreacted mol - int mol_ntypes[atom->ntypes]; - int lcl_ntypes[atom->ntypes]; + int *mol_ntypes = new int[atom->ntypes]; + int *lcl_ntypes = new int[atom->ntypes]; for (int i = 0; i < atom->ntypes; i++) { mol_ntypes[i] = 0; @@ -1096,6 +1159,9 @@ void FixBondReact::make_a_guess() } } + delete [] mol_ntypes; + delete [] lcl_ntypes; + // okay everything seems to be in order. let's assign some ID pairs!!! neighbor_loop(); } @@ -1384,7 +1450,7 @@ void FixBondReact::find_landlocked_atoms(int myrxn) // if no edge atoms (small reacting molecule), all atoms are landlocked // we can delete all current topology of landlocked atoms and replace - // alwasy remove edge atoms from landlocked list + // always remove edge atoms from landlocked list for (int i = 0; i < twomol->natoms; i++) { if (edge[equivalences[i][1][myrxn]-1][myrxn] == 1) landlocked_atoms[i][myrxn] = 0; else landlocked_atoms[i][myrxn] = 1; @@ -1395,7 +1461,6 @@ void FixBondReact::find_landlocked_atoms(int myrxn) if ((force->dihedral && twomol->dihedralflag) || (force->improper && twomol->improperflag)) nspecial_limit = 1; - if (nspecial_limit != -1) { for (int i = 0; i < twomol->natoms; i++) { for (int j = 0; j < twomol->nspecial[i][nspecial_limit]; j++) { @@ -1410,11 +1475,21 @@ void FixBondReact::find_landlocked_atoms(int myrxn) // bad molecule templates check // if atoms change types, but aren't landlocked, that's bad - for (int i = 0; i < twomol->natoms; i++) { if (twomol->type[i] != onemol->type[equivalences[i][1][myrxn]-1] && landlocked_atoms[i][myrxn] == 0) error->one(FLERR,"Atom affected by reaction too close to template edge"); } + + // also, if atoms change number of bonds, but aren't landlocked, that could be bad + if (me == 0) + for (int i = 0; i < twomol->natoms; i++) { + if (twomol->nspecial[i][0] != onemol->nspecial[equivalences[i][1][myrxn]-1][0] && landlocked_atoms[i][myrxn] == 0) { + char str[128]; + sprintf(str,"An atom in 'react #%d' changes bond connectivity but not atom type",myrxn+1); + error->warning(FLERR,str); + break; + } + } } /* ---------------------------------------------------------------------- @@ -1438,7 +1513,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode) dedup_size = global_megasize; } - tagint dedup_glove[max_natoms+1][dedup_size]; + tagint **dedup_glove; + memory->create(dedup_glove,max_natoms+1,dedup_size,"bond/react:dedup_glove"); if (dedup_mode == 0) { for (int i = 0; i < dedup_size; i++) { @@ -1456,8 +1532,8 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode) // dedup_mask is size dedup_size and filters reactions that have been deleted // a value of 1 means this reaction instance has been deleted - int dedup_mask[dedup_size]; - int dup_list[dedup_size]; + int *dedup_mask = new int[dedup_size]; + int *dup_list = new int[dedup_size]; for (int i = 0; i < dedup_size; i++) { dedup_mask[i] = 0; @@ -1467,14 +1543,12 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode) // let's randomly mix up our reaction instances first // then we can feel okay about ignoring ones we've already deleted (or accepted) // based off std::shuffle - // will produce same 'random' sequences on different processors. - // not really an issue, as reaction lists are independent + int *temp_rxn = new int[max_natoms+1]; for (int i = dedup_size-1; i > 0; --i) { //dedup_size - //choose random entry to swap current one with - int k = rand() % (i+1); + // choose random entry to swap current one with + int k = floor(random[0]->uniform()*(i+1)); // swap entries - int temp_rxn[max_natoms+1]; for (int j = 0; j < max_natoms+1; j++) temp_rxn[j] = dedup_glove[j][i]; @@ -1483,6 +1557,7 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode) dedup_glove[j][k] = temp_rxn[j]; } } + delete [] temp_rxn; for (int i = 0; i < dedup_size; i++) { if (dedup_mask[i] == 0) { @@ -1557,6 +1632,10 @@ void FixBondReact::dedup_mega_gloves(int dedup_mode) } global_megasize = new_global_megasize; } + + memory->destroy(dedup_glove); + delete [] dedup_mask; + delete [] dup_list; } /* ---------------------------------------------------------------------- @@ -1743,9 +1822,6 @@ void FixBondReact::ghost_glovecast() for (int j = 0; j < global_megasize; j++) global_mega_glove[i][j] = 0; - - ghostcheck_flag = 1; - if (ghostly_num_mega > 0) { for (int i = 0; i < max_natoms+1; i++) { for (int j = 0; j < ghostly_num_mega; j++) { @@ -1806,7 +1882,8 @@ void FixBondReact::update_everything() // add check for local atoms as well int update_num_mega; - tagint update_mega_glove[max_natoms+1][MAX(local_num_mega,global_megasize)]; + tagint **update_mega_glove; + memory->create(update_mega_glove,max_natoms+1,MAX(local_num_mega,global_megasize),"bond/react:update_mega_glove"); for (int pass = 0; pass < 2; pass++) { @@ -2217,6 +2294,9 @@ void FixBondReact::update_everything() } } + + memory->destroy(update_mega_glove); + // something to think about: this could done much more concisely if // all atom-level info (bond,angles, etc...) were kinda inherited from a common data struct --JG @@ -2522,7 +2602,10 @@ int FixBondReact::pack_reverse_comm(int n, int first, double *buf) for (i = first; i < last; i++) { buf[m++] = ubuf(partner[i]).d; - buf[m++] = distsq[i]; + if (closeneigh[rxnID] < 0) + buf[m++] = distsq[i][1]; + else + buf[m++] = distsq[i][0]; } return m; } @@ -2538,10 +2621,16 @@ void FixBondReact::unpack_reverse_comm(int n, int *list, double *buf) if (commflag != 1) { for (i = 0; i < n; i++) { j = list[i]; - if (buf[m+1] < distsq[j]) { + if (closeneigh[rxnID] < 0) + if (buf[m+1] < distsq[j][1]) { partner[j] = (tagint) ubuf(buf[m++]).i; - distsq[j] = buf[m++]; + distsq[j][1] = buf[m++]; } else m += 2; + else + if (buf[m+1] > distsq[j][0]) { + partner[j] = (tagint) ubuf(buf[m++]).i; + distsq[j][0] = buf[m++]; + } else m += 2; } } } diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index a0f52c0288..e60fff37fb 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -53,7 +53,7 @@ class FixBondReact : public Fix { FILE *fp; int *iatomtype,*jatomtype; int *seed; - double *cutsq,*fraction; + double **cutsq,*fraction; tagint lastcheck; int stabilization_flag; int *stabilize_steps_flag; @@ -66,7 +66,7 @@ class FixBondReact : public Fix { int nmax; // max num local atoms int max_natoms; // max natoms in a molecule template tagint *partner,*finalpartner; - double *distsq,*probability; + double **distsq,*probability; int *ncreate; int maxcreate; int allncreate; @@ -96,10 +96,9 @@ class FixBondReact : public Fix { void superimpose_algorithm(); // main function of the superimpose algorithm int *ibonding,*jbonding; + int *closeneigh; // indicates if bonding atoms of a rxn are 1-2, 1-3, or 1-4 neighbors int nedge,nequivalent; // number of edge, equivalent atoms in mapping file int attempted_rxn; // there was an attempt! - int ghostcheck_flag; // idicates whether a reaction instances contains a nonlocal atom - int this_rxn_count; // num of local reaction occurrences int *local_rxn_count; int *ghostly_rxn_count; int avail_guesses; // num of restore points available @@ -143,6 +142,8 @@ class FixBondReact : public Fix { void skip_lines(int, char *); int parse(char *, char **, int); + void far_partner(); + void close_partner(); void find_landlocked_atoms(int); void glove_ghostcheck(); void ghost_glovecast(); diff --git a/src/USER-MISC/fix_filter_corotate.cpp b/src/USER-MISC/fix_filter_corotate.cpp index a5f0e57041..91c7033513 100644 --- a/src/USER-MISC/fix_filter_corotate.cpp +++ b/src/USER-MISC/fix_filter_corotate.cpp @@ -1527,7 +1527,10 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) //derivative: //dn1dx: - double sum1[3][3*N]; + + double **sum1; + memory->create(sum1,3,3*N,"filter_corotate:sum1"); + for (int i=0; i<3; i++) for (int j=0; j<3*N; j++) sum1[i][j] = 0; @@ -1564,10 +1567,12 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) dn1dx[i][j] = norm1*sum; } } + memory->destroy(sum1); //dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx) - double sum2[3][3*N]; + double **sum2; + memory->create(sum2,3,3*N,"filter_corotate:sum2"); for (int i=0; i<3; i++) for (int j=0; j<3*N; j++) sum2[i][j] = 0; @@ -1618,7 +1623,8 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) //dn2dx: norm2 * I3mn2n2T * (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx) //sum3 = (I3mn1n1T*sum2 - rkn1pn1rk*dn1dx) - double sum3[3][3*N]; + double **sum3; + memory->create(sum3,3,3*N,"filter_corotate:sum3"); for (int i=0; i<3; i++) for (int j=0; j<3*N; j++) { double sum = 0; @@ -1627,6 +1633,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) sum3[i][j] = sum; } + memory->destroy(sum2); //dn2dx = norm2 * I3mn2n2T * sum3 for (int i=0; i<3; i++) for (int j=0; j<3*N; j++) { @@ -1636,6 +1643,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) dn2dx[i][j] = norm2*sum; } + memory->destroy(sum3); //dn3dx = norm3 * I3mn3n3T * cross double I3mn3n3T[3][3]; //(I_3 - n3n3T) for (int i=0; i<3; i++) { @@ -1644,7 +1652,8 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) I3mn3n3T[i][i] += 1.0; } - double cross[3][3*N]; + double **cross; + memory->create(cross,3,3*N,"filter_corotate:cross"); for (int j=0; j<3*N; j++) { cross[0][j] = dn1dx[1][j]*n2[2] -dn1dx[2][j]*n2[1] + @@ -1663,6 +1672,7 @@ void FixFilterCorotate::general_cluster(int index, int index_in_list) dn3dx[i][j] = norm3*sum; } + memory->destroy(cross); for (int l=0; l0.?sqrt(D[i]):0.); - } + D[i]=(D[i]>0.0) ? sqrt(D[i]):0.0; + } - for(i=0; i=0; p--) - { - MyMult(n, n, n, SM, EM, TMP); for (int i=0; i=0; p--) { + MyMult(n, n, n, SM, EM, TMP); for (int i=0; if; - double lbuf[bsize]; + double *lbuf = new double[bsize]; // reassembles the force vector from the local arrays int nlocal = atom->nlocal; @@ -440,6 +440,7 @@ void FixIPI::final_integrate() lbuf[3*(atom->tag[i]-1)+2]=f[i][2]*forceconv; } MPI_Allreduce(lbuf,buffer,bsize,MPI_DOUBLE,MPI_SUM,world); + delete[] lbuf; for (int i = 0; i < 9; ++i) vir[i]=0.0; diff --git a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp index cc92bfc30f..523b2ca71a 100644 --- a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp +++ b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp @@ -539,7 +539,7 @@ double PairLJSFDipoleSF::single(int i, int j, int itype, int jtype, double rsq, double &fforce) { double r2inv,r6inv; - double pdotp,pidotr,pjdotr,pre1,delx,dely,delz; + double pdotp,pidotr,pjdotr,delx,dely,delz; double rinv, r3inv,r5inv, rcutlj2inv, rcutcoul2inv,rcutlj6inv; double qtmp,xtmp,ytmp,ztmp,bfac,pqfac,qpfac, ecoul, evdwl; diff --git a/src/USER-PHONON/Install.sh b/src/USER-PHONON/Install.sh index cfa369bb05..3428415443 100644 --- a/src/USER-PHONON/Install.sh +++ b/src/USER-PHONON/Install.sh @@ -26,6 +26,16 @@ action () { fi } +# USER-PHONON uses the parallel FFT wrapper used in PPPM, +# so we must require the KSPACE package to be installed. + +if (test $1 = 1) then + if (test ! -e ../fft3d_wrap.h) then + echo "Must install KSPACE package with USER-PHONON" + exit 1 + fi +fi + # list of files with optional dependcies action fix_phonon.cpp fft3d_wrap.h diff --git a/src/USER-PHONON/fix_phonon.cpp b/src/USER-PHONON/fix_phonon.cpp index cf56117892..3a37c67a38 100644 --- a/src/USER-PHONON/fix_phonon.cpp +++ b/src/USER-PHONON/fix_phonon.cpp @@ -668,7 +668,8 @@ void FixPhonon::postprocess( ) } // to get Phi = KT.G^-1; normalization of FFTW data is done here - double boltz = force->boltz, kbtsqrt[sysdim], TempAve = 0.; + double boltz = force->boltz, TempAve = 0.; + double *kbtsqrt = new double[sysdim]; double TempFac = inv_neval * inv_nTemp; double NormFac = TempFac * double(ntotal); @@ -692,7 +693,7 @@ void FixPhonon::postprocess( ) MPI_Gatherv(Phi_q[0],mynq*fft_dim2*2,MPI_DOUBLE,Phi_all[0],recvcnts,displs,MPI_DOUBLE,0,world); // to collect all basis info and averaged it on root - double basis_root[fft_dim]; + double *basis_root = new double[fft_dim]; if (fft_dim > sysdim) MPI_Reduce(&basis[1][0], &basis_root[sysdim], fft_dim-sysdim, MPI_DOUBLE, MPI_SUM, 0, world); if (me == 0){ // output dynamic matrix by root @@ -772,7 +773,8 @@ void FixPhonon::postprocess( ) } fflush(flog); } - + delete[] kbtsqrt; + delete[] basis_root; } // end of postprocess /* ---------------------------------------------------------------------- diff --git a/src/USER-QUIP/pair_quip.cpp b/src/USER-QUIP/pair_quip.cpp index f8968bfda2..3bf12d19d2 100644 --- a/src/USER-QUIP/pair_quip.cpp +++ b/src/USER-QUIP/pair_quip.cpp @@ -303,7 +303,7 @@ void PairQUIP::init_style() if (force->newton_pair != 1) error->all(FLERR,"Pair style quip requires newton pair on"); - // Initialise neighbour list + // Initialise neighbor list int irequest_full = neighbor->request(this); neighbor->requests[irequest_full]->id = 1; neighbor->requests[irequest_full]->half = 0; diff --git a/src/USER-SMD/fix_smd_integrate_ulsph.h b/src/USER-SMD/fix_smd_integrate_ulsph.h index ea4f46ce53..9d954bf529 100644 --- a/src/USER-SMD/fix_smd_integrate_ulsph.h +++ b/src/USER-SMD/fix_smd_integrate_ulsph.h @@ -48,7 +48,7 @@ class FixSMDIntegrateUlsph : public Fix { private: class NeighList *list; protected: - double dtv,dtf, vlimit, vlimitsq;; + double dtv,dtf, vlimit, vlimitsq; int mass_require; bool xsphFlag; bool adjust_radius_flag; diff --git a/src/USER-UEF/fix_nh_uef.h b/src/USER-UEF/fix_nh_uef.h index 43f5bb46a9..0629db5aa1 100644 --- a/src/USER-UEF/fix_nh_uef.h +++ b/src/USER-UEF/fix_nh_uef.h @@ -23,7 +23,7 @@ namespace LAMMPS_NS { // forward declaration namespace UEF_utils { class UEFBox; - }; + } class FixNHUef : public FixNH { public: diff --git a/src/create_bonds.cpp b/src/create_bonds.cpp index 8b5ab60f05..751c4746ba 100644 --- a/src/create_bonds.cpp +++ b/src/create_bonds.cpp @@ -323,9 +323,13 @@ void CreateBonds::single_bond() // check that 2 atoms exist + const int nlocal = atom->nlocal; + const int idx1 = atom->map(batom1); + const int idx2 = atom->map(batom2); + int count = 0; - if (atom->map(batom1) >= 0) count++; - if (atom->map(batom2) >= 0) count++; + if ((idx1 >= 0) && (idx1 < nlocal)) count++; + if ((idx2 >= 0) && (idx2 < nlocal)) count++; int allcount; MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); @@ -338,7 +342,7 @@ void CreateBonds::single_bond() int **bond_type = atom->bond_type; tagint **bond_atom = atom->bond_atom; - if ((m = atom->map(batom1)) >= 0) { + if ((m = idx1) >= 0) { if (num_bond[m] == atom->bond_per_atom) error->one(FLERR,"New bond exceeded bonds per atom in create_bonds"); bond_type[m][num_bond[m]] = btype; @@ -349,7 +353,7 @@ void CreateBonds::single_bond() if (force->newton_bond) return; - if ((m = atom->map(batom2)) >= 0) { + if ((m = idx2) >= 0) { if (num_bond[m] == atom->bond_per_atom) error->one(FLERR,"New bond exceeded bonds per atom in create_bonds"); bond_type[m][num_bond[m]] = btype; @@ -366,10 +370,15 @@ void CreateBonds::single_angle() // check that 3 atoms exist + const int nlocal = atom->nlocal; + const int idx1 = atom->map(aatom1); + const int idx2 = atom->map(aatom2); + const int idx3 = atom->map(aatom3); + int count = 0; - if (atom->map(aatom1) >= 0) count++; - if (atom->map(aatom2) >= 0) count++; - if (atom->map(aatom3) >= 0) count++; + if ((idx1 >= 0) && (idx1 < nlocal)) count++; + if ((idx2 >= 0) && (idx2 < nlocal)) count++; + if ((idx3 >= 0) && (idx3 < nlocal)) count++; int allcount; MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); @@ -384,7 +393,7 @@ void CreateBonds::single_angle() tagint **angle_atom2 = atom->angle_atom2; tagint **angle_atom3 = atom->angle_atom3; - if ((m = atom->map(aatom2)) >= 0) { + if ((m = idx2) >= 0) { if (num_angle[m] == atom->angle_per_atom) error->one(FLERR,"New angle exceeded angles per atom in create_bonds"); angle_type[m][num_angle[m]] = atype; @@ -397,7 +406,7 @@ void CreateBonds::single_angle() if (force->newton_bond) return; - if ((m = atom->map(aatom1)) >= 0) { + if ((m = idx1) >= 0) { if (num_angle[m] == atom->angle_per_atom) error->one(FLERR,"New angle exceeded angles per atom in create_bonds"); angle_type[m][num_angle[m]] = atype; @@ -407,7 +416,7 @@ void CreateBonds::single_angle() num_angle[m]++; } - if ((m = atom->map(aatom3)) >= 0) { + if ((m = idx3) >= 0) { if (num_angle[m] == atom->angle_per_atom) error->one(FLERR,"New angle exceeded angles per atom in create_bonds"); angle_type[m][num_angle[m]] = atype; @@ -426,11 +435,17 @@ void CreateBonds::single_dihedral() // check that 4 atoms exist + const int nlocal = atom->nlocal; + const int idx1 = atom->map(datom1); + const int idx2 = atom->map(datom2); + const int idx3 = atom->map(datom3); + const int idx4 = atom->map(datom4); + int count = 0; - if (atom->map(datom1) >= 0) count++; - if (atom->map(datom2) >= 0) count++; - if (atom->map(datom3) >= 0) count++; - if (atom->map(datom4) >= 0) count++; + if ((idx1 >= 0) && (idx1 < nlocal)) count++; + if ((idx2 >= 0) && (idx2 < nlocal)) count++; + if ((idx3 >= 0) && (idx3 < nlocal)) count++; + if ((idx4 >= 0) && (idx4 < nlocal)) count++; int allcount; MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); @@ -446,7 +461,7 @@ void CreateBonds::single_dihedral() tagint **dihedral_atom3 = atom->dihedral_atom3; tagint **dihedral_atom4 = atom->dihedral_atom4; - if ((m = atom->map(datom2)) >= 0) { + if ((m = idx2) >= 0) { if (num_dihedral[m] == atom->dihedral_per_atom) error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds"); @@ -461,7 +476,7 @@ void CreateBonds::single_dihedral() if (force->newton_bond) return; - if ((m = atom->map(datom1)) >= 0) { + if ((m = idx1) >= 0) { if (num_dihedral[m] == atom->dihedral_per_atom) error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds"); @@ -473,7 +488,7 @@ void CreateBonds::single_dihedral() num_dihedral[m]++; } - if ((m = atom->map(datom3)) >= 0) { + if ((m = idx3) >= 0) { if (num_dihedral[m] == atom->dihedral_per_atom) error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds"); @@ -485,7 +500,7 @@ void CreateBonds::single_dihedral() num_dihedral[m]++; } - if ((m = atom->map(datom4)) >= 0) { + if ((m = idx4) >= 0) { if (num_dihedral[m] == atom->dihedral_per_atom) error->one(FLERR, "New dihedral exceeded dihedrals per atom in create_bonds"); diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index 0f6c86ba5b..09cb8946e5 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -45,7 +45,7 @@ enum{BOND,ANGLE,DIHEDRAL}; FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), - rstyle(NULL), ids(NULL), kstart(NULL), kstop(NULL), target(NULL), + rstyle(NULL), mult(NULL), ids(NULL), kstart(NULL), kstop(NULL), target(NULL), cos_target(NULL), sin_target(NULL) { if (narg < 4) error->all(FLERR,"Illegal fix restrain command"); @@ -65,6 +65,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : if (nrestrain == maxrestrain) { maxrestrain += DELTA; memory->grow(rstyle,maxrestrain,"restrain:rstyle"); + memory->grow(mult,maxrestrain,"restrain:mult"); memory->grow(ids,maxrestrain,4,"restrain:ids"); memory->grow(kstart,maxrestrain,"restrain:kstart"); memory->grow(kstop,maxrestrain,"restrain:kstop"); @@ -96,6 +97,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"dihedral") == 0) { if (iarg+8 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = DIHEDRAL; + mult[nrestrain] = 1; ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); ids[nrestrain][2] = force->inumeric(FLERR,arg[iarg+3]); @@ -107,6 +109,13 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : cos_target[nrestrain] = cos(target[nrestrain]); sin_target[nrestrain] = sin(target[nrestrain]); iarg += 8; + if ((iarg < narg) && (strcmp("mult",arg[iarg]) == 0)) { + if (iarg+1 > narg) error->all(FLERR,"Illegal fix restrain command"); + mult[nrestrain] = force->inumeric(FLERR,arg[iarg+1]); + if (mult[nrestrain] < 0) + error->all(FLERR,"Illegal fix restrain command"); + iarg += 2; + } } else error->all(FLERR,"Illegal fix restrain command"); nrestrain++; @@ -123,6 +132,7 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : FixRestrain::~FixRestrain() { memory->destroy(rstyle); + memory->destroy(mult); memory->destroy(ids); memory->destroy(kstart); memory->destroy(kstop); @@ -410,7 +420,7 @@ void FixRestrain::restrain_angle(int m) void FixRestrain::restrain_dihedral(int m) { - int i1,i2,i3,i4,i,mult; + int i1,i2,i3,i4,i; double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm; double f1[3],f2[3],f3[3],f4[3]; double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv; @@ -534,11 +544,10 @@ void FixRestrain::restrain_dihedral(int m) if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; - mult = 1; // multiplicity p = 1.0; df1 = 0.0; - for (i = 0; i < mult; i++) { + for (i = 0; i < mult[m]; i++) { ddf1 = p*c - df1*s; df1 = p*s + df1*c; p = ddf1; @@ -546,7 +555,7 @@ void FixRestrain::restrain_dihedral(int m) p = p*cos_target[m] + df1*sin_target[m]; df1 = df1*cos_target[m] - ddf1*sin_target[m]; - df1 *= -mult; + df1 *= -mult[m]; p += 1.0; energy += k * p; diff --git a/src/fix_restrain.h b/src/fix_restrain.h index a6f23f86c6..14699ed5af 100644 --- a/src/fix_restrain.h +++ b/src/fix_restrain.h @@ -41,6 +41,7 @@ class FixRestrain : public Fix { int ilevel_respa; int nrestrain,maxrestrain; int *rstyle; + int *mult; int **ids; double *kstart,*kstop,*target; double *cos_target,*sin_target; diff --git a/src/image.cpp b/src/image.cpp index 599ac4a091..301a2af88f 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -1065,7 +1065,7 @@ void Image::write_PNG(FILE *fp) png_set_text(png_ptr,info_ptr,text_ptr,1); png_write_info(png_ptr,info_ptr); - png_bytep row_pointers[height]; + png_bytep *row_pointers = new png_bytep[height]; for (int i=0; i < height; ++i) row_pointers[i] = (png_bytep) &writeBuffer[(height-i-1)*3*width]; @@ -1073,6 +1073,7 @@ void Image::write_PNG(FILE *fp) png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); + delete[] row_pointers; #endif } diff --git a/src/library.cpp b/src/library.cpp index 865bf2a0a5..0162c560ce 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -933,7 +933,7 @@ void lammps_gather_atoms_concat(void *ptr, char *name, BEGIN_CAPTURE { - int i,j,offset; + int i,offset; // error if tags are not defined // NOTE: test that name = image or ids is not a 64-bit int in code? @@ -975,7 +975,6 @@ void lammps_gather_atoms_concat(void *ptr, char *name, lmp->memory->create(copy,count*natoms,"lib/gather:copy"); for (i = 0; i < count*natoms; i++) copy[i] = 0; - tagint *tag = lmp->atom->tag; int nlocal = lmp->atom->nlocal; if (count == 1) { @@ -1117,7 +1116,6 @@ void lammps_gather_atoms_subset(void *ptr, char *name, lmp->memory->create(copy,count*ndata,"lib/gather:copy"); for (i = 0; i < count*ndata; i++) copy[i] = 0; - tagint *tag = lmp->atom->tag; int nlocal = lmp->atom->nlocal; if (count == 1) { @@ -1163,7 +1161,6 @@ void lammps_gather_atoms_subset(void *ptr, char *name, lmp->memory->create(copy,count*ndata,"lib/gather:copy"); for (i = 0; i < count*ndata; i++) copy[i] = 0.0; - tagint *tag = lmp->atom->tag; int nlocal = lmp->atom->nlocal; if (count == 1) { diff --git a/src/molecule.cpp b/src/molecule.cpp index b03142e984..56e56dab2c 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -1111,7 +1111,7 @@ void Molecule::special_generate() { int newton_bond = force->newton_bond; tagint atom1,atom2; - int count[natoms]; + int *count = new int[natoms]; // temporary array for special atoms @@ -1197,6 +1197,7 @@ void Molecule::special_generate() } } } + delete[] count; maxspecial = 0; for (int i = 0; i < natoms; i++)