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