1 /* ----------------------------------------------------------------------
2     This is the
3 
4     ██╗     ██╗ ██████╗  ██████╗  ██████╗ ██╗  ██╗████████╗███████╗
5     ██║     ██║██╔════╝ ██╔════╝ ██╔════╝ ██║  ██║╚══██╔══╝██╔════╝
6     ██║     ██║██║  ███╗██║  ███╗██║  ███╗███████║   ██║   ███████╗
7     ██║     ██║██║   ██║██║   ██║██║   ██║██╔══██║   ██║   ╚════██║
8     ███████╗██║╚██████╔╝╚██████╔╝╚██████╔╝██║  ██║   ██║   ███████║
9     ╚══════╝╚═╝ ╚═════╝  ╚═════╝  ╚═════╝ ╚═╝  ╚═╝   ╚═╝   ╚══════╝®
10 
11     DEM simulation engine, released by
12     DCS Computing Gmbh, Linz, Austria
13     http://www.dcs-computing.com, office@dcs-computing.com
14 
15     LIGGGHTS® is part of CFDEM®project:
16     http://www.liggghts.com | http://www.cfdem.com
17 
18     Core developer and main author:
19     Christoph Kloss, christoph.kloss@dcs-computing.com
20 
21     LIGGGHTS® is open-source, distributed under the terms of the GNU Public
22     License, version 2 or later. It is distributed in the hope that it will
23     be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
24     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have
25     received a copy of the GNU General Public License along with LIGGGHTS®.
26     If not, see http://www.gnu.org/licenses . See also top-level README
27     and LICENSE files.
28 
29     LIGGGHTS® and CFDEM® are registered trade marks of DCS Computing GmbH,
30     the producer of the LIGGGHTS® software and the CFDEM®coupling software
31     See http://www.cfdem.com/terms-trademark-policy for details.
32 
33 -------------------------------------------------------------------------
34     Contributing author and copyright for this file:
35     This file is from LAMMPS
36     LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
37     http://lammps.sandia.gov, Sandia National Laboratories
38     Steve Plimpton, sjplimp@sandia.gov
39 
40     Copyright (2003) Sandia Corporation.  Under the terms of Contract
41     DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
42     certain rights in this software.  This software is distributed under
43     the GNU General Public License.
44 ------------------------------------------------------------------------- */
45 
46 #ifdef FIX_CLASS
47 
48 FixStyle(deform,FixDeform)
49 
50 #else
51 
52 #ifndef LMP_FIX_DEFORM_H
53 #define LMP_FIX_DEFORM_H
54 
55 #include "fix.h"
56 
57 namespace LAMMPS_NS {
58 
59 class FixDeform : public Fix {
60  public:
61   int remapflag;                   // whether x,v are remapped across PBC
62   int dimflag[6];                  // which dims are deformed
63 
64   FixDeform(class LAMMPS *, int, char **);
65   ~FixDeform();
66   int setmask();
67   void init();
68   void pre_exchange();
69   void end_of_step();
70 
71  private:
72   int triclinic,scaleflag,flipflag;
73   int flip,flipxy,flipxz,flipyz;
74   double *h_rate,*h_ratelo;
75   int varflag;                     // 1 if VARIABLE option is used, 0 if not
76   int kspace_flag;                 // 1 if KSpace invoked, 0 if not
77   int nrigid;                      // number of rigid fixes
78   int *rfix;                       // indices of rigid fixes
79   class Irregular *irregular;      // for migrating atoms after box flips
80 
81   double TWOPI;
82 
83   struct Set {
84     int style,substyle;
85     double flo,fhi,ftilt;
86     double dlo,dhi,dtilt;
87     double scale,vel,rate;
88     double amplitude,tperiod;
89     double lo_initial,hi_initial;
90     double lo_start,hi_start,lo_stop,hi_stop,lo_target,hi_target;
91     double tilt_initial,tilt_start,tilt_stop,tilt_target,tilt_flip;
92     double tilt_min,tilt_max;
93     double vol_initial,vol_start;
94     int fixed,dynamic1,dynamic2;
95     char *hstr,*hratestr;
96     int hvar,hratevar;
97   };
98   Set *set;
99 
100   void options(int, char **);
101 };
102 
103 }
104 
105 #endif
106 #endif
107 
108 /* ERROR/WARNING messages:
109 
110 E: Illegal ... command
111 
112 Self-explanatory.  Check the input script syntax and compare to the
113 documentation for the command.  You can use -echo screen as a
114 command-line option when running LAMMPS to see the offending line.
115 
116 E: Fix deform tilt factors require triclinic box
117 
118 Cannot deform the tilt factors of a simulation box unless it
119 is a triclinic (non-orthogonal) box.
120 
121 E: Cannot use fix deform on a shrink-wrapped boundary
122 
123 The x, y, z options cannot be applied to shrink-wrapped
124 dimensions.
125 
126 E: Cannot use fix deform tilt on a shrink-wrapped 2nd dim
127 
128 This is because the shrink-wrapping will change the value
129 of the strain implied by the tilt factor.
130 
131 E: Fix deform volume setting is invalid
132 
133 Cannot use volume style unless other dimensions are being controlled.
134 
135 E: More than one fix deform
136 
137 Only one fix deform can be defined at a time.
138 
139 E: Variable name for fix deform does not exist
140 
141 Self-explantory.
142 
143 E: Variable for fix deform is invalid style
144 
145 The variable must be an equal-style variable.
146 
147 E: Final box dimension due to fix deform is < 0.0
148 
149 Self-explanatory.
150 
151 E: Cannot use fix deform trate on a box with zero tilt
152 
153 The trate style alters the current strain.
154 
155 E: Fix deform cannot use yz variable with xy
156 
157 The yz setting cannot be a variable if xy deformation is also
158 specified.  This is because LAMMPS cannot determine if the yz setting
159 will induce a box flip which would be invalid if xy is also changing.
160 
161 E: Fix deform is changing yz too much with xy
162 
163 When both yz and xy are changing, it induces changes in xz if the
164 box must flip from one tilt extreme to another.  Thus it is not
165 allowed for yz to grow so much that a flip is induced.
166 
167 U: Use of fix deform with undefined lattice
168 
169 A lattice must be defined to use fix deform with units = lattice.
170 
171 */
172