FOX/ObjCryst++  1.10.X (development)
geomStructFactor_230.cpp
1 /* ObjCryst++ Object-Oriented Crystallographic Library
2  (c) 2000-2002 Vincent Favre-Nicolin vincefn@users.sourceforge.net
3  2000-2001 University of Geneva (Switzerland)
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19 #include "ObjCryst/CrystVector/CrystVector.h"
20 #ifdef __VFN_GEOM_STRUCT_FACTOR_USE_POINTERS
21 
22 #define H (*h)
23 #define K (*k)
24 #define L (*l)
25 #define SF (*sf)
26 
27 #define __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT const REAL *h,*k,*l; REAL*sf;\
28  h=hh.data();k=kk.data();l=ll.data();sf=sfsf.data(); for(long i=0;i<hh.numElements();i++){
29 #define __VFN_GEOM_STRUCT_FACTOR_POINTERS_END h++ ; k++ ; l++ ; sf++; };
30 
31 #else
32 
33 #define H hh
34 #define K kk
35 #define L ll
36 #define sfsf SF
37 
38 #define __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT
39 #define __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
40 
41 #endif
42 
43 namespace ObjCryst
44 {
45 
46 void RealGeomStructFactor_230 (const REAL x,
47  const REAL y,
48  const REAL z,
49  const CrystVector_REAL&hh,
50  const CrystVector_REAL&kk,
51  const CrystVector_REAL&ll,
52  CrystVector_REAL& sfsf)
53 {
54 __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT
55 
56  SF+=16*cos((H+K+L)/4)*(cos(H*x+L/4)*cos(K*y+H/4)*cos(L*z+K/4)
57  +cos(K*x+H/4)*cos(L*y+K/4)*cos(H*z+L/4)+cos(L*x+K/4)*cos(H*y+L/4)*cos(K*z+H/4)
58  +cos((H+K+L)/4)*(cos(K*x+L/4)*cos(H*y+K/4)*cos(L*z+H/4)
59  +cos(L*x+H/4)*cos(K*y+L/4)*cos(H*z+K/4)+cos(H*x+K/4)*cos(L*y+H/4)*cos(K*z+L/4)));
60 
61 __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
62 };
63 
64 }
65 
66 #undef H
67 #undef K
68 #undef L
69 #undef SF
70 #undef hh
71 #undef kk
72 #undef ll
73 #undef sfsf
74 #undef __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT
75 #undef __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
76 
77 #undef __VFN_GEOM_STRUCT_FACTOR_USE_POINTERS
The namespace which includes all objects (crystallographic and algorithmic) in ObjCryst++.
Definition: Atom.cpp:47
void RealGeomStructFactor_230(const REAL x, const REAL y, const REAL z, const CrystVector_REAL &h, const CrystVector_REAL &k, const CrystVector_REAL &l, CrystVector_REAL &rsf)