Cartesius Library
symmetry_mod.f90 File Reference

Data Types

type  symmetry_mod::space_group
 

Modules

module  symmetry_mod
 Collects procedures for handling symmetries.
 

Functions/Subroutines

subroutine symmetry_mod::init_space_group_from_hall (sg, symb)
 
type(point) function symmetry_mod::parse_hall_rotation_symbol (symb, num, prev_rot, prev_axis, stat)
 Returns a space group generator based on the given Hall rotation symbol. More...
 
type(point) function symmetry_mod::parse_brace_symop (inbraces, stat)
 Returns a symmetry operation given by e.g. (x+1/2,x-y,z-1/2) More...
 
type(point) function symmetry_mod::parse_symop_trans_shorthand (inbraces, stat)
 Parses shorthand symmmetry operation given only by translation e.g. (1,4,5) More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::space_group_geners_from_hall (hall_symb, stat)
 Parses given space group Hall symbol and returns the generators of the group defined by it. More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::propagate_space_group_geners (geners, stat)
 Finds all space group elements from the given set of generators. More...
 
subroutine symmetry_mod::space_group_set_cayley_and_inversion_tables (sp_group)
 Sets the Cayley (multiplication) table and the inversion table for given space group. More...
 
type(point_ptr) function, dimension(size(indices)) symmetry_mod::space_group_elements_from_indices (sp_group, indices)
 Returns an array of pointers to elements of the given space group given the indices in its sym_ops array. More...
 
integer function, dimension(size(elems)) symmetry_mod::space_group_indices_from_elements (sp_group, elems)
 Returns an array of indices in the sym_ops array of the space group, corresponding to the given symmetry elements. The given elements must point to the same location in memory as the elements in the sym_ops array. More...
 
integer function, dimension(size(subgroup_inds), size(sp_group%sym_ops)/size(subgroup_inds)) symmetry_mod::space_group_left_cosets_indices (sp_group, subgroup_inds)
 Returns all left cosets for the given subgroup of the space group. First index enumarates the elements of a coset, second index corresponds to different cosets. More...
 
integer function, dimension(size(cosets_ind, 1) *size(cosets_ind, 2)) symmetry_mod::space_group_coset_reprarray (cosets_ind)
 
integer function, dimension(size(sp_group%sym_ops)/size(subgroup_inds)) symmetry_mod::space_group_left_coset_representatives_indices (sp_group, subgroup_inds)
 Given the indices of a subgroup of the given group, returns the set of (left) coset representatives for this subgroup. A coset representative is any element of the equivalence class corresponding to the coset. More...
 
integer function, dimension(:), allocatable symmetry_mod::space_group_atom_stabilizer_indices (sp_group, pAtom)
 Returns the subgroup (indices) of the given group which keeps the atomic position intact (up to translation). More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::space_group_atom_stabilizer (sp_group, pAtom)
 Returns the subgroup of the given group which keeps the atomic position intact (up to translation). More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::space_group_atom_orbit_representatives (sp_group, pAtom)
 Returns the subset of the given space group which is sufficient to decribe all symmetric positions of the atom in the unit cell. More...
 
integer function, dimension(:), allocatable symmetry_mod::space_group_elec_group_stabilizer_indices (sp_group, elec_group, atom_swaps)
 Finds the subgroup (indices) of the given space group which keeps the elec_group geometry intact (up to translation) More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::space_group_elec_group_stabilizer (sp_group, elec_group, atom_swaps)
 Finds the subgroup of the given space group which keeps the elec_group geometry intact (up to translation) More...
 
type(point_ptr) function, dimension(:), allocatable symmetry_mod::space_group_elec_group_orbit_representatives (sp_group, elec_group)
 Returns the subset of the given space group which is sufficient to decribe all symmetric positions of the electronic group in the unit cell. More...
 
subroutine symmetry_mod::deallocate_space_group_native (pspgroup)
 
subroutine symmetry_mod::deallocate_space_group (pspgroup)
 

Variables

real, dimension(3), parameter, private symmetry_mod::tr_0 = [0., 0., 0. ]
 
real, dimension(3), parameter, private symmetry_mod::tr_a = [0.5, 0., 0. ]
 
real, dimension(3), parameter, private symmetry_mod::tr_b = [0., 0.5, 0. ]
 
real, dimension(3), parameter, private symmetry_mod::tr_c = [0., 0., 0.5 ]
 
real, dimension(3), parameter, private symmetry_mod::tr_n = [0.5, 0.5, 0.5 ]
 
real, dimension(3), parameter, private symmetry_mod::tr_u = [0.25, 0., 0. ]
 
real, dimension(3), parameter, private symmetry_mod::tr_v = [0., 0.25, 0. ]
 
real, dimension(3), parameter, private symmetry_mod::tr_w = [0., 0., 0.25]
 
real, dimension(3), parameter, private symmetry_mod::tr_d = [0.25, 0.25, 0.25]
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_1 = E3
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2x = transpose(reshape([ 1., 0., 0., 0., -1., 0., 0., 0., -1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2y = transpose(reshape([-1., 0., 0., 0., 1., 0., 0., 0., -1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2z = transpose(reshape([-1., 0., 0., 0., -1., 0., 0., 0., 1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_3x = transpose(reshape([ 1., 0., 0., 0., 0., -1., 0., 1., -1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_3y = transpose(reshape([-1., 0., 1., 0., 1., 0., -1., 0., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_3z = transpose(reshape([ 0., -1., 0., 1., -1., 0., 0., 0., 1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_4x = transpose(reshape([ 1., 0., 0., 0., 0., -1., 0., 1., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_4y = transpose(reshape([ 0., 0., 1., 0., 1., 0., -1., 0., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_4z = transpose(reshape([ 0., -1., 0., 1., 0., 0., 0., 0., 1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_6x = transpose(reshape([ 1., 0., 0., 0., 1., -1., 0., 1., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_6y = transpose(reshape([ 0., 0., 1., 0., 1., 0., -1., 0., 1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_6z = transpose(reshape([ 1., -1., 0., 1., 0., 0., 0., 0., 1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2bmc = transpose(reshape([-1., 0., 0., 0., 0., -1., 0., -1., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2bpc = transpose(reshape([-1., 0., 0., 0., 0., 1., 0., 1., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2amc = transpose(reshape([ 0., 0., -1., 0., -1., 0., -1., 0., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2apc = transpose(reshape([ 0., 0., 1., 0., -1., 0., 1., 0., 0.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2amb = transpose(reshape([ 0., -1., 0., -1., 0., 0., 0., 0., -1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_2apb = transpose(reshape([ 0., 1., 0., 1., 0., 0., 0., 0., -1.], [3,3]))
 
real, dimension(3, 3), parameter, private symmetry_mod::rot_3abc = transpose(reshape([ 0., 0., 1., 1., 0., 0., 0., 1., 0.], [3,3]))