00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00099 #ifndef __CSymLib__
00100 #define __CSymLib__
00101
00102
00103
00104 #include "ccp4_spg.h"
00105
00106 #ifdef __cplusplus
00107 namespace CSym {
00108 extern "C" {
00109 #endif
00110
00115 CCP4SPG *ccp4spg_load_by_standard_num(const int numspg);
00116
00121 CCP4SPG *ccp4spg_load_by_ccp4_num(const int ccp4numspg);
00122
00127 CCP4SPG *ccp4spg_load_by_spgname(const char *spgname);
00128
00136 CCP4SPG *ccp4spg_load_by_ccp4_spgname(const char *ccp4spgname);
00137
00143 CCP4SPG * ccp4_spgrp_reverse_lookup(const int nsym1, const ccp4_symop *op1);
00144
00156 CCP4SPG *ccp4spg_load_spacegroup(const int numspg, const int ccp4numspg,
00157 const char *spgname, const char *ccp4spgname,
00158 const int nsym1, const ccp4_symop *op1);
00159
00164 void ccp4spg_mem_tidy(void);
00165
00173 int symfr_driver (const char *line, float rot[][4][4]);
00174
00178 void ccp4spg_free(CCP4SPG **sp);
00179
00185 void ccp4spg_register_by_ccp4_num(int numspg);
00186
00193 void ccp4spg_register_by_symops(int nops, float rsm[][4][4]);
00194
00201 int ccp4_spg_get_centering(const char *symbol_Hall, float cent_ops[4][3]);
00202
00208 int ccp4spg_load_laue(CCP4SPG* spacegroup, const int nlaue);
00209
00213 int ASU_1b (const int h, const int k, const int l);
00214
00218 int ASU_2_m (const int h, const int k, const int l);
00219
00223 int ASU_mmm (const int h, const int k, const int l);
00224
00228 int ASU_4_m (const int h, const int k, const int l);
00229
00233 int ASU_4_mmm(const int h, const int k, const int l);
00234
00238 int ASU_3b (const int h, const int k, const int l);
00239
00243 int ASU_3bm (const int h, const int k, const int l);
00244
00248 int ASU_3bmx (const int h, const int k, const int l);
00249
00253 int ASU_6_m (const int h, const int k, const int l);
00254
00258 int ASU_6_mmm(const int h, const int k, const int l);
00259
00263 int ASU_m3b (const int h, const int k, const int l);
00264
00268 int ASU_m3bm (const int h, const int k, const int l);
00269
00274 char *ccp4spg_symbol_Hall(CCP4SPG* sp);
00275
00281 ccp4_symop ccp4_symop_invert( const ccp4_symop op1 );
00282
00290 int ccp4spg_name_equal(const char *spgname1, const char *spgname2);
00291
00303 int ccp4spg_name_equal_to_lib(const char *spgname_lib, const char *spgname_match);
00304
00312 char *ccp4spg_to_shortname(char *shortname, const char *longname);
00313
00320 void ccp4spg_name_de_colon(char *name);
00321
00329 int ccp4spg_pgname_equal(const char *pgname1, const char *pgname2);
00330
00336 ccp4_symop *ccp4spg_norm_trans(ccp4_symop *op);
00337
00350 int ccp4_spgrp_equal( int nsym1, const ccp4_symop *op1, int nsym2, const ccp4_symop *op2);
00351
00357 int ccp4_symop_code(ccp4_symop op);
00358
00365 int ccp4_int_compare( const void *p1, const void *p2 );
00366
00374 int ccp4spg_is_in_pm_asu(const CCP4SPG* sp, const int h, const int k, const int l);
00375
00383 int ccp4spg_is_in_asu(const CCP4SPG* sp, const int h, const int k, const int l);
00384
00399 int ccp4spg_put_in_asu(const CCP4SPG* sp, const int hin, const int kin, const int lin,
00400 int *hout, int *kout, int *lout );
00401
00414 void ccp4spg_generate_indices(const CCP4SPG* sp, const int isym,
00415 const int hin, const int kin, const int lin,
00416 int *hout, int *kout, int *lout );
00417
00428 float ccp4spg_phase_shift(const int hin, const int kin, const int lin,
00429 const float phasin, const float trans[3], const int isign);
00430
00436 int ccp4spg_do_chb(const float chb[3][3]);
00437
00443 void ccp4spg_set_centric_zones(CCP4SPG* sp);
00444
00454 int ccp4spg_is_centric(const CCP4SPG* sp, const int h, const int k, const int l);
00455
00463 int ccp4spg_check_centric_zone(const int nzone, const int h, const int k, const int l);
00464
00473 float ccp4spg_centric_phase(const CCP4SPG* sp, const int h, const int k, const int l);
00474
00479 void ccp4spg_print_centric_zones(const CCP4SPG* sp);
00480
00486 char *ccp4spg_describe_centric_zone(const int nzone, char *centric_zone);
00487
00493 void ccp4spg_set_epsilon_zones(CCP4SPG* sp);
00494
00503 int ccp4spg_get_multiplicity(const CCP4SPG* sp, const int h, const int k, const int l);
00504
00512 int ccp4spg_check_epsilon_zone(const int nzone, const int h, const int k, const int l);
00513
00518 void ccp4spg_print_epsilon_zones(const CCP4SPG* sp);
00519
00525 char *ccp4spg_describe_epsilon_zone(const int nzone, char *epsilon_zone);
00526
00527
00535 int ccp4spg_is_sysabs(const CCP4SPG* sp, const int h, const int k, const int l);
00536
00548 int ccp4spg_generate_origins(const char *namspg, const int nsym, const float rsym[][4][4],
00549 float origins[][3], int *polarx, int *polary, int *polarz,
00550 const int iprint);
00551
00556 void ccp4spg_print_recip_spgrp(const CCP4SPG* sp);
00557
00562 void ccp4spg_print_recip_ops(const CCP4SPG* sp);
00563
00570 int range_to_limits(const char *range, float limits[2]);
00571
00583 void set_fft_grid(CCP4SPG* sp, const int nxmin, const int nymin, const int nzmin,
00584 const float sample, int *nx, int *ny, int *nz);
00585
00591 int all_factors_le_19(const int n);
00592
00600 int get_grid_sample(const int minsmp, const int nmul, const float sample);
00601
00609 int ccp4spg_check_symm_cell(int nsym, float rsym[][4][4], float cell[6]);
00610
00611 #ifdef __cplusplus
00612 } }
00613 #endif
00614 #endif
00615
00616
00617
00618
00619
00620