|
LCC
1. 0. 0.
Crystal cutting code
|
Module to hold routines for handling the lattice and lattice base. More...
Functions/Subroutines | |
| subroutine, public | lcc_make_lattice (bld, ltt, check, sy) |
| Make a lattice depending on the input parameter. More... | |
| subroutine | lcc_read_base (bld, ltt, check, verbose) |
| Reading the basis from an input file. More... | |
| subroutine | lcc_check_basis (base_format, r_base, lattice_vectors, verbose) |
| Routine to check for atom repetitions in basis \bnrief It will do all possible translations searching for atoms that could be repeated. More... | |
| subroutine | lcc_add_base_to_cluster (ltt, sy, verbose) |
| Add a basis to the lattice. More... | |
| subroutine | lcc_sc (Nx1, Nx2, Ny1, Ny2, Nz1, Nz2, h_lattice_a, supra_lattice_vectors, r_sy) |
| Simple cubic (SC) lattice construction. More... | |
| subroutine | lcc_fcc (Nx1, Nx2, Ny1, Ny2, Nz1, Nz2, h_lattice_a, supra_lattice_vectors, r_sy, verbose) |
| Face center cubic (FCC) lattice construction. More... | |
| subroutine | lcc_triclinic (Nx1, Nx2, Ny1, Ny2, Nz1, Nz2, lattice_vectors, supra_lattice_vectors, r_sy, verbose) |
| Triclinic lattice construction. More... | |
| subroutine, public | lcc_set_atom_type (a_type, atom_symbol, atom_name, nats) |
| Sets the atom type. More... | |
| subroutine | lcc_add_randomness (r_inout, lattice_vectors, seed, rcoeff) |
| Will add randomness to the system. More... | |
| subroutine | lcc_minimize_from (xVar, i, ai, nats, trs, verbose) |
| To get the best translation that minimizes the distance to any previous fragment. More... | |
| subroutine | lcc_get_besttranslations (nop, nats, r_inout, verbose) |
| To get the best translation that minimizes the distance to any previous fragment. More... | |
Module to hold routines for handling the lattice and lattice base.
| subroutine lcc_lattice_mod::lcc_add_base_to_cluster | ( | type(lattice_type) | ltt, |
| type(system_type), intent(inout) | sy, | ||
| integer, intent(in) | verbose | ||
| ) |
Add a basis to the lattice.
This routine will add the basis to the system points previously cut from the lattice. This is the last step of the solid/shape/slab creation.
| ltt | lattice_type See lcc_structs_mod |
| sy | system_type See progress library |
| subroutine lcc_lattice_mod::lcc_add_randomness | ( | real(dp), dimension(:,:), intent(inout), allocatable | r_inout, |
| real(dp), dimension(:,:), intent(in), allocatable | lattice_vectors, | ||
| integer, intent(in) | seed, | ||
| real(dp), intent(in) | rcoeff | ||
| ) |
Will add randomness to the system.
| r_inout | System coordinates. |
| lattice_vectors | Lattice vectors. |
| seed | Random seed. rcoeff Coefficient for randomness. |
| subroutine lcc_lattice_mod::lcc_check_basis | ( | character(len=*), intent(in) | base_format, |
| real(dp), dimension(:,:), intent(in), allocatable | r_base, | ||
| real(dp), dimension(:,:), intent(in), allocatable | lattice_vectors, | ||
| integer, intent(in) | verbose | ||
| ) |
Routine to check for atom repetitions in basis \bnrief It will do all possible translations searching for atoms that could be repeated.
| base_format | Basis format, if xyz of abc |
| r_base | Coordinates of the basis. r_base(1,7) means coordinate x of atom 7 |
| lattice_vectors | Lattice vectors. WARNING, in this case lattice_vector(1,3) means the coordinate 3=z of vector 1. |
| subroutine lcc_lattice_mod::lcc_fcc | ( | integer, intent(in) | Nx1, |
| integer, intent(in) | Nx2, | ||
| integer, intent(in) | Ny1, | ||
| integer, intent(in) | Ny2, | ||
| integer, intent(in) | Nz1, | ||
| integer, intent(in) | Nz2, | ||
| real(dp), intent(in) | h_lattice_a, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | supra_lattice_vectors, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | r_sy, | ||
| integer, intent(in) | verbose | ||
| ) |
Face center cubic (FCC) lattice construction.
Constructs a "bulk" of Face center cubic lattice.
| Nx1 | Initial x lattice point. |
| Nx2 | Final x lattice point. |
| Ny1 | Initial y lattice point. |
| Ny2 | Final y lattice point. |
| Nz1 | Initial z lattice point. |
| Nz2 | Final z lattice point. |
| h_lattice_a | Lattice parameter. |
| supra_lattice_vectors | Lattice unit vectors of the resulting slab. |
| r_sy | Output system coordinates. |
| subroutine lcc_lattice_mod::lcc_get_besttranslations | ( | integer, intent(in) | nop, |
| integer, intent(in) | nats, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | r_inout, | ||
| integer, intent(in) | verbose | ||
| ) |
To get the best translation that minimizes the distance to any previous fragment.
| nop | Number of symmetry operations |
| nats | Number of atoms in each fragment |
| r_inout | Coordinates for the fragment |
| verbose | Verbosity level |
| subroutine, public lcc_lattice_mod::lcc_make_lattice | ( | type(build_type), intent(inout) | bld, |
| type(lattice_type), intent(inout) | ltt, | ||
| logical, intent(in) | check, | ||
| type(system_type), intent(inout) | sy | ||
| ) |
Make a lattice depending on the input parameter.
This will make one of the following latices: SC: Simple cubic, FCC: Face center cubic, or Triclinic.
| bld | Building structure (see lcc_structures_mod) |
| ltt | Lattice structure (see lcc_scturctures_mod) |
| check | If we want to check the basis for atom repetition. Note that checks can be expensive. |
| subroutine lcc_lattice_mod::lcc_minimize_from | ( | real(dp), dimension(:,:), intent(in) | xVar, |
| integer, intent(in) | i, | ||
| integer, intent(in) | ai, | ||
| integer, intent(in) | nats, | ||
| real(dp), dimension(3), intent(inout) | trs, | ||
| integer, intent(in) | verbose | ||
| ) |
To get the best translation that minimizes the distance to any previous fragment.
| xVar | Coordinates of the full basis (including symmetry operations). |
| i | Fragmet being added at the "i" operation. |
| ai | Atom index to translate and get the optimal translation. |
| nats | Number of atoms in the fragment. |
| trs | Optimal translation. |
| subroutine lcc_lattice_mod::lcc_read_base | ( | type(build_type), intent(inout) | bld, |
| type(lattice_type), intent(inout) | ltt, | ||
| logical, intent(in) | check, | ||
| integer, intent(in) | verbose | ||
| ) |
Reading the basis from an input file.
This will read the coordinates for the basis from an input file If information about the lattice is contained, it will also be read.
| bld | Building structure (see lcc_structures_mod). |
| ltt | Lattice structure (see lcc_scturctures_mod). |
| check | If we want to check the basis for atom repetition. |
| verbose | Verbose level. Note that checks can be expensive. |
| subroutine lcc_lattice_mod::lcc_sc | ( | integer, intent(in) | Nx1, |
| integer, intent(in) | Nx2, | ||
| integer, intent(in) | Ny1, | ||
| integer, intent(in) | Ny2, | ||
| integer, intent(in) | Nz1, | ||
| integer, intent(in) | Nz2, | ||
| real(dp), intent(in) | h_lattice_a, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | supra_lattice_vectors, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | r_sy | ||
| ) |
Simple cubic (SC) lattice construction.
Constructs a "bulk" of Simple Cubic lattice.
| Nx1 | Initial x lattice point. |
| Nx2 | Final x lattice point. |
| Ny1 | Initial y lattice point. |
| Ny2 | Final y lattice point. |
| Nz1 | Initial z lattice point. |
| Nz2 | Final z lattice point. |
| h_lattice_a | Lattice parameter. |
| supra_lattice_vectors | Lattice unit vectors of the resulting slab. |
| r_sy | Output system coordinates. |
| subroutine, public lcc_lattice_mod::lcc_set_atom_type | ( | character(len=2), intent(in) | a_type, |
| character(len=2), dimension(:), intent(inout), allocatable | atom_symbol, | ||
| character(len=3), dimension(:), intent(inout), allocatable | atom_name, | ||
| integer, intent(in) | nats | ||
| ) |
Sets the atom type.
Sets the atom "symbol/type/name."
| a_type | Atom symbol character. |
| atom_symbol | Atom symbols. |
| atom_name | Atom name. Note: Atom name is a tag that can distinguish atoms with same symbol. |
| subroutine lcc_lattice_mod::lcc_triclinic | ( | integer, intent(in) | Nx1, |
| integer, intent(in) | Nx2, | ||
| integer, intent(in) | Ny1, | ||
| integer, intent(in) | Ny2, | ||
| integer, intent(in) | Nz1, | ||
| integer, intent(in) | Nz2, | ||
| real(dp), dimension(:,:), intent(in), allocatable | lattice_vectors, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | supra_lattice_vectors, | ||
| real(dp), dimension(:,:), intent(inout), allocatable | r_sy, | ||
| integer, intent(in) | verbose | ||
| ) |
Triclinic lattice construction.
Constructs a "bulk" of triclinic lattice.
| Nx1 | Initial x lattice point. |
| Nx2 | Final x lattice point. |
| Ny1 | Initial y lattice point. |
| Ny2 | Final y lattice point. |
| Nz1 | Initial z lattice point. |
| Nz2 | Final z lattice point. |
| lattice_vectors | Lattice vectors. |
| supra_lattice_vectors | Lattice unit vectors of the resulting slab. |
| r_sy | Output system coordinates. Note: Unit cell representation has to be transformed from edges and angles to vetors before calling this routine. |