| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | imcon | ||||
| real(kind=rp), | public, | dimension(3,3) | :: | basis | |||
| real(kind=rp), | public, | dimension(3,3) | :: | dl_basis | |||
| real(kind=rp), | public | :: | volume | ||||
| logical, | public | :: | is_deforming | ||||
| logical, | public | :: | is_aligned | Whether the basis vectors are aligned with the laboratory frame  | 
  
Initializes an instance of smbx_t. Can also be called to reset.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(out) | :: | this | An instance of   | 
  
||
| integer, | intent(in) | :: | imcon | Flag specifying boundary conditions on the simulation box.  | 
  
Sets all three basis vectors.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(inout) | :: | this | |||
| real(kind=rp), | intent(in), | dimension(3,3) | :: | bv | 
Specifies this as non-deforming.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(inout) | :: | this | 
Specifies this as deforming.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(inout) | :: | this | 
Returns the image of r under PBC.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(in) | :: | this | |||
| real(kind=rp), | intent(inout), | dimension(3) | :: | r | 
Wraps atom positions w.r.t. periodic boundary conditions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(in) | :: | this | |||
| real(kind=rp), | intent(inout), | dimension(:,:) | :: | coords | 
Adjusts atom positions such that the c.o.m. of the atoms is at the center of the box. Assumes all atoms to have the same mass and aligned axis. Optionally returns the original c.o.m.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(in) | :: | this | |||
| real(kind=rp), | intent(inout), | dimension(:,:) | :: | coords | ||
| real(kind=rp), | intent(out), | optional | dimension(3) | :: | com | 
Adjusts atom positions such that the c.o.m. of the atoms is at the origin. Assumes all atoms to have the same mass and aligned axis. Optionally returns the original c.o.m.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(in) | :: | this | |||
| real(kind=rp), | intent(inout), | dimension(:,:) | :: | coords | ||
| real(kind=rp), | intent(out), | optional | dimension(3) | :: | com | 
Returns uniformly distributed points within the box.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(smbx_t), | intent(in) | :: | this | |||
| real(kind=rp), | intent(out), | dimension(:,:) | :: | coords | 
type smbx_t
    integer :: imcon
    real(rp), dimension(3,3) :: basis
    real(rp), dimension(3,3) :: dl_basis
    real(rp) :: volume
    logical :: is_deforming
    logical :: is_aligned
        !! Whether the basis vectors are aligned with the laboratory frame
    contains
        procedure :: init => smbx_init
        procedure :: set_basis => smbx_set_basis
        procedure :: freeze => smbx_freeze
        procedure :: unfreeze => smbx_unfreeze
        procedure :: get_image => smbx_get_image
        procedure :: wrap_all => smbx_wrap_all
        procedure :: to_center => smbx_to_center
        procedure :: to_origin => smbx_to_origin
        procedure :: get_rnd_points => smbx_get_rnd_points
end type smbx_t