Defines | Functions

src_f/csymlib_f.c File Reference

Fortran API for symmetry information. More...

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "ccp4_fortran.h"
#include "ccp4_general.h"
#include "ccp4_parser.h"
#include "csymlib.h"
#include "cmtzlib.h"
#include "cvecmat.h"

Defines

#define CSYMLIB_DEBUG(x)
#define MSPAC   4
#define MAXSYM   192
#define MAXSYMOPS   20
#define MAXLENSYMOPSTR   80

Functions

void ccp4spg_mem_tidy (void)
 FORTRAN_SUBR (INVSYM, invsym,(const float a[4][4], float ai[4][4]),(const float a[4][4], float ai[4][4]),(const float a[4][4], float ai[4][4]))
int symfr_driver (const char *line, float rot[MAXSYMOPS][4][4])
 FORTRAN_SUBR (SYMFR3, symfr3,(const fpstr icol, const int *i1, int *nsym, float rot[MAXSYM][4][4], int *eflag, int icol_len),(const fpstr icol, const int *i1, int *nsym, float rot[MAXSYM][4][4], int *eflag),(const fpstr icol, int icol_len, const int *i1, int *nsym, float rot[MAXSYM][4][4], int *eflag))
 FORTRAN_SUBR (SYMFR2, symfr2,(fpstr symchs, int *icol, int *nsym, float rot[MAXSYM][4][4], int symchs_len),(fpstr symchs, int *icol, int *nsym, float rot[MAXSYM][4][4]),(fpstr symchs, int symchs_len, int *icol, int *nsym, float rot[MAXSYM][4][4]))
 FORTRAN_SUBR (SYMTR3, symtr3,(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs, const int *iprint, int symchs_len),(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs, const int *iprint),(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs, int symchs_len, const int *iprint))
 FORTRAN_SUBR (SYMTR4, symtr4,(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs, int symchs_len),(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs),(const int *nsm, const float rsm[MAXSYM][4][4], fpstr symchs, int symchs_len))
 FORTRAN_SUBR (PGMDF, pgmdf,(int *jlass, int *jcentr, int jscrew[3]),(int *jlass, int *jcentr, int jscrew[3]),(int *jlass, int *jcentr, int jscrew[3]))
 FORTRAN_SUBR (PGDEFN, pgdefn,(fpstr nampg, int *nsymp, const int *nsym, float rsmt[192][4][4], const ftn_logical *lprint, int nampg_len),(fpstr nampg, int *nsymp, const int *nsym, float rsmt[192][4][4], const ftn_logical *lprint),(fpstr nampg, int nampg_len, int *nsymp, const int *nsym, float rsmt[192][4][4], const ftn_logical *lprint))
 FORTRAN_SUBR (PGNLAU, pgnlau,(const fpstr nampg, int *nlaue, fpstr launam, int nampg_len, int launam_len),(const fpstr nampg, int *nlaue, fpstr launam),(const fpstr nampg, int nampg_len, int *nlaue, fpstr launam, int launam_len))
 FORTRAN_SUBR (CCP4SPG_F_GET_LAUE, ccp4spg_f_get_laue,(const int *sindx, int *nlaue, fpstr launam, int launam_len),(const int *sindx, int *nlaue, fpstr launam),(const int *sindx, int *nlaue, fpstr launam, int launam_len))
 FORTRAN_SUBR (HKLRANGE, hklrange,(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1),(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1),(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1))
 FORTRAN_SUBR (PATSGP, patsgp,(const fpstr spgnam, const fpstr pgname, fpstr patnam, int *lpatsg, int spgnam_len, int pgname_len, int patnam_len),(const fpstr spgnam, const fpstr pgname, fpstr patnam, int *lpatsg),(const fpstr spgnam, int spgnam_len, const fpstr pgname, int pgname_len, fpstr patnam, int patnam_len, int *lpatsg))
 FORTRAN_SUBR (ASUSET, asuset,(fpstr spgnam, int *numsgp, fpstr pgname, int *msym, float rrsym[192][4][4], int *msymp, int *mlaue, ftn_logical *lprint, int spgnam_len, int pgname_len),(fpstr spgnam, int *numsgp, fpstr pgname, int *msym, float rrsym[192][4][4], int *msymp, int *mlaue, ftn_logical *lprint),(fpstr spgnam, int spgnam_len, int *numsgp, fpstr pgname, int pgname_len, int *msym, float rrsym[192][4][4], int *msymp, int *mlaue, ftn_logical *lprint))
 FORTRAN_SUBR (ASUSYM, asusym,(float rassym[384][4][4], float rinsym[384][4][4], int *nisym),(float rassym[384][4][4], float rinsym[384][4][4], int *nisym),(float rassym[384][4][4], float rinsym[384][4][4], int *nisym))
 FORTRAN_SUBR (ASUPUT, asuput,(const int ihkl[3], int jhkl[3], int *isym),(const int ihkl[3], int jhkl[3], int *isym),(const int ihkl[3], int jhkl[3], int *isym))
 FORTRAN_SUBR (ASUGET, asuget,(const int ihkl[3], int jhkl[3], const int *isym),(const int ihkl[3], int jhkl[3], const int *isym),(const int ihkl[3], int jhkl[3], const int *isym))
 FORTRAN_SUBR (ASUPHP, asuphp,(const int jhkl[3], const int *lsym, const int *isign, const float *phasin, float *phasout),(const int jhkl[3], const int *lsym, const int *isign, const float *phasin, float *phasout),(const int jhkl[3], const int *lsym, const int *isign, const float *phasin, float *phasout))
 FORTRAN_SUBR (CCP4SPG_F_LOAD_BY_NAME, ccp4spg_f_load_by_name,(const int *sindx, fpstr namspg, int namspg_len),(const int *sindx, fpstr namspg),(const int *sindx, fpstr namspg, int namspg_len))
 FORTRAN_SUBR (CCP4SPG_F_LOAD_BY_OPS, ccp4spg_f_load_by_ops,(const int *sindx, int *msym, float rrsym[192][4][4]),(const int *sindx, int *msym, float rrsym[192][4][4]),(const int *sindx, int *msym, float rrsym[192][4][4]))
 FORTRAN_FUN (int, CCP4SPG_F_EQUAL_OPS_ORDER, ccp4spg_f_equal_ops_order,(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4]),(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4]),(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4]))
 FORTRAN_SUBR (CCP4SPG_F_ASUPUT, ccp4spg_f_asuput,(const int *sindx, const int ihkl[3], int jhkl[3], int *isym),(const int *sindx, const int ihkl[3], int jhkl[3], int *isym),(const int *sindx, const int ihkl[3], int jhkl[3], int *isym))
 FORTRAN_FUN (int, INASU, inasu,(const int ihkl[3], const int *nlaue),(const int ihkl[3], const int *nlaue),(const int ihkl[3], const int *nlaue))
 FORTRAN_FUN (int, CCP4SPG_F_INASU, ccp4spg_f_inasu,(const int *sindx, const int ihkl[3]),(const int *sindx, const int ihkl[3]),(const int *sindx, const int ihkl[3]))
 FORTRAN_SUBR (PRTRSM, prtrsm,(const fpstr pgname, const int *nsymp, const float rsymiv[192][4][4], int pgname_len),(const fpstr pgname, const int *nsymp, const float rsymiv[192][4][4]),(const fpstr pgname, int pgname_len, const int *nsymp, const float rsymiv[192][4][4]))
