aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2012-09-06 14:40:26 +0200
committerThomas White <taw@physics.org>2012-09-06 14:40:47 +0200
commitdd96fc24b2012d588a7954190b7c8325c412e9c3 (patch)
tree8abb34e7e200a29299588bce8b6b2bd62c1bd90a
parentace568f10503f9157ab483bfce8577c22275e166 (diff)
pattern_sim: Add 32 and m-3 to GPU simulation
-rw-r--r--data/diffraction.cl43
-rw-r--r--src/diffraction-gpu.c4
2 files changed, 47 insertions, 0 deletions
diff --git a/data/diffraction.cl b/data/diffraction.cl
index d128446e..75933927 100644
--- a/data/diffraction.cl
+++ b/data/diffraction.cl
@@ -205,6 +205,49 @@ float molecule_factor(global float *intensities, global float *flags,
val += lookup_flagged_intensity(intensities, flags, i, k, l);
#endif /* PG6MMM */
+ #ifdef PG23
+ val += lookup_flagged_intensity(intensities, flags, h, k, l);
+ val += lookup_flagged_intensity(intensities, flags, -h, -k, l);
+ val += lookup_flagged_intensity(intensities, flags, -h, k, -l);
+ val += lookup_flagged_intensity(intensities, flags, h, -k, -l);
+ val += lookup_flagged_intensity(intensities, flags, k, l, h);
+ val += lookup_flagged_intensity(intensities, flags, l, h, k);
+ val += lookup_flagged_intensity(intensities, flags, -k, -l, h);
+ val += lookup_flagged_intensity(intensities, flags, -l, -h, k);
+ val += lookup_flagged_intensity(intensities, flags, -k, l, -h);
+ val += lookup_flagged_intensity(intensities, flags, -l, h, -k);
+ val += lookup_flagged_intensity(intensities, flags, k, -l, -h);
+ val += lookup_flagged_intensity(intensities, flags, l, -h, -k);
+ #endif /* PG23 */
+
+ #ifdef PGM3
+ val += lookup_flagged_intensity(intensities, flags, h, k, l);
+ val += lookup_flagged_intensity(intensities, flags, -h, -k, l);
+ val += lookup_flagged_intensity(intensities, flags, -h, k, -l);
+ val += lookup_flagged_intensity(intensities, flags, h, -k, -l);
+ val += lookup_flagged_intensity(intensities, flags, k, l, h);
+ val += lookup_flagged_intensity(intensities, flags, l, h, k);
+ val += lookup_flagged_intensity(intensities, flags, -k, -l, h);
+ val += lookup_flagged_intensity(intensities, flags, -l, -h, k);
+ val += lookup_flagged_intensity(intensities, flags, -k, l, -h);
+ val += lookup_flagged_intensity(intensities, flags, -l, h, -k);
+ val += lookup_flagged_intensity(intensities, flags, k, -l, -h);
+ val += lookup_flagged_intensity(intensities, flags, l, -h, -k);
+
+ val += lookup_flagged_intensity(intensities, flags, -h, -k, -l);
+ val += lookup_flagged_intensity(intensities, flags, h, k, -l);
+ val += lookup_flagged_intensity(intensities, flags, h, -k, l);
+ val += lookup_flagged_intensity(intensities, flags, -h, k, l);
+ val += lookup_flagged_intensity(intensities, flags, -k, -l, -h);
+ val += lookup_flagged_intensity(intensities, flags, -l, -h, -k);
+ val += lookup_flagged_intensity(intensities, flags, k, l, -h);
+ val += lookup_flagged_intensity(intensities, flags, l, h, -k);
+ val += lookup_flagged_intensity(intensities, flags, k, -l, h);
+ val += lookup_flagged_intensity(intensities, flags, l, -h, k);
+ val += lookup_flagged_intensity(intensities, flags, -k, l, h);
+ val += lookup_flagged_intensity(intensities, flags, -l, h, k);
+ #endif /* PGM3 */
+
return val;
#endif /* FLAT_INTENSITIIES */
}
diff --git a/src/diffraction-gpu.c b/src/diffraction-gpu.c
index 15ff39cc..e90f2822 100644
--- a/src/diffraction-gpu.c
+++ b/src/diffraction-gpu.c
@@ -471,6 +471,10 @@ struct gpu_context *setup_gpu(int no_sfac,
strncat(cflags, "-DPG6M ", 511-strlen(cflags));
} else if ( strcmp(sym, "mmm") == 0 ) {
strncat(cflags, "-DPGMMM ", 511-strlen(cflags));
+ } else if ( strcmp(sym, "23") == 0 ) {
+ strncat(cflags, "-DPG23 ", 511-strlen(cflags));
+ } else if ( strcmp(sym, "m-3") == 0 ) {
+ strncat(cflags, "-DPGM3 ", 511-strlen(cflags));
} else {
ERROR("Sorry! Point group '%s' is not currently"
" supported on the GPU."