AtC Package - Using to Model Tensile Rupture Along an Interface

Dear All,

We are attempting to use the LAMMPS AtC package to model quasi-static rupture along an interface of two materials. The proposed configuration is shown below.

The objective is to model the system mostly as a continuum domain, with a thin interfacial region modeled atomistically. The system will be loaded uniaxially, quasti-statically, until decohesion within the atomistic domain. The goal is to fully separate the two sides and compute the resulting work of adhesion.

We have spent the last two months becoming familiar with LAMMPS and the AtC package. We have run a number of examples in the “/examples/packages/atc” directory, particularly those in the “/elastic” sub-directory. From this, we have developed a working knowledge of how to build input files for these models.
One issue we have run into is that the AtC package is unable to create more than one finite element mesh in the same simulation. Therefore, in order to model our proposed system, we will need to mesh the entire domain with one mesh. This is fine, as long as the finite element solver “turns off” those elements in the purely atomistic interfacial region. However, based upon example “/atc/elastic/bar1d”, it appears that the mesh is still active and carries load in the atomistic region (see below). The model geometry is shown below, along with the FE force distribution in the x-direction at an intermediate simulation time.

The latter shows the presence of FE forces in the atomistic region, despite the fact that the

fix_modify atc boundary

command is used in the input file to, presumably, define the boundaries of the FE mesh. Is it possible to simulate our system using the AtC package?

If it is, one issue that we have run into with trying to model our system using ‘bar1d’ as a template is that we receive error messages whenever we try to change the material (i.e. lattice spacing, atomic mass, interatomic potential, elastic properties, and sometimes different unit system). For example, this simulation runs fine with the original example input files (see attached “Ar_real”). However, below is the error message we receive when changing these properties from Ar to Cu (see attached “Cu_real”).

DiagonalMatrix

