gpp4  1.3.1
src/csymlib.h
Go to the documentation of this file.
00001 /*
00002      csymlib.h: header file for csymlib.c
00003      Copyright (C) 2001  CCLRC, Martyn Winn
00004 
00005      This library is free software: you can redistribute it and/or
00006      modify it under the terms of the GNU Lesser General Public
00007      License as published by the Free Software Foundation, either
00008      version 3 of the License, or (at your option) any later version.
00009 
00010      This library is distributed in the hope that it will be useful,
00011      but WITHOUT ANY WARRANTY; without even the implied warranty of
00012      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013      Lesser General Public License for more details.
00014 
00015      You should have received a copy of the GNU Lesser General Public
00016      License along with This library.  If not, see
00017      <http://www.gnu.org/licenses/>.
00018 
00019 */
00020 
00097 #ifndef __CSymLib__
00098 #define __CSymLib__
00099 
00100 
00101 /* note that definitions in ccp4_spg.h are within the CSym namespace */
00102 #include "ccp4_spg.h"
00103 
00104 #ifdef  __cplusplus
00105 namespace CSym {
00106 extern "C" {
00107 #endif
00108 
00113 CCP4SPG *ccp4spg_load_by_standard_num(const int numspg); 
00114 
00119 CCP4SPG *ccp4spg_load_by_ccp4_num(const int ccp4numspg); 
00120 
00125 CCP4SPG *ccp4spg_load_by_spgname(const char *spgname);
00126 
00134 CCP4SPG *ccp4spg_load_by_ccp4_spgname(const char *ccp4spgname);
00135 
00141 CCP4SPG * ccp4_spgrp_reverse_lookup(const int nsym1, const ccp4_symop *op1);
00142 
00154 CCP4SPG *ccp4spg_load_spacegroup(const int numspg, const int ccp4numspg,
00155         const char *spgname, const char *ccp4spgname, 
00156         const int nsym1, const ccp4_symop *op1); 
00157 
00162 void ccp4spg_mem_tidy(void);
00163 
00171 int symfr_driver (const char *line, float rot[][4][4]);
00172 
00176 void ccp4spg_free(CCP4SPG **sp);
00177 
00183 void ccp4spg_register_by_ccp4_num(int numspg);
00184 
00191 void ccp4spg_register_by_symops(int nops, float rsm[][4][4]);
00192 
00199 int ccp4_spg_get_centering(const char *symbol_Hall, float cent_ops[4][3]);
00200 
00206 int ccp4spg_load_laue(CCP4SPG* spacegroup, const int nlaue);
00207 
00211 int ASU_1b   (const int h, const int k, const int l);
00212 
00216 int ASU_2_m  (const int h, const int k, const int l);
00217 
00221 int ASU_mmm  (const int h, const int k, const int l);
00222 
00226 int ASU_4_m  (const int h, const int k, const int l);
00227 
00231 int ASU_4_mmm(const int h, const int k, const int l);
00232 
00236 int ASU_3b   (const int h, const int k, const int l);
00237 
00241 int ASU_3bm  (const int h, const int k, const int l);
00242 
00246 int ASU_3bmx (const int h, const int k, const int l);
00247 
00251 int ASU_6_m  (const int h, const int k, const int l);
00252 
00256 int ASU_6_mmm(const int h, const int k, const int l);
00257 
00261 int ASU_m3b  (const int h, const int k, const int l);
00262 
00266 int ASU_m3bm  (const int h, const int k, const int l);
00267 
00272 char *ccp4spg_symbol_Hall(CCP4SPG* sp);
00273 
00279 ccp4_symop ccp4_symop_invert( const ccp4_symop op1 );
00280 
00288 int ccp4spg_name_equal(const char *spgname1, const char *spgname2);
00289 
00301 int ccp4spg_name_equal_to_lib(const char *spgname_lib, const char *spgname_match);
00302 
00310 char *ccp4spg_to_shortname(char *shortname, const char *longname);
00311 
00318 void ccp4spg_name_de_colon(char *name);
00319 
00327 int ccp4spg_pgname_equal(const char *pgname1, const char *pgname2);
00328 
00334 ccp4_symop *ccp4spg_norm_trans(ccp4_symop *op);
00335 
00348 int ccp4_spgrp_equal( int nsym1, const ccp4_symop *op1, int nsym2, const ccp4_symop *op2);
00349 
00355 int ccp4_symop_code(ccp4_symop op);
00356 
00363 int ccp4_int_compare( const void *p1, const void *p2 );
00364 
00372 int ccp4spg_is_in_pm_asu(const CCP4SPG* sp, const int h, const int k, const int l);
00373 
00381 int ccp4spg_is_in_asu(const CCP4SPG* sp, const int h, const int k, const int l);
00382 
00397 int ccp4spg_put_in_asu(const CCP4SPG* sp, const int hin, const int kin, const int lin,
00398                        int *hout, int *kout, int *lout );
00399 
00412 void ccp4spg_generate_indices(const CCP4SPG* sp, const int isym,
00413                   const int hin, const int kin, const int lin,
00414                               int *hout, int *kout, int *lout );
00415 
00426 float ccp4spg_phase_shift(const int hin, const int kin, const int lin,
00427                           const float phasin, const float trans[3], const int isign);
00428 
00434 int ccp4spg_do_chb(const float chb[3][3]);
00435 
00441 void ccp4spg_set_centric_zones(CCP4SPG* sp);
00442 
00452 int ccp4spg_is_centric(const CCP4SPG* sp, const int h, const int k, const int l);
00453 
00461 int ccp4spg_check_centric_zone(const int nzone, const int h, const int k, const int l);
00462 
00471 float ccp4spg_centric_phase(const CCP4SPG* sp, const int h, const int k, const int l);
00472 
00477 void ccp4spg_print_centric_zones(const CCP4SPG* sp);
00478 
00484 char *ccp4spg_describe_centric_zone(const int nzone, char *centric_zone);
00485 
00491 void ccp4spg_set_epsilon_zones(CCP4SPG* sp);
00492 
00501 int ccp4spg_get_multiplicity(const CCP4SPG* sp, const int h, const int k, const int l);
00502 
00510 int ccp4spg_check_epsilon_zone(const int nzone, const int h, const int k, const int l);
00511 
00516 void ccp4spg_print_epsilon_zones(const CCP4SPG* sp);
00517 
00523 char *ccp4spg_describe_epsilon_zone(const int nzone, char *epsilon_zone);
00524 
00525 
00533 int ccp4spg_is_sysabs(const CCP4SPG* sp, const int h, const int k, const int l);
00534 
00546 int ccp4spg_generate_origins(const char *namspg, const int nsym, const float rsym[][4][4],
00547                              float origins[][3], int *polarx, int *polary, int *polarz,
00548                              const int iprint);
00549 
00554 void ccp4spg_print_recip_spgrp(const CCP4SPG* sp);
00555 
00560 void ccp4spg_print_recip_ops(const CCP4SPG* sp);
00561 
00568 int range_to_limits(const char *range, float limits[2]);
00569 
00581 void set_fft_grid(CCP4SPG* sp, const int nxmin, const int nymin, const int nzmin, 
00582                   const float sample, int *nx, int *ny, int *nz);
00583 
00589 int all_factors_le_19(const int n);
00590 
00598 int get_grid_sample(const int minsmp, const int nmul, const float sample);
00599 
00607 int ccp4spg_check_symm_cell(int nsym, float rsym[][4][4], float cell[6]);
00608 
00609 #ifdef __cplusplus
00610 } }
00611 #endif
00612 #endif
00613 
00614 /*
00615   Local variables:
00616   mode: font-lock
00617   End:
00618 */