FOX/ObjCryst++  1.10.X (development)
geomStructFactor_001.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_1 (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 += cos(H*x+K*y+L*z);
57 
58 __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
59 
60  return;
61 };
62 
63 void ImagGeomStructFactor_1 (const REAL x,
64  const REAL y,
65  const REAL z,
66  const CrystVector_REAL&hh,
67  const CrystVector_REAL&kk,
68  const CrystVector_REAL&ll,
69  CrystVector_REAL& sfsf)
70 {
71 __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT
72 
73  SF += sin(H*x+K*y+L*z);
74 
75 __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
76 
77  return;
78 };
79 
80 }//namespace
81 #undef H
82 #undef K
83 #undef L
84 #undef SF
85 #undef hh
86 #undef kk
87 #undef ll
88 #undef sfsf
89 #undef __VFN_GEOM_STRUCT_FACTOR_POINTERS_INIT
90 #undef __VFN_GEOM_STRUCT_FACTOR_POINTERS_END
91 
92 #undef __VFN_GEOM_STRUCT_FACTOR_USE_POINTERS
void ImagGeomStructFactor_1(const REAL x, const REAL y, const REAL z, const CrystVector_REAL &h, const CrystVector_REAL &k, const CrystVector_REAL &l, CrystVector_REAL &isf)
void RealGeomStructFactor_1(const REAL x, const REAL y, const REAL z, const CrystVector_REAL &h, const CrystVector_REAL &k, const CrystVector_REAL &l, CrystVector_REAL &rsf)
The namespace which includes all objects (crystallographic and algorithmic) in ObjCryst++.
Definition: Atom.cpp:47