Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
lammps
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
multiscale
lammps
Commits
937d4707
Commit
937d4707
authored
6 years ago
by
Steven J. Plimpton
Browse files
Options
Downloads
Patches
Plain Diff
proposed SJP changes for 2nd cutoff_triple
parent
4d75d2d6
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
doc/src/pair_atm.txt
+12
-5
12 additions, 5 deletions
doc/src/pair_atm.txt
src/MANYBODY/pair_atm.cpp
+22
-2
22 additions, 2 deletions
src/MANYBODY/pair_atm.cpp
src/MANYBODY/pair_atm.h
+2
-1
2 additions, 1 deletion
src/MANYBODY/pair_atm.h
with
36 additions
and
8 deletions
doc/src/pair_atm.txt
+
12
−
5
View file @
937d4707
...
@@ -10,16 +10,20 @@ pair_style atm command :h3
...
@@ -10,16 +10,20 @@ pair_style atm command :h3
[Syntax:]
[Syntax:]
pair_style atm cutoff :pre
SJP: add an arg
cutoff = global cutoff for 3-body interactions (distance units) :ul
pair_style atm cutoff cutoff_triple :pre
cutoff = cutoff for each pair in 3-body interaction (distance units)
cutoff_triple = additional cutoff applied to product of 3 pairwise distances (distance units) :ul
[Examples:]
[Examples:]
pair_style atm 2.5
SJP: is 1.5 a good value?
pair_style atm 2.5 1.5
pair_coeff * * * 0.072 :pre
pair_coeff * * * 0.072 :pre
pair_style hybrid/overlay lj/cut 6.5 atm 2.5
pair_style hybrid/overlay lj/cut 6.5 atm 2.5
1.5
pair_coeff * * lj/cut 1.0 1.0
pair_coeff * * lj/cut 1.0 1.0
pair_coeff 1 1 atm 1 0.064
pair_coeff 1 1 atm 1 0.064
pair_coeff 1 1 atm 2 0.080
pair_coeff 1 1 atm 2 0.080
...
@@ -50,7 +54,10 @@ potential using the "pair_style hybrid/overlay"_pair_hybrid.html
...
@@ -50,7 +54,10 @@ potential using the "pair_style hybrid/overlay"_pair_hybrid.html
command as in the example above.
command as in the example above.
The potential for a triplet of atom is calculated only if all 3
The potential for a triplet of atom is calculated only if all 3
distances r12, r23, r31 between the 3 atoms satisfy rIJ < cutoff
distances r12, r23, r31 between the 3 atoms satisfy rIJ < cutoff.
SJP: In addition, the product of the 3 distances r12*r23*r31 <
cutoff_triple^3 is required, which limits the contribution of the
potential to ???
The following coefficients must be defined for each pair of atoms
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
types via the "pair_coeff"_pair_coeff.html command as in the examples
...
...
This diff is collapsed.
Click to expand it.
src/MANYBODY/pair_atm.cpp
+
22
−
2
View file @
937d4707
...
@@ -92,6 +92,10 @@ void PairATM::compute(int eflag, int vflag)
...
@@ -92,6 +92,10 @@ void PairATM::compute(int eflag, int vflag)
int
*
type
=
atom
->
type
;
int
*
type
=
atom
->
type
;
double
cutoff_squared
=
cut_global
*
cut_global
;
double
cutoff_squared
=
cut_global
*
cut_global
;
// SJP: new cutoff
double
triple
=
cut_triple
*
cut_triple
*
cut_triple
;
double
cutoff_triple_sixth
=
triple
*
triple
;
inum
=
list
->
inum
;
inum
=
list
->
inum
;
ilist
=
list
->
ilist
;
ilist
=
list
->
ilist
;
numneigh
=
list
->
numneigh
;
numneigh
=
list
->
numneigh
;
...
@@ -138,6 +142,10 @@ void PairATM::compute(int eflag, int vflag)
...
@@ -138,6 +142,10 @@ void PairATM::compute(int eflag, int vflag)
rik2
=
rik
[
0
]
*
rik
[
0
]
+
rik
[
1
]
*
rik
[
1
]
+
rik
[
2
]
*
rik
[
2
];
rik2
=
rik
[
0
]
*
rik
[
0
]
+
rik
[
1
]
*
rik
[
1
]
+
rik
[
2
]
*
rik
[
2
];
if
(
rik2
>
cutoff_squared
)
continue
;
if
(
rik2
>
cutoff_squared
)
continue
;
// SJP: add this line?
if
(
rij2
*
rjk2
*
rik2
>
cutoff_triple_sixth
)
continue
;
nu_local
=
nu
[
type
[
i
]][
type
[
j
]][
type
[
k
]];
nu_local
=
nu
[
type
[
i
]][
type
[
j
]][
type
[
k
]];
if
(
nu_local
==
0.0
)
continue
;
if
(
nu_local
==
0.0
)
continue
;
...
@@ -192,9 +200,14 @@ void PairATM::allocate()
...
@@ -192,9 +200,14 @@ void PairATM::allocate()
void
PairATM
::
settings
(
int
narg
,
char
**
arg
)
void
PairATM
::
settings
(
int
narg
,
char
**
arg
)
{
{
if
(
narg
!=
1
)
error
->
all
(
FLERR
,
"Illegal pair_style command"
);
// SJP: change to 2 args, require triple <= global
if
(
narg
!=
2
)
error
->
all
(
FLERR
,
"Illegal pair_style command"
);
cut_global
=
force
->
numeric
(
FLERR
,
arg
[
0
]);
cut_global
=
force
->
numeric
(
FLERR
,
arg
[
0
]);
cut_triple
=
force
->
numeric
(
FLERR
,
arg
[
1
]);
if
(
cut_triple
>
cut_global
)
error
->
all
(
FLERR
,
"Illegal pair_style command"
);
}
}
/* ----------------------------------------------------------------------
/* ----------------------------------------------------------------------
...
@@ -311,6 +324,8 @@ void PairATM::read_restart(FILE *fp)
...
@@ -311,6 +324,8 @@ void PairATM::read_restart(FILE *fp)
void
PairATM
::
write_restart_settings
(
FILE
*
fp
)
void
PairATM
::
write_restart_settings
(
FILE
*
fp
)
{
{
fwrite
(
&
cut_global
,
sizeof
(
double
),
1
,
fp
);
fwrite
(
&
cut_global
,
sizeof
(
double
),
1
,
fp
);
// SJP: 2nd arg
fwrite
(
&
cut_triple
,
sizeof
(
double
),
1
,
fp
);
}
}
/* ----------------------------------------------------------------------
/* ----------------------------------------------------------------------
...
@@ -319,9 +334,14 @@ void PairATM::write_restart_settings(FILE *fp)
...
@@ -319,9 +334,14 @@ void PairATM::write_restart_settings(FILE *fp)
void
PairATM
::
read_restart_settings
(
FILE
*
fp
)
void
PairATM
::
read_restart_settings
(
FILE
*
fp
)
{
{
// SJP: 2nd arg
int
me
=
comm
->
me
;
int
me
=
comm
->
me
;
if
(
me
==
0
)
fread
(
&
cut_global
,
sizeof
(
double
),
1
,
fp
);
if
(
me
==
0
)
{
fread
(
&
cut_global
,
sizeof
(
double
),
1
,
fp
);
fread
(
&
cut_triple
,
sizeof
(
double
),
1
,
fp
);
}
MPI_Bcast
(
&
cut_global
,
1
,
MPI_DOUBLE
,
0
,
world
);
MPI_Bcast
(
&
cut_global
,
1
,
MPI_DOUBLE
,
0
,
world
);
MPI_Bcast
(
&
cut_triple
,
1
,
MPI_DOUBLE
,
0
,
world
);
}
}
/* ----------------------------------------------------------------------
/* ----------------------------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
src/MANYBODY/pair_atm.h
+
2
−
1
View file @
937d4707
...
@@ -39,7 +39,8 @@ class PairATM : public Pair {
...
@@ -39,7 +39,8 @@ class PairATM : public Pair {
void
read_restart_settings
(
FILE
*
);
void
read_restart_settings
(
FILE
*
);
protected:
protected:
double
cut_global
,
cutoff_squared
;
// SJP: add 2nd cutoff
double
cut_global
,
cut_triple
;
double
***
nu
;
double
***
nu
;
void
allocate
();
void
allocate
();
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment