Some output fields have attributes attached on the same
line. e.g. "ITEM: BOX BOUNDS pp pp pp". This patch replaced all
the strcmpi to strncmpi in order to limit the number of character
compared with LAMPPS outputs.
Signed-off-by: Yossi Eliaz <eliaz123@gmail.com>
This commit includes several fixes to moving restraints; also added is support
for runtime integration of 2D and 3D PMFs from ABF.
Mostly changes to existing member functions, with few additions in classes not
directly accessible by LAMMPS. Also removed are calls to std::pow(), replaced
by a copy of MathSpecial::powint().
Relevant commits in Colvars repository:
7307b5c 2017-12-14 Doc improvements [Giacomo Fiorin]
7f86f37 2017-12-14 Allow K-changing restraints computing accumulated work; fix staged-k TI estimator [Giacomo Fiorin]
7c1c175 2017-12-14 Fix 1D ABF trying to do pABF [Jérôme Hénin]
b94aa7e 2017-11-16 Unify PMF output for 1D, 2D and 3D in ABF [Jérôme Hénin]
771a88f 2017-11-15 Poisson integration for all BC in 2d and 3d [Jérôme Hénin]
6af4d60 2017-12-01 Print message when issuing cv delete in VMD [Giacomo Fiorin]
4413972 2017-11-30 Check for homogeneous colvar to set it periodic [Jérôme Hénin]
95fe4b2 2017-11-06 Allow abf_integrate to start in bin with 1 sample [Jérôme Hénin]
06eea27 2017-10-23 Shorten a few constructs by using the power function [Giacomo Fiorin]
3165dfb 2017-10-20 Move includes of colvarproxy.h from headers to files [Giacomo Fiorin]
32a867b 2017-10-20 Add optimized powint function from LAMMPS headers [Giacomo Fiorin]
3ad070a 2017-10-20 Remove some unused includes, isolate calls to std::pow() [Giacomo Fiorin]
0aaf540 2017-10-20 Replace all calls to std::pow() where the exponent is not an integer [Giacomo Fiorin]
When compiling with g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) an error occurs:
error.cpp: In member function ‘void Error::generate_error(unsigned int, std::string, std::string)’:
error.cpp:146: error: ‘exit’ was not declared in this scope
The fix is to include the #include <cstdlib> where the exit() function is decleared in the error.cpp file
This should print a warning when 2x the bonded interaction cutoff list larger then other cutoffs, as was the setting before the performance optimization with the change in 2690075405
this now covers a large set of cases where the variable name can be printed.
it also is complete for the current code, since no more default arguments are required
are provided.
New directory: tools/doxygen
New file: tools/doxygen/Developer.dox.lammps
New file: tools/doxygen/Doxyfile.lammps
New file: tools/doxygen/doxygen.sh
New file: tools/doxygen/README
The Developer.dox.lammps file contains a slightly revised version of the
Developer.pdf file adopted to the LAMMPS "doxygen" documentation.
The Doxyfile.lammps file is a first proposal for a LAMMPS "doxygen"
documentation flavor and can be adjusted to specific requirements.
The "doxygen.sh" shell script generates the LAMMPS "doxygen"
documentation.
Detailed instructions can be found in the README file.
This reverts commit 4a3a6b4455.
As it turns out, when using the LAMMPS python wrapper from inside
code using the PYTHON package, the library symbols *are* needed.
Thanks for Richard Berger (@rbberger) for pointing this out.
This reverts commit 4a3a6b4455.
As it turns out, when using the LAMMPS python wrapper from inside
code using the PYTHON package, the library symbols *are* needed.
Thanks for Richard Berger (@rbberger) for pointing this out.
NEB was not working fine when using multiple proc
per replica and the keywords last/efirst or last/efirst/middle
I have corrected this in the enclosed fix_neb.cpp
I also slightly modified the nudging for this free end so that
it would be applied only when the target energy is larger than
the energy. Anyway if the target energy is lower than the energy,
the replica should relax toward the target energy without adding
any nudging.
I also modified the documentation according to this change.
This reverts commit 4a3a6b4455.
As it turns out, when using the LAMMPS python wrapper from inside
code using the PYTHON package, the library symbols *are* needed.
Thanks for Richard Berger (@rbberger) for pointing this out.
the sphinxcontrib.image extension was broken with sphinx 16.x.
however, sphinx 15.x breaks with newer version of the multiprocessor module.
so we suspend the thumbnail processing and lift the lock to sphinx 15.x
also, the number of parallel sphinx tasks is can be overridden with SPHINXEXTRA="-j #'.
default is to try use all local CPU cores.
This includes an example of how to implement fix NVE in Python.
The library interface was extended to provide direct access to atom data using
numpy arrays. No data copies are made and numpy operations directly manipulate
memory of the native code.
To keep this numpy dependency optional, all functions are wrapped into the
lammps.numpy sub-object which is only loaded when accessed.
This was accomplished with several key changes:
1) Modified fix_shardlow's control flow to match fix_shardlow_kokkos so
that random numbers are pulled fromn the RNGs in exactly the same order.
2) Created random_external_state.h, a simplified version of the Kokkos
random number generator that keeps its state variables external to itself.
Thus it can be used both with and without Kokkos enabled, as long as the
caller stores and passes in the required state variable.
3) Replaced all references to random_mars.h and Kokkos_Random.hpp code in
the fix_shardlow* files with calls to the random_external_state.h code,
guaranteeing that fix_shardlow* is using an identical RNG in all cases.
Result: most (56 of 61) of our internal tests now generate the same results
with kokkos turned on or off. Four cases still differ due to what appear
to be vectorization caused rounding differences, and the fifth case
appears to be something triggered by the kokkos "atom_style hybrid" code.
Propogate the efaa4c67 changes to npair_ssa_kokkos from npair_kokkos that
support the new neigh_modify exclude molecule/intra and /inter options.
Note: npair_ssa_kokkos could inherit from npair_kokkos to avoid this kind
of missed change. Unfortunately, inheritance from templated classes is
both tricky and messy, and not worth the complexity in this case, IMHO.
Notable features are the umbrella-integration based free energy estimator for
eABF, and the traditional thermodynamic integration estimator now available
for umbrella sampling, SMD, metadynamics. Also included are several small fixes.
Below is a list of relevant commits in the Colvars repository since the last update.
321d06a 2017-10-10 Add macros to manage colvarscript commands [Giacomo Fiorin]
26c3bec 2017-10-09 Document coming availability of Lepton in LAMMPS [Giacomo Fiorin]
cc8f249 2017-10-04 Clarify that SMP depends on code build [Giacomo Fiorin]
0b2ffac 2017-10-04 Summarize colvar definition options, clarify some details [Giacomo Fiorin]
28002e0 2017-10-01 Separate writing of restart file from other output (e.g. PMFs) [Giacomo Fiorin]
92f7c1d 2017-10-01 Deprecate colvarsTrajAppend [Giacomo Fiorin]
12a707f 2017-09-26 Accurate Jacobian calculation for RMSD variants [Jérôme Hénin]
fe389c9 2017-09-21 Allow subtractAppliedForce with extended-L again [Jérôme Hénin]
c050ce0 2017-09-18 Silence compiler warnings, remove Tabs [Giacomo Fiorin]
cb41905 2017-01-11 Add base class for TI estimator in other biases than ABF [Giacomo Fiorin]
a1bc676 2017-09-14 Avoid writing to unopened traj file [Jérôme Hénin]
b58d8cd 2017-09-08 Function to check for overlapping groups [Jérôme Hénin]
1e5efec 2017-09-07 Check for overlapping groups in coordNum [Jérôme Hénin]
03a61a4 2017-04-06 Add UI-based estimator [fhh2626]
ae43754 2017-08-17 Fix outputCenters parsing [Josh Vermaas]
1619e0e 2017-08-14 Delete static feature arrays in cvm destructor [Jérôme Hénin]
- re-indent to 2 blanks
- white space cleanup
- use force->numeric() and force->inumeric() instead of atof() and atoi()
- include system headers before local LAMMPS headers
- move example folder to examples/USER/misc/
- comment out writing of trajectory files
- reduce run length (for easier testing for regressions)
- record example outputs for 1 and 4 MPI processes
- rename readme.md to README.md for visibility
Adding raw performance numbers for Skylake xeon server.
Fixes for using older Intel compilers and compiling without OpenMP.
Fix adding in hooks for using USER-INTEL w/ minimization.
- include the used tricubic functions directly as static functions
- silence compiler warnings
- define f2c.h imported data types directly or use C equivalents
- since the direct LAPACK API was called and not cLAPACK, declare LAPACK interface and depend only on LAPACK
- add proper dependencies
- disable automatic minor version number generation. step version manually.
- comment out optional spglib functionality by default
with this change, the USER-INTEL package can be installed and
compiled without having to alter makefiles for adding -lpthread.
All "intel optimized" makefiles have been updated to have the
LRT feature enabled. This change will allow us to include the
USER-INTEL package in several automated testing configurations
and thus allows to detect incompatibilities and compilation issus faster.
The library interface was extended to provide direct access to atom data using
numpy arrays. No data copies are made and numpy operations directly manipulate
memory of the native code.
To keep this numpy dependency optional, all functions are wrapped into the
lammps.numpy sub-object which is only loaded when accessed.
The Constant Energy DPD (DPDE) was our primary usage case, so only stubs
for the Constant Temperature case were included in Kokkos code so far.
The non-Kokkos version works fine for Constant Temperature DPD.
New function that allows for parallel tempering (replica exchange) in MD in LAMMPS in the isothermal-isobaric ensemble (NPT)
Similar to temper which works in the canonical (NVT) ensemble.
An example is included that uses temper_npt
Merge changes thru July 27, 2017 from master 6d0a2286 into USER-DPD_kokkos
Includes 67a0183b which partially reverted 7f9a331c (from May 16, 2017) in USER-DPD,
since SSA neighbor lists use ghost info, so they can't currently be used as "occasional" lists.
There were several clean_copy() calls in pair
styles *outside device code*.
They seem to have been left over from an abandoned
effort to copy the Kokkos neighbor list as
a member of the pair style, instead of copying
out the individual views needed.
These leftover clean_copy() calls were setting
pointers to NULL that had not been freed,
leading to large memory leaks.
I've removed the clean_copy() function entirely,
and replaced it with the copymode flag system used
in many other Kokkos objects.
The copymode flag is only set to one in
functors that hold copies of the neighbor list.
There were several clean_copy() calls in pair
styles *outside device code*.
They seem to have been left over from an abandoned
effort to copy the Kokkos neighbor list as
a member of the pair style, instead of copying
out the individual views needed.
These leftover clean_copy() calls were setting
pointers to NULL that had not been freed,
leading to large memory leaks.
I've removed the clean_copy() function entirely,
and replaced it with the copymode flag system used
in many other Kokkos objects.
The copymode flag is only set to one in
functors that hold copies of the neighbor list.
- Moved the particle loop inside a replica of getMixingWeights, getMixingWeightsVect,
and refactored to improve vectorization.
- Added OMP SIMD and OMP threading directly inside that function but will replace with
kokkos parallel_for and parallel_reduce methods later.
Normally, the gzip process would be pinned to the same core as the
MPI rank 0 process, which makes the pipe stay in one core's cache,
but forces the two process to fight for that core, slowing things down.
Note: "newton on" still required if using non-kokkos pair styles or fixes.
Non-kokkos pairs/fixes don't expect their half lists with newton off,
which happens if newton is turned off globally by kokkos via commandline.
Note2: Regardless, fix_shardlow* will still use half lists and newton on.
two sort functions with different
names but identical functionality.
making them the same function
until we descide to use a different
algorithm for atoms and ghosts
KOKKOS_LAMBDA doesn't quite work on CUDA,
you have to use LAMMPS_LAMBDA.
Also, if you do use LAMMPS_LAMBDA, you need
to run on the default device type,
i.e. no using lambdas to run on OpenMP
when LAMMPS has been compiled for CUDA.
Add support for lock-free and deterministic use of Random_XorShift*_Pool
by giving state_idx selection and lock responsibility up to the
application. Done by an overload of get_state() to take sate_idx as
an argument that the appplication guarantees is concurrently unique
and within the range of num_states that the application passed to init().
In other words, this allows the RNG state to be associated with some
application specific index, rather than a runtime arbitrary thread ID,
and thus the application can control which work is performed using
which RNG in a deterministic manner, regardless of which thread
performs the work.
Random_XorShift*_Pool<Kokkos::Cuda>::free_state() has two purposes:
1) update the state value kept in the pool
2) unlock the state
For a CUDA host thread, ONLY skip step 2, not both.
SSA atom binning algorithm was adjusted to do as much work in
parallel while preserving deterministic behavior. The final
step is done serially to preserve deterministic behavior.
An alternative would be to sort the contents of the bins so
that they are always in the same order.
ssa_update_dpde() hangs on first use of rand_gen.normal()
Switching to not using a pointer to PairDPDfdtEnergyKokkos's rand_pool
had no noticble effect.
Eliminates a special case version of a loop just for Subphase 0.
NOTE: pair evaluation order changes, causing numerical differences!
This changed the order that close neighbors of ghosts are processed.
NOTE: pair evaluation order changes, causing numerical differences!
Atom pair processing order is fully planned out in npair_half_bin_newton_ssa
Makes the SSA neighbor list structure very different. Do not use by others!
Each local is in ilist, numneigh, and firstneigh four times instead of once.
Changes LAMMPS core code that had been previously changed for USER-DPD/SSA:
Removes ssaAIR[] from class Atom as it is now unused.
Removes ndxAIR_ssa[] from class NeighList as it is now unused.
Increases length of ilist[], numneigh[], and firstneigh[] if SSA flag set.
NOTE: pair evaluation order changes, causing numerical differences!
This enables processing neighbors in subphase groups that enforce
a geometrical seperation of pairs, allowing greater parallelism
once fix_shardlow (SSA) is converted to Kokkos.
This removes the the distinction between pure and impure locals.
Pure and impure locals messed up the directionality of half neighbor lists,
which turns out is crucial to the approach for SSA with kokkos.
- Switched from using lambda functions to operator()'s with type tags
in FixRxKokkos. The lambda's were giving big problems in Cuda with
the memory objects. This required that all referenced views be members
of the FixRXKokkos class.
- Add copymode controls to solve_reactions() to avoid the destructor
freeing pointers carried forward from the copy constructor. Added
the same to FixRX since its called, too.
- Updated the function prototypes to include the necessary KOKKOS
macros for __host__ and __device__ functions and inlined functions.
- Changed several View definitions to match the disjoint memory spaces
that only come up with Cuda builds.
- Finished porting all scratch arrays to using the StridedArrayType
template.
- Created a single, large Kokkos device array and using that for all
scratch data passed into the StridedArrayType objects.
- Created an Array class that provides stride access for operator[]
w/o needing Kokkos views. This was designed to avoid the performance
issues encountered with Views and sub-views throughout the RHS and
ODE solver functions.
- Added the diagnostics performance analysis routine to FixRxKokkos
using Kokkos views.
TODO:
- Switch to using Kokkos data for the per-iteration scratch data.
How to allocate only enouch for each work-unit and not all
iterations? Can the shared-memory scratch memory work for this,
even for large sizes?
usage and calls to computeLocalTemperature.
- Created request for kokkos neighbor list for fix and switched to
that neighbor list datatype in computeLocalTemperature.
- Reconfigured pre_force and setup_pre_force to call a common
solve_reactions() method to avoid duplicate code.
TODO:
- Clean-up
- Provide per-problem scratch data within kokkos framework (instead
of C++ new/delete data).
- Added a kokkos version of setup_pre_force that only sets dvector
and then communicates that.
- Converted all for loops to parallel_for's in computeLocalTemperator()
and setup_pre_force.
- Added pack/unpack forward/reverse methods with Kokkos host views.
TODO:
- The Kokkos neighbor list is not working. Need to request a Kokkos
neighbor list in ::init(). Then, replace objects like list->ilist[]
with k_list->d_ilist().
Added kokkos dual-view datatypes used in computeLocalTemperature and
pre_force (e.g., dpdThetaLocal) but still using the original host
pointers for the pack/unpack operations.
TODO:
- The Kokkos neighbor list is not working. Need to request a Kokkos
neighbor list in ::init(). Then, replace objects like list->ilist[]
with k_list->d_ilist().
- Add another template parameter for HALFTHREAD and create (automatic)
atomic view of dpdThetaLocal and sumWeights.
- Add modify/sync comments and replace the host-only pointers in the
pack/unpack methods.
- Added templated computeLocalTemp<>() to FixRxKokkos but still
using the original host data pointers.
- Updated the copy-back to dvector operation to be the same with
RK4 and RKF45 per discussion with J. Larentzos.
TODO:
- Add kokkos data for computeLocalTemp and parallel_for loop.
- Updated the KOKKOS installer to include the fix_rx_kokkos.[cpp,h].
- Updated the USER-DPD version of fix_rx.[cpp,h] to sync with the Kokkos
version. Solves child->parent class dependencies.
- Added kokkos-managed parameter data for the kinetics equations.
- Removed dependencies in rhs() on atom and domain objects.
TODO:
1. Switch to using KOKKOS data for dvector.
2. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm).
Initial port of USER-DPD/fix_rx.cpp to KOKKOS/fix_rx_kokkos.cpp.
Using parallel_reduce(...) but still using host-only data.
TODO:
1. Switch to KOKKOS datatypes for sparse-kinetics data; dense
is finished.
2. Switch to using KOKKOS data for dvector.
3. Remove dependencies in rhs(...) on atom. Store those consts
in UserData{} or as member constants.
4. Port ComputeLocalTemp(...) to Kokkos (needs pairing algorithm).
the main bug here is the use of a local
rho_i accumulator which later gets assigned
back to rho[i].
in parallel, atomic additions can happen to
rho[i] while the local accumulator is held;
those atomic additions are lost when
the accumulator is atomically assigned.
we instead initialize the accumulator to zero
and atomically add it back to rho[i].
one Kokkos kernel was not annotated consistently,
STACKPARAMS was essentially uninitialized and
confused with a local variable,
plus lots of variables were unused in some
of the Kokkos kernels.
During dynamic load balancing, the subdomains will not be uniform so the
bbox size test in USER-DPD/fix_shardlow.cpp may only be called by one rank.
Using error->one allows any rank to stop the simulation in this scenario.
Added rcut and bbox information to help in diagnostics.
set(LAMMPS_MEMALIGN"64"CACHESTRING"enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS")
@ -507,11 +507,15 @@ we'll be pleased to add them to the
"Movies"_http://lammps.sandia.gov/movies.html pages of the LAMMPS WWW
site.
The core group of LAMMPS developers is at Sandia National Labs:
The primary LAMMPS developers are at Sandia National Labs and Temple University:
Steve Plimpton, sjplimp at sandia.gov
Aidan Thompson, athomps at sandia.gov
Paul Crozier, pscrozi at sandia.gov :ul
Stan Moore, stamoor at sandia.gov
Axel Kohlmeyer, akohlmey at gmail.com :ul
Past primary developers include Paul Crozier and Mark Stevens,
both at Sandia, and Ray Shan, now at Materials Design.
The following folks are responsible for significant contributions to
the code, or other aspects of the LAMMPS development effort. Many of
@ -519,19 +523,20 @@ the packages they have written are somewhat unique to LAMMPS and the
code would not be as general-purpose as it is without their expertise
and efforts.
Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CGSDK and USER-OMP packages
Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CGSDK, USER-OMP, USER-COLVARS, USER-MOLFILE, USER-QMMM, USER-TALLY, and COMPRESS packages
Roy Pollock (LLNL), Ewald and PPPM solvers
Mike Brown (ORNL), brownw at ornl.gov, GPU package
Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL package
Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics
Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion
Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling
Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD
Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA package
Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA and KOKKOS packages
Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field
Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling
Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF
Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SPH package :ul
Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SMD and USER-SPH packages
Colin Denniston (U Western Ontario), cdennist at uwo.ca, USER-LB package :ul
As discussed in "Section 13"_Section_history.html, LAMMPS
originated as a cooperative project between DOE labs and industrial
<p>Changes frame of reference from eulerian to lagrangian and sets the frequency for which the map from atoms to elements is reformed and all the attendant data is recalculated. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Cannot change map type after initialization. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>lagrangian </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<p>fix_modify AtC boundary type <atom-type-id></p>
<ul>
<li><atom-type-id> = type id for atoms that represent a ficticious boundary internal to the FE mesh </li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC boundary type ghost_atoms </code></p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Command to define the atoms that represent the ficticious boundary internal to the FE mesh. For fully overlapped MD/FE domains with periodic boundary conditions no boundary atoms should be defined. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>none </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<p>Sets different schemes for controlling boundary atoms. On will integrate the boundary atoms using the velocity-verlet algorithm. Damped harmonic uses a mass/spring/dashpot for the boundary atoms with added arguments of the damping and spring constants followed by the ratio of the boundary type mass to the desired mass. Prescribed forces the boundary atoms to follow the finite element displacement. Coupled does the same. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Boundary atoms must be specified. When using swaps between internal and boundary atoms, the initial configuration must have already correctly partitioned the two. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>prescribed on </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<li><on|off> = switch to activiate/deactiviate the initial setting of FE intrinsic field to match the projected MD field </li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify atc consistent_fe_initialization on </code></p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Determines whether AtC initializes FE intrinsic fields (e.g., temperature) to match the projected MD values. This is particularly useful for fully overlapping simulations. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Can be used with: thermal, two_temperature. Cannot be used with time filtering on. Does not include boundary nodes. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>Default is off </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<h1><aclass="anchor"id="man_control">fix_modify AtC control </a></h1><h2><aclass="anchor"id="syntax">
syntax</a></h2>
<h3><aclass="anchor"id="man_control">fix_modify AtC control </a></h3><h4><aclass="anchor"id="syntax">
syntax</a></h4>
<p>fix_modify AtC control <physics_type><solution_parameter></p>
<p><br/>
</p>
@ -46,22 +44,22 @@ syntax</a></h2>
<li>tolerance (float) = relative tolerance to which matrix equations will be solved<br/>
</li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC control thermal max_iterations 10 </code><br/>
<code> fix_modify AtC control momentum tolerance 1.e-5 </code><br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Sets the numerical parameters for the matrix solvers used in the specified control algorithm. Many solution approaches require iterative solvers, and these methods enable users to provide the maximum number of iterations and the relative tolerance. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>only for be used with specific controllers : thermal, momentum <br/>
They are ignored if a lumped solution is requested </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>max_iterations is the number of rows in the matrix<br/>
<h1><aclass="anchor"id="man_control_momentum">fix_modify AtC control momentum </a></h1><h2><aclass="anchor"id="syntax">
syntax</a></h2>
<h3><aclass="anchor"id="man_control_momentum">fix_modify AtC control momentum </a></h3><h4><aclass="anchor"id="syntax">
syntax</a></h4>
<p>fix_modify AtC control momentum none <br/>
</p>
<p>fix_modify AtC control momentum rescale <frequency><br/>
@ -44,21 +42,21 @@ syntax</a></h2>
<li>face_set_id (string) = id of boundary face set, if not specified (or not possible when the atomic domain does not line up with mesh boundaries) defaults to an atomic-quadrature approximate evaulation<br/>
</li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p>fix_modify AtC control momentum glc_velocity <br/>
fix_modify AtC control momentum flux faceset bndy_faces <br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>only to be used with specific transfers : elastic <br/>
rescale not valid with time filtering activated </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>none </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<li>face_set_id (string), optional = id of boundary face set, if not specified (or not possible when the atomic domain does not line up with mesh boundaries) defaults to an atomic-quadrature approximate evaulation, does not work with interpolate<br/>
</li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC control thermal none </code><br/>
<code> fix_modify AtC control thermal rescale 10 </code><br/>
<code> fix_modify AtC control thermal hoover </code><br/>
<code> fix_modify AtC control thermal flux </code><br/>
<code> fix_modify AtC control thermal flux faceset bndy_faces </code><br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Sets the energy exchange mechansim from the finite elements to the atoms, managed through a control algorithm. Rescale computes a scale factor for each atom to match the finite element temperature. Hoover is a Gaussian least-constraint isokinetic thermostat enforces that the nodal restricted atomic temperature matches the finite element temperature. Flux is a similar mode, but rather adds energy to the atoms based on conservation of energy. Hoover and flux allows the prescription of sources or fixed temperatures on the atoms. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>only for be used with specific transfers : thermal (rescale, hoover, flux), two_temperature (flux) <br/>
rescale not valid with time filtering activated </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>none<br/>
rescale frequency is 1<br/>
flux boundary_integration_type is interpolate </p>
<h1><aclass="anchor"id="man_control_thermal_correction_max_iterations">fix_modify AtC control thermal correction_max_iterations </a></h1><h2><aclass="anchor"id="syntax">
syntax</a></h2>
<h3><aclass="anchor"id="man_control_thermal_correction_max_iterations">fix_modify AtC control thermal correction_max_iterations </a></h3><h4><aclass="anchor"id="syntax">
syntax</a></h4>
<p>fix_modify AtC control thermal correction_max_iterations <max_iterations></p>
<ul>
<li>max_iterations (int) = maximum number of iterations that will be used by iterative matrix solvers<br/>
</li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC control thermal correction_max_iterations 10 </code><br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Sets the maximum number of iterations to compute the 2nd order in time correction term for lambda with the fractional step method. The method uses the same tolerance as the controller's matrix solver. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>only for use with thermal physics using the fractional step method. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>correction_max_iterations is 20 </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<p>Switches between integration scheme for the electron temperature. The number of subcyling steps used to integrate the electron temperature 1 LAMMPS timestep can be manually adjusted to capture fast electron dynamics.</p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<p>For use only with two_temperature type of AtC fix ( see <aclass="el"href="man_fix_atc.html">fix atc command</a> ) <br/>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>For use only with two_temperature type of AtC fix ( see <aclass="el"href="../../fix_atc.html">fix atc command</a> ) <br/>
<p>Specifies different methods for computing fluxes between between the MD and FE integration regions. Faceset defines a faceset separating the MD and FE regions and uses finite element face quadrature to compute the flux. Interpolate uses a reconstruction scheme to approximate the flux, which is more robust but less accurate if the MD/FE boundary does correspond to a faceset. No boundary results in no fluxes between the systems being computed. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>If faceset is used, all the AtC non-boundary atoms must lie within and completely fill the domain enclosed by the faceset. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<p>see for how to specify the faceset name. </p>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>Interpolate. </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<h3><aclass="anchor"id="man_fem_mesh">fix_modify AtC fem create mesh</a></h3><h4><aclass="anchor"id="syntax">
syntax</a></h4>
fix_modify AtC fem create mesh <nx><ny><nz><region-id><f|p><f|p><f|p><ul>
<li>nx ny nz = number of elements in x, y, z</li><li>region-id = id of region that is to be meshed</li><li>f p p = perioidicity flags for x, y, z </li></ul>
<h2><aclass="anchor"name="examples">
examples</a></h2>
<code> fix_modify AtC fem create mesh 10 1 1 feRegion p p p </code><h2><aclass="anchor"name="description">
description</a></h2>
Creates a uniform mesh in a rectangular region <h2><aclass="anchor"name="restrictions">
restrictions</a></h2>
creates only uniform rectangular grids in a rectangular region<h2><aclass="anchor"name="related">
related</a></h2>
<h2><aclass="anchor"name="default">
default</a></h2>
none <hrsize="1"><addressstyle="align: right;"><small>Generated on Mon Aug 17 09:35:16 2009 for ATC by
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC fem create mesh 10 1 1 feRegion p p p </code><br/>
</p>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Creates a uniform mesh in a rectangular region</p>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>creates only uniform rectangular grids in a rectangular region</p>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
none
<hrsize="1"><addressstyle="align: right;"><small>Generated on Mon Aug 17 09:35:16 2009 for ATC by
<p>Filters the MD dynamics to construct a more appropriate continuous field. Equilibrating first filters the time derivatives without changing the dynamics to provide a better initial condition to the filtered dynamics </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>only for be used with specific transfers: thermal, two_temperature</p>
<p>This fix is the beginning to creating a coupled FE/MD simulation and/or an on-the-fly estimation of continuum fields. The coupled versions of this fix do Verlet integration and the /post-processing does not. After instantiating this fix, several other fix_modify commands will be needed to set up the problem, e.g. define the finite element mesh and prescribe initial and boundary conditions.</p>
<p>The following coupling example is typical, but non-exhaustive:<br/>
</p>
@ -134,16 +132,16 @@ description</a></h2>
</li>
</ul>
<p>Please refer to the standard finite element (FE) texts, e.g. T.J.R Hughes <em> The finite element method </em>, Dover 2003, for the basics of FE simulation.</p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Thermal and two_temperature (coupling) types use a Verlet time-integration algorithm. The hardy type does not contain its own time-integrator and must be used with a separate fix that does contain one, e.g. nve, nvt, etc.</p>
<p>Currently,</p>
<ul>
<li>the coupling is restricted to thermal physics</li>
<li>the FE computations are done in serial on each processor.</li>
<li><field> = field name valid for type of physics, temperature | electron_temperature</li>
<li><face_set> = name of set of element faces </li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify atc fix_flux temperature faceSet 10.0 </code><br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Command for fixing normal fluxes e.g. heat_flux. This command only prescribes the normal component of the physical flux, e.g. heat (energy) flux. The units are in AtC units, i.e. derived from the LAMMPS length, time, and mass scales. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Only normal fluxes (Neumann data) can be prescribed. </p>
type_concentration: volume fraction of a specific atom type <br/>
</li>
</ul>
<h2><aclass="anchor"id="examples">
examples</a></h2>
<h4><aclass="anchor"id="examples">
examples</a></h4>
<p><code> fix_modify AtC fields add velocity temperature </code></p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Allows modification of the fields calculated and output by the transfer class. The commands are cumulative, e.g.<br/>
<code> fix_modify AtC fields none </code><br/>
followed by <br/>
<code> fix_modify AtC fields add velocity temperature </code><br/>
will only output the velocity and temperature fields. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<p>Must be used with the hardy/field type of AtC fix, see <aclass="el"href="man_fix_atc.html">fix atc command</a>. Currently, the stress and heat flux formulas are only correct for central force potentials, e.g. Lennard-Jones and EAM but not Stillinger-Weber. </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Must be used with the hardy/field type of AtC fix, see <aclass="el"href="../../fix_atc.html">fix atc command</a>. Currently, the stress and heat flux formulas are only correct for central force potentials, e.g. Lennard-Jones and EAM but not Stillinger-Weber. </p>
<p>Requests calculation and ouput of gradients of the fields from the transfer class. These gradients will be with regard to spatial or material coordinate for eulerian or lagrangian analysis, respectively, as specified by atom_element_map (see <aclass="el"href="man_atom_element_map.html">fix_modify AtC atom_element_map</a> ) </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="man_fix_atc.html">fix atc command</a> ) </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="../../fix_atc.html">fix atc command</a> ) </p>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>No gradients are calculated by default </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<code> fix_modify AtC on_the_fly kernel off </code><br/>
</p>
<h2><aclass="anchor"id="description">
description</a></h2>
<h4><aclass="anchor"id="description">
description</a></h4>
<p>Overrides normal mode of pre-calculating and storing bond pair-to-node a nd kernel atom-to-node matrices. If activated, will calculate elements of t hese matrices during repeated calls of field computations (i.e. "on-the-fly") and not store them for future use. <br/>
on flag is optional - if omitted, on_the_fly will be activated for the s pecified matrix. Can be deactivated using off flag. <br/>
</p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="man_fix_atc.html">fix atc command</a> ) </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="../../fix_atc.html">fix atc command</a> ) </p>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>By default, on-the-fly calculation is not active (i.e. off). However, code does a memory allocation check to determine if it can store all needed bond and kernel matrix ele ments. If this allocation fails, on-the-fly is activated. <br/>
<p>Requests calculation and ouput of rates (time derivatives) of the fields from the transfer class. For eulerian analysis (see <aclass="el"href="man_atom_element_map.html">fix_modify AtC atom_element_map</a> ), these rates are the partial time derivatives of the nodal fields, not the full (material) time derivatives. <br/>
</p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="man_fix_atc.html">fix atc command</a> ) </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>Must be used with the hardy/field type of AtC fix ( see <aclass="el"href="../../fix_atc.html">fix atc command</a> ) </p>
<h4><aclass="anchor"id="related">
related</a></h4>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>No rates are calculated by default </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
<p>Enables AtC to base the region for internal atoms to be an element set. If no ghost atoms are used, all the AtC atoms must be constrained to remain in this element set by the user, e.g., with walls. If boundary atoms are used in conjunction with Eulerian atom maps AtC will partition all atoms of a boundary or internal type to be of type internal if they are in the internal region or to be of type boundary otherwise. </p>
<h2><aclass="anchor"id="restrictions">
restrictions</a></h2>
<h4><aclass="anchor"id="restrictions">
restrictions</a></h4>
<p>If boundary atoms are used in conjunction with Eulerian atom maps, the Eulerian reset frequency must be an integer multiple of the Lammps reneighbor frequency </p>
<h2><aclass="anchor"id="related">
related</a></h2>
<h4><aclass="anchor"id="related">
related</a></h4>
<p>see atom_element_map_type and boundary </p>
<h2><aclass="anchor"id="default">
default</a></h2>
<h4><aclass="anchor"id="default">
default</a></h4>
<p>off </p>
</div>
<hrsize="1"/><addressstyle="text-align: right;"><small>Generated on 21 Aug 2013 for ATC by
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.