void ccp4spg_register_by_ccp4_num (int numspg)
void ccp4spg_register_by_symops (int nops, float rsm[][4][4])
 FORTRAN_SUBR (MSYMLB3, msymlb3,(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr namspg_cifs, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4], int namspg_cif_len, int namspg_cifs_len, int nampg_len),(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr namspg_cifs, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]),(const int *ist, int *lspgrp, fpstr namspg_cif, int namspg_cif_len, fpstr namspg_cifs, int namspg_cifs_len, fpstr nampg, int nampg_len, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]))
 FORTRAN_SUBR (MSYMLB, msymlb,(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4], int namspg_cif_len, int nampg_len),(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]),(const int *ist, int *lspgrp, fpstr namspg_cif, int namspg_cif_len, fpstr nampg, int nampg_len, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]))
 FORTRAN_SUBR (MSYMLB2, msymlb2,(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4], int namspg_cif_len, int nampg_len),(const int *ist, int *lspgrp, fpstr namspg_cif, fpstr nampg, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]),(const int *ist, int *lspgrp, fpstr namspg_cif, int namspg_cif_len, fpstr nampg, int nampg_len, int *nsymp, int *nsym, float rlsymmmatrx[192][4][4]))
 FORTRAN_SUBR (MSYGET, msyget,(const int *ist, int *lspgrp, int *nsym, float rlsymmmatrx[192][4][4]),(const int *ist, int *lspgrp, int *nsym, float rlsymmmatrx[192][4][4]),(const int *ist, int *lspgrp, int *nsym, float rlsymmmatrx[192][4][4]))
 FORTRAN_SUBR (EPSLN, epsln,(const int *nsm, const int *nsmp, const float rsm[192][4][4], const int *iprint),(const int *nsm, const int *nsmp, const float rsm[192][4][4], const int *iprint),(const int *nsm, const int *nsmp, const float rsm[192][4][4], const int *iprint))
 FORTRAN_SUBR (EPSLON, epslon,(const int ih[3], float *epsi, int *isysab),(const int ih[3], float *epsi, int *isysab),(const int ih[3], float *epsi, int *isysab))
 FORTRAN_SUBR (CCP4SPG_F_EPSLON, ccp4spg_f_epslon,(const int *sindx, const int ih[3], float *epsi, int *isysab),(const int *sindx, const int ih[3], float *epsi, int *isysab),(const int *sindx, const int ih[3], float *epsi, int *isysab))
 FORTRAN_SUBR (SYSAB, sysab,(const int in[3], int *isysab),(const int in[3], int *isysab),(const int in[3], int *isysab))
 FORTRAN_SUBR (CCP4SPG_F_IS_SYSABS, ccp4spg_f_is_sysabs,(const int *sindx, const int in[3], int *isysab),(const int *sindx, const int in[3], int *isysab),(const int *sindx, const int in[3], int *isysab))
 FORTRAN_SUBR (CENTRIC, centric,(const int *nsm, const float rsm[192][4][4], const int *iprint),(const int *nsm, const float rsm[192][4][4], const int *iprint),(const int *nsm, const float rsm[192][4][4], const int *iprint))
 FORTRAN_SUBR (CENTR, centr,(const int ih[3], int *ic),(const int ih[3], int *ic),(const int ih[3], int *ic))
 FORTRAN_SUBR (CCP4SPG_F_IS_CENTRIC, ccp4spg_f_is_centric,(const int *sindx, const int ih[3], int *ic),(const int *sindx, const int ih[3], int *ic),(const int *sindx, const int ih[3], int *ic))
 FORTRAN_SUBR (CENTPHASE, centphase,(const int ih[3], float *cenphs),(const int ih[3], float *cenphs),(const int ih[3], float *cenphs))
 FORTRAN_SUBR (CCP4SPG_F_CENTPHASE, ccp4spg_f_centphase,(const int *sindx, const int ih[3], float *cenphs),(const int *sindx, const int ih[3], float *cenphs),(const int *sindx, const int ih[3], float *cenphs))
 FORTRAN_SUBR (SETLIM, setlim,(const int *lspgrp, float xyzlim[3][2]),(const int *lspgrp, float xyzlim[3][2]),(const int *lspgrp, float xyzlim[3][2]))
 FORTRAN_SUBR (SETLIM_ZERO, setlim_zero,(const int *lspgrp, float xyzlim[3][2]),(const int *lspgrp, float xyzlim[3][2]),(const int *lspgrp, float xyzlim[3][2]))
 FORTRAN_SUBR (SETGRD, setgrd,(const int *nlaue, const float *sample, const int *nxmin, const int *nymin, const int *nzmin, int *nx, int *ny, int *nz),(const int *nlaue, const float *sample, const int *nxmin, const int *nymin, const int *nzmin, int *nx, int *ny, int *nz),(const int *nlaue, const float *sample, const int *nxmin, const int *nymin, const int *nzmin, int *nx, int *ny, int *nz))
 FORTRAN_SUBR (FNDSMP, fndsmp,(const int *minsmp, const int *nmul, const float *sample, int *nsampl),(const int *minsmp, const int *nmul, const float *sample, int *nsampl),(const int *minsmp, const int *nmul, const float *sample, int *nsampl))
 FORTRAN_SUBR (CALC_ORIG_PS, calc_orig_ps,(fpstr namspg_cif, int *nsym, float rsym[192][4][4], int *norig, float orig[96][3], ftn_logical *lpaxisx, ftn_logical *lpaxisy, ftn_logical *lpaxisz, int namspg_cif_len),(fpstr namspg_cif, int *nsym, float rsym[192][4][4], int *norig, float orig[96][3], ftn_logical *lpaxisx, ftn_logical *lpaxisy, ftn_logical *lpaxisz, int namspg_cif_len),(fpstr namspg_cif, int namspg_cif_len, int *nsym, float rsym[192][4][4], int *norig, float orig[96][3], ftn_logical *lpaxisx, ftn_logical *lpaxisy, ftn_logical *lpaxisz))
 FORTRAN_SUBR (SETRSL, setrsl,(const float *a, const float *b, const float *c, const float *alpha, const float *beta, const float *gamma),(const float *a, const float *b, const float *c, const float *alpha, const float *beta, const float *gamma),(const float *a, const float *b, const float *c, const float *alpha, const float *beta, const float *gamma))
 FORTRAN_SUBR (STHLSQ1, sthlsq1,(float *reso, const int *ih, const int *ik, const int *il),(float *reso, const int *ih, const int *ik, const int *il),(float *reso, const int *ih, const int *ik, const int *il))
 FORTRAN_SUBR (STS3R41, sts3r41,(float *reso, const int *ih, const int *ik, const int *il),(float *reso, const int *ih, const int *ik, const int *il),(float *reso, const int *ih, const int *ik, const int *il))
 FORTRAN_SUBR (HANDCHANGE, handchange,(const int *lspgrp, float *cx, float *cy, float *cz),(const int *lspgrp, float *cx, float *cy, float *cz),(const int *lspgrp, float *cx, float *cy, float *cz))

Detailed Description

Fortran API for symmetry information.

Author:
Martyn Winn

Function Documentation

void ccp4spg_mem_tidy ( void   ) 

Free all memory malloc'd from static pointers. To be called before program exit. The function can be registered with atexit.

Referenced by ccp4f_mem_tidy().

void ccp4spg_register_by_ccp4_num ( int  numspg  ) 

Look up spacegroup in standard setting by number and load into static storage of csymlib_f.

Parameters:
numspg spacegroup number
Returns:
void

References ccperror().

void ccp4spg_register_by_symops ( int  nops,
float  rsm[][4][4] 
)

Look up spacegroup by set of symmetry operators and load into static storage of csymlib_f.

Parameters:
nops number of symops
rsm symmetry operators
Returns:
void

References ccp4_utils_malloc(), ccperror(), ccp4_symop_::rot, and ccp4_symop_::trn.

Referenced by FORTRAN_SUBR().

FORTRAN_FUN ( int  ,
CCP4SPG_F_EQUAL_OPS_ORDER  ,
ccp4spg_f_equal_ops_order  ,
(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4])  ,
(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4])  ,
(int *msym1, float rrsym1[192][4][4], int *msym2, float rrsym2[192][4][4])   
)

Compare two sets of symmetry operators to see if they are in the same order. This is important for the consistent use of ISYM which encodes the operator position in the list.

Parameters:
msym1 number of symmetry matrices passed in first list.
rrsym1 first list of symmetry matrices.
msym2 number of symmetry matrices passed in second list.
rrsym2 second list of symmetry matrices.
Returns:
1 if operator lists are equal and in the same order, 0 otherwise

References ccp4_utils_malloc(), and ccp4_symop_::trn.

FORTRAN_FUN ( int  ,
INASU  ,
inasu  ,
(const int ihkl[3], const int *nlaue)  ,
(const int ihkl[3], const int *nlaue)  ,
(const int ihkl[3], const int *nlaue)   
)

Test whether reflection or it's Friedel mate is in asu. The argument nlaue is checked against the value for the current spacegroup: if it differs then spacegroup->nlaue is updated temporarily.

Parameters:
ihkl reflection indices.
nlaue Laue group number.
Returns:
1 if in asu, -1 if -h -k -l is in asu, 0 otherwise

References ccperror().

FORTRAN_FUN ( int  ,
CCP4SPG_F_INASU  ,
ccp4spg_f_inasu  ,
(const int *sindx, const int ihkl[3])  ,
(const int *sindx, const int ihkl[3])  ,
(const int *sindx, const int ihkl[3])   
)

Test whether reflection or it's Friedel mate is in the asymmetric unit of the spacegroup on index "sindx".

