forked from lijiext/lammps
Merge branch 'develop' into fix-srd-doc-page
This commit is contained in:
commit
4aedba058c
|
@ -135,6 +135,7 @@ src/timer.* @akohlmey
|
|||
src/utils.* @akohlmey @rbberger
|
||||
src/verlet.* @sjplimp @stanmoore1
|
||||
src/math_eigen_impl.h @jewettaij
|
||||
src/fix_press_langevin.* @Bibobu
|
||||
|
||||
# tools
|
||||
tools/coding_standard/* @akohlmey @rbberger
|
||||
|
|
|
@ -1183,7 +1183,7 @@ table:
|
|||
+--------+------------+------------------------------------------+
|
||||
| vector | c_ID | global vector |
|
||||
| vector | c_ID[I] | column of global array |
|
||||
---------+------------+------------------------------------------+
|
||||
+--------+------------+------------------------------------------+
|
||||
| atom | c_ID | per-atom vector |
|
||||
| atom | c_ID[I] | column of per-atom array |
|
||||
+--------+------------+------------------------------------------+
|
||||
|
@ -1247,7 +1247,7 @@ and atom-style variables are listed in the following table:
|
|||
+--------+------------+------------------------------------------+
|
||||
| vector | f_ID | global vector |
|
||||
| vector | f_ID[I] | column of global array |
|
||||
---------+------------+------------------------------------------+
|
||||
+--------+------------+------------------------------------------+
|
||||
| atom | f_ID | per-atom vector |
|
||||
| atom | f_ID[I] | column of per-atom array |
|
||||
+--------+------------+------------------------------------------+
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
static constexpr char special_chars[] = "{}[],&:*#?|-<>=!%@\\";
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
DumpYAML::DumpYAML(class LAMMPS *_lmp, int narg, char **args) :
|
||||
DumpCustom(_lmp, narg, args), thermo(false)
|
||||
|
@ -67,7 +69,12 @@ void DumpYAML::write_header(bigint ndump)
|
|||
const auto &fields = th->get_fields();
|
||||
|
||||
thermo_data += "thermo:\n - keywords: [ ";
|
||||
for (int i = 0; i < nfield; ++i) thermo_data += fmt::format("{}, ", keywords[i]);
|
||||
for (int i = 0; i < nfield; ++i) {
|
||||
if (keywords[i].find_first_of(special_chars) == std::string::npos)
|
||||
thermo_data += fmt::format("{}, ", keywords[i]);
|
||||
else
|
||||
thermo_data += fmt::format("'{}', ", keywords[i]);
|
||||
}
|
||||
thermo_data += "]\n - data: [ ";
|
||||
|
||||
for (int i = 0; i < nfield; ++i) {
|
||||
|
@ -107,7 +114,12 @@ void DumpYAML::write_header(bigint ndump)
|
|||
if (domain->triclinic) fmt::print(fp, " - [ {}, {}, {} ]\n", boxxy, boxxz, boxyz);
|
||||
|
||||
fmt::print(fp, "keywords: [ ");
|
||||
for (const auto &item : utils::split_words(columns)) fmt::print(fp, "{}, ", item);
|
||||
for (const auto &item : utils::split_words(columns)) {
|
||||
if (item.find_first_of(special_chars) == std::string::npos)
|
||||
fmt::print(fp, "{}, ", item);
|
||||
else
|
||||
fmt::print(fp, "'{}', ", item);
|
||||
}
|
||||
fputs(" ]\ndata:\n", fp);
|
||||
} else // reset so that the remainder of the output is not multi-proc
|
||||
filewriter = 0;
|
||||
|
|
|
@ -59,6 +59,9 @@ void MinKokkos::init()
|
|||
{
|
||||
Min::init();
|
||||
|
||||
if (!fix_minimize->kokkosable)
|
||||
error->all(FLERR,"KOKKOS package requires fix minimize/kk");
|
||||
|
||||
fix_minimize_kk = (FixMinimizeKokkos*) fix_minimize;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
// Trim off
|
||||
|
||||
// Newton, no triclinic
|
||||
// Newton, no triclinic
|
||||
|
||||
typedef NPairHalffullKokkos<LMPDeviceType,1,0,0> NPairKokkosHalffullNewtonDevice;
|
||||
NPairStyle(halffull/newton/kk/device,
|
||||
|
|
|
@ -1354,7 +1354,7 @@ void NeighborKokkosExecute<DeviceType>::build_ItemSizeGPU(typename Kokkos::TeamP
|
|||
other_x[MY_II + 2 * atoms_per_bin] = ztmp;
|
||||
other_x[MY_II + 3 * atoms_per_bin] = itype;
|
||||
other_x[MY_II + 4 * atoms_per_bin] = radi;
|
||||
if (HalfNeigh && Newton && Tri) {
|
||||
if (HalfNeigh && Newton && Tri) {
|
||||
itag = tag(i);
|
||||
other_x[MY_II + 5 * atoms_per_bin] = itag;
|
||||
}
|
||||
|
|
|
@ -63,10 +63,6 @@ PairSNAPKokkos<DeviceType, real_type, vector_length>::PairSNAPKokkos(LAMMPS *lmp
|
|||
datamask_read = EMPTY_MASK;
|
||||
datamask_modify = EMPTY_MASK;
|
||||
|
||||
k_cutsq = tdual_fparams("PairSNAPKokkos::cutsq",atom->ntypes+1,atom->ntypes+1);
|
||||
auto d_cutsq = k_cutsq.template view<DeviceType>();
|
||||
rnd_cutsq = d_cutsq;
|
||||
|
||||
host_flag = (execution_space == Host);
|
||||
}
|
||||
|
||||
|
@ -546,6 +542,9 @@ void PairSNAPKokkos<DeviceType, real_type, vector_length>::allocate()
|
|||
|
||||
int n = atom->ntypes;
|
||||
MemKK::realloc_kokkos(d_map,"PairSNAPKokkos::map",n+1);
|
||||
|
||||
MemKK::realloc_kokkos(k_cutsq,"PairSNAPKokkos::cutsq",n+1,n+1);
|
||||
rnd_cutsq = k_cutsq.template view<DeviceType>();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ void NPairHalfSizeMultiOldNewtonTriOmp::build(NeighList *list)
|
|||
n = 0;
|
||||
neighptr = ipage.vget();
|
||||
|
||||
itag = tag[i];
|
||||
itype = type[i];
|
||||
xtmp = x[i][0];
|
||||
ytmp = x[i][1];
|
||||
|
|
|
@ -473,7 +473,7 @@ void Balance::options(int iarg, int narg, char **arg, int sortflag_default)
|
|||
}
|
||||
iarg += 2+nopt;
|
||||
|
||||
} else if (strcmp(arg[iarg+1],"sort") == 0) {
|
||||
} else if (strcmp(arg[iarg],"sort") == 0) {
|
||||
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "balance sort", error);
|
||||
sortflag = utils::logical(FLERR,arg[iarg+1],false,lmp);
|
||||
iarg += 2;
|
||||
|
|
|
@ -46,7 +46,8 @@ enum { ISO, ANISO, TRICLINIC };
|
|||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) :
|
||||
Fix(lmp, narg, arg), id_press(nullptr), pflag(0), random(nullptr), irregular(nullptr)
|
||||
Fix(lmp, narg, arg), id_temp(nullptr), id_press(nullptr), temperature(nullptr),
|
||||
pressure(nullptr), irregular(nullptr), random(nullptr)
|
||||
{
|
||||
if (narg < 5) utils::missing_cmd_args(FLERR, "fix press/langevin", error);
|
||||
|
||||
|
@ -62,6 +63,9 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) :
|
|||
allremap = 1;
|
||||
pre_exchange_flag = 0;
|
||||
flipflag = 1;
|
||||
seed = 111111;
|
||||
pflag = 0;
|
||||
kspace_flag = 0;
|
||||
|
||||
p_ltime = 0.0;
|
||||
|
||||
|
@ -239,7 +243,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) :
|
|||
t_start = utils::numeric(FLERR, arg[iarg + 1], false, lmp);
|
||||
t_stop = utils::numeric(FLERR, arg[iarg + 2], false, lmp);
|
||||
seed = utils::numeric(FLERR, arg[iarg + 3], false, lmp);
|
||||
if (seed <= 0.0) error->all(FLERR, "Fix press/langevin temp seed must be > 0");
|
||||
if (seed <= 0) error->all(FLERR, "Fix press/langevin temp seed must be > 0");
|
||||
iarg += 4;
|
||||
}
|
||||
|
||||
|
@ -349,7 +353,7 @@ FixPressLangevin::FixPressLangevin(LAMMPS *lmp, int narg, char **arg) :
|
|||
// Kinetic contribution will be added by the fix style
|
||||
|
||||
id_press = utils::strdup(std::string(id) + "_press");
|
||||
modify->add_compute(fmt::format("{} all pressure NULL virial", id_press));
|
||||
pressure = modify->add_compute(fmt::format("{} all pressure NULL virial", id_press));
|
||||
pflag = 1;
|
||||
|
||||
// p_fric is alpha coeff from GJF
|
||||
|
@ -482,7 +486,7 @@ void FixPressLangevin::initial_integrate(int /* vflag */)
|
|||
|
||||
if (delta != 0.0) delta /= update->endstep - update->beginstep;
|
||||
t_target = t_start + delta * (t_stop - t_start);
|
||||
couple_beta(t_target);
|
||||
couple_beta();
|
||||
|
||||
dt = update->dt;
|
||||
|
||||
|
@ -492,11 +496,12 @@ void FixPressLangevin::initial_integrate(int /* vflag */)
|
|||
displacement = dt * p_deriv[i] * gjfb[i];
|
||||
displacement += 0.5 * dt * dt * f_piston[i] * gjfb[i] / p_mass[i];
|
||||
displacement += 0.5 * dt * fran[i] * gjfb[i] / p_mass[i];
|
||||
dl = domain->boxhi[i] - domain->boxlo[i];
|
||||
if (i < 3)
|
||||
if (i < 3) {
|
||||
dl = domain->boxhi[i] - domain->boxlo[i];
|
||||
dilation[i] = (dl + displacement) / dl;
|
||||
else
|
||||
} else {
|
||||
dilation[i] = displacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -527,7 +532,7 @@ void FixPressLangevin::post_force(int /*vflag*/)
|
|||
}
|
||||
|
||||
couple_pressure();
|
||||
couple_kinetic(t_target);
|
||||
couple_kinetic();
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
if (p_flag[i]) {
|
||||
|
@ -594,10 +599,9 @@ void FixPressLangevin::couple_pressure()
|
|||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixPressLangevin::couple_kinetic(double t_target)
|
||||
void FixPressLangevin::couple_kinetic()
|
||||
{
|
||||
double pk, volume;
|
||||
nktv2p = force->nktv2p;
|
||||
|
||||
// kinetic part
|
||||
|
||||
|
@ -607,7 +611,7 @@ void FixPressLangevin::couple_kinetic(double t_target)
|
|||
volume = domain->xprd * domain->yprd;
|
||||
|
||||
pk = atom->natoms * force->boltz * t_target / volume;
|
||||
pk *= nktv2p;
|
||||
pk *= force->nktv2p;
|
||||
|
||||
p_current[0] += pk;
|
||||
p_current[1] += pk;
|
||||
|
@ -616,7 +620,7 @@ void FixPressLangevin::couple_kinetic(double t_target)
|
|||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixPressLangevin::couple_beta(double t_target)
|
||||
void FixPressLangevin::couple_beta()
|
||||
{
|
||||
double gamma[6];
|
||||
int me = comm->me;
|
||||
|
@ -812,7 +816,7 @@ int FixPressLangevin::modify_param(int narg, char **arg)
|
|||
id_press = utils::strdup(arg[1]);
|
||||
|
||||
pressure = modify->get_compute_by_id(arg[1]);
|
||||
if (pressure) error->all(FLERR, "Could not find fix_modify pressure compute ID: {}", arg[1]);
|
||||
if (!pressure) error->all(FLERR, "Could not find fix_modify pressure compute ID: {}", arg[1]);
|
||||
if (pressure->pressflag == 0)
|
||||
error->all(FLERR, "Fix_modify pressure compute {} does not compute pressure", arg[1]);
|
||||
return 2;
|
||||
|
|
|
@ -40,10 +40,9 @@ class FixPressLangevin : public Fix {
|
|||
int modify_param(int, char **) override;
|
||||
|
||||
protected:
|
||||
int dimension, which;
|
||||
int dimension;
|
||||
int pstyle, pcouple, allremap;
|
||||
int p_flag[6]; // 1 if control P on this dim, 0 if not
|
||||
double nktv2p;
|
||||
double t_start, t_stop, t_target;
|
||||
double p_fric[6], p_ltime; // Friction and Langevin charac. time
|
||||
double p_alpha[6];
|
||||
|
@ -68,8 +67,8 @@ class FixPressLangevin : public Fix {
|
|||
int seed;
|
||||
|
||||
void couple_pressure();
|
||||
void couple_kinetic(double);
|
||||
void couple_beta(double);
|
||||
void couple_kinetic();
|
||||
void couple_beta();
|
||||
void remap();
|
||||
};
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) :
|
|||
rmass_flag = 0;
|
||||
temperature_flag = 0;
|
||||
heatflow_flag = 0;
|
||||
nmax_old = 0;
|
||||
|
||||
nvalue = 0;
|
||||
values_peratom = 0;
|
||||
|
@ -212,7 +213,6 @@ void FixPropertyAtom::post_constructor()
|
|||
{
|
||||
// perform initial allocation of atom-based array
|
||||
|
||||
nmax_old = 0;
|
||||
grow_arrays(atom->nmax);
|
||||
}
|
||||
|
||||
|
|
|
@ -215,6 +215,9 @@ void Min::setup(int flag)
|
|||
}
|
||||
update->setupflag = 1;
|
||||
|
||||
if (lmp->kokkos)
|
||||
error->all(FLERR,"KOKKOS package requires Kokkos-enabled min_style");
|
||||
|
||||
// setup extra global dof due to fixes
|
||||
// cannot be done in init() b/c update init() is before modify init()
|
||||
|
||||
|
|
|
@ -110,14 +110,15 @@ endif()
|
|||
|
||||
# we require Qt 5 and at least version 5.12 at that.
|
||||
if(NOT LAMMPS_GUI_USE_QT5)
|
||||
find_package(Qt6 6.2 COMPONENTS Widgets Charts)
|
||||
find_package(Qt6 6.2 QUIET COMPONENTS Widgets Charts)
|
||||
endif()
|
||||
if(NOT Qt6_FOUND)
|
||||
find_package(Qt5 5.12 REQUIRED COMPONENTS Widgets Charts)
|
||||
set(QT_VERSION_MAJOR "5")
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR "6")
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
endif()
|
||||
message(STATUS "Using Qt version ${Qt${QT_VERSION_MAJOR}_VERSION} for LAMMPS GUI")
|
||||
|
||||
set(PROJECT_SOURCES
|
||||
main.cpp
|
||||
|
@ -188,7 +189,7 @@ else()
|
|||
endif()
|
||||
target_include_directories(lammps-gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_compile_definitions(lammps-gui PRIVATE LAMMPS_GUI_VERSION="${PROJECT_VERSION}")
|
||||
target_link_libraries(lammps-gui PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${VERSION_MAJOR}::Charts)
|
||||
target_link_libraries(lammps-gui PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Charts)
|
||||
if(BUILD_OMP)
|
||||
find_package(OpenMP COMPONENTS CXX REQUIRED)
|
||||
target_link_libraries(lammps-gui PRIVATE OpenMP::OpenMP_CXX)
|
||||
|
|
|
@ -1432,12 +1432,12 @@ void LammpsGui::start_lammps()
|
|||
lammps.open(narg, args);
|
||||
lammpsstatus->show();
|
||||
|
||||
// must have at least 2 August 2023 version of LAMMPS
|
||||
// must have a version newer than the 2 August 2023 release of LAMMPS
|
||||
// TODO: must update this check before next feature release
|
||||
if (lammps.version() < 20230802) {
|
||||
if (lammps.version() <= 20230802) {
|
||||
QMessageBox::critical(this, "Incompatible LAMMPS Version",
|
||||
"LAMMPS-GUI version " LAMMPS_GUI_VERSION " requires\n"
|
||||
"LAMMPS version 2 August 2023 or later");
|
||||
"a LAMMPS version more recent than 2 August 2023");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue