chfl_cell type¶
-
type
chfl_cell¶ A
chfl_cellrepresent the box containing the atoms, and its periodicity. An unit cell is fully represented by three lengths (a, b, c); and three angles (alpha, beta, gamma). The angles are stored in degrees, and the lengths in Angstroms.- Type fields
%init[subroutine] ::chfl_cell%init()%copy[subroutine] ::chfl_cell%copy()%from_matrix[subroutine] ::chfl_cell%from_matrix()%lengths[function] ::chfl_cell%lengths()%set_lengths[subroutine] ::chfl_cell%set_lengths()%angles[function] ::chfl_cell%angles()%set_angles[subroutine] ::chfl_cell%set_angles()%matrix[function] ::chfl_cell%matrix()%shape[function] ::chfl_cell%shape()%set_shape[subroutine] ::chfl_cell%set_shape()%volume[function] ::chfl_cell%volume()%wrap[subroutine] ::chfl_cell%wrap()%free[subroutine] ::chfl_cell%free()
-
subroutine
chfl_cell%init(lengths[, angles, status])¶ Initialize this unit cell with an unit cell having the given
lengthsand optionalangles. If all angles are 90°, the unit cell shape isCHFL_CELL_ORTHORHOMBIC, else it isCHFL_CELL_TRICLINIC.This subroutine allocate memory which must be released with
chfl_cell%free().- Parameters
lengths (3) [real] :: cell lengths, in angstroms
- Options
angles (3) [real] :: cell angles, in degrees
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%copy(cell[, status])¶ Initialize this unit cell with a copy of
cell. This subroutine allocate memory which must be released withchfl_cell%free().- Parameters
cell [type(chfl_cell)] :: cell to copy
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%from_matrix(matrix[, status])¶ Initialize this unit cell from it’s matricial representation, i.e the matrix containing the three cell vectors. This subroutine allocate memory which must be released with
chfl_cell%free().- Parameters
matrix (3, 3) [real(kind=real64)] :: matrix representation of the unit cell
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
function
chfl_cell%volume([status])¶ Get the volume of the unit cell in angstroms cubes.
- Return
real
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
function
chfl_cell%lengths([status])¶ Get the unit cell lengths in angstroms.
- Return
real (3)
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%set_lengths(lengths[, status])¶ Set the unit cell lengths to
lengths.- Parameters
lengths (3) [real] :: new cell lengths, in angstroms
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
function
chfl_cell%angles([status])¶ Get the unit cell angles in degrees.
- Return
real (3)
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%set_angles(alpha, beta, gamma[, status])¶ Set the cell angles to
angles. Trying to set cell angles on a cell which is not triclinic (does not have theCHFL_CELL_TRICLINICshape) is an error.- Parameters
angles (3) [real] :: new cell angles, in degrees
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
function
chfl_cell%matrix([status])¶ Get the unit cell matricial representation.
The unit cell representation is obtained by aligning the a vector along the x axis and putting the b vector in the xy plane. This make the matrix an upper triangular matrix:
| a_x b_x c_x | | 0 b_y c_y | | 0 0 c_z |
- Return
real (3, 3)
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
function
chfl_cell%shape([status])¶ Get the unit cell shape.
- Return
integer (chfl_cellshape)
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
The cell shapes are integers which
kindis thechfl_cellshapeparameter.-
chfl_cellshape[integer]¶ Integer kind parameter for representing unit cel shape.
-
CHFL_CELL_ORTHORHOMBIC[integer(chfl_cellshape)]¶ Cell shape for cell where the three angles are 90°
-
CHFL_CELL_TRICLINIC[integer(chfl_cellshape)]¶ Cell shape for cell where the three angles may not be 90°
-
CHFL_CELL_INFINITE[integer(chfl_cellshape)]¶ Cell type when there is no periodic boundary conditions
-
subroutine
chfl_cell%set_shape(shape[, status])¶ Set the unit cell shape to
shape- Parameters
shape [integer(chfl_cellshape)] :: the new shape of the cell
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%wrap(vector[, status])¶ Wrap a
vectorin this unit cell so that all its components are beteen-L/2andL/2.- Parameters
vector (3) [real] :: vector to wrap in the cell
- Options
status [integer(chfl_status)] :: status code of the operation. If it is not
CHFL_SUCCESS, usechfl_last_error()to learn more about the error.
-
subroutine
chfl_cell%free()¶ Destroy an unit cell, and free the associated memory