Parameters:
sindx index of this spacegroup.
ihkl reflection indices.
Returns:
1 if in asu, -1 if -h -k -l is in asu, 0 otherwise
FORTRAN_SUBR ( CENTRIC  ,
centric  ,
(const int *nsm, const float rsm[192][4][4],const int *iprint)  ,
(const int *nsm, const float rsm[192][4][4],const int *iprint)  ,
(const int *nsm, const float rsm[192][4][4],const int *iprint)   
)

Set up centric zones based on symmetry operators. Convention: translations are in rsm[isym][3][*]

Parameters:
nsm number of symmetry matrices passed.
rsm symmetry matrices.
iprint If iprint > 0 then a summary of centric zones is printed.

References ccp4_utils_malloc(), ccp4_symop_::rot, and ccp4_symop_::trn.

FORTRAN_SUBR ( MSYMLB3  ,
msymlb3  ,
(const int *ist, int *lspgrp, fpstr namspg_cif,fpstr namspg_cifs, fpstr nampg, int *nsymp, int *nsym,float rlsymmmatrx[192][4][4], int namspg_cif_len,int namspg_cifs_len, int nampg_len)  ,
(const int *ist, int *lspgrp, fpstr namspg_cif,fpstr namspg_cifs, fpstr nampg, int *nsymp, int *nsym,float rlsymmmatrx[192][4][4])  ,
(const int *ist, int *lspgrp, fpstr namspg_cif, int namspg_cif_len,fpstr namspg_cifs, int namspg_cifs_len, fpstr nampg, int nampg_len,int *nsymp, int *nsym, float rlsymmmatrx[192][4][4])   
)

Fortran wrapper for ccp4spg_load_by_* functions.

Parameters:
ist Obsolete parameter.
lspgrp Spacegroup number in CCP4 convention. If set on entry, used to search for spacegroup. Returned value is that found.
namspg_cif Spacegroup name. If set on entry, used to search for spacegroup. Returned value is the full extended Hermann Mauguin symbol, with one slight alteration. Symbols such as 'R 3 :H' are converted to 'H 3'. This is for backwards compatibility.
namspg_cifs On output, contains the spacegroup name without any spaces.
nampg On output, the point group name.
nsymp On output, the number of primitive symmetry operators.
nsym On output, the total number of symmetry operators.
rlsymmmatrx On output, the symmetry operators.

References ccp4_CtoFString(), ccp4_FtoCString(), and ccp4_utils_malloc().

FORTRAN_SUBR ( SYMTR3  ,
symtr3  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs, const int *iprint, int symchs_len)  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs, const int *iprint)  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs, int symchs_len, const int *iprint)   
)

Fortran wrapper for mat4_to_symop.

Parameters:
nsm number of symmetry matrices passed.
rsm symmetry matrices.
symchs symmetry strings returned.
iprint print flag.

References ccp4_CtoFString(), and mat4_to_symop().

FORTRAN_SUBR ( PATSGP  ,
patsgp  ,
(const fpstr spgnam, const fpstr pgname, fpstr patnam, int *lpatsg,int spgnam_len, int pgname_len, int patnam_len)  ,
(const fpstr spgnam, const fpstr pgname, fpstr patnam, int *lpatsg)  ,
(const fpstr spgnam, int spgnam_len, const fpstr pgname,int pgname_len, fpstr patnam, int patnam_len, int *lpatsg)   
)

