00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00097 #ifndef __CSymLib__
00098 #define __CSymLib__
00099
00100
00101
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
00616
00617
00618