Running a metal-oxide surface simulation

Dear Lammps users,

I am planning to run MD simulations of metal-oxide surfaces in LAMMPS.

Is there a way to set up, for example, “a ZnO (1 0 1 0) surface” in the LAMMPS input script directly ?

Thanks for the answers in advance.

Nagesh

If its a perfect lattice (i.e a unit cell and basis atoms),
then you can use the lattice command, and fill a geometric
region with atoms on that lattice. If the region doesn't
fill the simulation box, then you have a free surface.

Steve

I'm trying to make a crystalmaker generator program, The program
should be able to generate FCC, BCC, and a custom lattice basis
structure, if the primitive lattice vectors and the positions of the
atoms (basis) are given. I have sucesfully created a BCC and FCC
structure. The algorithm is as follow ..1). Define the primitive
lattice vectos 2). Translatre the cell R = na1 + ma2 + la3 , where
n,m,l are integers, and 3). Create the conventional cell , and then
defining a cuting radious (look the source code below). I tried to
open Lammps source code "Lattice.cpp " , and reuse it as part of my
source code , but i have failed to grasp the idea behind creation of a
custum lattice structue. Can someone please explain me how lammps
creates a custum lattice ?

Thank you
Oscar Guerrero .

     // RCUT SECTION for BCC and FCC crystal structure only
     // create a spherical octant region around the cell box then cut atoms
     // creating paraleliped (put atoms inside conventional cell) use
1.3*radius cut is fine
    radius = sqrt(rcutx*rcutx + rcuty*rcuty + rcutz*rcutz);
      for (int i = 1; i <= 1.3*radius; i++){
       for (int j = 1; j <= 1.3*radius; j++){
        for (int k = 1; k <= 1.3*radius; k++){
         x = i*arg1[0] + j*arg2[0] + k*arg3[0];
         y = i*arg1[1] + j*arg2[1] + k*arg3[1];
         z = i*arg1[2] + j*arg2[2] + k*arg3[2];
     if( (x <= a*rcutx) && (x > 0) ){
     if( (y <= a*rcuty) && (y > 0) ){
     if( (z <= a*rcutz) && (z > 0) ){
         store.rx.push_back (x);
         store.ry.push_back (y);
         store.rz.push_back (z);
         total_atoms = total_atoms + 1 ;
      // the if conditional is used to ignore atoms are outside the
conventional cubic cell
       }}}}}}