Skip to content
Snippets Groups Projects
gtCrystCalculateSymmetryOperators.m 1.85 KiB
Newer Older
function [perm, rot, sg_rot, sg_trans] = gtCrystCalculateSymmetryOperators(sg, crystal_system)
% GTCRYSTCALCULATEREFLECTIONS  Calculate the symmetry operators list using python 
%                              from xfab library in fable (sg.py)
%     [perm, rot, sg_rot, sg_trans] = gtCrystCalculateSymmetryOperators(sg, crystal_system)
%     -------------------------------------------------------------------------------------
%
%     INPUT: 
%       sg             = spacegroup number <int>
%       crystal_system = crystal system <string>
%     
%     OUTPUT:
%       perm     = set of indistinguishable lattice permutations
%       rot      = set of unitary rotation matrices corresponding to the indistinguishable lattice permutations
%       sg_rot   = rotations (complete list using symmetry operators)
%       sg_trans = transition values from symmetry operators
%
%
%     Version 001 10-12-2012 by LNervo


if ~exist('sg','var') || isempty(sg)
    load parameters;
    sg = parameters.cryst(1).spacegroup;
end
if ~exist('crystal_system','var') || isempty(crystal_system)
    load parameters;
    crystal_system = parameters.cryst(1).crystal_system;
end

script_file = fullfile('/users/',getenv('USER'),'matlabDCT','zUtil_Python','symmetry_operators_list.py');
cmd = sprintf('python26 %s %d',script_file,sg);
[~,msg]=unix(cmd);
disp(msg)

% read produced files      
perm     = gtReadTextFile(['perm_' crystal_system '.txt'],'%f %f %f',' ','#',[3 3]);
rotN      = gtReadTextFile(['rot_' crystal_system '.txt'],'%f %f %f',' ','#',[3 3]);
sg_rotN   = gtReadTextFile(['sg_rot_' crystal_system '.txt'],'%f %f %f',' ','#',[3 3]);
sg_transN = gtReadTextFile(['sg_trans_' crystal_system '.txt'],'%f %f %f',' ','#',[1 3]);

if nargout > 1
    rot = rotN;
    if nargout > 2
      sg_rot = sg_rotN;
      if nargout > 3
          sg_trans = sg_transN;
      end
    end
end

end % end of function