Return the Patterson group name and number corresponding to a spacegroup identified by spacegroup name and point group name.

Parameters:
spgnam On input, spacegroup name.
pgname On input, point group name.
patnam On return, Patterson spacegroup name.
lpatsg On return, Patterson spacegroup number.

References ccp4_CtoFString(), ccp4_FtoCString(), ccp4_spacegroup_::npatt, and ccp4_spacegroup_::patt_name.

FORTRAN_SUBR ( CCP4SPG_F_GET_LAUE  ,
ccp4spg_f_get_laue  ,
(const int *sindx, int *nlaue, fpstr launam, int launam_len)  ,
(const int *sindx, int *nlaue, fpstr launam)  ,
(const int *sindx, int *nlaue, fpstr launam, int launam_len)   
)

Return Laue number and name for a spacegroup onto index "sindx".

Parameters:
sindx index of this spacegroup.
nlaue Laue number
launam Laue name

References ccp4_CtoFString(), and ccp4_spacegroup_::nlaue.

FORTRAN_SUBR ( CCP4SPG_F_ASUPUT  ,
ccp4spg_f_asuput  ,
(const int *sindx, const int ihkl[3], int jhkl[3], int *isym)  ,
(const int *sindx, const int ihkl[3], int jhkl[3], int *isym)  ,
(const int *sindx, const int ihkl[3], int jhkl[3], int *isym)   
)

Put reflection in asymmetric unit of spacegroup on index sindx.

Parameters:
sindx index of this spacegroup.
ihkl input indices.
jhkl output indices.
isym symmetry operation applied (ISYM number).
FORTRAN_SUBR ( PGNLAU  ,
pgnlau  ,
(const fpstr nampg, int *nlaue, fpstr launam,int nampg_len, int launam_len)  ,
(const fpstr nampg, int *nlaue, fpstr launam)  ,
(const fpstr nampg, int nampg_len, int *nlaue,fpstr launam, int launam_len)   
)

Return Laue number and name for current spacegroup.

Parameters:
nampg Point group name (unused in this implementation)
nlaue Laue number
launam Laue name

References ccp4_CtoFString(), and ccp4_FtoCString().

FORTRAN_SUBR ( CCP4SPG_F_LOAD_BY_NAME  ,
ccp4spg_f_load_by_name  ,
(const int *sindx, fpstr namspg, int namspg_len)  ,
(const int *sindx, fpstr namspg)  ,
(const int *sindx, fpstr namspg, int namspg_len)   
)

Loads a spacegroup onto index "sindx". The spacegroup is identified by the spacegroup name.

Parameters:
sindx index of this spacegroup.
namspg spacegroup name.

References ccp4_FtoCString().

FORTRAN_SUBR ( ASUPHP  ,
asuphp  ,
(const int jhkl[3], const int *lsym, const int *isign,const float *phasin, float *phasout)  ,
(const int jhkl[3], const int *lsym, const int *isign,const float *phasin, float *phasout)  ,
(const int jhkl[3], const int *lsym, const int *isign,const float *phasin, float *phasout)   
)

Generate phase of symmetry equivalent JHKL from that of IHKL.

Parameters:
jhkl indices hkl generated in ASUPUT
lsym symmetry number for generating JHKL
isign 1 for I+ , -1 for I-
phasin phase for reflection IHKL
phasout phase for reflection JHKL
FORTRAN_SUBR ( ASUGET  ,
asuget  ,
(const int ihkl[3], int jhkl[3], const int *isym)  ,
(const int ihkl[3], int jhkl[3], const int *isym)  ,
(const int ihkl[3], int jhkl[3], const int *isym)   
)

Get the original indices jkhl from input indices ihkl generated under symmetry operation isym.

Parameters:
ihkl input indices.
jhkl output indices (recovered original indices).
isym symmetry operation to be applied (ISYM number).
FORTRAN_SUBR ( ASUSYM  ,
asusym  ,
(float rassym[384][4][4], float rinsym[384][4][4], int *nisym)  ,
(float rassym[384][4][4], float rinsym[384][4][4], int *nisym)  ,
(float rassym[384][4][4], float rinsym[384][4][4], int *nisym)   
)

