Page MenuHomec4science

fix_nh_uef.h
No OneTemporary

File Metadata

Created
Mon, Jun 3, 12:03

fix_nh_uef.h

/* ----------------------------------------------------------------------
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: David Nicholson (MIT)
------------------------------------------------------------------------- */
#ifndef LMP_FIX_NH_UEF_H
#define LMP_FIX_NH_UEF_H
#include "uef_utils.h"
#include "fix_nh.h"
namespace LAMMPS_NS {
class FixNHUef : public FixNH {
public:
FixNHUef(class LAMMPS *, int, char **);
virtual ~FixNHUef();
virtual int setmask();
virtual void init();
virtual void setup(int);
virtual void pre_exchange();
virtual int pack_restart_data(double*);
virtual void restart(char *);
virtual void end_of_step();
virtual void initial_integrate(int);
virtual void final_integrate();
virtual void initial_integrate_respa(int, int, int);
virtual void final_integrate_respa(int, int);
virtual void post_run();
void get_rot(double[3][3]);
void get_ext_flags(bool*);
void get_box(double[3][3]);
protected:
virtual void remap();
virtual int size_restart_global();
virtual void nve_x();
virtual void nve_v();
char **arg_kludge(int&, char**, int&);
void rotate_x(double [3][3]);
void inv_rotate_x(double[3][3]);
void rotate_v(double[3][3]);
void inv_rotate_v(double[3][3]);
void rotate_f(double[3][3]);
void inv_rotate_f(double[3][3]);
double strain[2],erate[2]; // strain/strain rate : [e_x, e_y]
// always assume traceless e_z = -e_x-e_y
int rem; //this is for the narg kluge
UEF_utils::UEFBox *uefbox; // interface for the special simulation box
double rot[3][3]; // rotation matrix
bool ext_flags[3]; // flags for external "free surfaces"
bool nearly_equal(double,double,double);
//bool rotate_output; // experimental feature. Too many issues for now
};
}
#endif
/* ERROR/WARNING messages:
This is a base class for FixNH so it will inherit most of its error/warning messages along with the following:
E: Illegal fix nvt/npt/uef command
Self-explanatory
E: Keyword erate must be set for fix nvt/npt/uef command
Self-explanatory.
E: Simulation box must be triclinic for fix/nvt/npt/uef
Self-explanatory.
E: Only normal stresses can be controlled with fix/nvt/npt/uef
The keywords xy xz and yz cannot be used for pressure control
E: The ext keyword may only be used with iso pressure control
Self-explanatory
E: All controlled stresses must have the same value in fix/nvt/npt/uef
Stress control is only possible when the stress specified for each dimension is the same
E: Dimensions with controlled stresses must have same strain rate in fix/nvt/npt/uef
Stress-controlled dimensions with the same strain rate must have the same target stress.
E: Can't use another fix which changes box shape with fix/nvt/npt/uef
The fix npt/nvt/uef command must have full control over the box shape. You cannot use a simultaneous fix deform command, for example.
E: Pressure ID for fix/nvt/uef doesn't exist
The compute pressure introduced via fix_modify does not exist
E: Using fix nvt/npt/uef without a compute pressure/uef
Self-explanatory.
E: Using fix nvt/npt/uef without a compute temp/uef
Self-explanatory.
E: Initial box is not close enough to the expected uef box
The initial box does not correspond to the shape required by the value of the strain keyword. If the default strain value of zero was used, the initial box is not cubic.
*/

Event Timeline