#include #include #include #include #define T(X) (fmod(Util::rad2d(X)+72000.0,360.0)) using namespace clipper; using namespace clipper::data32; int main() { int sg_num,i,n; std::cout << "Enter spacegroup: "; std::cin >> sg_num; CSpacegroup cspgr("spgr",Spacegroup(Spgr_descr(sg_num))); CCell ccell(cspgr,"cell",Cell(Cell_descr(100.0,100.0,100.0,Util::pi()/2.0,Util::pi()/2.0,Util::pi()/2.0))); CCell ccell2(cspgr,"cell2",Cell(Cell_descr(99.0,99.0,99.0,Util::pi()/2.0,Util::pi()/2.0,Util::pi()/2.0))); cspgr.Spacegroup::debug(); ccell.Cell::debug(); CHKL_info chkl(ccell,"hkl"); chkl.init( cspgr, ccell, Resolution(19.99) ); chkl.generate_hkl_list(); chkl.spacegroup().debug(); CHKL_data cfphi(chkl, "myfphi"); CHKL_data cfphi2(chkl, "myfphi2"); CHKL_data cfsig(chkl, "myfsig"); cspgr.Container::debug(); std::cout << dynamic_cast(chkl.find_path_ptr("myfphi"))->type() << "\n"; std::cout << dynamic_cast(chkl.find_path_ptr("myfsig"))->type() << "\n"; F_sigF dat1; F_phi dat2; dat1.f()=dat1.sigf()=0.0f; dat2.f()=dat2.phi()=0.0f; n = chkl.spacegroup().num_symops(); std::cout << n << " "; n = Util::min( n-1, 1 ); std::cout << n << "\n"; for (i=0; i(cfphi[i]) ); Grid_range mgrid( Coord_grid(-1,-1,-1), Coord_grid(1,1,1) ); for ( Coord_grid c = mgrid.min(); !c.last(mgrid); c.next(mgrid) ) fftmaps1.require_real_data(c.unit(cgrid)); fftmaps1.fft_h_to_x(1.0/ccell.volume()); for ( Coord_grid c = mgrid.min(); !c.last(mgrid); c.next(mgrid) ) std::cout << c.format() << "\t" << fftmaps1.real_data(c.unit(cgrid)) << "\t" << fftmap.get_real_data(c) << "\n"; fftmapp1.reset(); for ( Coord_grid c = mgrid.min(); !c.last(mgrid); c.next(mgrid) ) fftmapp1.real_data(c.unit(cgrid)) = fftmaps1.real_data(c.unit(cgrid)); for ( Coord_grid c = mgrid.min(); !c.last(mgrid); c.next(mgrid) ) fftmaps2.real_data(c.unit(cgrid)) = fftmaps1.real_data(c.unit(cgrid)); for (i=0; i xmap( cspgr, ccell, cgrid ); xmap.fft_from( cfphi ); std::cout << "done fft\n"; xmap.fft_to ( cfphi2 ); // for (i=0; i0.0001; x/=3.1 ) std::cout << x << " " << Util::sim_deriv(x) << " " << Util::sim(x) << " " << Util::sim_integ(x) << " " << Util::sim_deriv(-x) << " " << Util::sim(-x) << " " << Util::sim_integ(-x) << "\n"; CHKL_data cphifom(chkl, "myphifom"); CHKL_data cabcd(chkl, "myABCD"); CHKL_data cphifom2(chkl, "myphifom2"); Phi_fom phifom; for (i=0; i q(ih.hkl_class()); q.set_phi_fom( cphifom2[ih] ); q.get_abcd( cabcd[ih] ); q.set_abcd( cabcd[ih] ); q.get_phi_fom( cphifom2[ih] ); } for (i=0; i lim.h() || abs(ik) > lim.k() || abs(il) > lim.l() ) ) std::cout << "Err " << lim.format() << " " << hkl.format() << "\n"; } } /* // Compare reciprocal cell conventions: clipper::Cell cell( clipper::Cell_descr( 20.0, 24.0, 18.0, 60.0, 70.0, 80.0 ) ); // Orthogonalisation matrix (A**-1) // Reciprocal cell double as = cell.a_star(); double bs = cell.b_star(); double cs = cell.c_star(); double cas = cos(cell.alpha_star()); double cbs = cos(cell.beta_star() ); double cgs = cos(cell.gamma_star()); double sas = sin(cell.alpha_star()); double sbs = sin(cell.beta_star() ); double sgs = sin(cell.gamma_star()); double cc = cell.c(); double ca = cos(cell.alpha()); Mat33<> bmat = Mat33<>(as, bs*cgs, cs*cbs, 0., bs*sgs, -cs*sbs*ca, 0., 0., 1.0/cc); std::cout << cell.matrix_frac().format() << "\n"; std::cout << bmat.format() << "\n"; for ( int ih = 0; ih <= 5; ih++ ) for ( int ik = 0; ik <= 5; ik++ ) for ( int il = 0; il <= 5; il++ ) { HKL hkl(ih,ik,il); std::cout << hkl.format() << "\n"; Vec3<> v1 = cell.matrix_frac().transpose()*hkl.coord_reci_frac(); Vec3<> v2 = bmat*hkl.coord_reci_frac(); std::cout << v1.format() << "\t" << v1*v1 << "\n"; std::cout << v2.format() << "\t" << v2*v2 << "\n"; std::cout << hkl.invresolsq(cell) << "\n"; } */ }