Return symmetry operators and inverses, set up by ASUSET.

Parameters:
rassym symmetry operators.
rinsym inverse symmetry operators.
nisym number of symmetry operators returned.

References ccperror().

FORTRAN_SUBR ( ASUSET  ,
asuset  ,
(fpstr spgnam, int *numsgp, fpstr pgname,int *msym, float rrsym[192][4][4], int *msymp,int *mlaue, ftn_logical *lprint, int spgnam_len, int pgname_len)  ,
(fpstr spgnam, int *numsgp, fpstr pgname,int *msym, float rrsym[192][4][4], int *msymp,int *mlaue, ftn_logical *lprint)  ,
(fpstr spgnam, int spgnam_len, int *numsgp,fpstr pgname, int pgname_len,int *msym, float rrsym[192][4][4], int *msymp,int *mlaue, ftn_logical *lprint)   
)

Set spacegroup for subsequent calls to ASUPUT, ASUGET, ASUSYM and ASUPHP.

Parameters:
spgnam spacegroup name
numsgp spacegroup number
pgname On return, point group name
msym number of symmetry matrices passed.
rrsym symmetry matrices (preferred method of identifying spacegroup).
msymp On return, number of primitive symmetry operators
mlaue On return, number of Laue group.
lprint If true, print symmetry information.

References ccp4_CtoFString(), ccp4_utils_malloc(), ccperror(), and ccp4_symop_::trn.

FORTRAN_SUBR ( HKLRANGE  ,
hklrange  ,
(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1)  ,
(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1)  ,
(int *ihrng0, int *ihrng1, int *ikrng0, int *ikrng1, int *ilrng0, int *ilrng1)   
)

Return ranges on H K L appropriate to spacegroup.

Parameters:
sindx index of this spacegroup.
nlaue Laue number
launam Laue name

References ccperror().

FORTRAN_SUBR ( CCP4SPG_F_LOAD_BY_OPS  ,
ccp4spg_f_load_by_ops  ,
(const int *sindx, int *msym, float rrsym[192][4][4])  ,
(const int *sindx, int *msym, float rrsym[192][4][4])  ,
(const int *sindx, int *msym, float rrsym[192][4][4])   
)

Loads a spacegroup onto index "sindx". The spacegroup is identified by the set of symmetry matrices.

Parameters:
sindx index of this spacegroup.
msym number of symmetry matrices passed.
rrsym symmetry matrices.

References ccp4_utils_malloc(), ccperror(), and ccp4_symop_::trn.

FORTRAN_SUBR ( ASUPUT  ,
asuput  ,
(const int ihkl[3], int jhkl[3], int *isym)  ,
(const int ihkl[3], int jhkl[3], int *isym)  ,
(const int ihkl[3], int jhkl[3], int *isym)   
)

Put reflection in asymmetric unit, as set up by ASUSET.

Parameters:
ihkl input indices.
jhkl output indices.
isym symmetry operation applied (ISYM number).
FORTRAN_SUBR ( SYMTR4  ,
symtr4  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs, int symchs_len)  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs)  ,
(const int *nsm, const float rsm[MAXSYM][4][4],fpstr symchs, int symchs_len)   
)

Fortran wrapper for mat4_to_symop.

Parameters:
nsm number of symmetry matrices passed.
rsm symmetry matrices.
symchs symmetry strings returned.

References ccp4_CtoFString(), and mat4_to_symop().

FORTRAN_SUBR ( EPSLN  ,
epsln  ,
(const int *nsm, const int *nsmp, const float rsm[192][4][4],const int *iprint)  ,
(const int *nsm, const int *nsmp, const float rsm[192][4][4],const int *iprint)  ,
(const int *nsm, const int *nsmp, const float rsm[192][4][4],const int *iprint)   
)

Epsilon zones currently set up in ccp4spg_load_spacegroup If these are not available, use lookup by symops.

Parameters:
nsm number of symmetry operators.
nsmp number of primitive symmetry operators.
rsm symmetry matrices.
iprint If iprint > 0 then a summary of epsilon zones is printed.

References ccp4_utils_malloc(), ccp4_symop_::rot, and ccp4_symop_::trn.