In fact, an error also comes up when simply keeping the material as Ar but changing the units (and corresponding input parameter magnitudes (see attached “Ar_metal”).

NaN

Would anybody be able to assist us with these errors?

Finally, we have come across several online slideshows in the AtC package where the finite element mesh and atoms are both displayed in the same visualization software package (e.g., below).

DualVisualization

What package was used to do this? We have developed a working familiarity with Ensight and OVITO, and, to our knowledge, the former can only displace the finite element results and the latter can only display the atomistic results.

Any help with these questions would be appreciated. We can cite any individuals, projects, or publications on LAMMPS and the AtC package, should we eventually publish a paper on this work.

Best Regards,

Scott Julien, Ph.D.

Post-Doctoral Researcher
​Cold Spray Additive Manufacturing Lab
Mechanical & Industrial Engineering
Northeastern University
Boston, MA 02115

in.bar1d_Ar_real.lmp

needs description

atc Thermal Coupling
echo both

units real
atom_style atomic

create domain

lattice type reduced density rho* = 4*(sigma/a)^3, where N=4 for fcc, s = 3.405 A (Wagner) and a = 5.25 A (Ashcroft & Mermin, p. 70)
lattice fcc 5.405 origin 0.25 0.25 0.25

create atoms

region simRegion block -12 12 -3 3 -3 3
region atomRegion block -9 9 -3 3 -3 3
region mdRegion block -8 8 -3 3 -3 3
boundary f p p
create_box 1 simRegion
create_atoms 1 region mdRegion
mass 1 39.95

specify interal/ghost atoms

region mdInternal block -6 6 -3 3 -3 3
region leftghost block -8 -6 -3 3 -3 3
region rightghost block 6 8 -3 3 -3 3
group internal region mdInternal
group Lghost region leftghost
group Rghost region rightghost
group ghosts union Lghost Rghost

velocities have Vcm = 0

#velocity internal create 40. 87287 mom yes loop geom

pair_style lj/cut 13.5
#pair_coeff 1 1 0.010323166 3.405 13.5
pair_coeff 1 1 .238 3.405 13.5

neighbor 5. bin
neigh_modify every 10 delay 0 check no

define layer

ID group atc PhysicsType ParameterFile

fix AtC internal atc elastic Ar_elastic_real.mat

ID part keywords nx ny nz region

fix_modify AtC mesh create 12 1 1 simRegion f p p

initial conditions

fix_modify AtC initial displacement x all 0.0
fix_modify AtC initial displacement y all 0.0
fix_modify AtC initial displacement z all 0.0
fix_modify AtC initial velocity x all 0.0
fix_modify AtC initial velocity y all 0.0
fix_modify AtC initial velocity z all 0.0

set node sets and bcs

ID mesh create_nodeset tag xmin xmax ymin ymax zmin zmax

fix_modify AtC mesh create_nodeset lbc -12.1 -11.9 -INF INF -INF INF
fix_modify AtC mesh create_nodeset rbc 11.9 12.1 -INF INF -INF INF
fix_modify AtC fix velocity x rbc 0.00000004
fix_modify AtC fix displacement x lbc 0.
fix_modify AtC fix velocity x lbc 0.

specify atom types

#fix_modify AtC boundary Lghost
#fix_modify AtC boundary Rghost
fix_modify AtC boundary ghosts

#fix_modify AtC output follow_ex.fe 50
fix_modify AtC internal_quadrature off
fix_modify AtC control localized_lambda on
fix_modify AtC control momentum glc_velocity
fix_modify AtC filter type exponential
fix_modify AtC filter scale 1000.0
fix_modify AtC filter on

run to extension

#fix_modify AtC output bar1dFE 50 text
timestep 5
thermo 100
run 1000

change nodes to fixed

fix_modify AtC fix velocity x rbc 0.
fix_modify AtC fix displacement x rbc 0.0002

fix_modify AtC output bar1dFE 500 text

run to equilibrium

timestep 5
thermo 100
run 10000

Ar_elastic_real.mat

material Ar real
stress linear
modulus 0.00025
possions_ratio 0.25
end
mass_density
body_force
end

in.bar1d_Cu_real.lmp

needs description

atc Thermal Coupling
echo both

units real
atom_style atomic

create domain

lattice type reduced density rho* = 4*(sigma/a)^3, where N=4 for fcc, s = 3.405 A (Wagner) and a = 5.25 A (Ashcroft & Mermin, p. 70)
lattice fcc 3.615 origin 0.25 0.25 0.25

create atoms

region simRegion block -12 12 -3 3 -3 3
region atomRegion block -9 9 -3 3 -3 3
region mdRegion block -8 8 -3 3 -3 3
boundary f p p
create_box 1 simRegion
create_atoms 1 region mdRegion
mass 1 63.550

specify interal/ghost atoms

region mdInternal block -6 6 -3 3 -3 3
region leftghost block -8 -6 -3 3 -3 3
region rightghost block 6 8 -3 3 -3 3
group internal region mdInternal
group Lghost region leftghost
group Rghost region rightghost
group ghosts union Lghost Rghost

velocities have Vcm = 0

#velocity internal create 40. 87287 mom yes loop geom

pair_style lj/cut 5.5068 #(Cu)
pair_coeff 1 1 4.722 2.330 #(Cu, real)

pair_style lj/cut 13.5 #(Ar)

pair_coeff 1 1 0.010323166 3.405 13.5 #(Ar, metal)

pair_coeff 1 1 .238 3.405 13.5 #(Ar, real)

neighbor 5. bin
neigh_modify every 10 delay 0 check no

define layer

ID group atc PhysicsType ParameterFile

fix AtC internal atc elastic Cu_elastic_real.mat

ID part keywords nx ny nz region

fix_modify AtC mesh create 12 1 1 simRegion f p p

initial conditions

fix_modify AtC initial displacement x all 0.0
fix_modify AtC initial displacement y all 0.0
fix_modify AtC initial displacement z all 0.0
fix_modify AtC initial velocity x all 0.0
fix_modify AtC initial velocity y all 0.0
fix_modify AtC initial velocity z all 0.0

set node sets and bcs

ID mesh create_nodeset tag xmin xmax ymin ymax zmin zmax

fix_modify AtC mesh create_nodeset lbc -12.1 -11.9 -INF INF -INF INF
fix_modify AtC mesh create_nodeset rbc 11.9 12.1 -INF INF -INF INF
fix_modify AtC fix velocity x rbc 0.00000004
fix_modify AtC fix displacement x lbc 0.
fix_modify AtC fix velocity x lbc 0.

specify atom types

#fix_modify AtC boundary Lghost
#fix_modify AtC boundary Rghost
fix_modify AtC boundary ghosts

#fix_modify AtC output follow_ex.fe 50
fix_modify AtC internal_quadrature off
fix_modify AtC control localized_lambda on
fix_modify AtC control momentum glc_velocity
fix_modify AtC filter type exponential
fix_modify AtC filter scale 1000.0
fix_modify AtC filter on

run to extension

#fix_modify AtC output bar1dFE 50 text
timestep 5
thermo 100
run 1000

change nodes to fixed

fix_modify AtC fix velocity x rbc 0.
fix_modify AtC fix displacement x rbc 0.0002

fix_modify AtC output bar1dFE 500 text

run to equilibrium

timestep 5
thermo 100
run 10000

Cu_elastic_real.mat

material Cu real
stress linear
modulus 17.27
possions_ratio 0.34
end
mass_density
body_force
end

in.bar1d_Ar_metal.lmp

needs description

atc Thermal Coupling
echo both

units metal
atom_style atomic

create domain

lattice type reduced density rho* = 4*(sigma/a)^3, where N=4 for fcc, s = 3.405 A (Wagner) and a = 5.25 A (Ashcroft & Mermin, p. 70)
lattice fcc 5.405 origin 0.25 0.25 0.25

create atoms

region simRegion block -12 12 -3 3 -3 3
region atomRegion block -9 9 -3 3 -3 3
region mdRegion block -8 8 -3 3 -3 3
boundary f p p
create_box 1 simRegion
create_atoms 1 region mdRegion
mass 1 39.95

specify interal/ghost atoms

region mdInternal block -6 6 -3 3 -3 3
region leftghost block -8 -6 -3 3 -3 3
region rightghost block 6 8 -3 3 -3 3
group internal region mdInternal
group Lghost region leftghost
group Rghost region rightghost
group ghosts union Lghost Rghost

velocities have Vcm = 0

#velocity internal create 40. 87287 mom yes loop geom

pair_style lj/cut 13.5
pair_coeff 1 1 0.010323166 3.405 13.5
#pair_coeff 1 1 .238 3.405 13.5

neighbor 5. bin
neigh_modify every 10 delay 0 check no

define layer

ID group atc PhysicsType ParameterFile

fix AtC internal atc elastic Ar_elastic_metal.mat

ID part keywords nx ny nz region

fix_modify AtC mesh create 12 1 1 simRegion f p p

initial conditions

fix_modify AtC initial displacement x all 0.0
fix_modify AtC initial displacement y all 0.0
fix_modify AtC initial displacement z all 0.0
fix_modify AtC initial velocity x all 0.0
fix_modify AtC initial velocity y all 0.0
fix_modify AtC initial velocity z all 0.0

set node sets and bcs

ID mesh create_nodeset tag xmin xmax ymin ymax zmin zmax

fix_modify AtC mesh create_nodeset lbc -12.1 -11.9 -INF INF -INF INF
fix_modify AtC mesh create_nodeset rbc 11.9 12.1 -INF INF -INF INF
fix_modify AtC fix velocity x rbc 0.00000004
fix_modify AtC fix displacement x lbc 0.
fix_modify AtC fix velocity x lbc 0.

specify atom types

#fix_modify AtC boundary Lghost
#fix_modify AtC boundary Rghost
fix_modify AtC boundary ghosts

#fix_modify AtC output follow_ex.fe 50
fix_modify AtC internal_quadrature off
fix_modify AtC control localized_lambda on
fix_modify AtC control momentum glc_velocity
fix_modify AtC filter type exponential
fix_modify AtC filter scale 1000.0
fix_modify AtC filter on

run to extension

#fix_modify AtC output bar1dFE 50 text
timestep 5
thermo 100
run 1000

change nodes to fixed

fix_modify AtC fix velocity x rbc 0.
fix_modify AtC fix displacement x rbc 0.0002

fix_modify AtC output bar1dFE 500 text

run to equilibrium

timestep 5
thermo 100
run 10000

Ar_elastic_metal.mat

material Ar metal
stress linear
modulus 10.84e-06
possions_ratio 0.25
end
mass_density
body_force
end

Please note that the AtC package has been unmaintained for quite some time, since the project(s) funding its development have ended and the developers have moved on to other projects. So there is very little help that can be provided, especially on implementation and functionality specific details. The core LAMMPS developers can only keep the code so that it compiles and conforms to programming standards and fix bugs with obvious bug fixes.

My recommendation would be try and form an “AtC package self-help” group where people that use the AtC package can exchange their thoughts and help each other. For specific questions (like the ones you posted here). You might reach out to the AtC developers and hope that some of them are still reachable under the email addresses in the docs (otherwise Google Scholar seems like a good way to track down current contact info of active scientists) and willing to provide assistance. Chances are slim though, since they won’t have looked at that code in a long time.

Great, thank you, Axel. (We “met” on a Zoom call, a few months ago.) I’ll give those options some thought and see what might be the best path forward. There’s also another atomistic-to-continuum package called LibMultiScale that is still actively maintained (or was, at least, last updated within the past two years). If the LAMMPS AtC package ends up not working out, I may go that route.

Many Thanks,

Scott Julien