Compare commits

..

121 Commits

Author SHA1 Message Date
4339379948 patch 6Jul17 2017-07-06 13:58:26 -06:00
87af3b1fd9 Merge pull request #564 from lammps/fix-external
bugfix for fix msst
2017-07-06 08:58:20 -06:00
0423971205 whitespace cleanup 2017-07-06 00:24:00 -04:00
4ee7c6f5ca remove code without effect 2017-07-06 00:23:50 -04:00
7f63c09667 correct comment for Fix::ev_setup() 2017-07-05 22:35:58 -04:00
a5234d7aea fix bug reported by richard berger via https://ci.lammps.org/job/lammps/job/master/job/regression/160/testReport/junit/examples/msst/msst/ 2017-07-05 22:34:34 -04:00
be8360ac4b Merge pull request #562 from lammps/fix-external
additional fix external hooks for calling programs
2017-07-05 14:46:10 -06:00
4de9cec1b6 make old_velocities allocation safer while retaining the test for nlocal 2017-07-05 16:22:39 -04:00
09ad293425 remove dead code 2017-07-05 15:04:35 -04:00
e625e79171 safer handling of processors w/o local atoms 2017-07-05 15:04:27 -04:00
f1088a5003 changes requested by @sjplimp 2017-07-05 15:03:58 -04:00
ea4f16bd79 additional fix external hooks for calling programs 2017-07-05 10:01:19 -06:00
d0a397d6cb Merge pull request #559 from lammps/fortran3
3rd variant of Fortran wrapper for DFTB+ calling LAMMPS
2017-07-03 14:50:33 -06:00
f670dba3d0 3rd variant of Fortran wrapper for DFTB+ calling LAMMPS 2017-07-03 14:24:16 -06:00
6fc0a94e87 Merge pull request #524 from martok/package-meamc
Package USER-MEAMC
2017-07-03 12:30:01 -06:00
5c0c8bb4cd Merge pull request #558 from lammps/intel
memory allocation bugfix for USER-INTEL pppm from M Brown
2017-07-03 12:25:12 -06:00
9eeb97b039 Merge pull request #544 from akohlmey/tip4p-triclinic
Correct handling of triclinic box support in pppm/tip4p and pppm/tip4p/omp
2017-07-03 12:24:18 -06:00
9ca9b5e2ff add authors tag to pull request template 2017-07-03 12:06:36 -04:00
db73eca29f correct example inputs for recent changes to create_bonds command 2017-07-03 11:43:55 -04:00
2d1941ed9b make USER-INTEL compilable again with gcc and without OpenMP active 2017-07-03 11:33:08 -04:00
e634c5a2de memory allocation bugfix for USER-INTEL pppm from M Brown 2017-07-03 08:53:53 -06:00
22f3db4723 remove some dead code and prune argument lists accordingly 2017-07-01 18:16:36 -04:00
a1574fc03d remove unused variables 2017-07-01 17:55:13 -04:00
d68fb1cbb8 avoid repeated computation of deltaik and deltajk, calls to pow() 2017-07-01 17:49:14 -04:00
060e32973e another speedup by folding dsij() into meam_force() 2017-07-01 17:07:56 -04:00
a4a15f24bd fold screen() function into getscreen() and avoid some repeated operations 2017-06-30 18:44:51 -04:00
883b7aaa0e Merge pull request #557 from lammps/create-bonds
add single options to create_bonds command
2017-06-30 14:18:15 -06:00
1fff30af90 update or create example outputs for meam and meam/c 2017-06-30 15:30:06 -04:00
a490e04d24 add backward compatibility item to pull request template 2017-06-30 15:07:43 -04:00
b445f8eadf spell-check new additions to create_bonds doc page 2017-06-30 14:59:08 -04:00
b79044d4f6 Merge pull request #554 from jewettaij/master
Have extra/XXX/per/atom set by keyword to the read_data command
2017-06-30 11:47:46 -06:00
711afe5062 add single options to create_bonds command 2017-06-30 11:30:43 -06:00
3bf2c60276 Merge pull request #553 from Pakketeretet2/USER-MANIFOLD-gaussian-bump
Update to USER-MANIFOLD gaussian bump
2017-06-30 11:08:47 -06:00
d5119b2d75 Merge pull request #550 from stanmoore1/kokkos_leakfix
Fix Memory Leak in Kokkos NeighList
2017-06-30 11:08:30 -06:00
b2b621a2e1 Merge pull request #547 from akohlmey/collected-bugfixes
Collected small bugfixes and updates
2017-06-30 11:08:02 -06:00
b5250d11f6 Merge pull request #545 from akohlmey/issue-and-pull-request-templates
Add folder .github containing administrative files for use with GitHub
2017-06-30 11:06:58 -06:00
9dad95d101 performance improvement through moving inlinable functions to header file 2017-06-30 13:04:09 -04:00
f6faad335c update documentation for nb3/harmonic pair style according to e-mail to lammps-users 2017-06-30 11:37:18 -04:00
5548704700 Move stateless functions to separate module, improve style
- use static/const
- return instead of ptr-parameter, &ref if more than one return
- replace macros from header with inline functions
- remove useless/old comments
2017-06-30 15:37:26 +02:00
e0939ac795 Re-Run clang-format 2017-06-30 12:28:22 +02:00
d5921e9fb9 consolidate and update error message and read_data documentation for the updated read_data command 2017-06-29 16:30:49 -04:00
aa3f4b7690 change the handling of reading "extra XXX per atom", so that the final choice is the larger of the value in the file and the keyword 2017-06-29 16:09:23 -04:00
38075455b6 new keywords for read_data: extra/X/per/atoms + changes to docs 2017-06-28 17:55:30 -07:00
fa30635465 Revert "added feature to write_data.cpp to support "extra bonds" (angles,dihedrals,impropers,special)."
This reverts commit 0c2f7c74be.
2017-06-28 17:48:32 -07:00
0c2f7c74be added feature to write_data.cpp to support "extra bonds" (angles,dihedrals,impropers,special). 2017-06-28 14:12:03 -07:00
91bce7ccf9 Replaced std::fabs with fabs. 2017-06-28 09:48:00 -04:00
d0470799ac consistently check for all per-atom-type masses being set only when per-atom masses are not set
rather than placing an if statement around every incidence of calling atom->check_mass() to ensure it is only called when per atom masses are not set, we place that check _inside_ Atom::check_mass(). This avoids unexpected error messages.
2017-06-28 06:26:21 -04:00
076990c28a Updated Gaussian bump so that it has a better taper function. 2017-06-27 16:48:33 -04:00
661e51b607 remove non-ascii characters and spell check 2017-06-27 00:38:53 -04:00
d076040471 use itemized list instead of paragraphs for links at the top 2017-06-27 00:24:04 -04:00
2f9c0a3b8e more formatting issues addressed 2017-06-27 00:23:10 -04:00
b9d213ee2b update formatting for contributing ToC 2017-06-27 00:21:29 -04:00
fa3c7727e1 contributing guidelines, issue and pull request template are now feature complete
This is still a draft and in need of editing, proofreading and testing for formatting.
2017-06-27 00:17:37 -04:00
9fec8a0470 Remove clean_copy function from pair_vashishta_kokkos 2017-06-26 10:56:03 -06:00
b889776557 Fixing memory leak in Kokkos neighborlist 2017-06-26 10:51:26 -06:00
8fca667e4b Change indexing of remaining variables and locals
- Voigt index tables
- local variables
- remove shims from header
2017-06-26 18:09:11 +02:00
f7077d9672 Merge branch 'collected-bugfixes' of github.com:akohlmey/lammps into collected-bugfixes 2017-06-26 11:27:31 -04:00
f89a7266bf make USER-INTEL compilable again with gcc and without OpenMP active 2017-06-25 23:57:42 -04:00
1257955662 Merge branch 'master' of https://www.github.com/lammps/lammps 2017-06-23 19:31:43 -04:00
1370385c8c patch 23Jun17 2017-06-23 17:10:59 -06:00
2240c3d7d3 Merge pull request #548 from lammps/doc-update
doc page clarifications for CHARMM energy and dipole pre-factors
2017-06-23 16:48:37 -06:00
4fcbd58d5a doc page clarifications for CHARMM energy and dipole pre-factors 2017-06-23 15:54:14 -06:00
c2c6dc1458 remove spurious comment line 2017-06-23 16:24:37 -04:00
18983c307e fix qeq/reax/omp bugfix from metin 2017-06-23 16:24:00 -04:00
25a5d12af3 Merge pull request #541 from lammps/charmm
use CHARMM energy conversion factor with new CHARMM pair styles
2017-06-23 09:10:04 -06:00
05fbf93455 skip deleting internal data before setup has been run 2017-06-23 10:37:00 -04:00
73b948dcfc pppm must be fully reinitialized after switching to triclinic box to avoid memory corruption 2017-06-23 10:01:45 -04:00
374eef2b17 add first draft of issue template 2017-06-23 01:13:10 -04:00
dc7243838b first draft of a contributor's guide file 2017-06-23 00:54:20 -04:00
57d5cfede3 add first draft of a pull request template 2017-06-22 23:07:09 -04:00
feb500b526 reword the kspace_modify fftbench keyword docs to reflect the current state (i.e. off by default) of code 2017-06-22 19:17:41 -04:00
a714b57741 make neighbor list reset message for minimization more explicit 2017-06-22 19:07:57 -04:00
c5430b0a26 print info messages when changing qqr2e constant in fully CHARMM compatible pair styles 2017-06-22 18:41:44 -04:00
c081d383d1 Merge branch 'master' of https://www.github.com/lammps/lammps 2017-06-22 18:37:37 -04:00
f8364342c2 port corrected triclinic handling from pppm/tip4p to pppm/tip4p/omp 2017-06-22 18:12:28 -04:00
488d1b7a79 correct find_M() function in pppm/tip4p to properly account for ghost atoms not being in lamda space with triclinic cells 2017-06-22 17:36:18 -04:00
dadd1c8b4d Remove neigh_f2c/c2f, related cleanup
- neighbour lists now use C indexing
- removed many arr*v() macros
- removed some unneccessary pointers
- minor reformatting
2017-06-22 19:02:14 +02:00
60c3f3d64c use CHARMM energy conversion factor with new CHARMM pair styles 2017-06-22 09:15:15 -06:00
7a4a569859 Merge pull request #540 from lammps/neighrespa
fix issue with rRESPA inner/middle neighbor lists
2017-06-22 07:54:12 -06:00
4fc3f4f7e5 Merge pull request #538 from akohlmey/collected-small-changes
Collected small changes and bugfixes
2017-06-22 07:52:21 -06:00
f092da80a9 Fix some shadowing warnings 2017-06-22 13:28:12 +02:00
b0ddabbcde update examples for fix filter/corotate to comply with new CHARMM restrictions 2017-06-22 00:19:21 -04:00
b9029ada77 fix bug in incorrect use of O coordinate instead of M coordinate in pppm/tip4p 2017-06-22 00:07:59 -04:00
de3157f720 document new restrictions to CHARMM compatible dihedral styles 2017-06-21 19:31:40 -04:00
0c6a751751 may check for 1-4 scaling factors in CHARMM dihedral styles only when "weightflag" is set, since they may be used with amber 2017-06-21 19:29:31 -04:00
612b44a895 enforce using 'special_bonds charmm' for dihedral styles charmm and charmmfsw 2017-06-21 19:15:52 -04:00
684b7334a5 enforce that CHARMM dihedral styles are run at the same r-RESPA level as pair 2017-06-21 19:08:02 -04:00
1fc2eb1e3e fix issue with rRESPA inner/middle neighbor lists 2017-06-21 15:12:51 -06:00
e69ef56f10 Merge pull request #539 from lammps/neighsize
insure compute pair/property local will use a copy of granular neighbor list
2017-06-21 15:03:12 -06:00
7dc380b113 insure compute pair/property local will use a copy of granular neigh list 2017-06-21 12:44:35 -06:00
f47aaa5f3c Merge branch 'master' of https://www.github.com/lammps/lammps 2017-06-21 14:11:12 -04:00
5e165e6782 fix array bounds issue due to typo. spotted by GCC. 2017-06-21 13:33:26 -04:00
02625b2855 fix typos introduced in original translation: results are correct again 2017-06-21 18:54:21 +02:00
1a77135ed6 whitespace cleanup in docs 2017-06-21 09:38:10 -04:00
f45c7e1fb0 update fix ti/spring docs to reflect it is part of USER-MISC 2017-06-21 09:36:30 -04:00
0cfe8980d4 dead code removal 2017-06-20 22:07:40 -04:00
2988508cee correct indexing bug in pair style lj/long/tip4p/long 2017-06-20 17:53:45 -04:00
15c596153a remove dead code 2017-06-20 17:38:28 -04:00
e13c94ed4f fix uninitialized variable bug spotted by coverity scan 2017-06-20 17:25:01 -04:00
812f1a8fab remove local variables shadowing global ones in BondsOMP() 2017-06-20 17:20:57 -04:00
218bc92c82 make pre-processor defines for using libc's qsort() consistent 2017-06-20 17:13:42 -04:00
ffa906de6f add C++ format identifiers to .h files 2017-06-20 16:18:34 -04:00
cccf72a21d make certain class member list is initialized to NULL before assigned to a neighbor list 2017-06-20 16:09:11 -04:00
bb47fa8783 Change indexing of all MEAM element arrays
- arrays in MEAM class
- eltind setting
- remove fmap translation
2017-06-20 19:56:14 +02:00
c79dc53c6a code improvement, less pointer params 2017-06-20 19:36:07 +02:00
72a1364d85 Merge branch 'master' into package-meamc 2017-06-20 13:21:46 -04:00
198fe7ecd7 fix storing of invalid memory pointer 2017-06-20 19:00:57 +02:00
a9f3f90025 fix uninitialized members 2017-06-19 12:51:18 +02:00
3d066283b6 fix compilation, move meam_cleanup to destructor 2017-06-13 19:41:29 +02:00
29e60fa53a Move rho/gamma arrays to fields of MEAM, remove arguments and arrdim macros 2017-06-13 18:39:40 +02:00
078f2a0a47 Convert/Reindex phir* arrays 2017-06-12 17:41:09 +02:00
bdd908c303 update documentation for USER-MEAMC package and pair style meam/c 2017-06-11 21:54:18 -04:00
b45a95107d remove ambiguous access conflict to fm_exp() in pair style agni/omp after moving fm_exp() to math_special.h 2017-06-11 18:45:40 -04:00
9f852f5f58 Improve C++-ness, eliminate some macros
- fm_exp moved to math_special (exp2 was already there)
- use std::min/max template instead of macros
- use memory->create for dynamic arrays (still 1-indexed with macro)
- remove _ from function names, adjust method visibility
2017-06-11 16:55:41 +02:00
fea28d8028 ensure that allocatable_double_2d types are initialized 2017-06-11 07:29:44 -04:00
afed8bb978 make changes to pass compilation test
- move MEAM class into LAMMPS_NS namespace
- move inclusion of meam.h header to pair_meamc.cpp to reduce namespace pollution
- use forward declaration for MEAM class reference
- make that class reference a pointer and add a destructor
- replace MAX/MIN macros with versions compatible with older compilers
2017-06-11 07:18:13 -04:00
03c93b31d6 Convert to C++, allow multiple instances 2017-06-11 11:29:24 +02:00
d3f31547f9 Reformat code with clang-format (Mozilla style guide) 2017-06-11 11:29:24 +02:00
7c7468ffc2 Change c->cpp for better integration with makefile 2017-06-11 11:29:23 +02:00
bab292b551 Create package USER-MEAMC
Step 1: very literal translation of lib/meam
2017-06-11 11:29:23 +02:00
13643e185c Merge branch 'USER-MANIFOLD-gaussian-bump' 2017-06-06 15:47:41 -04:00
270 changed files with 9585 additions and 2175 deletions

112
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,112 @@
# Contributing to LAMMPS via GitHub
Thank your for considering to contribute to the LAMMPS software project.
The following is a set of guidelines as well as explanations of policies and workflows for contributing to the LAMMPS molecular dynamics software project. These guidelines focus on submitting issues or pull requests on the LAMMPS GitHub project.
Thus please also have a look at:
* [The Section on submitting new features for inclusion in LAMMPS of the Manual](http://lammps.sandia.gov/doc/Section_modify.html#mod-15)
* [The LAMMPS GitHub Tutorial in the Manual](http://lammps.sandia.gov/doc/tutorial_github.html)
## Table of Contents
[I don't want to read this whole thing, I just have a question!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question)
[How Can I Contribute?](#how-can-i-contribute)
* [Discussing How To Use LAMMPS](#discussing-how-to-use-lammps)
* [Reporting Bugs](#reporting-bugs)
* [Suggesting Enhancements](#suggesting-enhancements)
* [Contributing Code](#contributing-code)
[GitHub Workflows](#github-workflows)
* [Issues](#issues)
* [Pull Requests](#pull-requests)
__
## I don't want to read this whole thing I just have a question!
> **Note:** Please do not file an issue to ask a general question about LAMMPS, its features, how to use specific commands, or how perform simulations or analysis in LAMMPS. Instead post your question to the ['lammps-users' mailing list](http://lammps.sandia.gov/mail.html). You do not need to be subscribed to post to the list (but a mailing list subscription avoids having your post delayed until it is approved by a mailing list moderator). Most posts to the mailing list receive a response within less than 24 hours. Before posting to the mailing list, please read the [mailing list guidelines](http://lammps.sandia.gov/guidelines.html). Following those guidelines will help greatly to get a helpful response. Always mention which LAMMPS version you are using.
## How Can I Contribute?
There are several ways how you can actively contribute to the LAMMPS project: you can discuss compiling and using LAMMPS, and solving LAMMPS related problems with other LAMMPS users on the lammps-users mailing list, you can report bugs or suggest enhancements by creating issues on GitHub (or posting them to the lammps-users mailing list), and you can contribute by submitting pull requests on GitHub or e-mail your code
to one of the [LAMMPS core developers](http://lammps.sandia.gov/authors.html). As you may see from the aforementioned developer page, the LAMMPS software package includes the efforts of a very large number of contributors beyond the principal authors and maintainers.
### Discussing How To Use LAMMPS
The LAMMPS mailing list is hosted at SourceForge. The mailing list began in 2005, and now includes tens of thousands of messages in thousands of threads. LAMMPS developers try to respond to posted questions in a timely manner, but there are no guarantees. Please consider that people live in different timezone and may not have time to answer e-mails outside of their work hours.
You can post to list by sending your email to lammps-users at lists.sourceforge.net (no subscription required), but before posting, please read the [mailing list guidelines](http://lammps.sandia.gov/guidelines.html) to maximize your chances to receive a helpful response.
Anyone can browse/search previous questions/answers in the archives. You do not have to subscribe to the list to post questions, receive answers (to your questions), or browse/search the archives. You **do** need to subscribe to the list if you want emails for **all** the posts (as individual messages or in digest form), or to answer questions yourself. Feel free to sign up and help us out! Answering questions from fellow LAMMPS users is a great way to pay back the community for providing you a useful tool for free, and to pass on the advice you have received yourself to others. It improves your karma and helps you understand your own research better.
If you post a message and you are a subscriber, your message will appear immediately. If you are not a subscriber, your message will be moderated, which typically takes one business day. Either way, when someone replies the reply will usually be sent to both, your personal email address and the mailing list. When replying to people, that responded to your post to the list, please always included the mailing list in your replies (i.e. use "Reply All" and **not** "Reply"). Responses will appear on the list in a few minutes, but it can take a few hours for postings and replies to show up in the SourceForge archive. Sending replies also to the mailing list is important, so that responses are archived and people with a similar issue can search for possible solutions in the mailing list archive.
### Reporting Bugs
While developers writing code for LAMMPS are careful to test their code, LAMMPS is such a large and complex software, that it is impossible to test for all combinations of features under all normal and not so normal circumstances. Thus bugs do happen, and if you suspect, that you have encountered one, please try to document it and report it as an [Issue](https://github.com/lammps/lammps/issues) on the LAMMPS GitHub project web page. However, before reporting a bug, you need to check whether this is something that may have already been corrected. The [Latest Features and Bug Fixes in LAMMPS](http://lammps.sandia.gov/bug.html) web page lists all significant changes to LAMMPS over the years. It also tells you what the current latest development version of LAMMPS is, and you should test whether your issue still applies to that version.
When you click on the green "New Issue" button, you will be provided with a text field, where you can enter your message. That text field with contain a template with several headlines and some descriptions. Keep the headlines that are relevant to your reported potential bug and replace the descriptions with the information as suggested by the descriptions.
You can also attach small text files (please add the file name extension `.txt` or it will be rejected), images, or small compressed text files (using gzip, do not use RAR or 7-ZIP or similar tools that are uncommon outside of Windows machines). In many cases, bugs are best illustrated by providing a small input deck (do **not** attach your entire production input, but remove everything that is not required to reproduce the issue, and scale down your system size, that the resulting calculation runs fast and can be run on small desktop quickly).
To be able to submit an issue on GitHub, you have to register for an account (for GitHub in general). If you do not want to do that, or have other reservations against submitting an issue there, you can - as an alternative and in decreasing preference - either send an e-mail to the lammps-users mailing list, the original authors of the feature that you suspect to be affected, or one or more of the core LAMMPS developers.
### Suggesting Enhancements
The LAMMPS developers welcome suggestions for enhancements or new features. These should be submitted using the [GitHub Issue Tracker](https://github.com/lammps/lammps/issues) of the LAMMPS project. This is particularly recommended, when you plan to implement the feature or enhancement yourself, as this allows to coordinate in case there are other similar or conflicting ongoing developments.
The LAMMPS developers will review your submission and consider implementing it. Whether this will actually happen depends on many factors: how difficult it would be, how much effort it would take, how many users would benefit from it, how well the individual developer would understand the underlying physics of the feature, and whether this is a feature that would fit into a software like LAMMPS, or would be better implemented as a separate tool. Because of these factors, it matters how well the suggested enhancement is formulated and the overall benefit is argued convincingly.
To be able to submit an issue on GitHub, you have to register for an account (for GitHub in general). If you do not want to do that, or have other reservations against submitting an issue there, you can - as an alternative - send an e-mail to the lammps-users mailing list.
### Contributing Code
We encourage users to submit new features or modifications for LAMMPS to the core developers so they can be added to the LAMMPS distribution. The preferred way to manage and coordinate this is by submitting a pull request at the LAMMPS project on GitHub. For any larger modifications or programming project, you are encouraged to contact the LAMMPS developers ahead of time, in order to discuss implementation strategies and coding guidelines, that will make it easier to integrate your contribution and result in less work for everybody involved. You are also encouraged to search through the list of open issues on GitHub and submit a new issue for a planned feature, so you would not duplicate the work of others (and possibly get scooped by them) or have your work duplicated by others.
How quickly your contribution will be integrated depends largely on how much effort it will cause to integrate and test it, how much it requires changes to the core code base, and of how much interest it is to the larger LAMMPS community. Please see below for a checklist of typical requirements. Once you have prepared everything, see [this tutorial](http://lammps.sandia.gov/doc/tutorial_github.html)
for instructions on how to submit your changes or new files through a GitHub pull request
Here is a checklist of steps you need to follow to submit a single file or user package for our consideration. Following these steps will save both you and us time. See existing files in packages in the source directory for examples. If you are uncertain, please ask on the lammps-users mailing list.
* All source files you provide must compile with the most current version of LAMMPS with multiple configurations. In particular you need to test compiling LAMMPS from scratch with `-DLAMMPS_BIGBIG` set in addition to the default `-DLAMMPS_SMALLBIG` setting. Your code will need to work correctly in serial and in parallel using MPI.
* For consistency with the rest of LAMMPS and especially, if you want your contribution(s) to be added to main LAMMPS code or one of its standard packages, it needs to be written in a style compatible with other LAMMPS source files. This means: 2-character indentation per level, no tabs, no lines over 80 characters. I/O is done via the C-style stdio library, class header files should not import any system headers outside <stdio.h>, STL containers should be avoided in headers, and forward declarations used where possible or needed. All added code should be placed into the LAMMPS_NS namespace or a sub-namespace; global or static variables should be avoided, as they conflict with the modular nature of LAMMPS and the C++ class structure. Header files must not import namespaces with using. This all is so the developers can more easily understand, integrate, and maintain your contribution and reduce conflicts with other parts of LAMMPS. This basically means that the code accesses data structures, performs its operations, and is formatted similar to other LAMMPS source files, including the use of the error class for error and warning messages.
* If you want your contribution to be added as a user-contributed feature, and it is a single file (actually a `<name>.cpp` and `<name>.h` file) it can be rapidly added to the USER-MISC directory. Include the one-line entry to add to the USER-MISC/README file in that directory, along with the 2 source files. You can do this multiple times if you wish to contribute several individual features.
* If you want your contribution to be added as a user-contribution and it is several related features, it is probably best to make it a user package directory with a name like USER-FOO. In addition to your new files, the directory should contain a README text file. The README should contain your name and contact information and a brief description of what your new package does. If your files depend on other LAMMPS style files also being installed (e.g. because your file is a derived class from the other LAMMPS class), then an Install.sh file is also needed to check for those dependencies. See other README and Install.sh files in other USER directories as examples. Send us a tarball of this USER-FOO directory.
* Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code.
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are simple text files with a specific markup language, that are then auto-converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.txt` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. A description of the markup can also be found in `lammps/doc/utils/txt2html/README.html` As appropriate, the text files can include links to equations (see doc/Eqs/*.tex for examples, we auto-create the associated JPG files), or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.txt for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv, the requirement for generating the PDF format manual is the htmldoc software. Please run at least "make html" and carefully inspect and proofread the resulting HTML format doc page before submitting your code.
* For a new package (or even a single command) you should include one or more example scripts demonstrating its use. These should run in no more than a couple minutes, even on a single processor, and not require large data files as input. See directories under examples/USER for examples of input scripts other users provided for their packages. These example inputs are also required for validating memory accesses and testing for memory leaks with valgrind
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the *.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.
Finally, as a general rule-of-thumb, the more clear and self-explanatory you make your documentation and README files, and the easier you make it for people to get started, e.g. by providing example scripts, the more likely it is that users will try out your new feature.
If the new features/files are broadly useful we may add them as core files to LAMMPS or as part of a standard package. Else we will add them as a user-contributed file or package. Examples of user packages are in src sub-directories that start with USER. The USER-MISC package is simply a collection of (mostly) unrelated single files, which is the simplest way to have your contribution quickly added to the LAMMPS distribution. You can see a list of the both standard and user packages by typing "make package" in the LAMMPS src directory.
Note that by providing us files to release, you are agreeing to make them open-source, i.e. we can release them under the terms of the GPL, used as a license for the rest of LAMMPS. See Section 1.4 for details.
With user packages and files, all we are really providing (aside from the fame and fortune that accompanies having your name in the source code and on the Authors page of the LAMMPS WWW site), is a means for you to distribute your work to the LAMMPS user community, and a mechanism for others to easily try out your new feature. This may help you find bugs or make contact with new collaborators. Note that you are also implicitly agreeing to support your code which means answer questions, fix bugs, and maintain it if LAMMPS changes in some way that breaks it (an unusual event).
To be able to submit an issue on GitHub, you have to register for an account (for GitHub in general). If you do not want to do that, or have other reservations or difficulties to submit a pull request, you can - as an alternative - contact one or more of the core LAMMPS developers and ask if one of them would be interested in manually merging your code into LAMMPS and send them your source code. Since the effort to merge a pull request is a small fraction of the effort of integrating source code manually (which would usually be done by converting the contribution into a pull request), your chances to have your new code included quickly are the best with a pull request.
If you prefer to submit patches or full files, you should first make certain, that your code works correctly with the latest patch-level version of LAMMPS and contains all bug fixes from it. Then create a gzipped tar file of all changed or added files or a corresponding patch file using 'diff -u' or 'diff -c' and compress it with gzip. Please only use gzip compression, as this works well on all platforms.
## GitHub Workflows
This section briefly summarizes the steps that will happen **after** you have submitted either an issue or a pull request on the LAMMPS GitHub project page.
### Issues
After submitting an issue, one or more of the LAMMPS developers will review it and categorize it by assigning labels. Confirmed bug reports will be labeled `bug`; if the bug report also contains a suggestion for how to fix it, it will be labeled `bugfix`; if the issue is a feature request, it will be labeled `enhancement`. Other labels may be attached as well, depending on which parts of the LAMMPS code are affected. If the assessment is, that the issue does not warrant any changes, the `wontfix` label will be applied and if the submission is incorrect or something that should not be submitted as an issue, the `invalid` label will be applied. In both of the last two cases, the issue will then be closed without further action.
For feature requests, what happens next is that developers may comment on the viability or relevance of the request, discuss and make suggestions for how to implement it. If a LAMMPS developer or user is planning to implement the feature, the issue will be assigned to that developer. For developers, that are not yet listed as LAMMPS project collaborators, they will receive an invitation to be added to the LAMMPS project as a collaborator so they can get assigned. If the requested feature or enhancement is implemented, it will usually be submitted as a pull request, which will contain a reference to the issue number. And once the pull request is reviewed and accepted for inclusion into LAMMPS, the issue will be closed. For details on how pull requests are processed, please see below.
For bug reports, the next step is that one of the core LAMMPS developers will self-assign to the issue and try to confirm the bug. If confirmed, the `bug` label and potentially other labels are added to classify the issue and its impact to LAMMPS. Before confirming, further questions may be asked or requests for providing additional input files or details about the steps required to reproduce the issue. Any bugfix is likely to be submitted as a pull request (more about that below) and since most bugs require only local changes, the bugfix may be included in a pull request specifically set up to collect such local bugfixes or small enhancements. Once the bugfix is included in the master branch, the issue will be closed.
### Pull Requests
For submitting pull requests, there is a [detailed tutorial](http://lammps.sandia.gov/doc/tutorial_github.html) in the LAMMPS manual. Thus only a brief breakdown of the steps is presented here.
Immediately after the submission, the LAMMPS continuing integration server at ci.lammps.org will download your submitted branch and perform a simple compilation test, i.e. will test whether your submitted code can be compiled under various conditions. It will also do a check on whether your included documentation translates cleanly. Whether these tests are successful or fail will be recorded. If a test fails, please inspect the corresponding output on the CI server and take the necessary steps, if needed, so that the code can compile cleanly again. The test will be re-run each the pull request is updated with a push to the remote branch on GitHub.
Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that.
You may also receive comments and suggestions on the overall submission or specific details. If permitted, additional changes may be pushed into your pull request branch or a pull request may be filed in your LAMMPS fork on GitHub to include those changes.
The LAMMPS developer may then decide to assign the pull request to another developer (e.g. when that developer is more knowledgeable about the submitted feature or enhancement or has written the modified code). It may also happen, that additional developers are requested to provide a review and approve the changes. For submissions, that may change the general behavior of LAMMPS, or where a possibility of unwanted side effects exists, additional tests may be requested by the assigned developer.
If the assigned developer is satisfied and considers the submission ready for inclusion into LAMMPS, the pull request will be assigned to the LAMMPS lead developer, Steve Plimpton (@sjplimp), who will then have the final decision on whether the submission will be included, additional changes are required or it will be ultimately rejected. After the pull request is merged, you may delete the pull request branch in your personal LAMMPS fork.
Since the learning curve for git is quite steep for efficiently managing remote repositories, local and remote branches, pull requests and more, do not hesitate to ask questions, if you are not sure about how to do certain steps that are asked of you. Even if the changes asked of you do not make sense to you, they may be important for the LAMMPS developers. Please also note, that these all are guidelines and not set in stone.

31
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,31 @@
## Summary
_Please provide a brief description of the issue_
## Type of Issue
_Is this a 'Bug Report' or a 'Suggestion for an Enhancement'?_
## Detailed Description (Enhancement Suggestion)
_Explain how you would like to see LAMMPS enhanced, what feature(s) you are looking for, provide references to relevant background information, and whether you are willing to implement the enhancement yourself or would like to participate in the implementation_
## LAMMPS Version (Bug Report)
_Please specify which LAMMPS version this issue was detected with. If this is not the latest development version, please stop and test that version, too, and report it here if the bug persists_
## Expected Behavior (Bug Report)
_Describe the expected behavior. Quote from the LAMMPS manual where needed or explain why the expected behavior is meaningful, especially when it differs from the manual_
## Actual Behavior (Bug Report)
_Describe the actual behavior, how it differs from the expected behavior, and how this can be observed. Try to be specific and do **not* use vague terms like "doesn't work" or "wrong result". Do not assume that the person reading this has any experience with or knowledge of your specific research._
## Steps to Reproduce (Bug Report)
_Describe the steps required to quickly reproduce the issue. You can attach (small) files to the section below or add URLs where to download an archive with all necessary files. Please try to create input that are as small as possible and run as fast as possible. NOTE: the less effort and time it takes to reproduce your issue, the more likely, that somebody will look into it._
## Further Information, Files, and Links
_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_

29
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,29 @@
## Purpose
_Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in this pull request. If this addresses an open GitHub Issue, mention the issue number, e.g. with `fixes #221` or `closes #135`, so that issue will be automatically closed when the pull request is merged_
## Author(s)
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_
## Backward Compatibility
_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_
## Implementation Notes
_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_
## Post Submission Checklist
_Please check the fields below as they are completed_
- [ ] The feature or features in this pull request is complete
- [ ] Suitable new documentation files and/or updates to the existing docs are included
- [ ] One or more example input decks are included
- [ ] The source code follows the LAMMPS formatting guidelines
## Further Information, Files, and Links
_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_

View File

@ -1,7 +1,7 @@
<!-- HTML_ONLY -->
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="20 Jun 2017 version">
<META NAME="docnumber" CONTENT="6 Jul 2017 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
@ -21,7 +21,7 @@
<H1></H1>
LAMMPS Documentation :c,h3
20 Jun 2017 version :c,h4
6 Jul 2017 version :c,h4
Version info: :h4

View File

@ -1039,6 +1039,7 @@ package"_Section_start.html#start_3.
"lj/sdk (gko)"_pair_sdk.html,
"lj/sdk/coul/long (go)"_pair_sdk.html,
"lj/sdk/coul/msm (o)"_pair_sdk.html,
"meam/c"_pair_meam.html,
"meam/spline (o)"_pair_meam_spline.html,
"meam/sw/spline"_pair_meam_sw_spline.html,
"mgpt"_pair_mgpt.html,
@ -1073,7 +1074,7 @@ package"_Section_start.html#start_3.
"table/rx"_pair_table_rx.html,
"tersoff/table (o)"_pair_tersoff.html,
"thole"_pair_thole.html,
"tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c)
"tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c)
:line

View File

@ -4696,9 +4696,9 @@ Self-explanatory. :dd
{Fix bond/create induced too many angles/dihedrals/impropers per atom} :dt
See the read_data command for info on setting the "extra angle per
atom", etc header values to allow for additional angles, etc to be
formed. :dd
See the read_data command for info on using the "extra/angle/per/atom",
(or dihedral, improper) keywords to allow for additional
angles, dihedrals, and impropers to be formed. :dd
{Fix bond/create needs ghost atoms from further away} :dt
@ -7876,18 +7876,20 @@ See the setting for tagint in the src/lmptype.h file. :dd
{New bond exceeded bonds per atom in create_bonds} :dt
See the read_data command for info on setting the "extra bond per
atom" header value to allow for additional bonds to be formed. :dd
See the read_data command for info on using the "extra/bond/per/atom"
keyword to allow for additional bonds to be formed
{New bond exceeded bonds per atom in fix bond/create} :dt
See the read_data command for info on setting the "extra bond per
atom" header value to allow for additional bonds to be formed. :dd
See the read_data command for info on using the "extra/bond/per/atom"
keyword to allow for additional bonds to be formed :dd
{New bond exceeded special list size in fix bond/create} :dt
See the special_bonds extra command for info on how to leave space in
the special bonds list to allow for additional bonds to be formed. :dd
See the "special_bonds extra" command
(or the "read_data extra/special/per/atom" command)
for info on how to leave space in the special bonds
list to allow for additional bonds to be formed. :dd
{Newton bond change after simulation box is defined} :dt
@ -9664,9 +9666,10 @@ you are running. :dd
{Special list size exceeded in fix bond/create} :dt
See the read_data command for info on setting the "extra special per
atom" header value to allow for additional special values to be
stored. :dd
See the special_bonds extra command
(or the read_data extra/special/per/atom command)
for info on how to leave space in the special bonds
list to allow for additional bonds to be formed. :dd
{Specified processors != physical processors} :dt
@ -9683,23 +9686,23 @@ Self-explanatory. :dd
{Subsequent read data induced too many angles per atom} :dt
See the create_box extra/angle/per/atom or read_data "extra angle per
atom" header value to set this limit larger. :dd
See the extra/angle/per/atom keyword for the create_box
or the read_data command to set this limit larger :dd
{Subsequent read data induced too many bonds per atom} :dt
See the create_box extra/bond/per/atom or read_data "extra bond per
atom" header value to set this limit larger. :dd
See the extra/bond/per/atom keyword for the create_box
or the read_data command to set this limit larger :dd
{Subsequent read data induced too many dihedrals per atom} :dt
See the create_box extra/dihedral/per/atom or read_data "extra
dihedral per atom" header value to set this limit larger. :dd
See the extra/dihedral/per/atom keyword for the create_box
or the read_data command to set this limit larger :dd
{Subsequent read data induced too many impropers per atom} :dt
See the create_box extra/improper/per/atom or read_data "extra
improper per atom" header value to set this limit larger. :dd
See the extra/improper/per/atom keyword for the create_box
or the read_data command to set this limit larger :dd
{Substitution for illegal variable} :dt

View File

@ -1938,7 +1938,7 @@ documentation in the src/library.cpp file for details, including
which quantities can be queried by name:
void *lammps_extract_global(void *, char *)
void lammps_extract_box(void *, double *, double *,
void lammps_extract_box(void *, double *, double *,
double *, double *, double *, int *, int *)
void *lammps_extract_atom(void *, char *)
void *lammps_extract_compute(void *, char *, int, int)
@ -2682,14 +2682,14 @@ bond_coeff 2 25.724 0.0 :pre
When running dynamics with the adiabatic core/shell model, the
following issues should be considered. The relative motion of
the core and shell particles corresponds to the polarization,
hereby an instantaneous relaxation of the shells is approximated
the core and shell particles corresponds to the polarization,
hereby an instantaneous relaxation of the shells is approximated
and a fast core/shell spring frequency ensures a nearly constant
internal kinetic energy during the simulation.
internal kinetic energy during the simulation.
Thermostats can alter this polarization behaviour, by scaling the
internal kinetic energy, meaning the shell will not react freely to
its electrostatic environment.
Therefore it is typically desirable to decouple the relative motion of
internal kinetic energy, meaning the shell will not react freely to
its electrostatic environment.
Therefore it is typically desirable to decouple the relative motion of
the core/shell pair, which is an imaginary degree of freedom, from the
real physical system. To do that, the "compute
temp/cs"_compute_temp_cs.html command can be used, in conjunction with
@ -2721,13 +2721,13 @@ fix thermostatequ all nve # integrator as needed f
fix_modify thermoberendsen temp CSequ
thermo_modify temp CSequ # output of center-of-mass derived temperature :pre
The pressure for the core/shell system is computed via the regular
LAMMPS convention by "treating the cores and shells as individual
particles"_#MitchellFincham2. For the thermo output of the pressure
as well as for the application of a barostat, it is necessary to
use an additional "pressure"_compute_pressure compute based on the
default "temperature"_compute_temp and specifying it as a second
argument in "fix modify"_fix_modify.html and
The pressure for the core/shell system is computed via the regular
LAMMPS convention by "treating the cores and shells as individual
particles"_#MitchellFincham2. For the thermo output of the pressure
as well as for the application of a barostat, it is necessary to
use an additional "pressure"_compute_pressure compute based on the
default "temperature"_compute_temp and specifying it as a second
argument in "fix modify"_fix_modify.html and
"thermo_modify"_thermo_modify.html resulting in:
(...)
@ -2757,18 +2757,18 @@ temp/cs"_compute_temp_cs.html command to the {temp} keyword of the
velocity all create 1427 134 bias yes temp CSequ
velocity all scale 1427 temp CSequ :pre
To maintain the correct polarizability of the core/shell pairs, the
kinetic energy of the internal motion shall remain nearly constant.
Therefore the choice of spring force and mass ratio need to ensure
much faster relative motion of the 2 atoms within the core/shell pair
than their center-of-mass velocity. This allows the shells to
effectively react instantaneously to the electrostatic environment and
To maintain the correct polarizability of the core/shell pairs, the
kinetic energy of the internal motion shall remain nearly constant.
Therefore the choice of spring force and mass ratio need to ensure
much faster relative motion of the 2 atoms within the core/shell pair
than their center-of-mass velocity. This allows the shells to
effectively react instantaneously to the electrostatic environment and
limits energy transfer to or from the core/shell oscillators.
This fast movement also dictates the timestep that can be used.
The primary literature of the adiabatic core/shell model suggests that
the fast relative motion of the core/shell pairs only allows negligible
energy transfer to the environment.
energy transfer to the environment.
The mentioned energy transfer will typically lead to a small drift
in total energy over time. This internal energy can be monitored
using the "compute chunk/atom"_compute_chunk_atom.html and "compute
@ -2790,7 +2790,7 @@ pairs as chunks.
For example if core/shell pairs are the only molecules:
read_data NaCl_CS_x0.1_prop.data
read_data NaCl_CS_x0.1_prop.data
compute prop all property/atom molecule
compute cs_chunk all chunk/atom c_prop
compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs

View File

@ -121,6 +121,7 @@ Package, Description, Doc page, Example, Library
"USER-INTEL"_#USER-INTEL, optimized Intel CPU and KNL styles,"Section 5.3.2"_accelerate_intel.html, WWW bench, -
"USER-LB"_#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
"USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
"USER-MEAMC"_#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
"USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
"USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
"USER-MOLFILE"_#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
@ -585,7 +586,7 @@ do not recommend building with other acceleration packages installed
make yes-kokkos
make machine :pre
make no-kokkos
make machine :pre
@ -839,13 +840,13 @@ written and read in parallel.
Note that MPIIO is part of the standard message-passing interface
(MPI) library, so you should not need any additional compiler or link
settings, beyond what LAMMPS normally uses for MPI on your system.
make yes-mpiio
make machine :pre
make no-mpiio
make machine :pre
[Supporting info:]
src/MPIIO: filenames -> commands
@ -855,7 +856,7 @@ src/MPIIO: filenames -> commands
"read_restart"_read_restart.html :ul
:line
MSCG package :link(mscg),h4
[Contents:]
@ -914,7 +915,7 @@ lib/mscg/README
examples/mscg :ul
:line
OPT package :link(OPT),h4
[Contents:]
@ -1387,7 +1388,7 @@ atomic information to continuum fields.
[Authors:] Reese Jones, Jeremy Templeton, Jon Zimmerman (Sandia).
[Install or un-install:]
Before building LAMMPS with this package, you must first build the ATC
library in lib/atc. You can do this manually if you prefer; follow
the instructions in lib/atc/README. You can also do it in one step
@ -1420,10 +1421,10 @@ usual manner:
make yes-user-atc
make machine :pre
make no-user-atc
make machine :pre
[Supporting info:]
src/USER-ATC: filenames -> commands
@ -1446,7 +1447,7 @@ model.
[Author:] Ilya Valuev (JIHT, Russia).
[Install or un-install:]
Before building LAMMPS with this package, you must first build the
AWPMD library in lib/awpmd. You can do this manually if you prefer;
follow the instructions in lib/awpmd/README. You can also do it in
@ -1479,10 +1480,10 @@ usual manner:
make yes-user-awpmd
make machine :pre
make no-user-awpmd
make machine :pre
[Supporting info:]
src/USER-AWPMD: filenames -> commands
@ -1505,13 +1506,13 @@ stability.
[Author:] Oliver Henrich (University of Strathclyde, Glasgow).
[Install or un-install:]
make yes-user-cgdna
make machine :pre
make no-user-cgdna
make machine :pre
[Supporting info:]
src/USER-CGDNA: filenames -> commands
@ -1536,13 +1537,13 @@ acids.
[Author:] Axel Kohlmeyer (Temple U).
[Install or un-install:]
make yes-user-cgsdk
make machine :pre
make no-user-cgsdk
make machine :pre
[Supporting info:]
src/USER-CGSDK: filenames -> commands
@ -1570,7 +1571,7 @@ by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and
Jerome Henin (LISM, CNRS, Marseille, France).
[Install or un-install:]
Before building LAMMPS with this package, you must first build the
COLVARS library in lib/colvars. You can do this manually if you
prefer; follow the instructions in lib/colvars/README. You can also
@ -1594,10 +1595,10 @@ usual manner:
make yes-user-colvars
make machine :pre
make no-user-colvars
make machine :pre
[Supporting info:]
src/USER-COLVARS: filenames -> commands
@ -1619,13 +1620,13 @@ intensities based on kinematic diffraction theory.
[Author:] Shawn Coleman while at the U Arkansas.
[Install or un-install:]
make yes-user-diffraction
make machine :pre
make no-user-diffraction
make machine :pre
[Supporting info:]
src/USER-DIFFRACTION: filenames -> commands
@ -1654,13 +1655,13 @@ algorithm.
Brennan (ARL).
[Install or un-install:]
make yes-user-dpd
make machine :pre
make no-user-dpd
make machine :pre
[Supporting info:]
src/USER-DPD: filenames -> commands
@ -1696,13 +1697,13 @@ tools/drude.
Devemy (CNRS), and Agilio Padua (U Blaise Pascal).
[Install or un-install:]
make yes-user-drude
make machine :pre
make no-user-drude
make machine :pre
[Supporting info:]
src/USER-DRUDE: filenames -> commands
@ -1734,13 +1735,13 @@ tools/eff; see its README file.
[Author:] Andres Jaramillo-Botero (CalTech).
[Install or un-install:]
make yes-user-eff
make machine :pre
make no-user-eff
make machine :pre
[Supporting info:]
src/USER-EFF: filenames -> commands
@ -1773,13 +1774,13 @@ for using this package in tools/fep; see its README file.
[Author:] Agilio Padua (Universite Blaise Pascal Clermont-Ferrand)
[Install or un-install:]
make yes-user-fep
make machine :pre
make no-user-fep
make machine :pre
[Supporting info:]
src/USER-FEP: filenames -> commands
@ -1836,13 +1837,13 @@ file.
You can then install/un-install the package and build LAMMPS in the
usual manner:
make yes-user-h5md
make machine :pre
make no-user-h5md
make machine :pre
[Supporting info:]
src/USER-H5MD: filenames -> commands
@ -1908,7 +1909,7 @@ explained in "Section 5.3.2"_accelerate_intel.html.
make yes-user-intel yes-user-omp
make machine :pre
make no-user-intel no-user-omp
make machine :pre
@ -1938,13 +1939,13 @@ can be used to model MD particles influenced by hydrodynamic forces.
Ontario).
[Install or un-install:]
make yes-user-lb
make machine :pre
make no-user-lb
make machine :pre
[Supporting info:]
src/USER-LB: filenames -> commands
@ -1972,13 +1973,13 @@ matrix-MGPT algorithm due to Tomas Oppelstrup at LLNL.
[Authors:] Tomas Oppelstrup and John Moriarty (LLNL).
[Install or un-install:]
make yes-user-mgpt
make machine :pre
make no-user-mgpt
make machine :pre
[Supporting info:]
src/USER-MGPT: filenames -> commands
@ -2000,13 +2001,13 @@ dihedral, improper, or command style.
src/USER-MISC/README file.
[Install or un-install:]
make yes-user-misc
make machine :pre
make no-user-misc
make machine :pre
[Supporting info:]
src/USER-MISC: filenames -> commands
@ -2031,13 +2032,13 @@ n = grad(g).
Netherlands; since 2017: Brandeis University, Waltham, MA, USA)
[Install or un-install:]
make yes-user-manifold
make machine :pre
make no-user-manifold
make machine :pre
[Supporting info:]
src/USER-MANIFOLD: filenames -> commands
@ -2051,6 +2052,37 @@ http://lammps.sandia.gov/movies.html#manifold :ul
:line
USER-MEAMC package :link(USER-MEAMC),h4
[Contents:]
A pair style for the modified embedded atom (MEAM) potential
translated from the Fortran version in the "MEAM"_MEAM package
to plain C++. In contrast to the MEAM package, no library
needs to be compiled and the pair style can be instantiated
multiple times.
[Author:] Sebastian Huetter, (Otto-von-Guericke University Magdeburg)
based on the Fortran version of Greg Wagner (Northwestern U) while at
Sandia.
[Install or un-install:]
make yes-user-meamc
make machine :pre
make no-user-meamc
make machine :pre
[Supporting info:]
src/USER-MEAMC: filenames -> commands
src/USER-MEAMC/README
"pair meam/c"_pair_meam.html
examples/meam :ul
:line
USER-MOLFILE package :link(USER-MOLFILE),h4
[Contents:]
@ -2080,7 +2112,7 @@ at
[Author:] Axel Kohlmeyer (Temple U).
[Install or un-install:]
Note that the lib/molfile/Makefile.lammps file has a setting for a
dynamic loading library libdl.a that should is typically present on
all systems, which is required for LAMMPS to link with this package.
@ -2090,10 +2122,10 @@ lib/molfile/Makefile.lammps for details.
make yes-user-molfile
make machine :pre
make no-user-molfile
make machine :pre
[Supporting info:]
src/USER-MOLFILE: filenames -> commands
@ -2128,7 +2160,7 @@ tools:
[Author:] Lars Pastewka (Karlsruhe Institute of Technology).
[Install or un-install:]
Note that to follow these steps, you need the standard NetCDF software
package installed on your system. The lib/netcdf/Makefile.lammps file
has settings for NetCDF include and library files that LAMMPS needs to
@ -2138,7 +2170,7 @@ lib/netcdf/README for details.
make yes-user-netcdf
make machine :pre
make no-user-netcdf
make machine :pre
@ -2178,10 +2210,10 @@ Once you have an appropriate Makefile.machine, you can
install/un-install the package and build LAMMPS in the usual manner:
[Install or un-install:]
make yes-user-omp
make machine :pre
make no-user-omp
make machine :pre
@ -2213,13 +2245,13 @@ relations, directly from molecular dynamics simulations.
[Author:] Ling-Ti Kong (Shanghai Jiao Tong University).
[Install or un-install:]
make yes-user-phonon
make machine :pre
make no-user-phonon
make machine :pre
[Supporting info:]
src/USER-PHONON: filenames -> commands
@ -2235,7 +2267,7 @@ USER-QMMM package :link(USER-QMMM),h4
A "fix qmmm"_fix_qmmm.html command which allows LAMMPS to be used in a
QM/MM simulation, currently only in combination with the "Quantum
ESPRESSO"_espresso package.
ESPRESSO"_espresso package.
:link(espresso,http://www.quantum-espresso.org)
@ -2275,7 +2307,7 @@ usual manner:
make yes-user-qmmm
make machine :pre
make no-user-qmmm
make machine :pre
@ -2284,7 +2316,7 @@ for a QM/MM simulation. You must also build Quantum ESPRESSO and
create a new executable which links LAMMPS and Quanutm ESPRESSO
together. These are steps 3 and 4 described in the lib/qmmm/README
file.
[Supporting info:]
src/USER-QMMM: filenames -> commands
@ -2312,13 +2344,13 @@ simulation.
[Author:] Yuan Shen (Stanford U).
[Install or un-install:]
make yes-user-qtb
make machine :pre
make no-user-qtb
make machine :pre
[Supporting info:]
src/USER-QTB: filenames -> commands
@ -2362,10 +2394,10 @@ usual manner:
make yes-user-quip
make machine :pre
make no-user-quip
make machine :pre
[Supporting info:]
src/USER-QUIP: filenames -> commands
@ -2388,13 +2420,13 @@ for monitoring molecules as bonds are created and destroyed.
[Author:] Hasan Metin Aktulga (MSU) while at Purdue University.
[Install or un-install:]
make yes-user-reaxc
make machine :pre
make no-user-reaxc
make machine :pre
[Supporting info:]
src/USER-REAXC: filenames -> commands
@ -2451,10 +2483,10 @@ usual manner:
make yes-user-smd
make machine :pre
make no-user-smd
make machine :pre
[Supporting info:]
src/USER-SMD: filenames -> commands
@ -2477,13 +2509,13 @@ ionocovalent bonds in oxides.
Tetot (LAAS-CNRS, France).
[Install or un-install:]
make yes-user-smtbq
make machine :pre
make no-user-smtbq
make machine :pre
[Supporting info:]
src/USER-SMTBQ: filenames -> commands
@ -2516,13 +2548,13 @@ property/atom"_compute_property_atom.html command.
Dynamics, Ernst Mach Institute, Germany).
[Install or un-install:]
make yes-user-sph
make machine :pre
make no-user-sph
make machine :pre
[Supporting info:]
src/USER-SPH: filenames -> commands
@ -2544,13 +2576,13 @@ stress, etc) about individual interactions.
[Author:] Axel Kohlmeyer (Temple U).
[Install or un-install:]
make yes-user-tally
make machine :pre
make no-user-tally
make machine :pre
[Supporting info:]
src/USER-TALLY: filenames -> commands
@ -2577,7 +2609,7 @@ system.
[Authors:] Richard Berger (JKU) and Daniel Queteschiner (DCS Computing).
[Install or un-install:]
The lib/vtk/Makefile.lammps file has settings for accessing VTK files
and its library, which are required for LAMMPS to build and link with
this package. If the settings are not valid for your system, check if
@ -2590,10 +2622,10 @@ usual manner:
make yes-user-vtk
make machine :pre
make no-user-vtk
make machine :pre
[Supporting info:]
src/USER-VTK: filenames -> commands

View File

@ -714,7 +714,7 @@ stored in the "image" property. All three image flags are stored in
a packed format in a single integer, so count would be 1 to retrieve
that integer, however also a count value of 3 can be used and then
the image flags will be unpacked into 3 individual integers, ordered
in a similar fashion as coordinates.
in a similar fashion as coordinates.
Note that the data structure gather_atoms("x") returns is different
from the data structure returned by extract_atom("x") in four ways.

View File

@ -42,11 +42,11 @@ precision mode. Performance improvements are shown compared to
LAMMPS {without using other acceleration packages} as these are
under active development (and subject to performance changes). The
measurements were performed using the input files available in
the src/USER-INTEL/TEST directory with the provided run script.
These are scalable in size; the results given are with 512K
particles (524K for Liquid Crystal). Most of the simulations are
the src/USER-INTEL/TEST directory with the provided run script.
These are scalable in size; the results given are with 512K
particles (524K for Liquid Crystal). Most of the simulations are
standard LAMMPS benchmarks (indicated by the filename extension in
parenthesis) with modifications to the run length and to add a
parenthesis) with modifications to the run length and to add a
warmup run (for use with offload benchmarks).
:c,image(JPG/user_intel.png)
@ -64,30 +64,30 @@ simulation rates and instructions to reproduce.
In most molecular dynamics software, parallelization parameters
(# of MPI, OpenMP, and vectorization) can change the results due
to changing the order of operations with finite-precision
to changing the order of operations with finite-precision
calculations. The USER-INTEL package is deterministic. This means
that the results should be reproducible from run to run with the
{same} parallel configurations and when using determinstic
{same} parallel configurations and when using determinstic
libraries or library settings (MPI, OpenMP, FFT). However, there
are differences in the USER-INTEL package that can change the
order of operations compared to LAMMPS without acceleration:
Neighbor lists can be created in a different order :ulb,l
Bins used for sorting atoms can be oriented differently :l
The default stencil order for PPPM is 7. By default, LAMMPS will
calculate other PPPM parameters to fit the desired acuracy with
The default stencil order for PPPM is 7. By default, LAMMPS will
calculate other PPPM parameters to fit the desired acuracy with
this order :l
The {newton} setting applies to all atoms, not just atoms shared
between MPI tasks :l
Vectorization can change the order for adding pairwise forces :l
:ule
The precision mode (described below) used with the USER-INTEL
package can change the {accuracy} of the calculations. For the
default {mixed} precision option, calculations between pairs or
triplets of atoms are performed in single precision, intended to
The precision mode (described below) used with the USER-INTEL
package can change the {accuracy} of the calculations. For the
default {mixed} precision option, calculations between pairs or
triplets of atoms are performed in single precision, intended to
be within the inherent error of MD simulations. All accumulation
is performed in double precision to prevent the error from growing
is performed in double precision to prevent the error from growing
with the number of atoms in the simulation. {Single} precision
mode should not be used without appropriate validation.
@ -106,7 +106,9 @@ $t should be 2 for Intel Xeon CPUs and 2 or 4 for Intel Xeon Phi :l
For some of the simple 2-body potentials without long-range
electrostatics, performance and scalability can be better with
the "newton off" setting added to the input script :l
If using {kspace_style pppm} in the input script, add
For simulations on higher node counts, add "processors * * * grid
numa" to the beginning of the input script for better scalability :l
If using {kspace_style pppm} in the input script, add
"kspace_modify diff ad" for better performance :l
:ule
@ -115,12 +117,12 @@ For Intel Xeon Phi CPUs:
Runs should be performed using MCDRAM. :ulb,l
:ule
For simulations using {kspace_style pppm} on Intel CPUs
For simulations using {kspace_style pppm} on Intel CPUs
supporting AVX-512:
Add "kspace_modify diff ad" to the input script :ulb,l
The command-line option should be changed to
"-pk intel 0 omp $r lrt yes -sf intel" where $r is the number of
The command-line option should be changed to
"-pk intel 0 omp $r lrt yes -sf intel" where $r is the number of
threads minus 1. :l
Do not use thread affinity (set KMP_AFFINITY=none) :l
The "newton off" setting may provide better scalability :l
@ -352,7 +354,7 @@ follow in the input script.
NOTE: The USER-INTEL package will perform better with modifications
to the input script when "PPPM"_kspace_style.html is used:
"kspace_modify diff ad"_kspace_modify.html should be added to the
"kspace_modify diff ad"_kspace_modify.html should be added to the
input script.
Long-Range Thread (LRT) mode is an option to the "package
@ -392,6 +394,10 @@ hybrid intel omp"_suffix.html command can also be used within the
input script to automatically append the "omp" suffix to styles when
USER-INTEL styles are not available.
NOTE: For simulations on higher node counts, add "processors * * *
grid numa"_processors.html" to the beginning of the input script for
better scalability.
When running on many nodes, performance might be better when using
fewer OpenMP threads and more MPI tasks. This will depend on the
simulation and the machine. Using the "verlet/split"_run_style.html

View File

@ -30,7 +30,7 @@ The {oxdna/fene} and {oxdna2/fene} bond styles use the potential
to define a modified finite extensible nonlinear elastic (FENE) potential
"(Ouldridge)"_#oxdna_fene to model the connectivity of the phosphate backbone
in the oxDNA force field for coarse-grained modelling of DNA.
in the oxDNA force field for coarse-grained modelling of DNA.
The following coefficients must be defined for the bond type via the
"bond_coeff"_bond_coeff.html command as given in the above example, or in
@ -43,8 +43,8 @@ r0 (distance) :ul
NOTE: The oxDNA bond style has to be used together with the corresponding oxDNA pair styles
for excluded volume interaction {oxdna/excv}, stacking {oxdna/stk}, cross-stacking {oxdna/xstk}
and coaxial stacking interaction {oxdna/coaxstk} as well as hydrogen-bonding interaction {oxdna/hbond} (see also documentation of
"pair_style oxdna/excv"_pair_oxdna.html). For the oxDNA2 "(Snodin)"_#oxdna2 bond style the analogous pair styles and an additional Debye-Hueckel pair
and coaxial stacking interaction {oxdna/coaxstk} as well as hydrogen-bonding interaction {oxdna/hbond} (see also documentation of
"pair_style oxdna/excv"_pair_oxdna.html). For the oxDNA2 "(Snodin)"_#oxdna2 bond style the analogous pair styles and an additional Debye-Hueckel pair
style {oxdna2/dh} have to be defined.
The coefficients in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model.
@ -66,7 +66,7 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"pair_style oxdna/excv"_pair_oxdna.html, "pair_style oxdna2/excv"_pair_oxdna2.html, "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html, "bond_coeff"_bond_coeff.html
"pair_style oxdna/excv"_pair_oxdna.html, "pair_style oxdna2/excv"_pair_oxdna2.html, "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html, "bond_coeff"_bond_coeff.html
[Default:] none

View File

@ -42,7 +42,7 @@ where the index {j} goes over the {n}i nearest neighbors of atom
{i}, and the index {k} goes over the {n}ij common nearest neighbors
between atom {i} and atom {j}. Rik and Rjk are the vectors connecting atom
{k} to atoms {i} and {j}. The quantity in the double sum is computed
for each atom.
for each atom.
The CNP calculation is sensitive to the specified cutoff value.
You should ensure that the appropriate nearest neighbors of an atom are

View File

@ -76,7 +76,9 @@ command for the types of the two atoms is used. For the {radius}
setting, the sum of the radii of the two particles is used as a
cutoff. For example, this is appropriate for granular particles which
only interact when they are overlapping, as computed by "granular pair
styles"_pair_gran.txt.
styles"_pair_gran.txt. Note that if a granular model defines atom
types such that all particles of a specific type are monodisperse
(same diameter), then the two settings are effectively identical.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array

View File

@ -79,6 +79,9 @@ the two atoms is used. For the {radius} setting, the sum of the radii
of the two particles is used as a cutoff. For example, this is
appropriate for granular particles which only interact when they are
overlapping, as computed by "granular pair styles"_pair_gran.html.
Note that if a granular model defines atom types such that all
particles of a specific type are monodisperse (same diameter), then
the two settings are effectively identical.
If the inputs are bond, angle, etc attributes, the local data is
generated by looping over all the atoms owned on a processor and

View File

@ -10,53 +10,93 @@ create_bonds command :h3
[Syntax:]
create_bonds group-ID group2-ID btype rmin rmax :pre
create_bonds style args ... keyword value ... :pre
group-ID = ID of first group
group2-ID = ID of second group, bonds will be between atoms in the 2 groups
btype = bond type of created bonds
rmin = minimum distance between pair of atoms to bond together
rmax = minimum distance between pair of atoms to bond together :ul
style = {many} or {single/bond} or {single/angle} or {single/dihedral} :ule,l
{many} args = group-ID group2-ID btype rmin rmax
group-ID = ID of first group
group2-ID = ID of second group, bonds will be between atoms in the 2 groups
btype = bond type of created bonds
rmin = minimum distance between pair of atoms to bond together
rmax = minimum distance between pair of atoms to bond together
{single/bond} args = btype batom1 batom2
btype = bond type of new bond
batom1,batom2 = atom IDs for two atoms in bond
{single/angle} args = atype aatom1 aatom2 aatom3
atype = bond type of new angle
aatom1,aatom2,aatom3 = atom IDs for three atoms in angle
{single/dihedral} args = dtype datom1 datom2 datom3 datom4
dtype = bond type of new dihedral
datom1,datom2,datom3,datom4 = atom IDs for four atoms in dihedral :pre
zero or more keyword/value pairs may be appended :l
keyword = {special} :l
{special} value = {yes} or {no} :pre
:ule
[Examples:]
create_bonds all all 1 1.0 1.2
create_bonds surf solvent 3 2.0 2.4 :pre
create_bonds many all all 1 1.0 1.2
create_bonds many surf solvent 3 2.0 2.4
create_bond single/bond 1 1 2
create_bond single/angle 5 52 98 107 special no :pre
[Description:]
Create bonds between pairs of atoms that meet specified distance
criteria. The bond interactions can then be computed during a
simulation by the bond potential defined by the
"bond_style"_bond_style.html and "bond_coeff"_bond_coeff.html
commands. This command is useful for adding bonds to a system,
e.g. between nearest neighbors in a lattice of atoms, without having
to enumerate all the bonds in the data file read by the
"read_data"_read_data.html command.
Create bonds between pairs of atoms that meet a specified distance
criteria. Or create a single bond, angle, or dihedral between 2, 3,
or 4 specified atoms.
Note that the flexibility of this command is limited. It can be used
several times to create different types of bond at different
distances. But it cannot typically create all the bonds that would
normally be defined in a complex system of molecules. Also note that
this command does not add any 3-body or 4-body interactions which,
depending on your model, may be induced by added bonds,
e.g. "angle"_angle_style.html, "dihedral"_dihedral_style.html, or
"improper"_improper_style.html interactions.
The new bond (angle, dihedral) interactions will then be computed
during a simulation by the bond (angle, dihedral) potential defined by
the "bond_style"_bond_style.html, "bond_coeff"_bond_coeff.html,
"angle_style"_angle_style.html, "angle_coeff"_angle_coeff.html,
"dihedral_style"_dihedral_style.html,
"dihedral_coeff"_dihedral_coeff.html commands.
All created bonds will be between pairs of atoms I,J where I is in one
of the two specified groups, and J is in the other. The two groups
can be the same, e.g. group "all". The created bonds will be of bond
type {btype}, where {btype} must be a value between 1 and the number
of bond types defined. This maximum value is set by the "bond types"
field in the header of the data file read by the
"read_data"_read_data.html command, or via the optional "bond/types"
argument of the "create_box"_create_box.html command.
The {many} style is useful for adding bonds to a system, e.g. between
nearest neighbors in a lattice of atoms, without having to enumerate
all the bonds in the data file read by the "read_data"_read_data.html
command.
The {single} styles are useful for adding bonds, angles, dihedrals
to a system incrementally, then continuing a simulation.
Note that this command does not auto-create any angle or dihedral
interactions when a bond is added. Nor does it auto-create any bonds
when an angle or dihedral is added. Or auto-create any angles when a
dihedral is added. Thus the flexibility of this command is limited.
It can be used several times to create different types of bond at
different distances. But it cannot typically auto-create all the
bonds or angles or dihedral that would normally be defined in a data
file for a complex system of molecules.
NOTE: If the system has no bonds (angles, dihedrals) to begin with, or
if more bonds per atom are being added than currently exist, then you
must insure that the number of bond types and the maximum number of
bonds per atom are set to large enough values. And similarly for
angles and dihedrals. Otherwise an error may occur when too many
bonds (angles, dihedrals) are added to an atom. If the
"read_data"_read_data.html command is used to define the system, these
parameters can be set via the "bond types" and "extra bond per atom"
fields in the header section of the data file. If the
"create_box"_create_box.html command is used to define the system,
these 2 parameters can be set via its optional "bond/types" and
"extra/bond/per/atom" arguments. And similarly for angles and
dihedrals. See the doc pages for these 2 commands for details.
:line
The {many} style will create bonds between pairs of atoms I,J where I
is in one of the two specified groups, and J is in the other. The two
groups can be the same, e.g. group "all". The created bonds will be
of bond type {btype}, where {btype} must be a value between 1 and the
number of bond types defined.
For a bond to be created, an I,J pair of atoms must be a distance D
apart such that {rmin} <= D <= {rmax}.
The following settings must have been made in an input
script before this command is used:
The following settings must have been made in an input script before
this style is used:
special_bonds weight for 1-2 interactions must be 0.0
a "pair_style"_pair_style.html must be defined
@ -69,8 +109,8 @@ cannot appear in the neighbor list, to avoid creation of duplicate
bonds. The neighbor list for all atom type pairs must also extend to
a distance that encompasses the {rmax} for new bonds to create.
An additional requirement is that your system must be ready to perform
a simulation. This means, for example, that all
An additional requirement for this style is that your system must be
ready to perform a simulation. This means, for example, that all
"pair_style"_pair_style.html coefficients be set via the
"pair_coeff"_pair_coeff.html command. A "bond_style"_bond_style.html
command and all bond coefficients must also be set, even if no bonds
@ -83,17 +123,58 @@ executes, e.g. if you wish to use long-range Coulombic interactions
via the "kspace_style"_kspace_style.html command for your subsequent
simulation.
NOTE: If the system has no bonds to begin with, or if more bonds per
atom are being added than currently exist, then you must insure that
the number of bond types and the maximum number of bonds per atom are
set to large enough values. Otherwise an error may occur when too
many bonds are added to an atom. If the "read_data"_read_data.html
command is used to define the system, these 2 parameters can be set
via the "bond types" and "extra bond per atom" fields in the header
section of the data file. If the "create_box"_create_box.html command
is used to define the system, these 2 parameters can be set via its
optional "bond/types" and "extra/bond/per/atom" arguments. See the
doc pages for the 2 commands for details.
:line
The {single/bond} style creates a single bond of type {btype} between
two atoms with IDs {batom1} and {batom2}. {Btype} must be a value
between 1 and the number of bond types defined.
The {single/angle} style creates a single angle of type {atype}
between three atoms with IDs {aatom1}, {aatom2}, and {aatom3}. The
ordering of the atoms is the same as in the {Angles} section of a data
file read by the "read_data"_read_data command. I.e. the 3 atoms are
ordered linearly within the angle; the central atom is {aatom2}.
{Atype} must be a value between 1 and the number of angle types
defined.
The {single/dihedral} style creates a single dihedral of type {btype}
between two atoms with IDs {batom1} and {batom2}. The ordering of the
atoms is the same as in the {Dihedrals} section of a data file read by
the "read_data"_read_data command. I.e. the 4 atoms are ordered
linearly within the dihedral. {Dtype} must be a value between 1 and
the number of dihedral types defined.
:line
The keyword {special} controls whether an internal list of special
bonds is created after one or more bonds, or a single angle or
dihedral is added to the system.
The default value is {yes}. A value of {no} cannot be used
with the {many} style.
This is an expensive operation since the bond topology for the system
must be walked to find all 1-2, 1-3, 1-4 interactions to store in an
internal list, which is used when pairwise interactions are weighted;
see the "special_bonds"_special_bonds.html command for details.
Thus if you are adding a few bonds or a large list of angles all at
the same time, by using this command repeatedly, it is more efficient
to only trigger the internal list to be created once, after the last
bond (or angle, or dihedral) is added:
create_bonds single/bond 5 52 98 special no
create_bonds single/bond 5 73 74 special no
...
create_bonds single/bond 5 17 386 special no
create_bonds single/bond 4 112 183 special yes :pre
Note that you MUST insure the internal list is re-built after the last
bond (angle, dihedral) is added, before performing a simulation.
Otherwise pairwise interactions will not be properly excluded or
weighted. LAMMPS does NOT check that you have done this correctly.
:line
[Restrictions:]
@ -105,4 +186,6 @@ molecule template files via the "molecule"_molecule.html and
"create_atoms"_create_atoms.html, "delete_bonds"_delete_bonds.html
[Default:] none
[Default:]
The keyword default is special = yes.

View File

@ -138,7 +138,15 @@ more instructions on how to use the accelerated styles effectively.
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
When using run_style "respa"_run_style.html, these dihedral styles
must be assigned to the same r-RESPA level as {pair} or {outer}.
When used in combination with CHARMM pair styles, the 1-4
"special_bonds"_special_bonds.html scaling factors must be set to 0.0.
Otherwise non-bonded contributions for these 1-4 pairs will be
computed multiple times.
These dihedral styles can only be used if LAMMPS was built with the
MOLECULE package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info on packages.

View File

@ -16,7 +16,7 @@ ID = user-assigned name for the dump
group-ID = ID of the group of atoms to be dumped
vtk = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page)
N = dump every this many timesteps
file = name of file to write dump info to
file = name of file to write dump info to
args = same as arguments for "dump_style custom"_dump.html :ul
[Examples:]
@ -83,7 +83,7 @@ Triclinic simulation boxes (non-orthogonal) are saved as
hexahedrons in either legacy .vtk or .vtu XML format.
Style {vtk} allows you to specify a list of atom attributes to be
written to the dump file for each atom. The list of possible attributes
written to the dump file for each atom. The list of possible attributes
is the same as for the "dump_style custom"_dump.html command; see
its doc page for a listing and an explanation of each attribute.

View File

@ -245,7 +245,7 @@ appear the system is converging to your specified pressure. The
solution for this is to either (a) zero the velocities of all atoms
before performing the minimization, or (b) make sure you are
monitoring the pressure without its kinetic component. The latter can
be done by outputting the pressure from the pressure compute this
be done by outputting the pressure from the pressure compute this
command creates (see below) or a pressure compute you define yourself.
NOTE: Because pressure is often a very sensitive function of volume,

View File

@ -45,14 +45,14 @@ species {j} in particle {i}, {u_j} is the internal energy of species j,
{DeltaH_f,j} is the heat of formation of species {j}, N is the number of
molecules represented by the coarse-grained particle, kb is the
Boltzmann constant, and T is the temperature of the system. Additionally,
it is possible to modify the concentration-dependent particle internal
energy relation by adding an energy correction, temperature-dependent
it is possible to modify the concentration-dependent particle internal
energy relation by adding an energy correction, temperature-dependent
correction, and/or a molecule-dependent correction. An energy correction can
be specified as a constant (in energy units). A temperature correction can be
specified by multiplying a temperature correction coefficient by the
internal temperature. A molecular correction can be specified by
by multiplying a molecule correction coefficient by the average number of
product gas particles in the coarse-grain particle.
be specified as a constant (in energy units). A temperature correction can be
specified by multiplying a temperature correction coefficient by the
internal temperature. A molecular correction can be specified by
by multiplying a molecule correction coefficient by the average number of
product gas particles in the coarse-grain particle.
Fix {eos/table/rx} creates interpolation tables of length {N} from {m}
internal energy values of each species {u_j} listed in a file as a
@ -72,12 +72,12 @@ The second filename specifies a file containing heat of formation
{DeltaH_f,j} for each species.
In cases where the coarse-grain particle represents a single molecular
species (i.e., no reactions occur and fix {rx} is not present in the input file),
fix {eos/table/rx} can be applied in a similar manner to fix {eos/table}
within a non-reactive DPD simulation. In this case, the heat of formation
species (i.e., no reactions occur and fix {rx} is not present in the input file),
fix {eos/table/rx} can be applied in a similar manner to fix {eos/table}
within a non-reactive DPD simulation. In this case, the heat of formation
filename is replaced with the heat of formation value for the single species.
Additionally, the energy correction and temperature correction coefficients may
also be specified as fix arguments.
Additionally, the energy correction and temperature correction coefficients may
also be specified as fix arguments.
:line
@ -138,8 +138,8 @@ used as the species name must correspond with the tags used to define
the reactions with the "fix rx"_fix_rx.html command.
Alternatively, corrections to the EOS can be included by specifying
three additional columns that correspond to the energy correction,
the temperature correction coefficient and molecule correction
three additional columns that correspond to the energy correction,
the temperature correction coefficient and molecule correction
coefficient. In this case, the format of the file is as follows:
# HEAT OF FORMATION TABLE (one or more comment or blank lines) :pre

View File

@ -70,8 +70,8 @@ minimization"_minimize.html.
[Restrictions:]
This fix is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the "Making
This fix is part of the USER-MISC 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.
Currently, it does not support "molecule templates"_molecule.html.

View File

@ -406,7 +406,7 @@ the user for each subsequent fix gcmc command.
[Default:]
The option defaults are mol = no, maxangle = 10, overlap_cutoff = 0.0,
fugacity_coeff = 1, and full_energy = no,
fugacity_coeff = 1, and full_energy = no,
except for the situations where full_energy is required, as
listed above.

View File

@ -85,13 +85,13 @@ No information about this fix is written to "binary restart
files"_restart.html.
The "thermo_modify"_thermo_modify.html {press} option is supported
by this fix to add the rescaled kinetic pressure as part of
by this fix to add the rescaled kinetic pressure as part of
"thermodynamic output"_thermo_style.html.
[Restrictions:]
This fix is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the "Making
This fix is part of the USER-MISC 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 commands:]

View File

@ -58,14 +58,14 @@ input are listed in the same order as in the data file of LAMMPS. The
initial configuration is ignored, as it will be substituted with the
coordinates received from i-PI before forces are ever evaluated.
A note of caution when using potentials that contain long-range
A note of caution when using potentials that contain long-range
electrostatics, or that contain parameters that depend on box size:
all of these options will be initialized based on the cell size in the
LAMMPS-side initial configuration and kept constant during the run.
This is required to e.g. obtain reproducible and conserved forces.
If the cell varies too wildly, it may be advisable to reinitialize
these interactions at each call. This behavior can be requested by
setting the {reset} switch.
LAMMPS-side initial configuration and kept constant during the run.
This is required to e.g. obtain reproducible and conserved forces.
If the cell varies too wildly, it may be advisable to reinitialize
these interactions at each call. This behavior can be requested by
setting the {reset} switch.
[Restart, fix_modify, output, run start/stop, minimize info:]

View File

@ -57,7 +57,7 @@ simulations is as follows:
Perform all-atom simulations on the system to be coarse grained.
Generate a trajectory mapped to the coarse-grained model.
Create input files for the MS-CG library.
Run the range finder functionality of the MS-CG library.
Run the range finder functionality of the MS-CG library.
Run the force matching functionality of the MS-CG library.
Check the results of the force matching.
Run coarse-grained simulations using the new coarse-grained potentials. :ol
@ -70,7 +70,7 @@ Step 2 can be performed using a Python script (what is the name?)
provided with the MS-CG library which defines the coarse-grained model
and converts a standard LAMMPS dump file for an all-atom simulation
(step 1) into a LAMMPS dump file which has the positions of and forces
on the coarse-grained beads.
on the coarse-grained beads.
In step 3, an input file named "control.in" is needed by the MS-CG
library which sets parameters for the range finding and force matching

View File

@ -17,19 +17,22 @@ msst = style name of this fix :l
dir = {x} or {y} or {z} :l
shockvel = shock velocity (strictly positive, distance/time units) :l
zero or more keyword value pairs may be appended :l
keyword = {q} or {mu} or {p0} or {v0} or {e0} or {tscale} :l
keyword = {q} or {mu} or {p0} or {v0} or {e0} or {tscale} or {beta} or {dftb} :l
{q} value = cell mass-like parameter (mass^2/distance^4 units)
{mu} value = artificial viscosity (mass/length/time units)
{p0} value = initial pressure in the shock equations (pressure units)
{v0} value = initial simulation cell volume in the shock equations (distance^3 units)
{e0} value = initial total energy (energy units)
{tscale} value = reduction in initial temperature (unitless fraction between 0.0 and 1.0) :pre
{tscale} value = reduction in initial temperature (unitless fraction between 0.0 and 1.0)
{dftb} value = {yes} or {no} for whether using MSST in conjunction with DFTB+
{beta} value = scale factor on energy contribution of DFTB+ :pre
:ule
[Examples:]
fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01 :pre
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01
fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5 dftb yes beta 0.5 :pre
[Description:]
@ -58,11 +61,11 @@ oscillations have physical significance in some cases. The optional
symmetry to equilibrate to the shock Hugoniot and Rayleigh line more
rapidly in such cases.
{tscale} is a factor between 0 and 1 that determines what fraction of
thermal kinetic energy is converted to compressive strain kinetic
energy at the start of the simulation. Setting this parameter to a
non-zero value may assist in compression at the start of simulations
where it is slow to occur.
The keyword {tscale} is a factor between 0 and 1 that determines what
fraction of thermal kinetic energy is converted to compressive strain
kinetic energy at the start of the simulation. Setting this parameter
to a non-zero value may assist in compression at the start of
simulations where it is slow to occur.
If keywords {e0}, {p0},or {v0} are not supplied, these quantities will
be calculated on the first step, after the energy specified by
@ -77,17 +80,40 @@ For all pressure styles, the simulation box stays orthogonal in shape.
Parrinello-Rahman boundary conditions (tilted box) are supported by
LAMMPS, but are not implemented for MSST.
This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
This fix computes a temperature and pressure and potential energy each
timestep. To do this, the fix creates its own computes of style "temp"
"pressure", and "pe", as if these commands had been issued:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp :pre
compute fix-ID_MSST_temp all temp
compute fix-ID_MSST_press all pressure fix-ID_MSST_temp :pre
compute fix-ID_MSST_pe all pe :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". The group for the new computes is "all".
IDs of the new computes are the fix-ID + "_MSST_temp" or "_MSST_press"
or "_MSST_pe". The group for the new computes is "all".
:line
The {dftb} and {beta} keywords are to allow this fix to be used when
LAMMPS is being driven by DFTB+, a density-functional tight-binding
code.
If the keyword {dftb} is used with a value of {yes}, then the MSST
equations are altered to account for an energy contribution compute by
DFTB+. In this case, you must define a "fix
external"_fix_external.html command in your input script, which is
used to callback to DFTB+ during the LAMMPS timestepping. DFTB+ will
communicate its info to LAMMPS via that fix.
The keyword {beta} is a scale factor on the DFTB+ energy contribution.
The value of {beta} must be between 0.0 and 1.0 inclusive. A value of
0.0 means no contribution, a value of 1.0 means a full contribution.
(July 2017) More information about these keywords and the use of
LAMMPS with DFTB+ will be added to the LAMMMPS documention soon.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
@ -149,8 +175,9 @@ all.
[Default:]
The keyword defaults are q = 10, mu = 0, tscale = 0.01. p0, v0, and e0
are calculated on the first step.
The keyword defaults are q = 10, mu = 0, tscale = 0.01, dftb = no,
beta = 0.0. Note that p0, v0, and e0 are calculated on the first
timestep.
:line

View File

@ -23,13 +23,13 @@ fix 1 all nve/dot :pre
[Description:]
Apply a rigid-body integrator as described in "(Davidchack)"_#Davidchack1
to a group of atoms, but without Langevin dynamics.
to a group of atoms, but without Langevin dynamics.
This command performs Molecular dynamics (MD)
via a velocity-Verlet algorithm and an evolution operator that rotates
the quaternion degrees of freedom, similar to the scheme outlined in "(Miller)"_#Miller1.
via a velocity-Verlet algorithm and an evolution operator that rotates
the quaternion degrees of freedom, similar to the scheme outlined in "(Miller)"_#Miller1.
This command is the equivalent of the "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html
without damping and noise and can be used to determine the stability range
without damping and noise and can be used to determine the stability range
in a NVE ensemble prior to using the Langevin-type DOTC-integrator
(see also "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html).
The command is equivalent to the "fix nve"_fix_nve.html.

View File

@ -28,20 +28,20 @@ fix 1 all nve/dotc/langevin 1.0 1.0 0.03 457145 angmom 10 :pre
[Description:]
Apply a rigid-body Langevin-type integrator of the kind "Langevin C"
Apply a rigid-body Langevin-type integrator of the kind "Langevin C"
as described in "(Davidchack)"_#Davidchack2
to a group of atoms, which models an interaction with an implicit background
solvent. This command performs Brownian dynamics (BD)
via a technique that splits the integration into a deterministic Hamiltonian
part and the Ornstein-Uhlenbeck process for noise and damping.
via a technique that splits the integration into a deterministic Hamiltonian
part and the Ornstein-Uhlenbeck process for noise and damping.
The quaternion degrees of freedom are updated though an evolution
operator which performs a rotation in quaternion space, preserves
the quaternion norm and is akin to "(Miller)"_#Miller2.
In terms of syntax this command has been closely modelled on the
"fix langevin"_fix_langevin.html and its {angmom} option. But it combines
the "fix nve"_fix_nve.html and the "fix langevin"_fix_langevin.html in
one single command. The main feature is improved stability
In terms of syntax this command has been closely modelled on the
"fix langevin"_fix_langevin.html and its {angmom} option. But it combines
the "fix nve"_fix_nve.html and the "fix langevin"_fix_langevin.html in
one single command. The main feature is improved stability
over the standard integrator, permitting slightly larger timestep sizes.
NOTE: Unlike the "fix langevin"_fix_langevin.html this command performs
@ -57,7 +57,7 @@ Fc is the conservative force computed via the usual inter-particle
interactions ("pair_style"_pair_style.html,
"bond_style"_bond_style.html, etc).
The Ff and Fr terms are implicitly taken into account by this fix
The Ff and Fr terms are implicitly taken into account by this fix
on a per-particle basis.
Ff is a frictional drag or viscous damping term proportional to the
@ -77,7 +77,7 @@ a Gaussian random number) for speed.
:line
{Tstart} and {Tstop} have to be constant values, i.e. they cannot
{Tstart} and {Tstop} have to be constant values, i.e. they cannot
be variables.
The {damp} parameter is specified in time units and determines how
@ -98,16 +98,16 @@ different numbers of processors.
The keyword/value option has to be used in the following way:
This fix has to be used together with the {angmom} keyword. The
particles are always considered to have a finite size.
The keyword {angmom} enables thermostatting of the rotational degrees of
freedom in addition to the usual translational degrees of freedom.
This fix has to be used together with the {angmom} keyword. The
particles are always considered to have a finite size.
The keyword {angmom} enables thermostatting of the rotational degrees of
freedom in addition to the usual translational degrees of freedom.
The scale factor after the {angmom} keyword gives the ratio of the rotational to
The scale factor after the {angmom} keyword gives the ratio of the rotational to
the translational friction coefficient.
An example input file can be found in /examples/USER/cgdna/examples/duplex2/.
A technical report with more information on this integrator can be found
A technical report with more information on this integrator can be found
"here"_PDF/USER-CGDNA-overview.pdf.
:line
@ -120,7 +120,7 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"fix nve"_fix_nve.html, "fix langevin"_fix_langevin.html, "fix nve/dot"_fix_nve_dot.html,
"fix nve"_fix_nve.html, "fix langevin"_fix_langevin.html, "fix nve/dot"_fix_nve_dot.html,
[Default:] none

View File

@ -27,7 +27,7 @@ timestep. V is volume; K is kinetic energy. This creates a system
trajectory consistent with the isokinetic ensemble.
The equations of motion used are those of Minary et al in
"(Minary)"_#nvk-Minary, a variant of those initially given by Zhang in
"(Minary)"_#nvk-Minary, a variant of those initially given by Zhang in
"(Zhang)"_#nvk-Zhang.
The kinetic energy will be held constant at its value given when fix

View File

@ -89,7 +89,7 @@ NOTE: The center of mass of a group of atoms is calculated in
group can straddle a periodic boundary. See the "dump"_dump.html doc
page for a discussion of unwrapped coordinates. It also means that a
spring connecting two groups or a group and the tether point can cross
a periodic boundary and its length be calculated correctly.
a periodic boundary and its length be calculated correctly.
[Restart, fix_modify, output, run start/stop, minimize info:]

View File

@ -144,7 +144,11 @@ this fix.
"fix spring"_fix_spring.html, "fix adapt"_fix_adapt.html
[Restrictions:] none
[Restrictions:]
This fix is part of the USER-MISC 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.
[Default:]

View File

@ -219,10 +219,10 @@ instead of using the virial equation. This option cannot be used to access
individual components of the pressure tensor, to compute per-atom virial,
or with suffix kspace/pair styles of MSM, like OMP or GPU.
The {fftbench} keyword applies only to PPPM. It is on by default. If
this option is turned off, LAMMPS will not take the time at the end
of a run to give FFT benchmark timings, and will finish a few seconds
faster than it would if this option were on.
The {fftbench} keyword applies only to PPPM. It is off by default. If
this option is turned on, LAMMPS will perform a short FFT benchmark
computation and report its timings, and will thus finish a some seconds
later than it would if this option were off.
The {collective} keyword applies only to PPPM. It is set to {no} by
default, except on IBM BlueGene machines. If this option is set to
@ -306,7 +306,7 @@ parameters, see the "How-To"_Section_howto.html#howto_24 discussion.
The option defaults are mesh = mesh/disp = 0 0 0, order = order/disp =
5 (PPPM), order = 10 (MSM), minorder = 2, overlap = yes, force = -1.0,
gewald = gewald/disp = 0.0, slab = 1.0, compute = yes, cutoff/adjust =
yes (MSM), pressure/scalar = yes (MSM), fftbench = yes (PPPM), diff = ik
yes (MSM), pressure/scalar = yes (MSM), fftbench = no (PPPM), diff = ik
(PPPM), mix/disp = pair, force/disp/real = -1.0, force/disp/kspace = -1.0,
split = 0, tol = 1.0e-6, and disp/auto = no. For pppm/intel, order =
order/disp = 7.

View File

@ -344,7 +344,7 @@ informations can help understanding what is going wrong. For instance
when the path angle becomes accute the definition of tangent used in
the NEB calculation is questionable and the NEB cannot may diverge
"(Maras)"_#Maras2.
When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a

View File

@ -40,8 +40,8 @@ vectorial atomic forces.
Only a single pair_coeff command is used with the {agni} style which
specifies an AGNI potential file containing the parameters of the
force field for the needed elements. These are mapped to LAMMPS atom
types by specifying N additional arguments after the filename in the
force field for the needed elements. These are mapped to LAMMPS atom
types by specifying N additional arguments after the filename in the
pair_coeff command, where N is the number of LAMMPS atom types:
filename
@ -52,13 +52,13 @@ to specify the path for the force field file.
An AGNI force field is fully specified by the filename which contains the
parameters of the force field, i.e., the reference training environments
used to construct the machine learning force field. Example force field
and input files are provided in the examples/USER/misc/agni directory.
used to construct the machine learning force field. Example force field
and input files are provided in the examples/USER/misc/agni directory.
:line
Styles with {omp} suffix is functionally the same as the corresponding
style without the suffix. They have been optimized to run faster, depending
Styles with {omp} suffix is functionally the same as the corresponding
style without the suffix. They have been optimized to run faster, depending
on your available hardware, as discussed in "Section 5"_Section_accelerate.html
of the manual. The accelerated style takes the same arguments and
should produce the same results, except for round-off and precision

View File

@ -75,7 +75,7 @@ Lennard-Jones 12/6) given by
:c,image(Eqs/pair_buck.jpg)
where rho is an ionic-pair dependent length parameter, and Rc is the
cutoff on both terms.
cutoff on both terms.
The styles with {coul/cut} or {coul/long} or {coul/msm} add a
Coulombic term as described for the "lj/cut"_pair_lj.html pair styles.

View File

@ -104,7 +104,15 @@ charmmfsw"_dihedral_charmm.html command. Eventually code from the new
styles will propagate into the related pair styles (e.g. implicit,
accelerator, free energy variants).
The general CHARMM formulas are as follows
NOTE: The newest CHARMM pair styles reset the Coulombic energy
conversion factor used internally in the code, from the LAMMPS value
to the CHARMM value, as if it were effectively a parameter of the
force field. This is because the CHARMM code uses a slightly
different value for the this conversion factor in "real
units"_units.html (Kcal/mole), namely CHARMM = 332.0716, LAMMPS =
332.06371. This is to enable more precise agreement by LAMMPS with
the CHARMM force field energies and forces, when using one of these
two CHARMM pair styles.
:c,image(Eqs/pair_charmm.jpg)

View File

@ -71,6 +71,14 @@ and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the
torques do not act symmetrically. These formulas are discussed in
"(Allen)"_#Allen2 and in "(Toukmaji)"_#Toukmaji2.
Also note, that in the code, all of these terms (except Elj) have a
C/epsilon prefactor, the same as the Coulombic term in the LJ +
Coulombic pair styles discussed "here"_pair_lj.html. C is an
energy-conversion constant and epsilon is the dielectric constant
which can be set by the "dielectric"_dielectric.html command. The
same is true of the equations that follow for other dipole pair
styles.
Style {lj/sf/dipole/sf} computes "shifted-force" interactions between
pairs of particles that each have a charge and/or a point dipole
moment. In general, a shifted-force potential is a (sligthly) modified

View File

@ -55,33 +55,33 @@ defined in the reaction kinetics files specified with the "fix
rx"_fix_rx.html command or they must correspond to the tag "1fluid",
signifying interaction with a product species mixture determined
through a one-fluid approximation. The interaction potential is
weighted by the geometric average of either the mole fraction concentrations
or the number of molecules associated with the interacting coarse-grained
particles (see the {fractional} or {molecular} weighting pair style options).
weighted by the geometric average of either the mole fraction concentrations
or the number of molecules associated with the interacting coarse-grained
particles (see the {fractional} or {molecular} weighting pair style options).
The coarse-grained potential is stored before and after the
reaction kinetics solver is applied, where the difference is defined
to be the internal chemical energy (uChem).
The fourth argument specifies the type of scaling that will be used
The fourth argument specifies the type of scaling that will be used
to scale the EXP-6 parameters as reactions occur. Currently, there
are three scaling options: {exponent}, {polynomial} and {none}.
Exponent scaling requires two additional arguments for scaling
Exponent scaling requires two additional arguments for scaling
the {Rm} and {epsilon} parameters, respectively. The scaling factor
is computed by phi^exponent, where phi is the number of molecules
represented by the coarse-grain particle and exponent is specified
is computed by phi^exponent, where phi is the number of molecules
represented by the coarse-grain particle and exponent is specified
as a pair coefficient argument for {Rm} and {epsilon}, respectively.
The {Rm} and {epsilon} parameters are multiplied by the scaling
The {Rm} and {epsilon} parameters are multiplied by the scaling
factor to give the scaled interaction parameters for the CG particle.
Polynomial scaling requires a filename to be specified as a pair
Polynomial scaling requires a filename to be specified as a pair
coeff argument. The file contains the coefficients to a fifth order
polynomial for the {alpha}, {epsilon} and {Rm} parameters that depend
upon phi (the number of molecules represented by the CG particle).
polynomial for the {alpha}, {epsilon} and {Rm} parameters that depend
upon phi (the number of molecules represented by the CG particle).
The format of a polynomial file is provided below.
The {none} option to the scaling does not have any additional pair coeff
arguments. This is equivalent to specifying the {exponent} option with
arguments. This is equivalent to specifying the {exponent} option with
{Rm} and {epsilon} exponents of 0.0 and 0.0, respectively.
The final argument specifies the interaction cutoff (optional).
@ -102,7 +102,7 @@ parenthesized comments):
# POLYNOMIAL FILE (one or more comment or blank lines) :pre
# General Functional Form:
# A*phi^5 + B*phi^4 + C*phi^3 + D*phi^2 + E*phi + F
# A*phi^5 + B*phi^4 + C*phi^3 + D*phi^2 + E*phi + F
#
# Parameter A B C D E F
(blank)

View File

@ -24,25 +24,25 @@ pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C :pre
[Description:]
The {kolmogorov/crespi/z} style computes the Kolmogorov-Crespi interaction
potential as described in "(KC05)"_#KC05. An important simplification is made,
which is to take all normals along the z-axis.
The {kolmogorov/crespi/z} style computes the Kolmogorov-Crespi interaction
potential as described in "(KC05)"_#KC05. An important simplification is made,
which is to take all normals along the z-axis.
:c,image(Eqs/pair_kolmogorov_crespi_z.jpg)
It is important to have a suffiently large cutoff to ensure smooth forces.
Energies are shifted so that they go continously to zero at the cutoff assuming
It is important to have a suffiently large cutoff to ensure smooth forces.
Energies are shifted so that they go continously to zero at the cutoff assuming
that the exponential part of {Vij} (first term) decays sufficiently fast.
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
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.
The parameter file (e.g. CC.KC), is intended for use with metal
"units"_units.html, with energies in meV. An additional parameter, {S},
is available to facilitate scaling of energies in accordance with
The parameter file (e.g. CC.KC), is intended for use with metal
"units"_units.html, with energies in meV. An additional parameter, {S},
is available to facilitate scaling of energies in accordance with
"(vanWijk)"_#vanWijk.
This potential must be used in combination with hybrid/overlay.
@ -64,7 +64,7 @@ LAMMPS"_Section_start.html#start_3 section for more info.
:line
:link(KC05)
:link(KC05)
[(KC05)] A. N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005)
:link(vanWijk)

View File

@ -7,10 +7,13 @@
:line
pair_style meam command :h3
pair_style meam/c command :h3
[Syntax:]
pair_style meam :pre
pair_style style :pre
style = {meam} or {meam/c}
[Examples:]
@ -30,7 +33,8 @@ using modified embedded-atom method (MEAM) potentials
"EAM potentials"_pair_eam.html which adds angular forces. It is
thus suitable for modeling metals and alloys with fcc, bcc, hcp and
diamond cubic structures, as well as covalently bonded materials like
silicon and carbon.
silicon and carbon. Style {meam/c} is a translation of the {meam} code
from (mostly) Fortran to C++. It is functionally equivalent to {meam}.
In the MEAM formulation, the total energy E of a system of atoms is
given by:
@ -331,10 +335,14 @@ This pair style can only be used via the {pair} keyword of the
[Restrictions:]
This style is part of the MEAM package. It is only enabled if LAMMPS
The {meam} style is part of the MEAM package. It is only enabled if LAMMPS
was built with that package, which also requires the MEAM library be
built and linked with LAMMPS. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
built and linked with LAMMPS.
The {meam/c} style is provided in the USER-MEAMC package. It is only enabled
if LAMMPS was built with that package. In contrast to the {meam} style,
{meam/c} does not require a separate library to be compiled and it can be
instantiated multiple times in a "hybrid"_pair_hybrid.html pair style.
See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]

View File

@ -97,9 +97,9 @@ tags must either correspond to the species defined in the reaction
kinetics files specified with the "fix rx"_fix_rx.html command or they
must correspond to the tag "1fluid", signifying interaction with a
product species mixture determined through a one-fluid approximation.
The interaction potential is weighted by the geometric average of
either the mole fraction concentrations or the number of molecules
associated with the interacting coarse-grained particles (see the
The interaction potential is weighted by the geometric average of
either the mole fraction concentrations or the number of molecules
associated with the interacting coarse-grained particles (see the
{fractional} or {molecular} weighting pair style options). The coarse-grained potential is
stored before and after the reaction kinetics solver is applied, where
the difference is defined to be the internal chemical energy (uChem).

View File

@ -80,10 +80,12 @@ For a given entry, if the first three arguments are all different,
then the entry is for the {K} and {theta_0} parameters (the cutoff in
this case is irrelevant).
It is {not} required that the potential file contain entries for all
of the elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
It is required that the potential file contains entries for {all}
permutations of the elements listed in the pair_coeff command.
If certain combinations are not parameterized the corresponding
parameters should be set to zero. The potential file can also
contain entries for additional elements which are not used in
a particular simulation; LAMMPS ignores those entries.
:line

View File

@ -39,17 +39,17 @@ pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1
[Description:]
The {oxdna} pair styles compute the pairwise-additive parts of the oxDNA force field
for coarse-grained modelling of DNA. The effective interaction between the nucleotides consists of potentials for the
The {oxdna} pair styles compute the pairwise-additive parts of the oxDNA force field
for coarse-grained modelling of DNA. The effective interaction between the nucleotides consists of potentials for the
excluded volume interaction {oxdna/excv}, the stacking {oxdna/stk}, cross-stacking {oxdna/xstk}
and coaxial stacking interaction {oxdna/coaxstk} as well
as the hydrogen-bonding interaction {oxdna/hbond} between complementary pairs of nucleotides on
opposite strands.
The exact functional form of the pair styles is rather complex, which manifests itself in the 144 coefficients
in the above example. The individual potentials consist of products of modulation factors,
which themselves are constructed from a number of more basic potentials
(Morse, Lennard-Jones, harmonic angle and distance) as well as quadratic smoothing and modulation terms.
The exact functional form of the pair styles is rather complex, which manifests itself in the 144 coefficients
in the above example. The individual potentials consist of products of modulation factors,
which themselves are constructed from a number of more basic potentials
(Morse, Lennard-Jones, harmonic angle and distance) as well as quadratic smoothing and modulation terms.
We refer to "(Ouldridge-DPhil)"_#Ouldridge-DPhil1 and "(Ouldridge)"_#Ouldridge1
for a detailed description of the oxDNA force field.
@ -57,8 +57,8 @@ NOTE: These pair styles have to be used together with the related oxDNA bond sty
{oxdna/fene} for the connectivity of the phosphate backbone (see also documentation of
"bond_style oxdna/fene"_bond_oxdna.html). With one exception the coefficients
in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model.
The exception is the first coefficient after {oxdna/stk} (T=0.1 in the above example).
When using a Langevin thermostat, e.g. through "fix langevin"_fix_langevin.html
The exception is the first coefficient after {oxdna/stk} (T=0.1 in the above example).
When using a Langevin thermostat, e.g. through "fix langevin"_fix_langevin.html
or "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html
the temperature coefficients have to be matched to the one used in the fix.
@ -79,7 +79,7 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_style oxdna/fene"_bond_oxdna.html, "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html, "pair_coeff"_pair_coeff.html,
"bond_style oxdna/fene"_bond_oxdna.html, "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html, "pair_coeff"_pair_coeff.html,
"bond_style oxdna2/fene"_bond_oxdna.html, "pair_style oxdna2/excv"_pair_oxdna2.html
[Default:] none

View File

@ -45,17 +45,17 @@ pair_coeff * * oxdna2/dh 0.1 1.0 0.815 :pre
[Description:]
The {oxdna2} pair styles compute the pairwise-additive parts of the oxDNA force field
for coarse-grained modelling of DNA. The effective interaction between the nucleotides consists of potentials for the
The {oxdna2} pair styles compute the pairwise-additive parts of the oxDNA force field
for coarse-grained modelling of DNA. The effective interaction between the nucleotides consists of potentials for the
excluded volume interaction {oxdna2/excv}, the stacking {oxdna2/stk}, cross-stacking {oxdna2/xstk}
and coaxial stacking interaction {oxdna2/coaxstk}, electrostatic Debye-Hueckel interaction {oxdna2/dh}
as well as the hydrogen-bonding interaction {oxdna2/hbond} between complementary pairs of nucleotides on
opposite strands.
The exact functional form of the pair styles is rather complex.
The individual potentials consist of products of modulation factors,
which themselves are constructed from a number of more basic potentials
(Morse, Lennard-Jones, harmonic angle and distance) as well as quadratic smoothing and modulation terms.
The exact functional form of the pair styles is rather complex.
The individual potentials consist of products of modulation factors,
which themselves are constructed from a number of more basic potentials
(Morse, Lennard-Jones, harmonic angle and distance) as well as quadratic smoothing and modulation terms.
We refer to "(Snodin)"_#Snodin and the original oxDNA publications "(Ouldridge-DPhil)"_#Ouldridge-DPhil2
and "(Ouldridge)"_#Ouldridge2 for a detailed description of the oxDNA2 force field.
@ -63,7 +63,7 @@ NOTE: These pair styles have to be used together with the related oxDNA2 bond st
{oxdna2/fene} for the connectivity of the phosphate backbone (see also documentation of
"bond_style oxdna2/fene"_bond_oxdna.html). Almost all coefficients
in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model.
Exceptions are the first coefficient after {oxdna2/stk} (T=0.1 in the above example) and the coefficients
Exceptions are the first coefficient after {oxdna2/stk} (T=0.1 in the above example) and the coefficients
after {oxdna2/dh} (T=0.1, rhos=1.0, qeff=0.815 in the above example). When using a Langevin thermostat
e.g. through "fix langevin"_fix_langevin.html or "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html
the temperature coefficients have to be matched to the one used in the fix.
@ -86,7 +86,7 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_style oxdna2/fene"_bond_oxdna.html, "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html, "pair_coeff"_pair_coeff.html,
"bond_style oxdna/fene"_bond_oxdna.html, "pair_style oxdna/excv"_pair_oxdna.html
"bond_style oxdna/fene"_bond_oxdna.html, "pair_style oxdna/excv"_pair_oxdna.html
[Default:] none

View File

@ -85,9 +85,9 @@ tags must either correspond to the species defined in the reaction
kinetics files specified with the "fix rx"_fix_rx.html command or they
must correspond to the tag "1fluid", signifying interaction with a
product species mixture determined through a one-fluid approximation.
The interaction potential is weighted by the geometric average of
either the mole fraction concentrations or the number of molecules
associated with the interacting coarse-grained particles (see the
The interaction potential is weighted by the geometric average of
either the mole fraction concentrations or the number of molecules
associated with the interacting coarse-grained particles (see the
{fractional} or {molecular} weighting pair style options). The coarse-grained potential is
stored before and after the reaction kinetics solver is applied, where
the difference is defined to be the internal chemical energy (uChem).

View File

@ -489,7 +489,7 @@ python"_Section_python.html. Note that it is important that the
stand-alone LAMMPS executable and the LAMMPS shared library be
consistent (built from the same source code files) in order for this
to work. If the two have been built at different times using
different source files, problems may occur.
different source files, problems may occur.
[Related commands:]

View File

@ -14,7 +14,7 @@ read_data file keyword args ... :pre
file = name of data file to read in :ulb,l
zero or more keyword/arg pairs may be appended :l
keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {group} or {nocoeff} or {fix} :l
keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/types} or {extra/angle/types} or {extra/dihedral/types} or {extra/improper/types} or {extra/bond/per/atom} or {extra/angle/per/atom} or {extra/dihedral/per/atom} or {extra/improper/per/atom} or {group} or {nocoeff} or {fix} :l
{add} arg = {append} or {Nstart} or {merge}
append = add new atoms with IDs appended to current IDs
Nstart = add new atoms with IDs starting with Nstart
@ -32,6 +32,11 @@ keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/type
{extra/angle/types} arg = # of extra angle types
{extra/dihedral/types} arg = # of extra dihedral types
{extra/improper/types} arg = # of extra improper types
{extra/bond/per/atom} arg = leave space for this many new bonds per atom
{extra/angle/per/atom} arg = leave space for this many new angles per atom
{extra/dihedral/per/atom} arg = leave space for this many new dihedrals per atom
{extra/improper/per/atom} arg = leave space for this many new impropers per atom
{extra/special/per/atom} arg = leave space for extra 1-2,1-3,1-4 interactions per atom
{group} args = groupID
groupID = add atoms in data file to this group
{nocoeff} = ignore force field parameters
@ -264,11 +269,11 @@ is different than the default.
{angle types} = # of angle types in system
{dihedral types} = # of dihedral types in system
{improper types} = # of improper types in system
{extra bond per atom} = leave space for this many new bonds per atom
{extra angle per atom} = leave space for this many new angles per atom
{extra dihedral per atom} = leave space for this many new dihedrals per atom
{extra improper per atom} = leave space for this many new impropers per atom
{extra special per atom} = leave space for this many new special bonds per atom
{extra bond per atom} = leave space for this many new bonds per atom (deprecated, use extra/bond/per/atom keyword)
{extra angle per atom} = leave space for this many new angles per atom (deprecated, use extra/angle/per/atom keyword)
{extra dihedral per atom} = leave space for this many new dihedrals per atom (deprecated, use extra/dihedral/per/atom keyword)
{extra improper per atom} = leave space for this many new impropers per atom (deprecated, use extra/improper/per/atom keyword)
{extra special per atom} = leave space for this many new special bonds per atom (deprecated, use extra/special/per/atom keyword)
{ellipsoids} = # of ellipsoids in system
{lines} = # of line segments in system
{triangles} = # of triangles in system
@ -367,25 +372,32 @@ read_data command will generate an error in this case.
The "extra bond per atom" setting (angle, dihedral, improper) is only
needed if new bonds (angles, dihedrals, impropers) will be added to
the system when a simulation runs, e.g. by using the "fix
bond/create"_fix_bond_create.html command. This will pre-allocate
space in LAMMPS data structures for storing the new bonds (angles,
bond/create"_fix_bond_create.html command. Using this header flag
is deprecated; please use the {extra/bond/per/atom} keyword (and
correspondingly for angles, dihedrals and impropers) in the
read_data command instead. Either will pre-allocate space in LAMMPS
data structures for storing the new bonds (angles,
dihedrals, impropers).
The "extra special per atom" setting is typically only needed if new
bonds/angles/etc will be added to the system, e.g. by using the "fix
bond/create"_fix_bond_create.html command. Or if entire new molecules
will be added to the system, e.g. by using the "fix
deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands, which
will have more special 1-2,1-3,1-4 neighbors than any other molecules
defined in the data file. Using this setting will pre-allocate space
in the LAMMPS data structures for storing these neighbors. See the
will be added to the system, e.g. by using the
"fix deposit"_fix_deposit.html or "fix pour"_fix_pour.html commands,
which will have more special 1-2,1-3,1-4 neighbors than any other
molecules defined in the data file. Using this header flag is
deprecated; please use the {extra/special/per/atom} keyword instead.
Using this setting will pre-allocate space in the LAMMPS data
structures for storing these neighbors. See the
"special_bonds"_special_bonds.html and "molecule"_molecule.html doc
pages for more discussion of 1-2,1-3,1-4 neighbors.
NOTE: All of the "extra" settings are only used if they appear in the
first data file read; see the description of the {add} keyword above
for reading multiple data files. If they appear in later data files,
they are ignored.
NOTE: All of the "extra" settings are only applied in the first data
file read and when no simulation box has yet been created; as soon as
the simulation box is created (and read_data implies that), these
settings are {locked} and cannot be changed anymore. Please see the
description of the {add} keyword above for reading multiple data files.
If they appear in later data files, they are ignored.
The "ellipsoids" and "lines" and "triangles" and "bodies" settings are
only used with "atom_style ellipsoid or line or tri or

View File

@ -17,7 +17,7 @@ style = {verlet} or {verlet/split} or {respa} or {respa/omp} :ulb,l
{verlet/split} args = none
{respa} args = N n1 n2 ... keyword values ...
N = # of levels of rRESPA
n1, n2, ... = loop factor between rRESPA levels (N-1 values)
n1, n2, ... = loop factors between rRESPA levels (N-1 values)
zero or more keyword/value pairings may be appended to the loop factors
keyword = {bond} or {angle} or {dihedral} or {improper} or
{pair} or {inner} or {middle} or {outer} or {hybrid} or {kspace}
@ -55,7 +55,7 @@ style = {verlet} or {verlet/split} or {respa} or {respa/omp} :ulb,l
run_style verlet
run_style respa 4 2 2 2 bond 1 dihedral 2 pair 3 kspace 4
run_style respa 4 2 2 2 bond 1 dihedral 2 inner 3 5.0 6.0 outer 4 kspace 4 :pre
run_style respa 4 2 2 2 bond 1 dihedral 2 inner 3 5.0 6.0 outer 4 kspace 4
run_style respa 3 4 2 bond 1 hybrid 2 2 1 kspace 3 :pre
[Description:]

View File

@ -86,7 +86,7 @@ machine via HTTPS:
or, if you have set up your GitHub account for using SSH keys, via SSH:
$ git clone git@github.com:<your user name>/lammps.git :pre
You can find the proper URL by clicking the "Clone or download"-button:
:c,image(JPG/tutorial_https_block.png)

View File

@ -36,7 +36,7 @@ lammps.PyLammps :h4
higher-level abstraction built on top of original C-Types interface
manipulation of Python objects
communication with LAMMPS is hidden from API user
communication with LAMMPS is hidden from API user
shorter, more concise Python
better IPython integration, designed for quick prototyping :ul
@ -328,7 +328,7 @@ IPyLammps Examples :h2
Examples of IPython notebooks can be found in the python/examples/pylammps
subdirectory. To open these notebooks launch {jupyter notebook} inside this
directory and navigate to one of them. If you compiled and installed
directory and navigate to one of them. If you compiled and installed
a LAMMPS shared library with exceptions, PNG, JPEG and FFMPEG support
you should be able to rerun all of these notebooks.
@ -399,19 +399,19 @@ natoms = L.system.natoms :pre
for i in range(niterations):
iatom = random.randrange(0, natoms)
current_atom = L.atoms\[iatom\] :pre
x0, y0 = current_atom.position :pre
dx = deltamove * random.uniform(-1, 1)
dy = deltamove * random.uniform(-1, 1) :pre
current_atom.position = (x0+dx, y0+dy) :pre
L.run(1, "pre no post no") :pre
e = L.eval("pe")
energies.append(e) :pre
if e <= elast:
naccept += 1
elast = e
@ -460,4 +460,4 @@ Feedback and Contributing :h2
If you find this Python interface useful, please feel free to provide feedback
and ideas on how to improve it to Richard Berger (richard.berger@temple.edu). We also
want to encourage people to write tutorial style IPython notebooks showcasing LAMMPS usage
and maybe their latest research results.
and maybe their latest research results.

View File

@ -41,5 +41,8 @@ fortran a simple wrapper on the LAMMPS library API that
can be called from Fortran
fortran2 a more sophisticated wrapper on the LAMMPS library API that
can be called from Fortran
fortran3 wrapper written by Nir Goldman (LLNL), as an
extension to fortran2, used for calling LAMMPS
from Fortran DFTB+ code
Each sub-directory has its own README.
Each sub-directory has its own README with more details.

View File

@ -0,0 +1,236 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
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.
------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------
Contributing author: Karl D. Hammond <karlh@ugcs.caltech.edu>
University of Tennessee, Knoxville (USA), 2012
------------------------------------------------------------------------- */
/* This is set of "wrapper" functions to assist LAMMPS.F90, which itself
provides a (I hope) robust Fortran interface to library.cpp and
library.h. All functions herein COULD be added to library.cpp instead of
including this as a separate file. See the README for instructions. */
#include <mpi.h>
#include "LAMMPS-wrapper.h"
#include <library.h>
#include <lammps.h>
#include <atom.h>
#include <fix.h>
#include <compute.h>
#include <modify.h>
#include <error.h>
#include <cstdlib>
using namespace LAMMPS_NS;
void lammps_open_fortran_wrapper (int argc, char **argv,
MPI_Fint communicator, void **ptr)
{
MPI_Comm C_communicator = MPI_Comm_f2c (communicator);
lammps_open (argc, argv, C_communicator, ptr);
}
int lammps_get_ntypes (void *ptr)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
int ntypes = lmp->atom->ntypes;
return ntypes;
}
void lammps_error_all (void *ptr, const char *file, int line, const char *str)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
lmp->error->all (file, line, str);
}
int lammps_extract_compute_vectorsize (void *ptr, char *id, int style)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
int icompute = lmp->modify->find_compute(id);
if ( icompute < 0 ) return 0;
class Compute *compute = lmp->modify->compute[icompute];
if ( style == 0 )
{
if ( !compute->vector_flag )
return 0;
else
return compute->size_vector;
}
else if ( style == 1 )
{
return lammps_get_natoms (ptr);
}
else if ( style == 2 )
{
if ( !compute->local_flag )
return 0;
else
return compute->size_local_rows;
}
else
return 0;
}
void lammps_extract_compute_arraysize (void *ptr, char *id, int style,
int *nrows, int *ncols)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
int icompute = lmp->modify->find_compute(id);
if ( icompute < 0 )
{
*nrows = 0;
*ncols = 0;
}
class Compute *compute = lmp->modify->compute[icompute];
if ( style == 0 )
{
if ( !compute->array_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = compute->size_array_rows;
*ncols = compute->size_array_cols;
}
}
else if ( style == 1 )
{
if ( !compute->peratom_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = lammps_get_natoms (ptr);
*ncols = compute->size_peratom_cols;
}
}
else if ( style == 2 )
{
if ( !compute->local_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = compute->size_local_rows;
*ncols = compute->size_local_cols;
}
}
else
{
*nrows = 0;
*ncols = 0;
}
return;
}
int lammps_extract_fix_vectorsize (void *ptr, char *id, int style)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
int ifix = lmp->modify->find_fix(id);
if ( ifix < 0 ) return 0;
class Fix *fix = lmp->modify->fix[ifix];
if ( style == 0 )
{
if ( !fix->vector_flag )
return 0;
else
return fix->size_vector;
}
else if ( style == 1 )
{
return lammps_get_natoms (ptr);
}
else if ( style == 2 )
{
if ( !fix->local_flag )
return 0;
else
return fix->size_local_rows;
}
else
return 0;
}
void lammps_extract_fix_arraysize (void *ptr, char *id, int style,
int *nrows, int *ncols)
{
class LAMMPS *lmp = (class LAMMPS *) ptr;
int ifix = lmp->modify->find_fix(id);
if ( ifix < 0 )
{
*nrows = 0;
*ncols = 0;
}
class Fix *fix = lmp->modify->fix[ifix];
if ( style == 0 )
{
if ( !fix->array_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = fix->size_array_rows;
*ncols = fix->size_array_cols;
}
}
else if ( style == 1 )
{
if ( !fix->peratom_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = lammps_get_natoms (ptr);
*ncols = fix->size_peratom_cols;
}
}
else if ( style == 2 )
{
if ( !fix->local_flag )
{
*nrows = 0;
*ncols = 0;
}
else
{
*nrows = fix->size_local_rows;
*ncols = fix->size_local_cols;
}
}
else
{
*nrows = 0;
*ncols = 0;
}
return;
}
/* vim: set ts=3 sts=3 expandtab: */

View File

@ -0,0 +1,40 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
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.
------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------
Contributing author: Karl D. Hammond <karlh@ugcs.caltech.edu>
University of Tennessee, Knoxville (USA), 2012
------------------------------------------------------------------------- */
/* This is set of "wrapper" functions to assist LAMMPS.F90, which itself
provides a (I hope) robust Fortran interface to library.cpp and
library.h. All prototypes herein COULD be added to library.h instead of
including this as a separate file. See the README for instructions. */
#ifdef __cplusplus
extern "C" {
#endif
/* Prototypes for auxiliary functions */
void lammps_open_fortran_wrapper (int, char**, MPI_Fint, void**);
int lammps_get_ntypes (void*);
int lammps_extract_compute_vectorsize (void*, char*, int);
void lammps_extract_compute_arraysize (void*, char*, int, int*, int*);
int lammps_extract_fix_vectorsize (void*, char*, int);
void lammps_extract_fix_arraysize (void*, char*, int, int*, int*);
void lammps_error_all (void*, const char*, int, const char*);
#ifdef __cplusplus
}
#endif
/* vim: set ts=3 sts=3 expandtab: */

View File

@ -0,0 +1,57 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
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.
------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------
Contributing author: Karl D. Hammond <karlh@ugcs.caltech.edu>
University of Tennessee, Knoxville (USA), 2012
------------------------------------------------------------------------- */
/* This is set of "wrapper" functions to assist LAMMPS.F90, which itself
provides a (I hope) robust Fortran interface to library.cpp and
library.h. All functions herein COULD be added to library.cpp instead of
including this as a separate file. See the README for instructions. */
#include <mpi.h>
#include "LAMMPS-wrapper2.h"
#include <library.h>
#include <lammps.h>
#include <atom.h>
#include <input.h>
#include <modify.h>
#include <fix.h>
#include <fix_external.h>
#include <compute.h>
#include <modify.h>
#include <error.h>
#include <cstdlib>
using namespace LAMMPS_NS;
extern "C" void f_callback(void *, bigint, int, tagint *, double **, double **);
void lammps_set_callback (void *ptr) {
class LAMMPS *lmp = (class LAMMPS *) ptr;
int ifix = lmp->modify->find_fix_by_style("external");
FixExternal *fix = (FixExternal *) lmp->modify->fix[ifix];
fix->set_callback(f_callback, ptr);
return;
}
void lammps_set_user_energy (void *ptr, double energy) {
class LAMMPS *lmp = (class LAMMPS *) ptr;
int ifix = lmp->modify->find_fix_by_style("external");
FixExternal *fix = (FixExternal *) lmp->modify->fix[ifix];
fix->set_energy(energy);
return;
}

View File

@ -0,0 +1,34 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
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.
------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------
Contributing author: Nir Goldman, ngoldman@llnl.gov, Oct. 19th, 2016
------------------------------------------------------------------------- */
/* This is set of "wrapper" functions to assist LAMMPS.F90, which itself
provides a (I hope) robust Fortran interface to library.cpp and
library.h. All prototypes herein COULD be added to library.h instead of
including this as a separate file. See the README for instructions. */
#ifdef __cplusplus
extern "C" {
#endif
/* Prototypes for auxiliary functions */
void lammps_set_callback (void *);
void lammps_set_user_energy (void*, double);
#ifdef __cplusplus
}
#endif
/* vim: set ts=3 sts=3 expandtab: */

View File

@ -0,0 +1,956 @@
!! -----------------------------------------------------------------------
! LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
! www.cs.sandia.gov/~sjplimp/lammps.html
! Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
!
! 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.
!--------------------------------------------------------------------------
!! ------------------------------------------------------------------------
! Contributing author: Karl D. Hammond <karlh@ugcs.caltech.edu>
! University of Tennessee, Knoxville (USA), 2012
!--------------------------------------------------------------------------
!! LAMMPS, a Fortran 2003 module containing an interface between Fortran
!! programs and the C-style functions in library.cpp that ship with LAMMPS.
!! This file should be accompanied by LAMMPS-wrapper.cpp and LAMMPS-wrapper.h,
!! which define wrapper functions that ease portability and enforce array
!! dimensions.
!!
!! Everything in this module should be 100% portable by way of Fortran 2003's
!! ISO_C_BINDING intrinsic module. See the README for instructions for
!! compilation and use.
!!
!! Here are the PUBLIC functions and subroutines included in this module.
!! subroutine lammps_open (command_line, communicator, ptr)
!! subroutine lammps_open_no_mpi (command_line, ptr)
!! subroutine lammps_close (ptr)
!! subroutine lammps_file (ptr, str)
!! subroutine lammps_command (ptr, str)
!! subroutine lammps_free (ptr)
!! subroutine lammps_extract_global (global, ptr, name)
!! subroutine lammps_extract_atom (atom, ptr, name)
!! subroutine lammps_extract_fix (fix, ptr, id, style, type, i, j)
!! subroutine lammps_extract_compute (compute, ptr, id, style, type)
!! subroutine lammps_extract_variable (variable, ptr, name, group)
!! function lammps_get_natoms (ptr)
!! subroutine lammps_gather_atoms (ptr, name, count, data)
!! subroutine lammps_scatter_atoms (ptr, name, data)
#define FLERR __FILE__,__LINE__
! The above line allows for similar error checking as is done with standard
! LAMMPS files.
module LAMMPS
use, intrinsic :: ISO_C_binding, only : C_double, C_int, C_ptr, C_char, &
C_NULL_CHAR, C_loc, C_F_pointer, lammps_instance => C_ptr
implicit none
private
public :: lammps_open, lammps_open_no_mpi, lammps_close, lammps_file, &
lammps_command, lammps_free, lammps_extract_global, &
lammps_extract_atom, lammps_extract_compute, lammps_extract_fix, &
lammps_extract_variable, lammps_get_natoms, lammps_gather_atoms, &
lammps_scatter_atoms, lammps_set_callback, lammps_set_user_energy
public :: lammps_instance, C_ptr, C_double, C_int
!! Functions supplemental to the prototypes in library.h. {{{1
!! The function definitions (in C++) are contained in LAMMPS-wrapper.cpp.
!! I would have written the first in Fortran, but the MPI libraries (which
!! were written in C) have C-based functions to convert from Fortran MPI
!! handles to C MPI handles, and there is no Fortran equivalent for those
!! functions.
interface
subroutine lammps_open_wrapper (argc, argv, communicator, ptr) &
bind (C, name='lammps_open_fortran_wrapper')
import :: C_int, C_ptr
integer (C_int), value :: argc
type (C_ptr), dimension(*) :: argv
integer, value :: communicator
type (C_ptr) :: ptr
end subroutine lammps_open_wrapper
subroutine lammps_actual_error_all (ptr, file, line, str) &
bind (C, name='lammps_error_all')
import :: C_int, C_char, C_ptr
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*), intent(in) :: file, str
integer (C_int), value :: line
end subroutine lammps_actual_error_all
function lammps_get_ntypes (ptr) result (ntypes) &
bind (C, name='lammps_get_ntypes')
import :: C_int, C_ptr
type (C_ptr), value :: ptr
integer (C_int) :: ntypes
end function lammps_get_ntypes
function lammps_actual_extract_compute_vectorsize (ptr, id, style) &
result (vectorsize) bind (C, name='lammps_extract_compute_vectorsize')
import :: C_int, C_char, C_ptr
integer (C_int) :: vectorsize
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style
end function lammps_actual_extract_compute_vectorsize
subroutine lammps_actual_extract_compute_arraysize (ptr, id, style, &
nrows, ncols) bind (C, name='lammps_extract_compute_arraysize')
import :: C_int, C_char, C_ptr
integer (C_int) :: arraysize
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style
integer (C_int) :: nrows, ncols
end subroutine lammps_actual_extract_compute_arraysize
function lammps_actual_extract_fix_vectorsize (ptr, id, style) &
result (vectorsize) bind (C, name='lammps_extract_fix_vectorsize')
import :: C_int, C_char, C_ptr
integer (C_int) :: vectorsize
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style
end function lammps_actual_extract_fix_vectorsize
subroutine lammps_actual_extract_fix_arraysize (ptr, id, style, &
nrows, ncols) bind (C, name='lammps_extract_fix_arraysize')
import :: C_int, C_char, C_ptr
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style
integer (C_int) :: nrows, ncols
end subroutine lammps_actual_extract_fix_arraysize
end interface
!! Functions/subroutines defined in library.h and library.cpp {{{1
interface
subroutine lammps_actual_open_no_mpi (argc, argv, ptr) &
bind (C, name='lammps_open_no_mpi')
import :: C_int, C_ptr
integer (C_int), value :: argc
type (C_ptr), dimension(*) :: argv
type (C_ptr) :: ptr
end subroutine lammps_actual_open_no_mpi
subroutine lammps_close (ptr) bind (C, name='lammps_close')
import :: C_ptr
type (C_ptr), value :: ptr
end subroutine lammps_close
subroutine lammps_actual_file (ptr, str) bind (C, name='lammps_file')
import :: C_ptr, C_char
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: str
end subroutine lammps_actual_file
function lammps_actual_command (ptr, str) result (command) &
bind (C, name='lammps_command')
import :: C_ptr, C_char
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: str
type (C_ptr) :: command
end function lammps_actual_command
subroutine lammps_free (ptr) bind (C, name='lammps_free')
import :: C_ptr
type (C_ptr), value :: ptr
end subroutine lammps_free
function lammps_actual_extract_global (ptr, name) &
bind (C, name='lammps_extract_global') result (global)
import :: C_ptr, C_char
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: name
type (C_ptr) :: global
end function lammps_actual_extract_global
function lammps_actual_extract_atom (ptr, name) &
bind (C, name='lammps_extract_atom') result (atom)
import :: C_ptr, C_char
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: name
type (C_ptr) :: atom
end function lammps_actual_extract_atom
function lammps_actual_extract_compute (ptr, id, style, type) &
result (compute) bind (C, name='lammps_extract_compute')
import :: C_ptr, C_char, C_int
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style, type
type (C_ptr) :: compute
end function lammps_actual_extract_compute
function lammps_actual_extract_fix (ptr, id, style, type, i, j) &
result (fix) bind (C, name='lammps_extract_fix')
import :: C_ptr, C_char, C_int
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: id
integer (C_int), value :: style, type, i, j
type (C_ptr) :: fix
end function lammps_actual_extract_fix
function lammps_actual_extract_variable (ptr, name, group) &
result (variable) bind (C, name='lammps_extract_variable')
import :: C_ptr, C_char
type (C_ptr), value :: ptr
character (kind=C_char), dimension(*) :: name, group
type (C_ptr) :: variable
end function lammps_actual_extract_variable
function lammps_get_natoms (ptr) result (natoms) &
bind (C, name='lammps_get_natoms')
import :: C_ptr, C_int
type (C_ptr), value :: ptr
integer (C_int) :: natoms
end function lammps_get_natoms
subroutine lammps_set_callback (ptr) &
bind (C, name='lammps_set_callback')
import :: C_ptr
type (C_ptr), value :: ptr
end subroutine lammps_set_callback
subroutine lammps_set_user_energy (ptr, energy) &
bind (C, name='lammps_set_user_energy')
import :: C_ptr, C_double
type (C_ptr), value :: ptr
real(C_double), value :: energy
end subroutine lammps_set_user_energy
subroutine lammps_actual_gather_atoms (ptr, name, type, count, data) &
bind (C, name='lammps_gather_atoms')
import :: C_ptr, C_int, C_char
type (C_ptr), value :: ptr, data
character (kind=C_char), dimension(*) :: name
integer (C_int), value :: type, count
end subroutine lammps_actual_gather_atoms
subroutine lammps_actual_scatter_atoms (ptr, name, type, count, data) &
bind (C, name='lammps_scatter_atoms')
import :: C_ptr, C_int, C_char
type (C_ptr), value :: ptr, data
character (kind=C_char), dimension(*) :: name
integer (C_int), value :: type, count
end subroutine lammps_actual_scatter_atoms
end interface
! Generic functions for the wrappers below {{{1
interface lammps_extract_global
module procedure lammps_extract_global_i, &
lammps_extract_global_dp
end interface lammps_extract_global
interface lammps_extract_atom
module procedure lammps_extract_atom_ia, &
lammps_extract_atom_dpa, &
lammps_extract_atom_dp2a
end interface lammps_extract_atom
interface lammps_extract_compute
module procedure lammps_extract_compute_dp, &
lammps_extract_compute_dpa, &
lammps_extract_compute_dp2a
end interface lammps_extract_compute
interface lammps_extract_fix
module procedure lammps_extract_fix_dp, &
lammps_extract_fix_dpa, &
lammps_extract_fix_dp2a
end interface lammps_extract_fix
interface lammps_extract_variable
module procedure lammps_extract_variable_dp, &
lammps_extract_variable_dpa
end interface lammps_extract_variable
interface lammps_gather_atoms
module procedure lammps_gather_atoms_ia, lammps_gather_atoms_dpa
end interface lammps_gather_atoms
interface lammps_scatter_atoms
module procedure lammps_scatter_atoms_ia, lammps_scatter_atoms_dpa
end interface lammps_scatter_atoms
contains !! Wrapper functions local to this module {{{1
subroutine lammps_open (command_line, communicator, ptr)
character (len=*), intent(in) :: command_line
integer, intent(in) :: communicator
type (C_ptr) :: ptr
integer (C_int) :: argc
type (C_ptr), dimension(:), allocatable :: argv
character (kind=C_char), dimension(len_trim(command_line)+1), target :: &
c_command_line
c_command_line = string2Cstring (command_line)
call Cstring2argcargv (c_command_line, argc, argv)
call lammps_open_wrapper (argc, argv, communicator, ptr)
deallocate (argv)
end subroutine lammps_open
!-----------------------------------------------------------------------------
subroutine lammps_open_no_mpi (command_line, ptr)
character (len=*), intent(in) :: command_line
type (C_ptr) :: ptr
integer (C_int) :: argc
type (C_ptr), dimension(:), allocatable :: argv
character (kind=C_char), dimension(len_trim(command_line)+1), target :: &
c_command_line
c_command_line = string2Cstring (command_line)
call Cstring2argcargv (c_command_line, argc, argv)
call lammps_actual_open_no_mpi (argc, argv, ptr)
deallocate (argv)
end subroutine lammps_open_no_mpi
!-----------------------------------------------------------------------------
subroutine lammps_file (ptr, str)
type (C_ptr) :: ptr
character (len=*) :: str
character (kind=C_char), dimension(len_trim(str)+1) :: Cstr
Cstr = string2Cstring (str)
call lammps_actual_file (ptr, Cstr)
end subroutine lammps_file
!-----------------------------------------------------------------------------
subroutine lammps_command (ptr, str)
type (C_ptr) :: ptr
character (len=*) :: str
character (kind=C_char), dimension(len_trim(str)+1) :: Cstr
type (C_ptr) :: dummy
Cstr = string2Cstring (str)
dummy = lammps_actual_command (ptr, Cstr)
end subroutine lammps_command
!-----------------------------------------------------------------------------
! lammps_extract_global {{{2
function lammps_extract_global_Cptr (ptr, name) result (global)
type (C_ptr) :: global
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
Cname = string2Cstring (name)
global = lammps_actual_extract_global (ptr, Cname)
end function lammps_extract_global_Cptr
subroutine lammps_extract_global_i (global, ptr, name)
integer (C_int), pointer, intent(out) :: global
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
type (C_ptr) :: Cptr
Cptr = lammps_extract_global_Cptr (ptr, name)
call C_F_pointer (Cptr, global)
end subroutine lammps_extract_global_i
subroutine lammps_extract_global_dp (global, ptr, name)
real (C_double), pointer, intent(out) :: global
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
type (C_ptr) :: Cptr
Cptr = lammps_extract_global_Cptr (ptr, name)
call C_F_pointer (Cptr, global)
end subroutine lammps_extract_global_dp
!-----------------------------------------------------------------------------
! lammps_extract_atom {{{2
function lammps_extract_atom_Cptr (ptr, name) result (atom)
type (C_ptr) :: atom
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
Cname = string2Cstring (name)
atom = lammps_actual_extract_atom (ptr, Cname)
end function lammps_extract_atom_Cptr
subroutine lammps_extract_atom_ia (atom, ptr, name)
integer (C_int), dimension(:), pointer, intent(out) :: atom
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
type (C_ptr) :: Cptr
integer (C_int), pointer :: nelements
call lammps_extract_global_i (nelements, ptr, 'nlocal')
Cptr = lammps_extract_atom_Cptr (ptr, name)
call C_F_pointer (Cptr, atom, (/nelements/))
end subroutine lammps_extract_atom_ia
subroutine lammps_extract_atom_dpa (atom, ptr, name)
real (C_double), dimension(:), pointer, intent(out) :: atom
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
type (C_ptr) :: Cptr
integer (C_int), pointer :: nlocal
integer :: nelements
real (C_double), dimension(:), pointer :: Fptr
if ( name == 'mass' ) then
nelements = lammps_get_ntypes (ptr) + 1
else if ( name == 'x' .or. name == 'v' .or. name == 'f' .or. &
name == 'mu' .or. name == 'omega' .or. name == 'torque' .or. &
name == 'angmom' ) then
! We should not be getting a rank-2 array here!
call lammps_error_all (ptr, FLERR, 'You cannot extract those atom&
& data (' // trim(name) // ') into a rank 1 array.')
return
else
! Everything else we can get is probably nlocal units long
call lammps_extract_global_i (nlocal, ptr, 'nlocal')
nelements = nlocal
end if
Cptr = lammps_extract_atom_Cptr (ptr, name)
call C_F_pointer (Cptr, Fptr, (/nelements/))
if ( name == 'mass' ) then
!atom(0:) => Fptr
atom => Fptr
else
atom => Fptr
end if
end subroutine lammps_extract_atom_dpa
subroutine lammps_extract_atom_dp2a (atom, ptr, name)
real (C_double), dimension(:,:), pointer, intent(out) :: atom
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
type (C_ptr) :: Cptr
type (C_ptr), pointer, dimension(:) :: Catom
integer (C_int), pointer :: nelements
if ( name /= 'x' .and. name /= 'v' .and. name /= 'f' .and. &
name /= 'mu' .and. name /= 'omega' .and. name /= 'tandque' .and. &
name /= 'angmom' .and. name /= 'fexternal' ) then
! We should not be getting a rank-2 array here!
call lammps_error_all (ptr, FLERR, 'You cannot extract those atom&
& data (' // trim(name) // ') into a rank 2 array.')
return
end if
Cptr = lammps_extract_atom_Cptr (ptr, name)
call lammps_extract_global_i (nelements, ptr, 'nlocal')
! Catom will now be the array of void* pointers that the void** pointer
! pointed to. Catom(1) is now the pointer to the first element.
call C_F_pointer (Cptr, Catom, (/nelements/))
! Now get the actual array, which has its shape transposed from what we
! might think of it in C
call C_F_pointer (Catom(1), atom, (/3, nelements/))
end subroutine lammps_extract_atom_dp2a
!-----------------------------------------------------------------------------
! lammps_extract_compute {{{2
function lammps_extract_compute_Cptr (ptr, id, style, type) result (compute)
type (C_ptr) :: compute
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type
integer (kind=C_int) :: Cstyle, Ctype
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
Cid = string2Cstring (id)
Cstyle = style
Ctype = type
compute = lammps_actual_extract_compute (ptr, Cid, Cstyle, Ctype)
end function lammps_extract_compute_Cptr
subroutine lammps_extract_compute_dp (compute, ptr, id, style, type)
real (C_double), pointer, intent(out) :: compute
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type
type (C_ptr) :: Cptr
! The only valid values of (style,type) are (0,0) for scalar 'compute'
if ( style /= 0 ) then
call lammps_error_all (ptr, FLERR, 'You cannot pack per-atom/local&
& data into a scalar.')
return
end if
if ( type == 1 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& vector (rank 1) into a scalar.')
return
else if ( type == 2 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& array (rank 2) into a scalar.')
return
end if
Cptr = lammps_extract_compute_Cptr (ptr, id, style, type)
call C_F_pointer (Cptr, compute)
end subroutine lammps_extract_compute_dp
subroutine lammps_extract_compute_dpa (compute, ptr, id, style, type)
real (C_double), dimension(:), pointer, intent(out) :: compute
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type
type (C_ptr) :: Cptr
integer :: nelements
! Check for the correct dimensionality
if ( type == 0 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& scalar (rank 0) into a rank 1 variable.')
return
else if ( type == 2 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& array (rank 2) into a rank 1 variable.')
return
end if
nelements = lammps_extract_compute_vectorsize (ptr, id, style)
Cptr = lammps_extract_compute_Cptr (ptr, id, style, type)
call C_F_pointer (Cptr, compute, (/nelements/))
end subroutine lammps_extract_compute_dpa
subroutine lammps_extract_compute_dp2a (compute, ptr, id, style, type)
real (C_double), dimension(:,:), pointer, intent(out) :: compute
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type
type (C_ptr) :: Cptr
type (C_ptr), pointer, dimension(:) :: Ccompute
integer :: nr, nc
! Check for the correct dimensionality
if ( type == 0 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& scalar (rank 0) into a rank 2 variable.')
return
else if ( type == 1 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a compute&
& array (rank 1) into a rank 2 variable.')
return
end if
call lammps_extract_compute_arraysize (ptr, id, style, nr, nc)
Cptr = lammps_extract_compute_Cptr (ptr, id, style, type)
call C_F_pointer (Cptr, Ccompute, (/nr/))
! Note that the matrix is transposed, from Fortran's perspective
call C_F_pointer (Ccompute(1), compute, (/nc, nr/))
end subroutine lammps_extract_compute_dp2a
!-----------------------------------------------------------------------------
! lammps_extract_fix {{{2
function lammps_extract_fix_Cptr (ptr, id, style, type, i, j) &
result (fix)
type (C_ptr) :: fix
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type, i, j
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
integer (kind=C_int) :: Cstyle, Ctype, Ci, Cj
Cid = string2Cstring (id)
Cstyle = style
Ctype = type
Ci = i - 1 ! This is for consistency with the values from f_ID[i],
Cj = j - 1 ! which is different from what library.cpp uses!
if ( (type >= 1 .and. Ci < 0) .or. &
(type == 2 .and. (Ci < 0 .or. Cj < 0) ) ) then
call lammps_error_all (ptr, FLERR, 'Index out of range in&
& lammps_extract_fix')
end if
fix = lammps_actual_extract_fix (ptr, Cid, Cstyle, Ctype, Ci, Cj)
end function lammps_extract_fix_Cptr
subroutine lammps_extract_fix_dp (fix, ptr, id, style, type, i, j)
real (C_double), intent(out) :: fix
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type, i, j
type (C_ptr) :: Cptr
real (C_double), pointer :: Fptr
! Check for the correct dimensionality
if ( style /= 0 ) then
select case (type)
case (0)
call lammps_error_all (ptr, FLERR, 'There is no per-atom or local&
& scalar data available from fixes.')
case (1)
call lammps_error_all (ptr, FLERR, 'You cannot extract a fix''s &
&per-atom/local vector (rank 1) into a scalar.')
case (2)
call lammps_error_all (ptr, FLERR, 'You cannot extract a fix''s &
&per-atom/local array (rank 2) into a scalar.')
case default
call lammps_error_all (ptr, FLERR, 'Invalid extract_fix style/&
&type combination.')
end select
return
end if
Cptr = lammps_extract_fix_Cptr (ptr, id, style, type, i, j)
call C_F_pointer (Cptr, Fptr)
fix = Fptr
nullify (Fptr)
! Memory is only allocated for "global" fix variables
if ( style == 0 ) call lammps_free (Cptr)
end subroutine lammps_extract_fix_dp
subroutine lammps_extract_fix_dpa (fix, ptr, id, style, type, i, j)
real (C_double), dimension(:), pointer, intent(out) :: fix
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type, i, j
type (C_ptr) :: Cptr
integer :: fix_len
! Check for the correct dimensionality
if ( style == 0 ) then
call lammps_error_all (ptr, FLERR, 'You can''t extract the&
& whole vector from global fix data')
return
else if ( type == 0 ) then
call lammps_error_all (ptr, FLERR, 'You can''t extract a fix&
& scalar into a rank 1 variable')
return
else if ( type == 2 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a fix&
& array into a rank 1 variable.')
return
else if ( type /= 1 ) then
call lammps_error_all (ptr, FLERR, 'Invalid type for fix extraction.')
return
end if
fix_len = lammps_extract_fix_vectorsize (ptr, id, style)
call C_F_pointer (Cptr, fix, (/fix_len/))
! Memory is only allocated for "global" fix variables, which we should
! never get here, so no need to call lammps_free!
end subroutine lammps_extract_fix_dpa
subroutine lammps_extract_fix_dp2a (fix, ptr, id, style, type, i, j)
real (C_double), dimension(:,:), pointer, intent(out) :: fix
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style, type, i, j
type (C_ptr) :: Cptr
type (C_ptr), pointer, dimension(:) :: Cfix
integer :: nr, nc
! Check for the correct dimensionality
if ( style == 0 ) then
call lammps_error_all (ptr, FLERR, 'It is not possible to extract the&
& entire array from global fix data.')
return
else if ( type == 0 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a fix&
& scalar (rank 0) into a rank 2 variable.')
return
else if ( type == 1 ) then
call lammps_error_all (ptr, FLERR, 'You cannot extract a fix&
& vector (rank 1) into a rank 2 variable.')
return
end if
call lammps_extract_fix_arraysize (ptr, id, style, nr, nc)
! Extract pointer to first element as Cfix(1)
call C_F_pointer (Cptr, Cfix, (/nr/))
! Now extract the array, which is transposed
call C_F_pointer (Cfix(1), fix, (/nc, nr/))
end subroutine lammps_extract_fix_dp2a
!-----------------------------------------------------------------------------
! lammps_extract_variable {{{2
function lammps_extract_variable_Cptr (ptr, name, group) result (variable)
type (C_ptr) :: ptr, variable
character (len=*) :: name
character (len=*), optional :: group
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
character (kind=C_char), dimension(:), allocatable :: Cgroup
Cname = string2Cstring (name)
if ( present(group) ) then
allocate (Cgroup(len_trim(group)+1))
Cgroup = string2Cstring (group)
else
allocate (Cgroup(1))
Cgroup(1) = C_NULL_CHAR
end if
variable = lammps_actual_extract_variable (ptr, Cname, Cgroup)
deallocate (Cgroup)
end function lammps_extract_variable_Cptr
subroutine lammps_extract_variable_dp (variable, ptr, name, group)
real (C_double), intent(out) :: variable
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
character (len=*), intent(in), optional :: group
type (C_ptr) :: Cptr
real (C_double), pointer :: Fptr
if ( present(group) ) then
Cptr = lammps_extract_variable_Cptr (ptr, name, group)
else
Cptr = lammps_extract_variable_Cptr (ptr, name)
end if
call C_F_pointer (Cptr, Fptr)
variable = Fptr
nullify (Fptr)
call lammps_free (Cptr)
end subroutine lammps_extract_variable_dp
subroutine lammps_extract_variable_dpa (variable, ptr, name, group)
real (C_double), dimension(:), allocatable, intent(out) :: variable
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
character (len=*), intent(in), optional :: group
type (C_ptr) :: Cptr
real (C_double), dimension(:), pointer :: Fptr
integer :: natoms
if ( present(group) ) then
Cptr = lammps_extract_variable_Cptr (ptr, name, group)
else
Cptr = lammps_extract_variable_Cptr (ptr, name)
end if
natoms = lammps_get_natoms (ptr)
allocate (variable(natoms))
call C_F_pointer (Cptr, Fptr, (/natoms/))
variable = Fptr
nullify (Fptr)
call lammps_free (Cptr)
end subroutine lammps_extract_variable_dpa
!-------------------------------------------------------------------------2}}}
subroutine lammps_gather_atoms_ia (ptr, name, count, data)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
integer, intent(in) :: count
integer, dimension(:), allocatable, intent(out) :: data
type (C_ptr) :: Cdata
integer (C_int), dimension(:), pointer :: Fdata
integer (C_int) :: natoms
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
integer (C_int), parameter :: Ctype = 0_C_int
integer (C_int) :: Ccount
natoms = lammps_get_natoms (ptr)
Cname = string2Cstring (name)
if ( count /= 1 .and. count /= 3 ) then
call lammps_error_all (ptr, FLERR, 'lammps_gather_atoms requires&
& count to be either 1 or 3')
else
Ccount = count
end if
allocate ( Fdata(count*natoms) )
allocate ( data(count*natoms) )
Cdata = C_loc (Fdata(1))
call lammps_actual_gather_atoms (ptr, Cname, Ctype, Ccount, Cdata)
data = Fdata
deallocate (Fdata)
end subroutine lammps_gather_atoms_ia
subroutine lammps_gather_atoms_dpa (ptr, name, count, data)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
integer, intent(in) :: count
double precision, dimension(:), allocatable, intent(out) :: data
type (C_ptr) :: Cdata
real (C_double), dimension(:), pointer :: Fdata
integer (C_int) :: natoms
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
integer (C_int), parameter :: Ctype = 1_C_int
integer (C_int) :: Ccount
natoms = lammps_get_natoms (ptr)
Cname = string2Cstring (name)
if ( count /= 1 .and. count /= 3 ) then
call lammps_error_all (ptr, FLERR, 'lammps_gather_atoms requires&
& count to be either 1 or 3')
else
Ccount = count
end if
allocate ( Fdata(count*natoms) )
allocate ( data(count*natoms) )
Cdata = C_loc (Fdata(1))
call lammps_actual_gather_atoms (ptr, Cname, Ctype, Ccount, Cdata)
data = Fdata(:)
deallocate (Fdata)
end subroutine lammps_gather_atoms_dpa
!-----------------------------------------------------------------------------
subroutine lammps_scatter_atoms_ia (ptr, name, data)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
integer, dimension(:), intent(in) :: data
integer (kind=C_int) :: natoms, Ccount
integer (kind=C_int), parameter :: Ctype = 0_C_int
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
integer (C_int), dimension(size(data)), target :: Fdata
type (C_ptr) :: Cdata
natoms = lammps_get_natoms (ptr)
Cname = string2Cstring (name)
Ccount = size(data) / natoms
if ( Ccount /= 1 .and. Ccount /= 3 ) &
call lammps_error_all (ptr, FLERR, 'lammps_gather_atoms requires&
& count to be either 1 or 3')
Fdata = data
Cdata = C_loc (Fdata(1))
call lammps_actual_scatter_atoms (ptr, Cname, Ctype, Ccount, Cdata)
end subroutine lammps_scatter_atoms_ia
subroutine lammps_scatter_atoms_dpa (ptr, name, data)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: name
double precision, dimension(:), intent(in) :: data
integer (kind=C_int) :: natoms, Ccount
integer (kind=C_int), parameter :: Ctype = 1_C_int
character (kind=C_char), dimension(len_trim(name)+1) :: Cname
real (C_double), dimension(size(data)), target :: Fdata
type (C_ptr) :: Cdata
natoms = lammps_get_natoms (ptr)
Cname = string2Cstring (name)
Ccount = size(data) / natoms
if ( Ccount /= 1 .and. Ccount /= 3 ) &
call lammps_error_all (ptr, FLERR, 'lammps_gather_atoms requires&
& count to be either 1 or 3')
Fdata = data
Cdata = C_loc (Fdata(1))
call lammps_actual_scatter_atoms (ptr, Cname, Ctype, Ccount, Cdata)
end subroutine lammps_scatter_atoms_dpa
!-----------------------------------------------------------------------------
function lammps_extract_compute_vectorsize (ptr, id, style) &
result (vectorsize)
integer :: vectorsize
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style
integer (C_int) :: Cvectorsize, Cstyle
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
Cid = string2Cstring (id)
Cstyle = int(style, C_int)
Cvectorsize = lammps_actual_extract_compute_vectorsize (ptr, Cid, Cstyle)
vectorsize = int(Cvectorsize, kind(vectorsize))
end function lammps_extract_compute_vectorsize
!-----------------------------------------------------------------------------
function lammps_extract_fix_vectorsize (ptr, id, style) &
result (vectorsize)
integer :: vectorsize
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style
integer (C_int) :: Cvectorsize, Cstyle
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
Cid = string2Cstring (id)
Cstyle = int(style, C_int)
Cvectorsize = lammps_actual_extract_fix_vectorsize (ptr, Cid, Cstyle)
vectorsize = int(Cvectorsize, kind(vectorsize))
end function lammps_extract_fix_vectorsize
!-----------------------------------------------------------------------------
subroutine lammps_extract_compute_arraysize (ptr, id, style, nrows, ncols)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style
integer, intent(out) :: nrows, ncols
integer (C_int) :: Cstyle, Cnrows, Cncols
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
Cid = string2Cstring (id)
Cstyle = int (style, C_int)
call lammps_actual_extract_compute_arraysize (ptr, Cid, Cstyle, &
Cnrows, Cncols)
nrows = int (Cnrows, kind(nrows))
ncols = int (Cncols, kind(ncols))
end subroutine lammps_extract_compute_arraysize
!-----------------------------------------------------------------------------
subroutine lammps_extract_fix_arraysize (ptr, id, style, nrows, ncols)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: id
integer, intent(in) :: style
integer, intent(out) :: nrows, ncols
integer (C_int) :: Cstyle, Cnrows, Cncols
character (kind=C_char), dimension(len_trim(id)+1) :: Cid
Cid = string2Cstring (id)
Cstyle = int (style, kind(Cstyle))
call lammps_actual_extract_fix_arraysize (ptr, Cid, Cstyle, &
Cnrows, Cncols)
nrows = int (Cnrows, kind(nrows))
ncols = int (Cncols, kind(ncols))
end subroutine lammps_extract_fix_arraysize
!-----------------------------------------------------------------------------
subroutine lammps_error_all (ptr, file, line, str)
type (C_ptr), intent(in) :: ptr
character (len=*), intent(in) :: file, str
integer, intent(in) :: line
character (kind=C_char), dimension(len_trim(file)+1) :: Cfile
character (kind=C_char), dimension(len_trim(str)+1) :: Cstr
integer (C_int) :: Cline
Cline = int(line, kind(Cline))
Cfile = string2Cstring (file)
Cstr = string2Cstring (str)
call lammps_actual_error_all (ptr, Cfile, Cline, Cstr)
end subroutine lammps_error_all
!-----------------------------------------------------------------------------
! Locally defined helper functions {{{1
pure function string2Cstring (string) result (C_string)
use, intrinsic :: ISO_C_binding, only : C_char, C_NULL_CHAR
character (len=*), intent(in) :: string
character (len=1, kind=C_char) :: C_string (len_trim(string)+1)
integer :: i, n
n = len_trim (string)
forall (i = 1:n)
C_string(i) = string(i:i)
end forall
C_string(n+1) = C_NULL_CHAR
end function string2Cstring
!-----------------------------------------------------------------------------
subroutine Cstring2argcargv (Cstring, argc, argv)
!! Converts a C-style string to argc and argv, that is, words in Cstring
!! become C-style strings in argv. IMPORTANT: Cstring is modified by
!! this routine! I would make Cstring local TO this routine and accept
!! a Fortran-style string instead, but we run into scoping and
!! allocation problems that way. This routine assumes the string is
!! null-terminated, as all C-style strings must be.
character (kind=C_char), dimension(*), target, intent(inout) :: Cstring
integer (C_int), intent(out) :: argc
type (C_ptr), dimension(:), allocatable, intent(out) :: argv
integer :: StringStart, SpaceIndex, strlen, argnum
argc = 1_C_int
! Find the length of the string
strlen = 1
do while ( Cstring(strlen) /= C_NULL_CHAR )
strlen = strlen + 1
end do
! Find the number of non-escaped spaces
SpaceIndex = 2
do while ( SpaceIndex < strlen )
if ( Cstring(SpaceIndex) == ' ' .and. &
Cstring(SpaceIndex-1) /= '\' ) then
argc = argc + 1_C_int
! Find the next non-space character
do while ( Cstring(SpaceIndex+1) == ' ')
SpaceIndex = SpaceIndex + 1
end do
end if
SpaceIndex = SpaceIndex + 1
end do
! Now allocate memory for argv
allocate (argv(argc))
! Now find the string starting and ending locations
StringStart = 1
SpaceIndex = 2
argnum = 1
do while ( SpaceIndex < strlen )
if ( Cstring(SpaceIndex) == ' ' .and. &
Cstring(SpaceIndex-1) /= '\' ) then
! Found a real space => split strings and store this one
Cstring(Spaceindex) = C_NULL_CHAR ! Replaces space with NULL
argv(argnum) = C_loc(Cstring(StringStart))
argnum = argnum + 1
! Find the next non-space character
do while ( Cstring(SpaceIndex+1) == ' ')
SpaceIndex = SpaceIndex + 1
end do
StringStart = SpaceIndex + 1
else if ( Cstring(SpaceIndex) == ' ' .and. &
Cstring(SpaceIndex-1) == '\' ) then
! Escaped space => remove backslash and move rest of array
Cstring(SpaceIndex-1:strlen-1) = Cstring(SpaceIndex:strlen)
strlen = strlen - 1 ! Last character is still C_NULL_CHAR
end if
SpaceIndex = SpaceIndex + 1
end do
! Now handle the last argument
argv(argnum) = C_loc(Cstring(StringStart))
end subroutine Cstring2argcargv
! 1}}}
end module LAMMPS
! vim: foldmethod=marker tabstop=3 softtabstop=3 shiftwidth=3 expandtab

View File

@ -0,0 +1,33 @@
This directory has an example of using a callback function to obtain
forces from a fortran code for a LAMMPS simulation. The reader should
refer to the README file in COUPLE/fortran2 before proceeding. Here,
the LAMMPS.F90 file has been modified slightly and additional files
named LAMMPS-wrapper2.h and LAMMPS-wrapper2.cpp have been included in
order to supply wrapper functions to set the LAMMPS callback function
and total energy.
In this example, the callback function is set to run the
semi-empirical quantum code DFTB+ in serial and then read in the total
energy, forces, and stress tensor from file. In this case, nlocal =
the total number of atoms in the system, so particle positions can be
read from the pos array directly, and DFTB+ forces can simply be
included via the fext array. The user should take care in the case of
a parallel calculation, where LAMMPS can assign different particules
to each processor. For example, the user should use functions such as
lammps_gather_atoms() and lammps_scatter_atoms() in the case where the
fortran force calculating code requires the positions of all atoms,
etc.
A few more important notes:
-The stress tensor from DFTB+ is passed in to LAMMPS via pointer.
-Calling the subroutine lammps_set_callback() is required in order to set
a pointer to the callback function in LAMMPS.
-The subroutine lammps_set_user_energy() passes in the potential energy
from DFTB+ to LAMMPS.
This example was created by Nir Goldman, whom you can contact with
questions:
Nir Goldman, LLNL
ngoldman@llnl.gov

View File

@ -0,0 +1,148 @@
# Position data file
64 atoms
1 atom types
0 7.134 xlo xhi
0 7.134 ylo yhi
0 7.134 zlo zhi
0.00000000 0.00000000 0.00000000 xy xz yz
Masses
1 12.010000
Atoms
1 1 0 0 0 0
2 1 0 0.89175 0.89175 0.89175
3 1 0 1.7835 1.7835 0
4 1 0 2.67525 2.67525 0.89175
5 1 0 0 1.7835 1.7835
6 1 0 0.89175 2.67525 2.67525
7 1 0 1.7835 0 1.7835
8 1 0 2.67525 0.89175 2.67525
9 1 0 0 0 3.567
10 1 0 0.89175 0.89175 4.45875
11 1 0 1.7835 1.7835 3.567
12 1 0 2.67525 2.67525 4.45875
13 1 0 0 1.7835 5.3505
14 1 0 0.89175 2.67525 6.24225
15 1 0 1.7835 0 5.3505
16 1 0 2.67525 0.89175 6.24225
17 1 0 0 3.567 0
18 1 0 0.89175 4.45875 0.89175
19 1 0 1.7835 5.3505 0
20 1 0 2.67525 6.24225 0.89175
21 1 0 0 5.3505 1.7835
22 1 0 0.89175 6.24225 2.67525
23 1 0 1.7835 3.567 1.7835
24 1 0 2.67525 4.45875 2.67525
25 1 0 0 3.567 3.567
26 1 0 0.89175 4.45875 4.45875
27 1 0 1.7835 5.3505 3.567
28 1 0 2.67525 6.24225 4.45875
29 1 0 0 5.3505 5.3505
30 1 0 0.89175 6.24225 6.24225
31 1 0 1.7835 3.567 5.3505
32 1 0 2.67525 4.45875 6.24225
33 1 0 3.567 0 0
34 1 0 4.45875 0.89175 0.89175
35 1 0 5.3505 1.7835 0
36 1 0 6.24225 2.67525 0.89175
37 1 0 3.567 1.7835 1.7835
38 1 0 4.45875 2.67525 2.67525
39 1 0 5.3505 0 1.7835
40 1 0 6.24225 0.89175 2.67525
41 1 0 3.567 0 3.567
42 1 0 4.45875 0.89175 4.45875
43 1 0 5.3505 1.7835 3.567
44 1 0 6.24225 2.67525 4.45875
45 1 0 3.567 1.7835 5.3505
46 1 0 4.45875 2.67525 6.24225
47 1 0 5.3505 0 5.3505
48 1 0 6.24225 0.89175 6.24225
49 1 0 3.567 3.567 0
50 1 0 4.45875 4.45875 0.89175
51 1 0 5.3505 5.3505 0
52 1 0 6.24225 6.24225 0.89175
53 1 0 3.567 5.3505 1.7835
54 1 0 4.45875 6.24225 2.67525
55 1 0 5.3505 3.567 1.7835
56 1 0 6.24225 4.45875 2.67525
57 1 0 3.567 3.567 3.567
58 1 0 4.45875 4.45875 4.45875
59 1 0 5.3505 5.3505 3.567
60 1 0 6.24225 6.24225 4.45875
61 1 0 3.567 5.3505 5.3505
62 1 0 4.45875 6.24225 6.24225
63 1 0 5.3505 3.567 5.3505
64 1 0 6.24225 4.45875 6.24225
Velocities
1 -0.00733742 -0.0040297 -0.00315229
2 -0.00788609 -0.00567535 -0.00199152
3 -0.00239042 0.00710139 -0.00335049
4 0.00678551 0.0019976 0.00219289
5 0.00413717 0.00275709 0.000937637
6 -0.00126313 0.00485636 0.00727862
7 0.00337547 -0.00234623 -0.000922223
8 -0.00792183 -0.00509186 -0.00104168
9 0.00414091 0.00390285 0.000845961
10 -0.000284543 0.0010771 -0.00458404
11 -0.00394968 -0.00446363 -0.00361688
12 0.00067088 -0.00655175 -0.00752464
13 0.00306632 -0.00245545 -0.00183867
14 -0.0082145 -0.00564127 0.000281191
15 0.00504454 0.0045835 0.000495763
16 0.0035767 0.00320441 -0.00486426
17 0.00420597 0.00262005 -0.0049459
18 0.00440579 -1.76783e-05 0.00449311
19 -0.00406463 0.00613304 0.00285599
20 0.00171215 -0.00517887 0.00124326
21 0.0011118 0.00334129 -0.0015222
22 -0.00838394 -0.00112906 -0.00353379
23 -0.00578527 -0.00415501 0.00297043
24 -0.00211466 0.000964108 -0.00716523
25 -0.000204107 -0.00380986 0.00681648
26 0.00677838 0.00540935 0.0044354
27 -0.00266809 -0.00358382 -0.00241889
28 -0.0003973 0.00236566 0.00558871
29 0.000754103 0.00457797 0.000105531
30 -0.00246049 0.00110428 0.00511088
31 0.00248891 0.00623314 0.00461597
32 -0.00509423 0.000570503 0.00720856
33 -0.00244427 -0.00374384 0.00618767
34 -0.000360752 -8.10558e-05 0.00314052
35 0.00435313 -0.00630587 -0.0070309
36 0.00651087 -0.00389833 3.72525e-05
37 0.00631828 -0.00316064 0.00231522
38 -0.00579624 -0.00345068 -0.000277486
39 0.00483974 0.000715028 0.000206355
40 -0.00388164 -0.00189242 -0.00554862
41 0.00398115 0.00152915 0.00756919
42 -0.000552263 0.00352025 -0.000246143
43 -0.00800284 0.00555703 0.00425716
44 -0.00734405 -0.00752512 0.00667173
45 -0.00545636 0.00421035 0.00399552
46 0.00480246 0.00621147 -0.00492715
47 -0.00424168 0.00621818 -9.37733e-05
48 -0.00649561 0.00612908 -0.0020753
49 -0.0075007 -0.00384737 -0.00687913
50 -0.00203903 -0.00764372 0.0023883
51 0.00442642 0.00744072 -0.0049344
52 -0.00280486 -0.00509128 -0.00678045
53 0.00679491 0.00583493 0.00333875
54 0.00574665 -0.00521074 0.00523475
55 0.00305618 -0.00320094 0.00341297
56 0.004304 0.000615544 -0.00668787
57 0.00564532 0.00327373 0.00388611
58 0.000676899 0.00210326 0.00495295
59 0.000160781 -0.00744313 -0.00279828
60 0.00623521 0.00371301 0.00178015
61 0.00520759 0.000642669 0.00207913
62 0.00398042 0.0046438 -0.00359978
63 -0.00478071 -0.00304932 -0.00765125
64 0.00282671 -0.00548392 -0.00692691

View File

@ -0,0 +1,16 @@
units real
atom_style charge
atom_modify map array
atom_modify sort 0 0.0
read_data data.diamond
neighbor 1.0 bin
neigh_modify delay 0 every 5 check no
fix 1 all nve
fix 2 all external pf/callback 1 1
fix_modify 2 energy yes
thermo_style custom step temp etotal ke pe lx ly lz pxx pyy pzz press
thermo 1
timestep 0.5

View File

@ -0,0 +1,45 @@
SHELL = /bin/sh
# Path to LAMMPS extraction directory
LAMMPS_ROOT = ../../..
LAMMPS_SRC = $(LAMMPS_ROOT)/src
# Uncomment the line below if using the MPI stubs library
MPI_STUBS = #-I$(LAMMPS_SRC)/STUBS
FC = mpif90 # replace with your Fortran compiler
CXX = mpicc # replace with your C++ compiler
# Flags for Fortran compiler, C++ compiler, and C preprocessor, respectively
FFLAGS = -O2 -fPIC
CXXFLAGS = -O2 -fPIC
CPPFLAGS = -DOMPI_SKIP_MPICXX=1 -DMPICH_SKIP_MPICXX
all : liblammps_fortran.a liblammps_fortran.so simpleF.x
liblammps_fortran.so : LAMMPS.o LAMMPS-wrapper.o LAMMPS-wrapper2.o
$(FC) $(FFLAGS) -shared -o $@ $^
simpleF.x: simple.o LAMMPS.o LAMMPS-wrapper.o LAMMPS-wrapper2.o
$(FC) $(FFLAGS) simple.o -o simpleF.x liblammps_fortran.a $(LAMMPS_SRC)/liblammps_mvapich.a -lstdc++ /usr/local/tools/fftw/lib/libfftw.a
liblammps_fortran.a : LAMMPS.o LAMMPS-wrapper.o LAMMPS-wrapper2.o
$(AR) rs $@ $^
LAMMPS.o lammps.mod : LAMMPS.F90
$(FC) $(CPPFLAGS) $(FFLAGS) -c $<
simple.o : simple.f90
$(FC) $(FFLAGS) -c $<
LAMMPS-wrapper.o : LAMMPS-wrapper.cpp LAMMPS-wrapper.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -I$(LAMMPS_SRC) $(MPI_STUBS)
LAMMPS-wrapper2.o : LAMMPS-wrapper2.cpp LAMMPS-wrapper2.h
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -I$(LAMMPS_SRC) $(MPI_STUBS)
clean :
$(RM) *.o *.mod liblammps_fortran.a liblammps_fortran.so
dist :
tar -czvf fortran-interface-callback.tar.gz LAMMPS-wrapper.h LAMMPS-wrapper.cpp LAMMPS-wrapper2.h LAMMPS-wrapper2.cpp LAMMPS.F90 makefile README simple.f90

View File

@ -0,0 +1,114 @@
module callback
implicit none
contains
subroutine fortran_callback(lmp, timestep, nlocal, ids, c_pos, c_fext) &
& bind(C, name='f_callback')
use, intrinsic :: ISO_C_binding
use LAMMPS
implicit none
type (C_ptr), value :: lmp
integer(C_int64_t), intent(in), value :: timestep
integer(C_int), intent(in), value :: nlocal
real (C_double), dimension(:,:), pointer :: x
type(c_ptr) :: c_pos, c_fext, c_ids
double precision, pointer :: fext(:,:), pos(:,:)
integer, intent(in) :: ids(nlocal)
real (C_double), dimension(:), pointer :: virial => NULL()
real (C_double) :: etot
real(C_double), pointer :: ts_lmp
double precision :: stress(3,3), ts_dftb
integer :: natom , i
real (C_double), parameter :: econv = 627.4947284155114 ! converts from Ha to
double precision, parameter :: fconv = 1185.793095983065 ! converts from Ha/bohr to
double precision, parameter :: autoatm = 2.9037166638E8
double precision lx, ly, lz
real (C_double), pointer :: boxxlo, boxxhi
real (C_double), pointer :: boxylo, boxyhi
real (C_double), pointer :: boxzlo, boxzhi
double precision, parameter :: nktv2p = 68568.4149999999935972
double precision :: volume
type (C_ptr) :: Cptr
type (C_ptr), pointer, dimension(:) :: Catom
call c_f_pointer(c_pos, pos, [3,nlocal])
call c_f_pointer(c_fext, fext, [3,nlocal])
call lammps_extract_global(boxxlo, lmp, 'boxxlo')
call lammps_extract_global(boxxhi, lmp, 'boxxhi')
call lammps_extract_global(boxylo, lmp, 'boxylo')
call lammps_extract_global(boxyhi, lmp, 'boxyhi')
call lammps_extract_global(boxzlo, lmp, 'boxzlo')
call lammps_extract_global(boxzhi, lmp, 'boxzhi')
lx = boxxhi - boxxlo
ly = boxyhi - boxylo
lz = boxzhi - boxzlo
volume = lx*ly*lz
open (unit = 10, status = 'replace', action = 'write', file='lammps.gen')
write(10,*)nlocal,"S"
write(10,*) "C"
do i = 1, nlocal
write(10,'(2I,3F15.6)')i,1,pos(:,ids(i))
enddo
write(10,*)"0.0 0.0 0.0"
write(10,*)lx,0,0
write(10,*)0,ly,0
write(10,*)0,0,lz
close(10)
call system("./dftb+ > dftb.out")
open (unit = 10, status = 'old', file = 'results.out')
read(10,*)etot
read(10,*)ts_dftb
do i = 1, 3
read(10,*)stress(i,:)
enddo
stress (:,:) = stress(:,:)*autoatm
etot = etot*econv
call lammps_extract_global(ts_lmp, lmp, 'TS_dftb')
ts_lmp = ts_dftb
do i = 1, nlocal
read(10,*)fext(:,ids(i))
fext(:,ids(i)) = fext(:,ids(i))*fconv
enddo
close(10)
call lammps_set_user_energy (lmp, etot)
call lammps_extract_atom (virial, lmp, 'virial')
if (.not. associated(virial)) then
print*,'virial pointer not associated.'
STOP
endif
virial(1) = stress(1,1)/(nktv2p/volume)
virial(2) = stress(2,2)/(nktv2p/volume)
virial(3) = stress(3,3)/(nktv2p/volume)
virial(4) = stress(1,2)/(nktv2p/volume)
virial(5) = stress(1,3)/(nktv2p/volume)
virial(6) = stress(2,3)/(nktv2p/volume)
end subroutine
end module callback
program simple_fortran_callback
use MPI
use LAMMPS
use callback
use, intrinsic :: ISO_C_binding, only : C_double, C_ptr, C_int, C_FUNPTR
implicit none
type (C_ptr) :: lmp
integer :: error, narg, me, nprocs
call MPI_Init (error)
call MPI_Comm_rank (MPI_COMM_WORLD, me, error)
call MPI_Comm_size (MPI_COMM_WORLD, nprocs, error)
call lammps_open_no_mpi ('lmp -log log.simple', lmp)
call lammps_file (lmp, 'in.simple')
call lammps_set_callback(lmp)
call lammps_command (lmp, 'run 10')
call lammps_close (lmp)
call MPI_Finalize (error)
end program simple_fortran_callback

View File

@ -28,7 +28,7 @@ thermo 100
thermo_style multi
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
velocity all create 200.0 12345678 dist uniform
#dump dump1 all atom 100 4pti.dump

View File

@ -20,7 +20,7 @@ thermo 50
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
fix 1 all nvt temp 250.0 250.0 100.0 tchain 1
fix cor all filter/corotate m 1.0

View File

@ -1,240 +0,0 @@
LAMMPS (10 Mar 2017)
using 1 OpenMP thread(s) per MPI task
units real
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long 8 10
pair_modify mix arithmetic
kspace_style pppm 1e-4
read_data data.bpti
orthogonal box = (-10 -10 -30) to (50 50 30)
1 by 1 by 1 MPI processor grid
reading atoms ...
892 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
2 = max impropers/atom
reading bonds ...
906 bonds
reading angles ...
1626 angles
reading dihedrals ...
2501 dihedrals
reading impropers ...
137 impropers
4 = max # of 1-2 neighbors
9 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
21 = max # of special neighbors
special_bonds charmm
neigh_modify delay 2 every 1
# ------------- MINIMIZE ----------
minimize 1e-4 1e-6 1000 10000
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
PPPM initialization ...
WARNING: System is not charge neutral, net charge = 6 (../kspace.cpp:302)
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 9261 4096
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory usage (min/avg/max) = 17.8596/1/0 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -3075.6498 943.91164 -2131.7381 -380.67776
241 0 -4503.313 749.58662 -3753.7264 -29.045104
Loop time of 3.35722 on 1 procs for 241 steps with 892 atoms
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-2131.73812515 -3753.43984087 -3753.72636847
Force two-norm initial, final = 1086.21 26.3688
Force max component initial, final = 310.811 3.92748
Final line search alpha, max atom move = 0.00596649 0.0234333
Iterations, force evaluations = 241 463
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.5003 | 2.5003 | 2.5003 | 0.0 | 74.48
Bond | 0.24287 | 0.24287 | 0.24287 | 0.0 | 7.23
Kspace | 0.53428 | 0.53428 | 0.53428 | 0.0 | 15.91
Neigh | 0.069765 | 0.069765 | 0.069765 | 0.0 | 2.08
Comm | 0.00065374 | 0.00065374 | 0.00065374 | 0.0 | 0.02
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.009358 | | | 0.28
Nlocal: 892 ave 892 max 892 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 31 ave 31 max 31 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 148891 ave 148891 max 148891 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 148891
Ave neighs/atom = 166.918
Ave special neighs/atom = 10.9395
Neighbor list builds = 15
Dangerous builds = 0
reset_timestep 0
# ------------- RUN ---------------
thermo 100
thermo_style multi
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
Respa levels:
1 = bond angle dihedral improper
2 = pair
3 = kspace
velocity all create 200.0 12345678 dist uniform
#dump dump1 all atom 100 4pti.dump
fix 1 all nvt temp 200 300 25
fix cor all filter/corotate m 1.0
163 = # of size 2 clusters
0 = # of size 3 clusters
25 = # of size 4 clusters
0 = # of size 5 clusters
100 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 9261 4096
Per MPI rank memory usage (min/avg/max) = 19.5425/1/0 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -3220.3378 KinEng = 531.1804 Temp = 200.0000
PotEng = -3751.5181 E_bond = 42.2810 E_angle = 345.2592
E_dihed = 337.8361 E_impro = 24.2103 E_vdwl = -288.5339
E_coul = -886.3622 E_long = -3326.2088 Press = 83.2283
---------------- Step 100 ----- CPU = 3.9414 (sec) ----------------
TotEng = -2718.8970 KinEng = 538.6206 Temp = 202.8014
PotEng = -3257.5176 E_bond = 203.3367 E_angle = 566.5317
E_dihed = 397.6202 E_impro = 34.6623 E_vdwl = -248.7451
E_coul = -874.5122 E_long = -3336.4111 Press = 135.8662
---------------- Step 200 ----- CPU = 7.9028 (sec) ----------------
TotEng = -2660.1406 KinEng = 626.3319 Temp = 235.8265
PotEng = -3286.4725 E_bond = 209.5147 E_angle = 591.7773
E_dihed = 388.9591 E_impro = 29.4992 E_vdwl = -243.5808
E_coul = -923.5115 E_long = -3339.1306 Press = 88.9000
---------------- Step 300 ----- CPU = 11.8246 (sec) ----------------
TotEng = -2673.8090 KinEng = 616.7924 Temp = 232.2346
PotEng = -3290.6014 E_bond = 202.8254 E_angle = 568.6860
E_dihed = 378.4182 E_impro = 38.2399 E_vdwl = -221.3236
E_coul = -915.3004 E_long = -3342.1468 Press = 78.8527
---------------- Step 400 ----- CPU = 15.7990 (sec) ----------------
TotEng = -2614.9416 KinEng = 649.3474 Temp = 244.4922
PotEng = -3264.2890 E_bond = 211.6116 E_angle = 617.2026
E_dihed = 399.8744 E_impro = 40.2678 E_vdwl = -211.7790
E_coul = -978.1624 E_long = -3343.3041 Press = -4.1958
---------------- Step 500 ----- CPU = 19.8146 (sec) ----------------
TotEng = -2588.6772 KinEng = 660.1424 Temp = 248.5568
PotEng = -3248.8196 E_bond = 218.4786 E_angle = 620.8605
E_dihed = 390.3220 E_impro = 41.6794 E_vdwl = -226.3657
E_coul = -953.1676 E_long = -3340.6269 Press = 99.3200
---------------- Step 600 ----- CPU = 23.8587 (sec) ----------------
TotEng = -2550.4618 KinEng = 693.3384 Temp = 261.0557
PotEng = -3243.8002 E_bond = 232.3563 E_angle = 606.2922
E_dihed = 396.2469 E_impro = 37.1980 E_vdwl = -235.8425
E_coul = -937.1208 E_long = -3342.9303 Press = -21.7737
---------------- Step 700 ----- CPU = 27.8381 (sec) ----------------
TotEng = -2554.4355 KinEng = 692.8951 Temp = 260.8888
PotEng = -3247.3306 E_bond = 216.3395 E_angle = 637.7785
E_dihed = 391.5940 E_impro = 43.1426 E_vdwl = -187.6159
E_coul = -1008.1694 E_long = -3340.3998 Press = 75.1484
---------------- Step 800 ----- CPU = 31.8039 (sec) ----------------
TotEng = -2508.3551 KinEng = 699.0766 Temp = 263.2163
PotEng = -3207.4317 E_bond = 241.9936 E_angle = 641.3631
E_dihed = 386.2198 E_impro = 43.7793 E_vdwl = -217.7523
E_coul = -964.6070 E_long = -3338.4282 Press = -127.7337
---------------- Step 900 ----- CPU = 35.7700 (sec) ----------------
TotEng = -2452.7644 KinEng = 762.1842 Temp = 286.9776
PotEng = -3214.9485 E_bond = 243.9191 E_angle = 649.8664
E_dihed = 382.4351 E_impro = 39.0029 E_vdwl = -221.3389
E_coul = -970.8965 E_long = -3337.9366 Press = 122.7720
---------------- Step 1000 ----- CPU = 39.7695 (sec) ----------------
TotEng = -2386.6805 KinEng = 799.0253 Temp = 300.8490
PotEng = -3185.7058 E_bond = 265.3649 E_angle = 661.7543
E_dihed = 374.6843 E_impro = 38.6877 E_vdwl = -229.2030
E_coul = -960.7041 E_long = -3336.2899 Press = -17.9910
Loop time of 39.7695 on 1 procs for 1000 steps with 892 atoms
Performance: 17.380 ns/day, 1.381 hours/ns, 25.145 timesteps/s
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 29.169 | 29.169 | 29.169 | 0.0 | 73.34
Bond | 7.6249 | 7.6249 | 7.6249 | 0.0 | 19.17
Kspace | 1.1525 | 1.1525 | 1.1525 | 0.0 | 2.90
Neigh | 0.87606 | 0.87606 | 0.87606 | 0.0 | 2.20
Comm | 0.01563 | 0.01563 | 0.01563 | 0.0 | 0.04
Output | 0.00048423 | 0.00048423 | 0.00048423 | 0.0 | 0.00
Modify | 0.80446 | 0.80446 | 0.80446 | 0.0 | 2.02
Other | | 0.1266 | | | 0.32
Nlocal: 892 ave 892 max 892 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 27 ave 27 max 27 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 146206 ave 146206 max 146206 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 146206
Ave neighs/atom = 163.908
Ave special neighs/atom = 10.9395
Neighbor list builds = 186
Dangerous builds = 0
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:43

View File

@ -1,240 +0,0 @@
LAMMPS (10 Mar 2017)
using 1 OpenMP thread(s) per MPI task
units real
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long 8 10
pair_modify mix arithmetic
kspace_style pppm 1e-4
read_data data.bpti
orthogonal box = (-10 -10 -30) to (50 50 30)
1 by 2 by 2 MPI processor grid
reading atoms ...
892 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
2 = max impropers/atom
reading bonds ...
906 bonds
reading angles ...
1626 angles
reading dihedrals ...
2501 dihedrals
reading impropers ...
137 impropers
4 = max # of 1-2 neighbors
9 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
21 = max # of special neighbors
special_bonds charmm
neigh_modify delay 2 every 1
# ------------- MINIMIZE ----------
minimize 1e-4 1e-6 1000 10000
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
PPPM initialization ...
WARNING: System is not charge neutral, net charge = 6 (../kspace.cpp:302)
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 3549 1024
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory usage (min/avg/max) = 16.9693/0.981879/0 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -3075.6498 943.91164 -2131.7381 -380.67776
241 0 -4503.3131 749.58666 -3753.7264 -29.045153
Loop time of 1.26594 on 4 procs for 241 steps with 892 atoms
99.0% CPU use with 4 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-2131.73812515 -3753.43983927 -3753.72640137
Force two-norm initial, final = 1086.21 26.3688
Force max component initial, final = 310.811 3.92751
Final line search alpha, max atom move = 0.00596649 0.0234334
Iterations, force evaluations = 241 463
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.34267 | 0.63792 | 0.90268 | 25.2 | 50.39
Bond | 0.025776 | 0.063318 | 0.095631 | 10.8 | 5.00
Kspace | 0.21904 | 0.51601 | 0.84895 | 31.3 | 40.76
Neigh | 0.023185 | 0.023363 | 0.023538 | 0.1 | 1.85
Comm | 0.012025 | 0.014189 | 0.016335 | 1.4 | 1.12
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.01114 | | | 0.88
Nlocal: 223 ave 323 max 89 min
Histogram: 1 0 0 0 1 0 0 0 1 1
Nghost: 613 ave 675 max 557 min
Histogram: 1 0 0 1 0 1 0 0 0 1
Neighs: 37222.8 ave 50005 max 20830 min
Histogram: 1 0 0 0 1 0 0 1 0 1
Total # of neighbors = 148891
Ave neighs/atom = 166.918
Ave special neighs/atom = 10.9395
Neighbor list builds = 15
Dangerous builds = 0
reset_timestep 0
# ------------- RUN ---------------
thermo 100
thermo_style multi
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
Respa levels:
1 = bond angle dihedral improper
2 = pair
3 = kspace
velocity all create 200.0 12345678 dist uniform
#dump dump1 all atom 100 4pti.dump
fix 1 all nvt temp 200 300 25
fix cor all filter/corotate m 1.0
163 = # of size 2 clusters
0 = # of size 3 clusters
25 = # of size 4 clusters
0 = # of size 5 clusters
100 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 3549 1024
Per MPI rank memory usage (min/avg/max) = 17.142/0.97212/0 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -3220.3378 KinEng = 531.1804 Temp = 200.0000
PotEng = -3751.5182 E_bond = 42.2810 E_angle = 345.2592
E_dihed = 337.8361 E_impro = 24.2103 E_vdwl = -288.5339
E_coul = -886.3622 E_long = -3326.2088 Press = 83.2282
---------------- Step 100 ----- CPU = 1.5457 (sec) ----------------
TotEng = -2718.9184 KinEng = 538.6205 Temp = 202.8014
PotEng = -3257.5389 E_bond = 203.3365 E_angle = 566.5311
E_dihed = 397.6202 E_impro = 34.6621 E_vdwl = -248.7451
E_coul = -874.5326 E_long = -3336.4111 Press = 135.8435
---------------- Step 200 ----- CPU = 3.0720 (sec) ----------------
TotEng = -2660.1146 KinEng = 626.3474 Temp = 235.8323
PotEng = -3286.4620 E_bond = 209.5168 E_angle = 591.7735
E_dihed = 388.9615 E_impro = 29.5000 E_vdwl = -243.5840
E_coul = -923.4998 E_long = -3339.1299 Press = 88.8857
---------------- Step 300 ----- CPU = 4.5597 (sec) ----------------
TotEng = -2669.7442 KinEng = 619.3625 Temp = 233.2023
PotEng = -3289.1067 E_bond = 203.4405 E_angle = 569.5281
E_dihed = 378.3314 E_impro = 38.2880 E_vdwl = -221.1904
E_coul = -915.3396 E_long = -3342.1646 Press = 79.3780
---------------- Step 400 ----- CPU = 5.9808 (sec) ----------------
TotEng = -2618.9975 KinEng = 644.6145 Temp = 242.7102
PotEng = -3263.6119 E_bond = 209.5864 E_angle = 618.8954
E_dihed = 401.3798 E_impro = 39.9064 E_vdwl = -212.1271
E_coul = -977.1589 E_long = -3344.0940 Press = -7.8938
---------------- Step 500 ----- CPU = 7.4159 (sec) ----------------
TotEng = -2579.7486 KinEng = 666.4643 Temp = 250.9371
PotEng = -3246.2129 E_bond = 219.2549 E_angle = 620.3474
E_dihed = 388.4395 E_impro = 41.4499 E_vdwl = -225.9686
E_coul = -949.3689 E_long = -3340.3672 Press = 113.2543
---------------- Step 600 ----- CPU = 8.9252 (sec) ----------------
TotEng = -2535.8235 KinEng = 708.5919 Temp = 266.7990
PotEng = -3244.4154 E_bond = 243.9451 E_angle = 606.0866
E_dihed = 400.0562 E_impro = 33.9708 E_vdwl = -223.1319
E_coul = -964.9940 E_long = -3340.3482 Press = -102.4475
---------------- Step 700 ----- CPU = 10.4022 (sec) ----------------
TotEng = -2552.6681 KinEng = 702.3080 Temp = 264.4330
PotEng = -3254.9761 E_bond = 250.8834 E_angle = 639.0977
E_dihed = 386.4014 E_impro = 42.3004 E_vdwl = -224.4816
E_coul = -1011.8551 E_long = -3337.3222 Press = 10.6424
---------------- Step 800 ----- CPU = 11.8699 (sec) ----------------
TotEng = -2423.5415 KinEng = 772.1254 Temp = 290.7206
PotEng = -3195.6670 E_bond = 238.5831 E_angle = 640.9180
E_dihed = 377.7994 E_impro = 40.3135 E_vdwl = -216.5705
E_coul = -935.1087 E_long = -3341.6019 Press = -38.2479
---------------- Step 900 ----- CPU = 13.3548 (sec) ----------------
TotEng = -2394.4779 KinEng = 766.6895 Temp = 288.6739
PotEng = -3161.1673 E_bond = 284.8428 E_angle = 671.0959
E_dihed = 380.3406 E_impro = 51.2975 E_vdwl = -219.5211
E_coul = -990.6305 E_long = -3338.5925 Press = -15.2279
---------------- Step 1000 ----- CPU = 14.7908 (sec) ----------------
TotEng = -2340.1471 KinEng = 799.0198 Temp = 300.8469
PotEng = -3139.1669 E_bond = 271.0389 E_angle = 683.8278
E_dihed = 407.0795 E_impro = 39.6209 E_vdwl = -230.5355
E_coul = -974.2981 E_long = -3335.9003 Press = -94.3420
Loop time of 14.7909 on 4 procs for 1000 steps with 892 atoms
Performance: 46.732 ns/day, 0.514 hours/ns, 67.609 timesteps/s
99.1% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 4.4184 | 7.5543 | 10.133 | 74.2 | 51.07
Bond | 0.94027 | 1.9781 | 2.7492 | 54.4 | 13.37
Kspace | 0.45487 | 0.45887 | 0.46343 | 0.4 | 3.10
Neigh | 0.28145 | 0.28339 | 0.28539 | 0.3 | 1.92
Comm | 0.7515 | 4.1484 | 8.3861 | 135.5 | 28.05
Output | 0.00049973 | 0.00055474 | 0.00066924 | 0.0 | 0.00
Modify | 0.26165 | 0.31142 | 0.35023 | 6.7 | 2.11
Other | | 0.05572 | | | 0.38
Nlocal: 223 ave 313 max 122 min
Histogram: 1 0 0 1 0 0 0 1 0 1
Nghost: 584.5 ave 605 max 553 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Neighs: 35448 ave 42093 max 25175 min
Histogram: 1 0 0 0 0 0 1 1 0 1
Total # of neighbors = 141792
Ave neighs/atom = 158.96
Ave special neighs/atom = 10.9395
Neighbor list builds = 186
Dangerous builds = 0
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:16

View File

@ -1,146 +0,0 @@
LAMMPS (10 Mar 2017)
using 1 OpenMP thread(s) per MPI task
# Solvated 5-mer peptide, run for 8ps in NVT
units real
atom_style full
pair_style lj/charmm/coul/long 8.0 10.0 10.0
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
kspace_style pppm 0.0001
read_data data.peptide
orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395)
1 by 1 by 1 MPI processor grid
reading atoms ...
2004 atoms
reading velocities ...
2004 velocities
scanning bonds ...
3 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
14 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
1365 bonds
reading angles ...
786 angles
reading dihedrals ...
207 dihedrals
reading impropers ...
12 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
14 = max # of 1-4 neighbors
18 = max # of special neighbors
neighbor 2.0 bin
neigh_modify delay 5
thermo 50
#dump dump1 all atom 100 peptide.dump
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
Respa levels:
1 = bond angle dihedral improper
2 = pair
3 = kspace
fix 1 all nvt temp 250.0 250.0 100.0 tchain 1
fix cor all filter/corotate m 1.0
19 = # of size 2 clusters
0 = # of size 3 clusters
3 = # of size 4 clusters
0 = # of size 5 clusters
646 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.268725
grid = 15 15 15
stencil order = 5
estimated absolute RMS force accuracy = 0.0228209
estimated relative force accuracy = 6.87243e-05
using double precision FFTs
3d grid and FFT values/proc = 10648 3375
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory usage (min/avg/max) = 22.6706/1/0 Mbytes
Step Temp E_pair E_mol TotEng Press
0 190.0857 -6785.6785 70.391457 -5580.3684 19434.821
50 239.46028 -7546.5667 1092.8874 -5023.9668 -24643.891
100 242.81799 -7125.5527 416.0788 -5259.7139 15525.465
150 235.97108 -7531.9334 932.35464 -5190.6987 -14838.489
200 252.06415 -7195.6011 568.02993 -5122.6064 8841.332
250 249.99431 -7586.5092 881.83491 -5212.0676 -9330.345
300 240.3382 -7333.0933 633.29951 -5264.8395 5137.9757
350 255.34529 -7568.2413 856.46371 -5187.2226 -6206.063
400 242.99276 -7419.9031 713.23943 -5255.8602 2447.0091
450 251.10653 -7622.061 844.20584 -5278.6079 -4906.6559
500 255.59314 -7439.253 710.84907 -5202.3691 1571.0032
550 253.2025 -7660.5101 823.05373 -5325.695 -4551.399
600 249.05313 -7509.6729 741.48104 -5281.2046 992.87
650 251.75984 -7593.6589 847.08244 -5243.4286 -3510.1176
700 249.25027 -7601.9112 794.0912 -5319.6557 305.76021
750 255.415 -7602.2674 822.98524 -5254.3109 -2333.421
800 241.99621 -7643.8878 796.53352 -5402.5008 -298.66565
850 253.6428 -7598.3764 816.45457 -5267.5316 -1905.3478
900 247.20231 -7690.2806 789.75999 -5424.5838 -1331.7228
950 255.92583 -7634.7505 831.18272 -5275.5466 -2186.5117
1000 253.2126 -7647.9526 823.93602 -5312.195 -1189.9659
Loop time of 150.664 on 1 procs for 1000 steps with 2004 atoms
Performance: 4.588 ns/day, 5.231 hours/ns, 6.637 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 | 135.81 | 135.81 | 135.81 | 0.0 | 90.14
Bond | 2.5889 | 2.5889 | 2.5889 | 0.0 | 1.72
Kspace | 2.0379 | 2.0379 | 2.0379 | 0.0 | 1.35
Neigh | 5.893 | 5.893 | 5.893 | 0.0 | 3.91
Comm | 1.6998 | 1.6998 | 1.6998 | 0.0 | 1.13
Output | 0.00077915 | 0.00077915 | 0.00077915 | 0.0 | 0.00
Modify | 2 | 2 | 2 | 0.0 | 1.33
Other | | 0.6352 | | | 0.42
Nlocal: 2004 ave 2004 max 2004 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 11197 ave 11197 max 11197 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 707779 ave 707779 max 707779 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 707779
Ave neighs/atom = 353.183
Ave special neighs/atom = 2.34032
Neighbor list builds = 200
Dangerous builds = 200
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:02:30

View File

@ -1,146 +0,0 @@
LAMMPS (10 Mar 2017)
using 1 OpenMP thread(s) per MPI task
# Solvated 5-mer peptide, run for 8ps in NVT
units real
atom_style full
pair_style lj/charmm/coul/long 8.0 10.0 10.0
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
kspace_style pppm 0.0001
read_data data.peptide
orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395)
1 by 2 by 2 MPI processor grid
reading atoms ...
2004 atoms
reading velocities ...
2004 velocities
scanning bonds ...
3 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
14 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
1365 bonds
reading angles ...
786 angles
reading dihedrals ...
207 dihedrals
reading impropers ...
12 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
14 = max # of 1-4 neighbors
18 = max # of special neighbors
neighbor 2.0 bin
neigh_modify delay 5
thermo 50
#dump dump1 all atom 100 peptide.dump
timestep 8
run_style respa 3 2 8 bond 1 pair 2 kspace 3
Respa levels:
1 = bond angle dihedral improper
2 = pair
3 = kspace
fix 1 all nvt temp 250.0 250.0 100.0 tchain 1
fix cor all filter/corotate m 1.0
19 = # of size 2 clusters
0 = # of size 3 clusters
3 = # of size 4 clusters
0 = # of size 5 clusters
646 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.268725
grid = 15 15 15
stencil order = 5
estimated absolute RMS force accuracy = 0.0228209
estimated relative force accuracy = 6.87243e-05
using double precision FFTs
3d grid and FFT values/proc = 4312 960
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory usage (min/avg/max) = 16.8394/0.98826/0 Mbytes
Step Temp E_pair E_mol TotEng Press
0 190.0857 -6785.6785 70.391457 -5580.3684 19434.821
50 239.46028 -7546.5668 1092.8874 -5023.9668 -24643.891
100 242.81819 -7125.5629 416.08082 -5259.7209 15525.244
150 235.94928 -7531.9186 932.50658 -5190.6621 -14842.431
200 255.85551 -7254.4065 568.8803 -5157.9249 8936.8651
250 247.8705 -7607.4583 858.06087 -5269.4711 -9926.0442
300 257.64176 -7267.424 618.5573 -5110.6004 5173.3307
350 251.65439 -7572.3806 821.15745 -5248.7049 -7092.327
400 256.87927 -7414.2145 655.33178 -5225.169 4119.4095
450 257.12393 -7576.5541 853.39773 -5187.9819 -5224.8823
500 242.42371 -7524.705 705.75357 -5371.5455 2111.3878
550 248.97188 -7541.076 792.86994 -5261.7038 -2278.4185
600 249.81862 -7592.0499 767.17722 -5333.3149 -1149.4759
650 253.31349 -7578.2665 813.75975 -5252.0827 -2915.5706
700 256.61152 -7588.1475 761.03356 -5294.9988 -747.88089
750 248.3606 -7660.457 837.71615 -5339.8883 -3072.8311
800 253.81464 -7638.6089 782.4229 -5340.7698 -1025.909
850 245.69185 -7660.9036 795.66792 -5398.3172 -2717.5851
900 249.13156 -7589.4769 806.43464 -5295.5867 -761.63361
950 251.11482 -7691.4981 869.34937 -5322.852 -3282.3031
1000 241.9195 -7630.9899 828.59107 -5358.0033 -95.962685
Loop time of 45.5507 on 4 procs for 1000 steps with 2004 atoms
Performance: 15.174 ns/day, 1.582 hours/ns, 21.954 timesteps/s
99.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 | 35.545 | 36.674 | 38.004 | 15.8 | 80.51
Bond | 0.51302 | 0.67796 | 0.86345 | 18.6 | 1.49
Kspace | 0.66031 | 0.68459 | 0.70506 | 2.1 | 1.50
Neigh | 1.5605 | 1.5627 | 1.5649 | 0.1 | 3.43
Comm | 3.4611 | 4.9841 | 6.294 | 47.2 | 10.94
Output | 0.00079799 | 0.00086641 | 0.0010369 | 0.0 | 0.00
Modify | 0.67341 | 0.69059 | 0.71186 | 1.7 | 1.52
Other | | 0.2762 | | | 0.61
Nlocal: 501 ave 523 max 473 min
Histogram: 1 0 0 0 0 0 2 0 0 1
Nghost: 6643.25 ave 6708 max 6566 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Neighs: 176977 ave 185765 max 164931 min
Histogram: 1 0 0 0 1 0 0 0 1 1
Total # of neighbors = 707908
Ave neighs/atom = 353.248
Ave special neighs/atom = 2.34032
Neighbor list builds = 200
Dangerous builds = 200
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:45

View File

@ -0,0 +1,241 @@
LAMMPS (20 Jun 2017)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
units real
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long 8 10
pair_modify mix arithmetic
kspace_style pppm 1e-4
read_data data.bpti
orthogonal box = (-10 -10 -30) to (50 50 30)
1 by 1 by 1 MPI processor grid
reading atoms ...
892 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
2 = max impropers/atom
reading bonds ...
906 bonds
reading angles ...
1626 angles
reading dihedrals ...
2501 dihedrals
reading impropers ...
137 impropers
4 = max # of 1-2 neighbors
9 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
21 = max # of special neighbors
special_bonds charmm
neigh_modify delay 2 every 1
# ------------- MINIMIZE ----------
minimize 1e-4 1e-6 1000 10000
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
PPPM initialization ...
WARNING: System is not charge neutral, net charge = 6 (../kspace.cpp:302)
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 9261 4096
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 17.86 | 17.86 | 17.86 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -3075.6498 943.91164 -2131.7381 -380.67776
241 0 -4503.313 749.58662 -3753.7264 -29.045104
Loop time of 7.63279 on 1 procs for 241 steps with 892 atoms
32.0% CPU use with 1 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-2131.73812515 -3753.43984087 -3753.72636847
Force two-norm initial, final = 1086.21 26.3688
Force max component initial, final = 310.811 3.92748
Final line search alpha, max atom move = 0.00596649 0.0234333
Iterations, force evaluations = 241 463
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 5.8395 | 5.8395 | 5.8395 | 0.0 | 76.51
Bond | 0.46414 | 0.46414 | 0.46414 | 0.0 | 6.08
Kspace | 1.1535 | 1.1535 | 1.1535 | 0.0 | 15.11
Neigh | 0.14908 | 0.14908 | 0.14908 | 0.0 | 1.95
Comm | 0.001932 | 0.001932 | 0.001932 | 0.0 | 0.03
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.02465 | | | 0.32
Nlocal: 892 ave 892 max 892 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 31 ave 31 max 31 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 148891 ave 148891 max 148891 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 148891
Ave neighs/atom = 166.918
Ave special neighs/atom = 10.9395
Neighbor list builds = 15
Dangerous builds = 0
reset_timestep 0
# ------------- RUN ---------------
thermo 100
thermo_style multi
timestep 8
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
Respa levels:
1 = bond angle
2 = dihedral improper pair
3 = kspace
velocity all create 200.0 12345678 dist uniform
#dump dump1 all atom 100 4pti.dump
fix 1 all nvt temp 200 300 25
fix cor all filter/corotate m 1.0
163 = # of size 2 clusters
0 = # of size 3 clusters
25 = # of size 4 clusters
0 = # of size 5 clusters
100 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 9261 4096
Per MPI rank memory allocation (min/avg/max) = 19.55 | 19.55 | 19.55 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -3220.3378 KinEng = 531.1804 Temp = 200.0000
PotEng = -3751.5181 E_bond = 42.2810 E_angle = 345.2592
E_dihed = 337.8361 E_impro = 24.2103 E_vdwl = -288.5339
E_coul = -886.3622 E_long = -3326.2088 Press = 83.2283
---------------- Step 100 ----- CPU = 8.4380 (sec) ----------------
TotEng = -2718.4258 KinEng = 539.6265 Temp = 203.1802
PotEng = -3258.0524 E_bond = 203.2307 E_angle = 566.1893
E_dihed = 397.6759 E_impro = 34.7696 E_vdwl = -248.6577
E_coul = -874.8466 E_long = -3336.4135 Press = 135.8640
---------------- Step 200 ----- CPU = 16.9012 (sec) ----------------
TotEng = -2661.9611 KinEng = 625.0674 Temp = 235.3503
PotEng = -3287.0285 E_bond = 208.1804 E_angle = 590.8462
E_dihed = 389.1482 E_impro = 30.5882 E_vdwl = -240.5448
E_coul = -926.3091 E_long = -3338.9378 Press = 103.4738
---------------- Step 300 ----- CPU = 25.3046 (sec) ----------------
TotEng = -2662.4139 KinEng = 622.2647 Temp = 234.2951
PotEng = -3284.6785 E_bond = 202.4210 E_angle = 573.6793
E_dihed = 382.8919 E_impro = 41.8973 E_vdwl = -218.9895
E_coul = -924.8414 E_long = -3341.7372 Press = 40.6746
---------------- Step 400 ----- CPU = 33.8063 (sec) ----------------
TotEng = -2604.9431 KinEng = 662.9890 Temp = 249.6286
PotEng = -3267.9321 E_bond = 195.9116 E_angle = 616.1383
E_dihed = 407.8502 E_impro = 43.3560 E_vdwl = -219.0377
E_coul = -966.3118 E_long = -3345.8387 Press = -91.8856
---------------- Step 500 ----- CPU = 42.3470 (sec) ----------------
TotEng = -2609.3867 KinEng = 657.0939 Temp = 247.4090
PotEng = -3266.4806 E_bond = 236.4955 E_angle = 570.6256
E_dihed = 390.5111 E_impro = 41.9250 E_vdwl = -223.9927
E_coul = -939.5249 E_long = -3342.5201 Press = 236.7471
---------------- Step 600 ----- CPU = 50.9590 (sec) ----------------
TotEng = -2564.7161 KinEng = 701.8494 Temp = 264.2603
PotEng = -3266.5655 E_bond = 223.5820 E_angle = 582.7722
E_dihed = 394.6196 E_impro = 43.8581 E_vdwl = -201.7759
E_coul = -967.4136 E_long = -3342.2079 Press = 26.6595
---------------- Step 700 ----- CPU = 59.4791 (sec) ----------------
TotEng = -2510.1142 KinEng = 689.5931 Temp = 259.6455
PotEng = -3199.7072 E_bond = 254.6476 E_angle = 611.9715
E_dihed = 403.0624 E_impro = 44.1360 E_vdwl = -205.6377
E_coul = -964.7455 E_long = -3343.1416 Press = 60.5789
---------------- Step 800 ----- CPU = 67.9330 (sec) ----------------
TotEng = -2452.7408 KinEng = 777.5962 Temp = 292.7805
PotEng = -3230.3370 E_bond = 250.4950 E_angle = 656.6738
E_dihed = 382.4702 E_impro = 39.5378 E_vdwl = -225.0375
E_coul = -994.4519 E_long = -3340.0244 Press = -19.6463
---------------- Step 900 ----- CPU = 76.3690 (sec) ----------------
TotEng = -2339.9766 KinEng = 808.7116 Temp = 304.4961
PotEng = -3148.6883 E_bond = 247.7657 E_angle = 679.0658
E_dihed = 398.2984 E_impro = 43.7890 E_vdwl = -230.2498
E_coul = -945.8152 E_long = -3341.5422 Press = -64.4343
---------------- Step 1000 ----- CPU = 84.8757 (sec) ----------------
TotEng = -2329.1819 KinEng = 822.9820 Temp = 309.8691
PotEng = -3152.1639 E_bond = 264.9609 E_angle = 691.7104
E_dihed = 385.9914 E_impro = 40.5525 E_vdwl = -230.5182
E_coul = -954.6203 E_long = -3350.2405 Press = -146.6649
Loop time of 84.8758 on 1 procs for 1000 steps with 892 atoms
Performance: 8.144 ns/day, 2.947 hours/ns, 11.782 timesteps/s
32.0% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 68.548 | 68.548 | 68.548 | 0.0 | 80.76
Bond | 10.263 | 10.263 | 10.263 | 0.0 | 12.09
Kspace | 2.4528 | 2.4528 | 2.4528 | 0.0 | 2.89
Neigh | 1.9041 | 1.9041 | 1.9041 | 0.0 | 2.24
Comm | 0.044126 | 0.044126 | 0.044126 | 0.0 | 0.05
Output | 0.000983 | 0.000983 | 0.000983 | 0.0 | 0.00
Modify | 1.4113 | 1.4113 | 1.4113 | 0.0 | 1.66
Other | | 0.2516 | | | 0.30
Nlocal: 892 ave 892 max 892 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 38 ave 38 max 38 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 144068 ave 144068 max 144068 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 144068
Ave neighs/atom = 161.511
Ave special neighs/atom = 10.9395
Neighbor list builds = 190
Dangerous builds = 0
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:01:32

View File

@ -0,0 +1,241 @@
LAMMPS (20 Jun 2017)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
units real
atom_style full
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long 8 10
pair_modify mix arithmetic
kspace_style pppm 1e-4
read_data data.bpti
orthogonal box = (-10 -10 -30) to (50 50 30)
1 by 2 by 2 MPI processor grid
reading atoms ...
892 atoms
scanning bonds ...
4 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
18 = max dihedrals/atom
scanning impropers ...
2 = max impropers/atom
reading bonds ...
906 bonds
reading angles ...
1626 angles
reading dihedrals ...
2501 dihedrals
reading impropers ...
137 impropers
4 = max # of 1-2 neighbors
9 = max # of 1-3 neighbors
19 = max # of 1-4 neighbors
21 = max # of special neighbors
special_bonds charmm
neigh_modify delay 2 every 1
# ------------- MINIMIZE ----------
minimize 1e-4 1e-6 1000 10000
WARNING: Resetting reneighboring criteria during minimization (../min.cpp:168)
PPPM initialization ...
WARNING: System is not charge neutral, net charge = 6 (../kspace.cpp:302)
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 3549 1024
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 16.97 | 17.2 | 17.52 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -3075.6498 943.91164 -2131.7381 -380.67776
241 0 -4503.3131 749.58665 -3753.7264 -29.044989
Loop time of 3.06327 on 4 procs for 241 steps with 892 atoms
31.9% CPU use with 4 MPI tasks x 1 OpenMP threads
Minimization stats:
Stopping criterion = energy tolerance
Energy initial, next-to-last, final =
-2131.73812515 -3753.4398752 -3753.72640446
Force two-norm initial, final = 1086.21 26.3687
Force max component initial, final = 310.811 3.92765
Final line search alpha, max atom move = 0.0059665 0.0234343
Iterations, force evaluations = 241 463
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.91458 | 1.6235 | 2.2701 | 38.2 | 53.00
Bond | 0.055164 | 0.13173 | 0.19487 | 15.1 | 4.30
Kspace | 0.48966 | 1.1993 | 1.9847 | 48.7 | 39.15
Neigh | 0.053297 | 0.053442 | 0.053576 | 0.0 | 1.74
Comm | 0.031677 | 0.035006 | 0.038061 | 1.5 | 1.14
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 0.02021 | | | 0.66
Nlocal: 223 ave 323 max 89 min
Histogram: 1 0 0 0 1 0 0 0 1 1
Nghost: 613 ave 675 max 557 min
Histogram: 1 0 0 1 0 1 0 0 0 1
Neighs: 37222.8 ave 50005 max 20830 min
Histogram: 1 0 0 0 1 0 0 1 0 1
Total # of neighbors = 148891
Ave neighs/atom = 166.918
Ave special neighs/atom = 10.9395
Neighbor list builds = 15
Dangerous builds = 0
reset_timestep 0
# ------------- RUN ---------------
thermo 100
thermo_style multi
timestep 8
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
Respa levels:
1 = bond angle
2 = dihedral improper pair
3 = kspace
velocity all create 200.0 12345678 dist uniform
#dump dump1 all atom 100 4pti.dump
fix 1 all nvt temp 200 300 25
fix cor all filter/corotate m 1.0
163 = # of size 2 clusters
0 = # of size 3 clusters
25 = # of size 4 clusters
0 = # of size 5 clusters
100 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.203272
grid = 16 16 16
stencil order = 5
estimated absolute RMS force accuracy = 0.0316399
estimated relative force accuracy = 9.52826e-05
using double precision FFTs
3d grid and FFT values/proc = 3549 1024
Per MPI rank memory allocation (min/avg/max) = 17.14 | 17.63 | 18.14 Mbytes
---------------- Step 0 ----- CPU = 0.0000 (sec) ----------------
TotEng = -3220.3378 KinEng = 531.1804 Temp = 200.0000
PotEng = -3751.5182 E_bond = 42.2810 E_angle = 345.2593
E_dihed = 337.8361 E_impro = 24.2103 E_vdwl = -288.5339
E_coul = -886.3622 E_long = -3326.2088 Press = 83.2284
---------------- Step 100 ----- CPU = 3.4639 (sec) ----------------
TotEng = -2718.4266 KinEng = 539.6246 Temp = 203.1794
PotEng = -3258.0513 E_bond = 203.2306 E_angle = 566.1887
E_dihed = 397.6756 E_impro = 34.7695 E_vdwl = -248.6577
E_coul = -874.8446 E_long = -3336.4135 Press = 135.8653
---------------- Step 200 ----- CPU = 6.8898 (sec) ----------------
TotEng = -2662.0450 KinEng = 625.0178 Temp = 235.3317
PotEng = -3287.0628 E_bond = 208.1691 E_angle = 590.8259
E_dihed = 389.1424 E_impro = 30.5879 E_vdwl = -240.5397
E_coul = -926.3110 E_long = -3338.9375 Press = 103.4843
---------------- Step 300 ----- CPU = 10.2791 (sec) ----------------
TotEng = -2661.8829 KinEng = 623.0352 Temp = 234.5852
PotEng = -3284.9181 E_bond = 203.0274 E_angle = 573.6583
E_dihed = 383.0124 E_impro = 41.9015 E_vdwl = -218.0696
E_coul = -926.5806 E_long = -3341.8675 Press = 45.6868
---------------- Step 400 ----- CPU = 13.5874 (sec) ----------------
TotEng = -2594.5220 KinEng = 672.8693 Temp = 253.3487
PotEng = -3267.3914 E_bond = 201.3378 E_angle = 612.7099
E_dihed = 410.1920 E_impro = 44.0201 E_vdwl = -217.9714
E_coul = -971.6203 E_long = -3346.0595 Press = -121.1015
---------------- Step 500 ----- CPU = 16.9047 (sec) ----------------
TotEng = -2603.9306 KinEng = 668.2122 Temp = 251.5952
PotEng = -3272.1428 E_bond = 238.1081 E_angle = 578.3310
E_dihed = 399.1305 E_impro = 41.4314 E_vdwl = -216.9664
E_coul = -969.4047 E_long = -3342.7729 Press = 156.7851
---------------- Step 600 ----- CPU = 20.1970 (sec) ----------------
TotEng = -2531.1096 KinEng = 728.1698 Temp = 274.1705
PotEng = -3259.2794 E_bond = 232.8396 E_angle = 621.3323
E_dihed = 398.1952 E_impro = 37.0914 E_vdwl = -241.6350
E_coul = -963.1540 E_long = -3343.9488 Press = 58.6784
---------------- Step 700 ----- CPU = 23.4360 (sec) ----------------
TotEng = -2499.9495 KinEng = 742.1211 Temp = 279.4234
PotEng = -3242.0705 E_bond = 240.5622 E_angle = 582.9270
E_dihed = 396.6246 E_impro = 36.6510 E_vdwl = -228.4925
E_coul = -926.8734 E_long = -3343.4695 Press = -60.7458
---------------- Step 800 ----- CPU = 26.6709 (sec) ----------------
TotEng = -2426.0217 KinEng = 760.1083 Temp = 286.1959
PotEng = -3186.1300 E_bond = 266.5863 E_angle = 652.3401
E_dihed = 380.7407 E_impro = 34.6861 E_vdwl = -225.3729
E_coul = -953.2382 E_long = -3341.8721 Press = -57.9824
---------------- Step 900 ----- CPU = 29.8152 (sec) ----------------
TotEng = -2419.4636 KinEng = 780.8361 Temp = 294.0004
PotEng = -3200.2996 E_bond = 269.3237 E_angle = 665.7171
E_dihed = 408.3527 E_impro = 43.7811 E_vdwl = -254.0696
E_coul = -1002.0694 E_long = -3331.3352 Press = -52.0169
---------------- Step 1000 ----- CPU = 32.8748 (sec) ----------------
TotEng = -2398.7244 KinEng = 811.9856 Temp = 305.7288
PotEng = -3210.7099 E_bond = 258.2207 E_angle = 639.3671
E_dihed = 379.3353 E_impro = 41.7602 E_vdwl = -207.2654
E_coul = -983.9330 E_long = -3338.1948 Press = 89.4870
Loop time of 32.8751 on 4 procs for 1000 steps with 892 atoms
Performance: 21.025 ns/day, 1.141 hours/ns, 30.418 timesteps/s
31.9% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 12.449 | 19.023 | 24.612 | 99.6 | 57.86
Bond | 1.4547 | 2.8768 | 3.9098 | 61.4 | 8.75
Kspace | 1.0537 | 1.0778 | 1.0992 | 2.1 | 3.28
Neigh | 0.67542 | 0.67994 | 0.68323 | 0.3 | 2.07
Comm | 1.8602 | 8.4515 | 16.516 | 182.9 | 25.71
Output | 0.000839 | 0.00147 | 0.003293 | 2.7 | 0.00
Modify | 0.56658 | 0.63186 | 0.69304 | 6.8 | 1.92
Other | | 0.133 | | | 0.40
Nlocal: 223 ave 339 max 136 min
Histogram: 1 1 0 0 0 1 0 0 0 1
Nghost: 590 ave 626 max 552 min
Histogram: 1 0 0 0 1 0 1 0 0 1
Neighs: 36488.2 ave 41965 max 29054 min
Histogram: 1 0 0 0 1 0 0 0 1 1
Total # of neighbors = 145953
Ave neighs/atom = 163.624
Ave special neighs/atom = 10.9395
Neighbor list builds = 189
Dangerous builds = 0
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:36

View File

@ -0,0 +1,147 @@
LAMMPS (20 Jun 2017)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# Solvated 5-mer peptide, run for 8ps in NVT
units real
atom_style full
pair_style lj/charmm/coul/long 8.0 10.0 10.0
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
kspace_style pppm 0.0001
read_data data.peptide
orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395)
1 by 1 by 1 MPI processor grid
reading atoms ...
2004 atoms
reading velocities ...
2004 velocities
scanning bonds ...
3 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
14 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
1365 bonds
reading angles ...
786 angles
reading dihedrals ...
207 dihedrals
reading impropers ...
12 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
14 = max # of 1-4 neighbors
18 = max # of special neighbors
neighbor 2.0 bin
neigh_modify delay 5
thermo 50
#dump dump1 all atom 100 peptide.dump
timestep 8
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
Respa levels:
1 = bond angle
2 = dihedral improper pair
3 = kspace
fix 1 all nvt temp 250.0 250.0 100.0 tchain 1
fix cor all filter/corotate m 1.0
19 = # of size 2 clusters
0 = # of size 3 clusters
3 = # of size 4 clusters
0 = # of size 5 clusters
646 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.268725
grid = 15 15 15
stencil order = 5
estimated absolute RMS force accuracy = 0.0228209
estimated relative force accuracy = 6.87243e-05
using double precision FFTs
3d grid and FFT values/proc = 10648 3375
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 22.72 | 22.72 | 22.72 Mbytes
Step Temp E_pair E_mol TotEng Press
0 190.0857 -6442.7438 70.391457 -5237.4338 20361.984
50 239.47667 -7205.1006 1092.7664 -4682.5237 -23733.122
100 244.63086 -6788.0793 422.97204 -4904.5234 16458.011
150 240.79042 -7267.0791 966.31411 -4863.1107 -13554.894
200 254.77122 -6868.5713 591.00071 -4756.4431 10532.563
250 241.87417 -7264.9349 856.9357 -4963.8743 -9043.4359
300 251.37775 -6976.8 650.55612 -4825.3773 6986.2021
350 250.81494 -7286.7011 880.11184 -4909.0829 -6392.4665
400 247.55673 -7104.4036 701.89555 -4924.4551 4720.7811
450 258.54988 -7215.3011 832.23692 -4839.3759 -3446.3859
500 246.80928 -7151.2468 715.61007 -4962.0464 2637.5769
550 246.20721 -7159.0464 805.24974 -4883.8011 -2725.227
600 250.62483 -7201.7688 806.10076 -4899.2968 770.22352
650 247.59777 -7260.1607 802.97277 -4978.8899 -430.42309
700 246.86951 -7286.2971 825.99865 -4986.3486 -427.88651
750 252.79268 -7307.8572 833.4822 -4965.0605 -614.74372
800 251.73191 -7315.2457 839.59859 -4972.666 952.56448
850 246.75844 -7303.6221 816.67112 -5013.6642 -2055.2823
900 251.00123 -7317.4219 825.12165 -4993.6817 -356.53166
950 259.20822 -7252.3466 854.62611 -4850.1016 -1719.5267
1000 245.72486 -7347.5547 811.48146 -5068.9576 -717.6136
Loop time of 357.523 on 1 procs for 1000 steps with 2004 atoms
Performance: 1.933 ns/day, 12.414 hours/ns, 2.797 timesteps/s
32.0% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 328.2 | 328.2 | 328.2 | 0.0 | 91.80
Bond | 4.4815 | 4.4815 | 4.4815 | 0.0 | 1.25
Kspace | 3.9448 | 3.9448 | 3.9448 | 0.0 | 1.10
Neigh | 12.457 | 12.457 | 12.457 | 0.0 | 3.48
Comm | 3.2147 | 3.2147 | 3.2147 | 0.0 | 0.90
Output | 0.001689 | 0.001689 | 0.001689 | 0.0 | 0.00
Modify | 3.937 | 3.937 | 3.937 | 0.0 | 1.10
Other | | 1.289 | | | 0.36
Nlocal: 2004 ave 2004 max 2004 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 11191 ave 11191 max 11191 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 708610 ave 708610 max 708610 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 708610
Ave neighs/atom = 353.598
Ave special neighs/atom = 2.34032
Neighbor list builds = 200
Dangerous builds = 200
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:05:57

View File

@ -0,0 +1,147 @@
LAMMPS (20 Jun 2017)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# Solvated 5-mer peptide, run for 8ps in NVT
units real
atom_style full
pair_style lj/charmm/coul/long 8.0 10.0 10.0
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
kspace_style pppm 0.0001
read_data data.peptide
orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395)
1 by 2 by 2 MPI processor grid
reading atoms ...
2004 atoms
reading velocities ...
2004 velocities
scanning bonds ...
3 = max bonds/atom
scanning angles ...
6 = max angles/atom
scanning dihedrals ...
14 = max dihedrals/atom
scanning impropers ...
1 = max impropers/atom
reading bonds ...
1365 bonds
reading angles ...
786 angles
reading dihedrals ...
207 dihedrals
reading impropers ...
12 impropers
4 = max # of 1-2 neighbors
7 = max # of 1-3 neighbors
14 = max # of 1-4 neighbors
18 = max # of special neighbors
neighbor 2.0 bin
neigh_modify delay 5
thermo 50
#dump dump1 all atom 100 peptide.dump
timestep 8
run_style respa 3 2 8 bond 1 dihedral 2 pair 2 kspace 3
Respa levels:
1 = bond angle
2 = dihedral improper pair
3 = kspace
fix 1 all nvt temp 250.0 250.0 100.0 tchain 1
fix cor all filter/corotate m 1.0
19 = # of size 2 clusters
0 = # of size 3 clusters
3 = # of size 4 clusters
0 = # of size 5 clusters
646 = # of frozen angles
run 1000
PPPM initialization ...
WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321)
G vector (1/distance) = 0.268725
grid = 15 15 15
stencil order = 5
estimated absolute RMS force accuracy = 0.0228209
estimated relative force accuracy = 6.87243e-05
using double precision FFTs
3d grid and FFT values/proc = 4312 960
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 5 5 5
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/charmm/coul/long, perpetual
attributes: half, newton on
pair build: half/bin/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 16.87 | 17.05 | 17.26 Mbytes
Step Temp E_pair E_mol TotEng Press
0 190.0857 -6442.7438 70.391457 -5237.4338 20361.984
50 239.47667 -7205.1005 1092.7664 -4682.5237 -23733.122
100 244.63889 -6788.1152 422.96733 -4904.5161 16457.756
150 239.36917 -7258.7053 967.87775 -4861.6589 -13526.261
200 255.14702 -6864.0525 604.58036 -4736.1009 11013.1
250 252.72919 -7303.0966 898.11178 -4896.0494 -8480.8766
300 250.66477 -6989.2603 652.83649 -4839.8141 6209.3375
350 243.30794 -7218.8575 838.31977 -4927.8525 -5180.4928
400 256.3573 -7090.677 706.24197 -4853.8377 3302.577
450 246.15776 -7274.574 834.31676 -4970.557 -3427.971
500 256.28473 -7082.1447 735.42828 -4816.5524 2846.086
550 251.32327 -7341.739 812.64934 -5028.5484 -1786.9277
600 254.57737 -7152.3448 740.52534 -4891.8494 825.91675
650 244.95305 -7207.1136 790.67659 -4953.9295 -520.79769
700 249.4984 -7204.2699 779.06969 -4935.5544 -940.75384
750 248.46962 -7232.1037 791.6642 -4956.9361 -548.12171
800 260.2974 -7293.1982 793.23282 -4945.8435 -1171.26
850 249.79023 -7258.3759 823.56789 -4943.4198 -499.76275
900 249.97237 -7267.0584 784.57992 -4990.0028 -271.33531
950 251.29018 -7261.0642 823.467 -4937.2534 -538.7168
1000 246.05777 -7285.0948 847.90892 -4968.0826 -2613.1854
Loop time of 94.6835 on 4 procs for 1000 steps with 2004 atoms
Performance: 7.300 ns/day, 3.288 hours/ns, 10.562 timesteps/s
37.9% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 33.389 | 78.508 | 94.639 | 294.1 | 82.92
Bond | 0.39957 | 1.104 | 1.4443 | 40.6 | 1.17
Kspace | 0.53324 | 1.2631 | 1.5137 | 37.5 | 1.33
Neigh | 1.2668 | 3.011 | 3.5942 | 58.0 | 3.18
Comm | 3.4563 | 8.8707 | 11.494 | 107.9 | 9.37
Output | 0.000435 | 0.0017425 | 0.004136 | 3.4 | 0.00
Modify | 0.59335 | 1.4123 | 1.6921 | 39.8 | 1.49
Other | | 0.5129 | | | 0.54
Nlocal: 501 ave 515 max 476 min
Histogram: 1 0 0 0 0 0 0 1 1 1
Nghost: 6681.5 ave 6740 max 6634 min
Histogram: 2 0 0 0 0 0 0 1 0 1
Neighs: 176872 ave 182642 max 168464 min
Histogram: 1 0 0 0 0 0 1 1 0 1
Total # of neighbors = 707486
Ave neighs/atom = 353.037
Ave special neighs/atom = 2.34032
Neighbor list builds = 200
Dangerous builds = 200
unfix cor
unfix 1
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:01:53

View File

@ -32,7 +32,7 @@ bond_coeff 1 10.0 1.2
# need to preserve 1-3, 1-4 pairwise interactions during hard collisions
special_bonds lj/coul 0 1 1
create_bonds all all 1 1.0 1.5
create_bonds many all all 1 1.0 1.5
neighbor 0.3 bin
neigh_modify delay 0 every 1 check yes

View File

@ -32,7 +32,7 @@ pair_coeff 1 1 10.0 1.0 2.5
bond_style harmonic
bond_coeff 1 10.0 1.2
create_bonds all all 1 1.0 1.5
create_bonds many all all 1 1.0 1.5
neighbor 0.3 bin
neigh_modify delay 0 every 1 check yes

30
examples/meam/in.meamc Normal file
View File

@ -0,0 +1,30 @@
# Test of MEAM potential for SiC system
units metal
boundary p p p
atom_style atomic
read_data data.meam
pair_style meam/c
pair_coeff * * library.meam Si C SiC.meam Si C
neighbor 0.3 bin
neigh_modify delay 10
fix 1 all nve
thermo 10
timestep 0.001
#dump 1 all atom 50 dump.meam
#dump 2 all image 10 image.*.jpg element element &
# axes yes 0.8 0.02 view 60 -30
#dump_modify 2 pad 3 element Si C
#dump 3 all movie 10 movie.mpg element element &
# axes yes 0.8 0.02 view 60 -30
#dump_modify 3 pad 3 element Si C
run 100

View File

@ -0,0 +1,79 @@
# 3d metal shear simulation
units metal
boundary s s p
atom_style atomic
lattice fcc 3.52
region box block 0 16.0 0 10.0 0 2.828427
create_box 3 box
lattice fcc 3.52 orient x 1 0 0 orient y 0 1 1 orient z 0 -1 1 &
origin 0.5 0 0
create_atoms 1 box
pair_style meam/c
pair_coeff * * library.meam Ni4 Ni.meam Ni4 Ni4 Ni4
neighbor 0.3 bin
neigh_modify delay 5
region lower block INF INF INF 0.9 INF INF
region upper block INF INF 6.1 INF INF INF
group lower region lower
group upper region upper
group boundary union lower upper
group mobile subtract all boundary
set group lower type 2
set group upper type 3
# void
#region void cylinder z 8 5 2.5 INF INF
#delete_atoms region void
# temp controllers
compute new3d mobile temp
compute new2d mobile temp/partial 0 1 1
# equilibrate
velocity mobile create 300.0 5812775 temp new3d
fix 1 all nve
fix 2 boundary setforce 0.0 0.0 0.0
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new3d
thermo 25
thermo_modify temp new3d
timestep 0.001
run 100
# shear
velocity upper set 1.0 0 0
velocity mobile ramp vx 0.0 1.0 y 1.4 8.6 sum yes
unfix 3
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new2d
#dump 1 all atom 500 dump.meam.shear
#dump 2 all image 100 image.*.jpg type type &
# axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 2 pad 4
#dump 3 all movie 100 movie.mpg type type &
# axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 3 pad 4
thermo 100
thermo_modify temp new2d
reset_timestep 0
run 3000

View File

@ -1,4 +1,5 @@
LAMMPS (5 Oct 2016)
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# Test of MEAM potential for SiC system
units metal
@ -34,13 +35,23 @@ timestep 0.001
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15 -> bins = 6 6 6
Memory usage per processor = 7.39054 Mbytes
binsize = 2.15, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.103 | 8.103 | 8.103 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -636.38121 0 -636.38121 -76571.819
10 1807.8862 -666.21959 0 -636.54126 -150571.49
@ -53,20 +64,20 @@ Step Temp E_pair E_mol TotEng Press
80 2126.0903 -671.43755 0 -636.53557 -97475.831
90 2065.755 -670.4349 0 -636.52338 -95858.837
100 2051.4553 -670.20799 0 -636.53122 -107068.9
Loop time of 0.094512 on 1 procs for 100 steps with 128 atoms
Loop time of 0.0864418 on 1 procs for 100 steps with 128 atoms
Performance: 91.417 ns/day, 0.263 hours/ns, 1058.067 timesteps/s
99.4% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 99.952 ns/day, 0.240 hours/ns, 1156.848 timesteps/s
99.6% 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.091268 | 0.091268 | 0.091268 | 0.0 | 96.57
Neigh | 0.0021861 | 0.0021861 | 0.0021861 | 0.0 | 2.31
Comm | 0.00059438 | 0.00059438 | 0.00059438 | 0.0 | 0.63
Output | 9.0837e-05 | 9.0837e-05 | 9.0837e-05 | 0.0 | 0.10
Modify | 0.00024438 | 0.00024438 | 0.00024438 | 0.0 | 0.26
Other | | 0.000128 | | | 0.14
Pair | 0.082592 | 0.082592 | 0.082592 | 0.0 | 95.55
Neigh | 0.0028124 | 0.0028124 | 0.0028124 | 0.0 | 3.25
Comm | 0.00049043 | 0.00049043 | 0.00049043 | 0.0 | 0.57
Output | 0.00014329 | 0.00014329 | 0.00014329 | 0.0 | 0.17
Modify | 0.00025415 | 0.00025415 | 0.00025415 | 0.0 | 0.29
Other | | 0.0001497 | | | 0.17
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0

View File

@ -1,4 +1,5 @@
LAMMPS (5 Oct 2016)
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# Test of MEAM potential for SiC system
units metal
@ -34,13 +35,23 @@ timestep 0.001
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15 -> bins = 6 6 6
Memory usage per processor = 7.319 Mbytes
binsize = 2.15, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.024 | 8.026 | 8.027 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -636.38121 0 -636.38121 -76571.819
10 1807.8862 -666.21959 0 -636.54126 -150571.49
@ -53,20 +64,20 @@ Step Temp E_pair E_mol TotEng Press
80 2126.0903 -671.43755 0 -636.53557 -97475.831
90 2065.755 -670.4349 0 -636.52338 -95858.837
100 2051.4553 -670.20799 0 -636.53122 -107068.9
Loop time of 0.0350628 on 4 procs for 100 steps with 128 atoms
Loop time of 0.0389078 on 4 procs for 100 steps with 128 atoms
Performance: 246.415 ns/day, 0.097 hours/ns, 2852.026 timesteps/s
98.4% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 222.063 ns/day, 0.108 hours/ns, 2570.177 timesteps/s
99.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.030952 | 0.031776 | 0.032203 | 0.3 | 90.63
Neigh | 0.00058937 | 0.00061423 | 0.00063896 | 0.1 | 1.75
Comm | 0.0018125 | 0.0022421 | 0.0030777 | 1.1 | 6.39
Output | 0.00018525 | 0.00019765 | 0.00021911 | 0.1 | 0.56
Modify | 8.0585e-05 | 9.0539e-05 | 9.7752e-05 | 0.1 | 0.26
Other | | 0.0001422 | | | 0.41
Pair | 0.031958 | 0.033267 | 0.034691 | 0.6 | 85.50
Neigh | 0.00079155 | 0.00086409 | 0.00098801 | 0.0 | 2.22
Comm | 0.0025704 | 0.0041765 | 0.005573 | 1.9 | 10.73
Output | 0.0002749 | 0.00029588 | 0.00033569 | 0.0 | 0.76
Modify | 9.4891e-05 | 0.00010347 | 0.00011587 | 0.0 | 0.27
Other | | 0.000201 | | | 0.52
Nlocal: 32 ave 36 max 30 min
Histogram: 1 2 0 0 0 0 0 0 0 1

View File

@ -1,4 +1,5 @@
LAMMPS (5 Oct 2016)
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# 3d metal shear simulation
units metal
@ -62,38 +63,48 @@ fix_modify 3 temp new3d
thermo 25
thermo_modify temp new3d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:474)
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
timestep 0.001
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15 -> bins = 27 17 5
Memory usage per processor = 8.55725 Mbytes
binsize = 2.15, bins = 27 17 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 9.788 | 9.788 | 9.788 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300 -8232.7767 0 -8179.1466 1386.6643 19547.02
25 222.78953 -8188.1215 0 -8148.2941 9095.9008 19547.02
50 300 -8149.7654 0 -8096.1353 10633.141 19684.382
75 304.80657 -8163.4557 0 -8108.9665 7045.457 19759.745
100 300 -8173.6884 0 -8120.0584 5952.521 19886.589
Loop time of 1.72323 on 1 procs for 100 steps with 1912 atoms
Loop time of 1.58103 on 1 procs for 100 steps with 1912 atoms
Performance: 5.014 ns/day, 4.787 hours/ns, 58.031 timesteps/s
99.8% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 5.465 ns/day, 4.392 hours/ns, 63.250 timesteps/s
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.7026 | 1.7026 | 1.7026 | 0.0 | 98.80
Neigh | 0.014496 | 0.014496 | 0.014496 | 0.0 | 0.84
Comm | 0.0015783 | 0.0015783 | 0.0015783 | 0.0 | 0.09
Output | 6.0081e-05 | 6.0081e-05 | 6.0081e-05 | 0.0 | 0.00
Modify | 0.0034628 | 0.0034628 | 0.0034628 | 0.0 | 0.20
Other | | 0.00101 | | | 0.06
Pair | 1.5561 | 1.5561 | 1.5561 | 0.0 | 98.42
Neigh | 0.018544 | 0.018544 | 0.018544 | 0.0 | 1.17
Comm | 0.0013864 | 0.0013864 | 0.0013864 | 0.0 | 0.09
Output | 0.00011396 | 0.00011396 | 0.00011396 | 0.0 | 0.01
Modify | 0.0038245 | 0.0038245 | 0.0038245 | 0.0 | 0.24
Other | | 0.001096 | | | 0.07
Nlocal: 1912 ave 1912 max 1912 min
Histogram: 1 0 0 0 0 0 0 0 0 0
@ -128,11 +139,11 @@ fix_modify 3 temp new2d
thermo 100
thermo_modify temp new2d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:474)
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
reset_timestep 0
run 3000
Memory usage per processor = 8.73384 Mbytes
Per MPI rank memory allocation (min/avg/max) = 9.964 | 9.964 | 9.964 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300.39988 -8173.6884 0 -8137.8874 4992.9811 19894.297
100 292.06374 -8177.7096 0 -8142.9021 2568.3762 19871.53
@ -144,53 +155,53 @@ Step Temp E_pair E_mol TotEng Press Volume
700 300 -8148.1328 0 -8112.3794 3506.9234 20435.302
800 300 -8139.1821 0 -8103.4288 3628.3957 20509.519
900 305.03425 -8126.7734 0 -8090.4201 5316.2206 20638.992
1000 304.00321 -8112.1616 0 -8075.9311 7441.9639 20767.243
1100 304.14051 -8096.5041 0 -8060.2573 9646.698 20888.167
1200 302.78461 -8080.5931 0 -8044.5079 11516.21 20995.917
1300 308.67046 -8061.6724 0 -8024.8857 11496.487 21130.013
1400 309.83019 -8046.2701 0 -8009.3452 12926.847 21247.271
1500 300 -8035.0322 0 -7999.2789 15346.188 21370.637
1600 300 -8030.6678 0 -7994.9144 14802.342 21496.446
1700 300 -8024.5988 0 -7988.8454 13177.445 21611.262
1800 300 -8023.045 0 -7987.2916 10240.041 21740.735
1900 300 -8028.2797 0 -7992.5263 6912.1441 21866.544
2000 300 -8036.4487 0 -8000.6953 3561.8365 21977.695
2100 300 -8037.8249 0 -8002.0715 2879.2618 22109.611
2200 300 -8033.6682 0 -7997.9148 4936.3695 22224.427
2300 304.49349 -8033.4561 0 -7997.1673 5593.0915 22356.343
2400 300 -8033.2969 0 -7997.5436 7537.0891 22473.601
2500 300 -8033.1874 0 -7997.4341 11476.447 22598.189
2600 307.77395 -8026.9234 0 -7990.2436 15758.81 22720.333
2700 300 -8021.1736 0 -7985.4203 17948.896 22832.706
2800 300 -8017.0863 0 -7981.3329 17154.618 22957.293
2900 300 -8012.0514 0 -7976.298 13224.292 23089.209
3000 304.58031 -8008.1654 0 -7971.8661 8572.9227 23211.354
Loop time of 55.136 on 1 procs for 3000 steps with 1912 atoms
1000 304.00321 -8112.1616 0 -8075.9311 7441.9638 20767.243
1100 304.14047 -8096.5041 0 -8060.2573 9646.6976 20888.167
1200 302.78457 -8080.5931 0 -8044.5079 11516.209 20995.917
1300 308.67054 -8061.6724 0 -8024.8857 11496.479 21130.013
1400 309.8301 -8046.27 0 -8009.3452 12926.835 21247.271
1500 300 -8035.0321 0 -7999.2788 15346.455 21370.637
1600 300 -8030.6657 0 -7994.9123 14802.869 21496.446
1700 300 -8024.5251 0 -7988.7718 13176.923 21611.262
1800 300 -8022.9963 0 -7987.243 10260.665 21741.956
1900 300 -8028.0522 0 -7992.2988 6955.1367 21867.765
2000 300 -8037.2708 0 -8001.5175 3520.3749 21987.467
2100 300 -8035.9945 0 -8000.2412 3237.6121 22109.611
2200 300 -8036.1882 0 -8000.4348 4295.1386 22223.205
2300 300 -8032.7689 0 -7997.0155 6231.2346 22355.121
2400 300 -8034.6621 0 -7998.9088 8585.3799 22468.716
2500 300 -8031.7774 0 -7996.0241 11627.871 22587.196
2600 300 -8024.032 0 -7988.2786 16254.69 22716.669
2700 308.64215 -8017.407 0 -7980.6237 18440.226 22835.149
2800 300 -8015.7348 0 -7979.9814 17601.716 22957.293
2900 305.82558 -8013.7448 0 -7977.2972 14123.494 23089.209
3000 300 -8011.0289 0 -7975.2755 9957.2884 23205.247
Loop time of 51.9315 on 1 procs for 3000 steps with 1912 atoms
Performance: 4.701 ns/day, 5.105 hours/ns, 54.411 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
Performance: 4.991 ns/day, 4.808 hours/ns, 57.768 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 | 54.317 | 54.317 | 54.317 | -nan | 98.51
Neigh | 0.63189 | 0.63189 | 0.63189 | 0.0 | 1.15
Comm | 0.051245 | 0.051245 | 0.051245 | 0.0 | 0.09
Output | 0.0005548 | 0.0005548 | 0.0005548 | 0.0 | 0.00
Modify | 0.10452 | 0.10452 | 0.10452 | 0.0 | 0.19
Other | | 0.03128 | | | 0.06
Pair | 50.918 | 50.918 | 50.918 | 0.0 | 98.05
Neigh | 0.81033 | 0.81033 | 0.81033 | 0.0 | 1.56
Comm | 0.047331 | 0.047331 | 0.047331 | 0.0 | 0.09
Output | 0.0011976 | 0.0011976 | 0.0011976 | 0.0 | 0.00
Modify | 0.11889 | 0.11889 | 0.11889 | 0.0 | 0.23
Other | | 0.03606 | | | 0.07
Nlocal: 1912 ave 1912 max 1912 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1667 ave 1667 max 1667 min
Nghost: 1672 ave 1672 max 1672 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 23365 ave 23365 max 23365 min
Neighs: 23557 ave 23557 max 23557 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 46730 ave 46730 max 46730 min
FullNghs: 47114 ave 47114 max 47114 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 46730
Ave neighs/atom = 24.4404
Total # of neighbors = 47114
Ave neighs/atom = 24.6412
Neighbor list builds = 221
Dangerous builds = 0
Total wall time: 0:00:56
Total wall time: 0:00:53

View File

@ -1,4 +1,5 @@
LAMMPS (5 Oct 2016)
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# 3d metal shear simulation
units metal
@ -62,38 +63,48 @@ fix_modify 3 temp new3d
thermo 25
thermo_modify temp new3d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:474)
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
timestep 0.001
run 100
Neighbor list info ...
2 neighbor list requests
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15 -> bins = 27 17 5
Memory usage per processor = 7.74146 Mbytes
binsize = 2.15, bins = 27 17 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.954 | 8.957 | 8.959 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300 -8232.7767 0 -8179.1466 1386.6643 19547.02
25 221.59546 -8187.6813 0 -8148.0673 9100.4509 19547.02
50 300 -8150.0685 0 -8096.4384 10317.407 19685.743
75 307.76021 -8164.6669 0 -8109.6496 6289.7138 19757.814
100 300 -8176.5141 0 -8122.884 4162.2559 19873.327
Loop time of 0.469502 on 4 procs for 100 steps with 1912 atoms
Loop time of 0.482293 on 4 procs for 100 steps with 1912 atoms
Performance: 18.402 ns/day, 1.304 hours/ns, 212.992 timesteps/s
99.7% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 17.914 ns/day, 1.340 hours/ns, 207.343 timesteps/s
98.7% 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.44052 | 0.45213 | 0.45813 | 1.0 | 96.30
Neigh | 0.0036478 | 0.0037832 | 0.003854 | 0.1 | 0.81
Comm | 0.0055377 | 0.011533 | 0.02316 | 6.5 | 2.46
Output | 9.0837e-05 | 9.8228e-05 | 0.00011325 | 0.1 | 0.02
Modify | 0.00098062 | 0.0010158 | 0.0010564 | 0.1 | 0.22
Other | | 0.0009408 | | | 0.20
Pair | 0.44374 | 0.45604 | 0.46922 | 1.4 | 94.56
Neigh | 0.0047338 | 0.0049097 | 0.0051899 | 0.2 | 1.02
Comm | 0.0054841 | 0.019044 | 0.031472 | 6.9 | 3.95
Output | 0.00012755 | 0.00013644 | 0.00015831 | 0.0 | 0.03
Modify | 0.0011139 | 0.0011852 | 0.0012643 | 0.2 | 0.25
Other | | 0.0009753 | | | 0.20
Nlocal: 478 ave 492 max 465 min
Histogram: 2 0 0 0 0 0 0 0 1 1
@ -128,11 +139,11 @@ fix_modify 3 temp new2d
thermo 100
thermo_modify temp new2d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:474)
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
reset_timestep 0
run 3000
Memory usage per processor = 7.78572 Mbytes
Per MPI rank memory allocation (min/avg/max) = 8.999 | 9.002 | 9.005 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 295.32113 -8176.5141 0 -8141.3183 3169.3113 19886.93
100 292.00251 -8176.5358 0 -8141.7356 -825.04802 19918.765
@ -144,53 +155,53 @@ Step Temp E_pair E_mol TotEng Press Volume
700 296.44479 -8149.7914 0 -8114.4618 1985.4155 20421.046
800 307.75738 -8139.1649 0 -8102.487 4319.078 20513.183
900 304.61422 -8126.9246 0 -8090.6214 6654.0963 20640.213
1000 300 -8113.8464 0 -8078.0931 7760.1242 20768.465
1100 300.17874 -8097.7469 0 -8061.9722 8438.1263 20874.731
1200 306.01444 -8083.3367 0 -8046.8665 10835.585 20994.432
1000 300 -8113.8464 0 -8078.0931 7760.1239 20768.465
1100 300.17873 -8097.7469 0 -8061.9722 8438.126 20874.731
1200 306.01441 -8083.3367 0 -8046.8665 10835.586 20994.432
1300 300 -8067.022 0 -8031.2686 11216.067 21126.348
1400 300 -8053.223 0 -8017.4697 10570.21 21253.378
1500 300 -8043.4848 0 -8007.7314 11360.829 21375.523
1600 300 -8034.6216 0 -7998.8683 11371.642 21498.889
1700 300 -8028.6774 0 -7992.924 9595.8772 21613.705
1800 300 -8033.0808 0 -7997.3274 8767.6261 21743.178
1900 303.30302 -8035.1958 0 -7999.0488 8059.5152 21859.215
2000 300 -8025.0857 0 -7989.3323 9308.9938 21980.138
2100 300 -8041.5796 0 -8005.8263 6656.0066 22108.39
2200 300 -8039.6315 0 -8003.8781 7532.9687 22226.87
2300 300 -8053.203 0 -8017.4497 8466.9094 22356.343
2400 300 -8050.9154 0 -8015.162 11784.136 22467.494
2500 300 -8037.6394 0 -8001.886 16464.786 22588.417
2600 300 -8030.9221 0 -7995.1688 16807.326 22719.112
2700 300 -8025.2102 0 -7989.4569 13729.61 22837.592
2800 300 -8014.5312 0 -7978.7779 6784.6283 22953.629
2900 300 -8007.4768 0 -7971.7234 1362.3131 23084.324
3000 300 -7994.5614 0 -7958.808 -1726.5273 23194.254
Loop time of 14.8108 on 4 procs for 3000 steps with 1912 atoms
1400 300 -8053.223 0 -8017.4697 10570.206 21253.378
1500 300 -8043.4849 0 -8007.7315 11360.766 21375.523
1600 300 -8034.621 0 -7998.8676 11371.584 21498.889
1700 300 -8028.6783 0 -7992.925 9596.524 21613.705
1800 300 -8033.0818 0 -7997.3285 8767.2651 21743.178
1900 303.18912 -8035.194 0 -7999.0606 8059.9558 21859.215
2000 300 -8025.0327 0 -7989.2794 9305.7521 21980.138
2100 300 -8041.4626 0 -8005.7092 6623.8789 22108.39
2200 300 -8040.3133 0 -8004.5599 7512.9368 22225.648
2300 300 -8055.6567 0 -8019.9033 8281.354 22344.128
2400 304.05922 -8050.289 0 -8014.0518 11964.826 22476.044
2500 305.75646 -8037.0481 0 -8000.6087 16594.032 22595.746
2600 307.71105 -8031.2253 0 -7994.5529 18381.745 22708.119
2700 307.397 -8026.5338 0 -7989.8988 13944.653 22829.042
2800 309.3455 -8020.2305 0 -7983.3634 7037.4046 22954.851
2900 301.2859 -8010.4731 0 -7974.5665 3843.8972 23072.109
3000 303.29908 -8000.0395 0 -7963.8929 364.90172 23207.69
Loop time of 14.5278 on 4 procs for 3000 steps with 1912 atoms
Performance: 17.501 ns/day, 1.371 hours/ns, 202.555 timesteps/s
99.8% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 17.842 ns/day, 1.345 hours/ns, 206.500 timesteps/s
99.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 | 14.05 | 14.237 | 14.332 | 2.9 | 96.12
Neigh | 0.1592 | 0.16414 | 0.1671 | 0.8 | 1.11
Comm | 0.26002 | 0.35589 | 0.54696 | 18.8 | 2.40
Output | 0.00061679 | 0.00065172 | 0.0007441 | 0.2 | 0.00
Modify | 0.02895 | 0.030174 | 0.03104 | 0.5 | 0.20
Other | | 0.02338 | | | 0.16
Pair | 13.872 | 13.929 | 13.998 | 1.4 | 95.88
Neigh | 0.20891 | 0.21114 | 0.21272 | 0.3 | 1.45
Comm | 0.25364 | 0.32377 | 0.37706 | 8.9 | 2.23
Output | 0.0011427 | 0.0012097 | 0.0013931 | 0.3 | 0.01
Modify | 0.033687 | 0.033991 | 0.034694 | 0.2 | 0.23
Other | | 0.02871 | | | 0.20
Nlocal: 478 ave 509 max 448 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 799.25 ave 844 max 756 min
Histogram: 1 1 0 0 0 0 0 1 0 1
Neighs: 5813.25 ave 6081 max 5602 min
Histogram: 2 0 0 0 0 0 1 0 0 1
FullNghs: 11626.5 ave 12151 max 11205 min
Histogram: 1 1 0 0 0 0 1 0 0 1
Nlocal: 478 ave 509 max 445 min
Histogram: 1 1 0 0 0 0 0 0 1 1
Nghost: 804 ave 845 max 759 min
Histogram: 1 1 0 0 0 0 0 0 1 1
Neighs: 5827 ave 6177 max 5496 min
Histogram: 1 0 0 1 0 1 0 0 0 1
FullNghs: 11654 ave 12330 max 11039 min
Histogram: 1 0 0 1 0 1 0 0 0 1
Total # of neighbors = 46506
Ave neighs/atom = 24.3232
Neighbor list builds = 225
Total # of neighbors = 46616
Ave neighs/atom = 24.3808
Neighbor list builds = 223
Dangerous builds = 0
Total wall time: 0:00:15

View File

@ -0,0 +1,95 @@
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# Test of MEAM potential for SiC system
units metal
boundary p p p
atom_style atomic
read_data data.meam
orthogonal box = (-6 -6 -6) to (5.97232 5.97232 5.97232)
1 by 1 by 1 MPI processor grid
reading atoms ...
128 atoms
pair_style meam/c
pair_coeff * * library.meam Si C SiC.meam Si C
Reading potential file library.meam with DATE: 2012-06-29
Reading potential file SiC.meam with DATE: 2007-06-11
neighbor 0.3 bin
neigh_modify delay 10
fix 1 all nve
thermo 10
timestep 0.001
#dump 1 all atom 50 dump.meam
#dump 2 all image 10 image.*.jpg element element # axes yes 0.8 0.02 view 60 -30
#dump_modify 2 pad 3 element Si C
#dump 3 all movie 10 movie.mpg element element # axes yes 0.8 0.02 view 60 -30
#dump_modify 3 pad 3 element Si C
run 100
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam/c, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam/c, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.103 | 8.103 | 8.103 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -636.38121 0 -636.38121 -76571.819
10 1807.8862 -666.21959 0 -636.54126 -150571.49
20 1932.4467 -668.2581 0 -636.53498 -120223.52
30 1951.3652 -668.58139 0 -636.54771 -100508.4
40 2172.5974 -672.22715 0 -636.5617 -110753.34
50 2056.9149 -670.33108 0 -636.56468 -105418.07
60 1947.9564 -668.52788 0 -636.55015 -111413.04
70 1994.7712 -669.28849 0 -636.54225 -109645.76
80 2126.0903 -671.43755 0 -636.53557 -97475.832
90 2065.7549 -670.4349 0 -636.52338 -95858.836
100 2051.4553 -670.20799 0 -636.53122 -107068.89
Loop time of 0.0778153 on 1 procs for 100 steps with 128 atoms
Performance: 111.032 ns/day, 0.216 hours/ns, 1285.094 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.073801 | 0.073801 | 0.073801 | 0.0 | 94.84
Neigh | 0.0029731 | 0.0029731 | 0.0029731 | 0.0 | 3.82
Comm | 0.00047708 | 0.00047708 | 0.00047708 | 0.0 | 0.61
Output | 0.00015664 | 0.00015664 | 0.00015664 | 0.0 | 0.20
Modify | 0.00025702 | 0.00025702 | 0.00025702 | 0.0 | 0.33
Other | | 0.0001504 | | | 0.19
Nlocal: 128 ave 128 max 128 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 543 ave 543 max 543 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1526 ave 1526 max 1526 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 3052 ave 3052 max 3052 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 3052
Ave neighs/atom = 23.8438
Neighbor list builds = 10
Dangerous builds = 10
Total wall time: 0:00:00

View File

@ -0,0 +1,95 @@
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# Test of MEAM potential for SiC system
units metal
boundary p p p
atom_style atomic
read_data data.meam
orthogonal box = (-6 -6 -6) to (5.97232 5.97232 5.97232)
1 by 2 by 2 MPI processor grid
reading atoms ...
128 atoms
pair_style meam/c
pair_coeff * * library.meam Si C SiC.meam Si C
Reading potential file library.meam with DATE: 2012-06-29
Reading potential file SiC.meam with DATE: 2007-06-11
neighbor 0.3 bin
neigh_modify delay 10
fix 1 all nve
thermo 10
timestep 0.001
#dump 1 all atom 50 dump.meam
#dump 2 all image 10 image.*.jpg element element # axes yes 0.8 0.02 view 60 -30
#dump_modify 2 pad 3 element Si C
#dump 3 all movie 10 movie.mpg element element # axes yes 0.8 0.02 view 60 -30
#dump_modify 3 pad 3 element Si C
run 100
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15, bins = 6 6 6
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam/c, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam/c, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.024 | 8.026 | 8.027 Mbytes
Step Temp E_pair E_mol TotEng Press
0 0 -636.38121 0 -636.38121 -76571.819
10 1807.8862 -666.21959 0 -636.54126 -150571.49
20 1932.4467 -668.2581 0 -636.53498 -120223.52
30 1951.3652 -668.58139 0 -636.54771 -100508.4
40 2172.5974 -672.22715 0 -636.5617 -110753.34
50 2056.9149 -670.33108 0 -636.56468 -105418.07
60 1947.9564 -668.52788 0 -636.55015 -111413.04
70 1994.7712 -669.28849 0 -636.54225 -109645.76
80 2126.0903 -671.43755 0 -636.53557 -97475.832
90 2065.7549 -670.4349 0 -636.52338 -95858.836
100 2051.4553 -670.20799 0 -636.53122 -107068.89
Loop time of 0.037066 on 4 procs for 100 steps with 128 atoms
Performance: 233.097 ns/day, 0.103 hours/ns, 2697.887 timesteps/s
97.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.029985 | 0.031596 | 0.033021 | 0.8 | 85.24
Neigh | 0.0007906 | 0.00085384 | 0.00088596 | 0.0 | 2.30
Comm | 0.0025654 | 0.0040313 | 0.0057514 | 2.2 | 10.88
Output | 0.00027013 | 0.00029153 | 0.00033426 | 0.0 | 0.79
Modify | 9.5367e-05 | 0.00010639 | 0.00012016 | 0.0 | 0.29
Other | | 0.0001866 | | | 0.50
Nlocal: 32 ave 36 max 30 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Nghost: 293.75 ave 305 max 285 min
Histogram: 2 0 0 0 0 0 0 1 0 1
Neighs: 381.5 ave 413 max 334 min
Histogram: 1 0 0 0 1 0 0 0 0 2
FullNghs: 763 ave 866 max 678 min
Histogram: 1 0 1 0 0 1 0 0 0 1
Total # of neighbors = 3052
Ave neighs/atom = 23.8438
Neighbor list builds = 10
Dangerous builds = 10
Total wall time: 0:00:00

View File

@ -0,0 +1,207 @@
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# 3d metal shear simulation
units metal
boundary s s p
atom_style atomic
lattice fcc 3.52
Lattice spacing in x,y,z = 3.52 3.52 3.52
region box block 0 16.0 0 10.0 0 2.828427
create_box 3 box
Created orthogonal box = (0 0 0) to (56.32 35.2 9.95606)
1 by 1 by 1 MPI processor grid
lattice fcc 3.52 orient x 1 0 0 orient y 0 1 1 orient z 0 -1 1 origin 0.5 0 0
Lattice spacing in x,y,z = 3.52 4.97803 4.97803
create_atoms 1 box
Created 1912 atoms
pair_style meam/c
pair_coeff * * library.meam Ni4 Ni.meam Ni4 Ni4 Ni4
Reading potential file library.meam with DATE: 2012-06-29
Reading potential file Ni.meam with DATE: 2007-06-11
neighbor 0.3 bin
neigh_modify delay 5
region lower block INF INF INF 0.9 INF INF
region upper block INF INF 6.1 INF INF INF
group lower region lower
264 atoms in group lower
group upper region upper
264 atoms in group upper
group boundary union lower upper
528 atoms in group boundary
group mobile subtract all boundary
1384 atoms in group mobile
set group lower type 2
264 settings made for type
set group upper type 3
264 settings made for type
# void
#region void cylinder z 8 5 2.5 INF INF
#delete_atoms region void
# temp controllers
compute new3d mobile temp
compute new2d mobile temp/partial 0 1 1
# equilibrate
velocity mobile create 300.0 5812775 temp new3d
fix 1 all nve
fix 2 boundary setforce 0.0 0.0 0.0
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new3d
thermo 25
thermo_modify temp new3d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
timestep 0.001
run 100
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15, bins = 27 17 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam/c, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam/c, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 9.788 | 9.788 | 9.788 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300 -8232.7767 0 -8179.1466 1386.6643 19547.02
25 222.78953 -8188.1215 0 -8148.2941 9095.9003 19547.02
50 300 -8149.7654 0 -8096.1353 10633.139 19684.382
75 304.80657 -8163.4557 0 -8108.9665 7045.4555 19759.745
100 300 -8173.6884 0 -8120.0584 5952.5197 19886.589
Loop time of 1.46986 on 1 procs for 100 steps with 1912 atoms
Performance: 5.878 ns/day, 4.083 hours/ns, 68.034 timesteps/s
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.445 | 1.445 | 1.445 | 0.0 | 98.31
Neigh | 0.018564 | 0.018564 | 0.018564 | 0.0 | 1.26
Comm | 0.0012956 | 0.0012956 | 0.0012956 | 0.0 | 0.09
Output | 0.00012612 | 0.00012612 | 0.00012612 | 0.0 | 0.01
Modify | 0.0038197 | 0.0038197 | 0.0038197 | 0.0 | 0.26
Other | | 0.001095 | | | 0.07
Nlocal: 1912 ave 1912 max 1912 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1672 ave 1672 max 1672 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 23806 ave 23806 max 23806 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 47612 ave 47612 max 47612 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 47612
Ave neighs/atom = 24.9017
Neighbor list builds = 5
Dangerous builds = 0
# shear
velocity upper set 1.0 0 0
velocity mobile ramp vx 0.0 1.0 y 1.4 8.6 sum yes
unfix 3
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new2d
#dump 1 all atom 500 dump.meam.shear
#dump 2 all image 100 image.*.jpg type type # axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 2 pad 4
#dump 3 all movie 100 movie.mpg type type # axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 3 pad 4
thermo 100
thermo_modify temp new2d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
reset_timestep 0
run 3000
Per MPI rank memory allocation (min/avg/max) = 9.964 | 9.964 | 9.964 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300.39988 -8173.6884 0 -8137.8874 4992.9799 19894.297
100 292.06374 -8177.7096 0 -8142.9021 2568.3756 19871.53
200 306.69894 -8177.1357 0 -8140.584 874.24118 20047.24
300 295.68216 -8172.9213 0 -8137.6825 -1049.0799 20091.759
400 308.99955 -8169.6355 0 -8132.8096 -1785.9554 20121.698
500 303.85688 -8163.9842 0 -8127.7712 -150.60892 20183.813
600 300 -8157.7627 0 -8122.0093 1492.8514 20279.887
700 300 -8148.1314 0 -8112.3781 3507.1949 20435.297
800 300 -8139.1805 0 -8103.4272 3628.5908 20509.519
900 305.03217 -8126.7741 0 -8090.421 5313.7881 20638.992
1000 303.7648 -8112.1574 0 -8075.9554 7433.3181 20767.243
1100 302.39719 -8096.1399 0 -8060.1009 9681.7685 20888.167
1200 304.04919 -8080.7022 0 -8044.4663 11621.974 21011.532
1300 303.56395 -8062.0984 0 -8025.9203 11410.793 21125.127
1400 309.92338 -8046.0008 0 -8009.0648 12408.158 21246.05
1500 300 -8034.7094 0 -7998.956 14845.312 21363.308
1600 300 -8028.4585 0 -7992.7051 15120.908 21489.117
1700 308.23904 -8015.9618 0 -7979.2265 14714.73 21612.483
1800 300 -8013.5458 0 -7977.7924 11955.065 21737.07
1900 300 -8012.2984 0 -7976.545 6667.1353 21854.329
2000 300 -8025.6019 0 -7989.8485 2006.6545 21981.359
2100 300 -8027.6823 0 -7991.9289 16.47633 22109.611
2200 300 -8029.6905 0 -7993.9372 -603.98293 22224.427
2300 300 -8033.2663 0 -7997.513 -464.68645 22351.457
2400 300 -8040.6863 0 -8004.9329 -640.54641 22467.494
2500 300 -8037.0332 0 -8001.2799 1504.2444 22587.196
2600 300 -8036.0909 0 -8000.3375 4190.2052 22708.119
2700 308.97892 -8028.5269 0 -7991.7035 5755.7418 22832.706
2800 305.27189 -8023.8286 0 -7987.4469 2611.7551 22962.179
2900 301.94251 -8017.4523 0 -7981.4675 358.11928 23078.216
3000 305.67682 -8009.853 0 -7973.4231 -2345.487 23197.918
Loop time of 48.351 on 1 procs for 3000 steps with 1912 atoms
Performance: 5.361 ns/day, 4.477 hours/ns, 62.046 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 | 47.356 | 47.356 | 47.356 | 0.0 | 97.94
Neigh | 0.79977 | 0.79977 | 0.79977 | 0.0 | 1.65
Comm | 0.043133 | 0.043133 | 0.043133 | 0.0 | 0.09
Output | 0.0011899 | 0.0011899 | 0.0011899 | 0.0 | 0.00
Modify | 0.11648 | 0.11648 | 0.11648 | 0.0 | 0.24
Other | | 0.03404 | | | 0.07
Nlocal: 1912 ave 1912 max 1912 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1662 ave 1662 max 1662 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 23143 ave 23143 max 23143 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 46286 ave 46286 max 46286 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 46286
Ave neighs/atom = 24.2082
Neighbor list builds = 220
Dangerous builds = 0
Total wall time: 0:00:49

View File

@ -0,0 +1,207 @@
LAMMPS (19 May 2017)
using 1 OpenMP thread(s) per MPI task
# 3d metal shear simulation
units metal
boundary s s p
atom_style atomic
lattice fcc 3.52
Lattice spacing in x,y,z = 3.52 3.52 3.52
region box block 0 16.0 0 10.0 0 2.828427
create_box 3 box
Created orthogonal box = (0 0 0) to (56.32 35.2 9.95606)
2 by 2 by 1 MPI processor grid
lattice fcc 3.52 orient x 1 0 0 orient y 0 1 1 orient z 0 -1 1 origin 0.5 0 0
Lattice spacing in x,y,z = 3.52 4.97803 4.97803
create_atoms 1 box
Created 1912 atoms
pair_style meam/c
pair_coeff * * library.meam Ni4 Ni.meam Ni4 Ni4 Ni4
Reading potential file library.meam with DATE: 2012-06-29
Reading potential file Ni.meam with DATE: 2007-06-11
neighbor 0.3 bin
neigh_modify delay 5
region lower block INF INF INF 0.9 INF INF
region upper block INF INF 6.1 INF INF INF
group lower region lower
264 atoms in group lower
group upper region upper
264 atoms in group upper
group boundary union lower upper
528 atoms in group boundary
group mobile subtract all boundary
1384 atoms in group mobile
set group lower type 2
264 settings made for type
set group upper type 3
264 settings made for type
# void
#region void cylinder z 8 5 2.5 INF INF
#delete_atoms region void
# temp controllers
compute new3d mobile temp
compute new2d mobile temp/partial 0 1 1
# equilibrate
velocity mobile create 300.0 5812775 temp new3d
fix 1 all nve
fix 2 boundary setforce 0.0 0.0 0.0
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new3d
thermo 25
thermo_modify temp new3d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
timestep 0.001
run 100
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.3
ghost atom cutoff = 4.3
binsize = 2.15, bins = 27 17 5
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam/c, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam/c, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 8.954 | 8.957 | 8.959 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 300 -8232.7767 0 -8179.1466 1386.6643 19547.02
25 221.59546 -8187.6813 0 -8148.0673 9100.4505 19547.02
50 300 -8150.0685 0 -8096.4384 10317.406 19685.743
75 307.76021 -8164.6669 0 -8109.6496 6289.7123 19757.814
100 300 -8176.5141 0 -8122.884 4162.2548 19873.327
Loop time of 0.435874 on 4 procs for 100 steps with 1912 atoms
Performance: 19.822 ns/day, 1.211 hours/ns, 229.424 timesteps/s
98.8% 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.4092 | 0.41563 | 0.42184 | 0.7 | 95.35
Neigh | 0.0048575 | 0.004932 | 0.0049984 | 0.1 | 1.13
Comm | 0.0069079 | 0.013151 | 0.019513 | 4.2 | 3.02
Output | 0.00012398 | 0.00013405 | 0.00015688 | 0.0 | 0.03
Modify | 0.0011275 | 0.0011509 | 0.0011735 | 0.1 | 0.26
Other | | 0.0008795 | | | 0.20
Nlocal: 478 ave 492 max 465 min
Histogram: 2 0 0 0 0 0 0 0 1 1
Nghost: 809 ave 822 max 795 min
Histogram: 1 1 0 0 0 0 0 0 0 2
Neighs: 5916 ave 6133 max 5658 min
Histogram: 1 0 0 1 0 0 0 0 1 1
FullNghs: 11832 ave 12277 max 11299 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Total # of neighbors = 47328
Ave neighs/atom = 24.7531
Neighbor list builds = 5
Dangerous builds = 0
# shear
velocity upper set 1.0 0 0
velocity mobile ramp vx 0.0 1.0 y 1.4 8.6 sum yes
unfix 3
fix 3 mobile temp/rescale 10 300.0 300.0 10.0 1.0
fix_modify 3 temp new2d
#dump 1 all atom 500 dump.meam.shear
#dump 2 all image 100 image.*.jpg type type # axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 2 pad 4
#dump 3 all movie 100 movie.mpg type type # axes yes 0.8 0.02 view 0 0 zoom 1.5 up 0 1 0 adiam 2.0
#dump_modify 3 pad 4
thermo 100
thermo_modify temp new2d
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:489)
reset_timestep 0
run 3000
Per MPI rank memory allocation (min/avg/max) = 8.999 | 9.002 | 9.005 Mbytes
Step Temp E_pair E_mol TotEng Press Volume
0 295.32113 -8176.5141 0 -8141.3183 3169.3102 19886.93
100 292.0025 -8176.5358 0 -8141.7356 -825.04852 19918.765
200 306.11682 -8176.7718 0 -8140.2895 -1370.6881 19948.878
300 300 -8172.6262 0 -8136.8729 -1735.9794 20085.715
400 306.88504 -8168.4351 0 -8131.8612 -933.05532 20117.008
500 308.99111 -8166.2909 0 -8129.466 -1049.3442 20198.267
600 304.22555 -8158.0946 0 -8121.8377 583.69142 20328.753
700 296.41606 -8149.7777 0 -8114.4515 1986.7982 20421.032
800 307.88628 -8139.1709 0 -8102.4776 4311.4142 20513.183
900 303.37209 -8126.9382 0 -8090.7829 6712.7316 20640.213
1000 300 -8113.7973 0 -8078.044 7630.2594 20750.143
1100 300.07815 -8098.1383 0 -8062.3756 8423.7063 20879.616
1200 300 -8083.3163 0 -8047.563 10772.917 21000.539
1300 300 -8066.6741 0 -8030.9208 10834.336 21128.791
1400 300 -8050.8799 0 -8015.1265 10842.382 21257.043
1500 300 -8040.3206 0 -8004.5673 11852.589 21362.087
1600 300 -8033.2471 0 -7997.4937 11298.745 21492.782
1700 300 -8030.6375 0 -7994.8842 10850.43 21610.04
1800 300 -8035.1631 0 -7999.4097 9985.6107 21734.628
1900 308.56562 -8040.1954 0 -8003.4213 9865.7107 21859.215
2000 300 -8030.1651 0 -7994.4117 11817.502 21980.138
2100 300 -8031.6147 0 -7995.8613 12791.357 22101.061
2200 300 -8033.7793 0 -7998.0259 13823.043 22234.198
2300 300 -8040.5964 0 -8004.8431 16204.549 22350.236
2400 309.42867 -8045.9414 0 -8009.0644 18506.386 22465.051
2500 300 -8054.2629 0 -8018.5095 20099.612 22593.303
2600 300 -8054.9562 0 -8019.2028 20036.318 22721.555
2700 300 -8051.4788 0 -8015.7254 16993.437 22844.921
2800 300 -8050.6908 0 -8014.9374 9048.5896 22964.622
2900 309.90783 -8044.3096 0 -8007.3754 5017.0198 23080.659
3000 300 -8035.8165 0 -8000.0632 2084.8999 23207.69
Loop time of 13.4901 on 4 procs for 3000 steps with 1912 atoms
Performance: 19.214 ns/day, 1.249 hours/ns, 222.386 timesteps/s
99.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 | 12.851 | 12.919 | 12.945 | 1.1 | 95.76
Neigh | 0.20449 | 0.20777 | 0.21169 | 0.6 | 1.54
Comm | 0.27479 | 0.30264 | 0.36667 | 6.8 | 2.24
Output | 0.0010171 | 0.0010971 | 0.0012388 | 0.3 | 0.01
Modify | 0.033248 | 0.033878 | 0.034567 | 0.3 | 0.25
Other | | 0.02594 | | | 0.19
Nlocal: 478 ave 506 max 450 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 790.5 ave 822 max 751 min
Histogram: 1 0 1 0 0 0 0 0 0 2
Neighs: 5829.5 ave 6014 max 5672 min
Histogram: 2 0 0 0 0 0 0 0 1 1
FullNghs: 11659 ave 12027 max 11320 min
Histogram: 2 0 0 0 0 0 0 0 1 1
Total # of neighbors = 46636
Ave neighs/atom = 24.3912
Neighbor list builds = 220
Dangerous builds = 0
Total wall time: 0:00:13

5
src/.gitignore vendored
View File

@ -31,6 +31,11 @@
/fix_*manifold*.cpp
/fix_*manifold*.h
/meam*.h
/meam*.cpp
/pair_meamc.cpp
/pair_meamc.h
/fix_qeq*.cpp
/fix_qeq*.h

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -218,8 +218,6 @@ void FixQEqReaxKokkos<DeviceType>::pre_force(int vflag)
d_ilist = k_list->d_ilist;
inum = list->inum;
k_list->clean_copy();
//cleanup_copy();
copymode = 1;
int teamsize = TEAMSIZE;

View File

@ -22,21 +22,14 @@ enum{NSQ,BIN,MULTI};
/* ---------------------------------------------------------------------- */
template<class Device>
void NeighListKokkos<Device>::clean_copy()
NeighListKokkos<Device>::NeighListKokkos(class LAMMPS *lmp):NeighList(lmp)
{
ilist = NULL;
numneigh = NULL;
firstneigh = NULL;
firstdouble = NULL;
dnum = 0;
iskip = NULL;
ijskip = NULL;
ipage = NULL;
dpage = NULL;
_stride = 1;
maxneighs = 16;
kokkos = 1;
maxatoms = 0;
}
execution_space = ExecutionSpaceFromDevice<Device>::space;
};
/* ---------------------------------------------------------------------- */

View File

@ -68,18 +68,13 @@ class NeighListKokkos: public NeighList {
public:
int maxneighs;
void clean_copy();
void grow(int nmax);
typename ArrayTypes<Device>::t_neighbors_2d d_neighbors;
typename DAT::tdual_int_1d k_ilist; // local indices of I atoms
typename ArrayTypes<Device>::t_int_1d d_ilist;
typename ArrayTypes<Device>::t_int_1d d_numneigh; // # of J neighs for each I
NeighListKokkos(class LAMMPS *lmp):
NeighList(lmp) {_stride = 1; maxneighs = 16; kokkos = 1; maxatoms = 0;
execution_space = ExecutionSpaceFromDevice<Device>::space;
};
~NeighListKokkos() {numneigh = NULL; ilist = NULL;};
NeighListKokkos(class LAMMPS *lmp);
KOKKOS_INLINE_FUNCTION
AtomNeighbors get_neighbors(const int &i) const {

View File

@ -265,7 +265,7 @@ class NeighborKokkosExecute
h_new_maxneighs() = neigh_list.maxneighs;
};
~NeighborKokkosExecute() {neigh_list.clean_copy();};
~NeighborKokkosExecute() {neigh_list.copymode = 1;};
template<int HalfNeigh, int Newton, int Tri>
KOKKOS_FUNCTION

View File

@ -1,4 +1,4 @@
/* ----------------------------------------------------------------------
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov

View File

@ -120,9 +120,6 @@ void PairCoulDSFKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
int inum = list->inum;
// Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle
k_list->clean_copy();
copymode = 1;
// loop over neighbors of my atoms

View File

@ -121,9 +121,6 @@ void PairCoulWolfKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
int inum = list->inum;
// Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle
k_list->clean_copy();
copymode = 1;
// loop over neighbors of my atoms

View File

@ -122,9 +122,6 @@ void PairEAMAlloyKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
d_ilist = k_list->d_ilist;
int inum = list->inum;
// Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle
k_list->clean_copy();
copymode = 1;
// zero out density

View File

@ -122,9 +122,6 @@ void PairEAMFSKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
d_ilist = k_list->d_ilist;
int inum = list->inum;
// Call cleanup_copy which sets allocations NULL which are destructed by the PairStyle
k_list->clean_copy();
copymode = 1;
// zero out density

Some files were not shown because too many files have changed in this diff Show More