gpp4 1.3.1
|
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 */