aboutsummaryrefslogtreecommitdiff
path: root/src/basis.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-12-22 23:02:02 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-12-22 23:02:02 +0000
commit356a1da9da926e70f551f1f2a353f9ea92ef0a06 (patch)
tree1f69f30559101c155830ee561bf1f02a4fa51fd8 /src/basis.c
parent04e69a4136bdc5f947fd02033722b07c708baa7f (diff)
Messing around
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@237 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/basis.c')
-rw-r--r--src/basis.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/basis.c b/src/basis.c
index 46335fa..8d94683 100644
--- a/src/basis.c
+++ b/src/basis.c
@@ -83,6 +83,21 @@ Basis basis_add(Basis u, Basis v) {
}
+static void basis_print(Basis *cell) {
+
+ printf("%12.8f %12.8f %12.8f\n", cell->a.x, cell->a.y, cell->a.z);
+ printf("%12.8f %12.8f %12.8f\n", cell->b.x, cell->b.y, cell->b.z);
+ printf("%12.8f %12.8f %12.8f\n", cell->c.x, cell->c.y, cell->c.z);
+
+}
+
+static void cell_print(UnitCell *cell) {
+
+ printf("%12.8f %12.8f %12.8f\n", cell->a, cell->b, cell->c);
+ printf("%12.8f %12.8f %12.8f\n", cell->alpha, cell->beta, cell->gamma);
+
+}
+
UnitCell basis_get_cell(Basis *basis) {
UnitCell cell;
@@ -92,13 +107,17 @@ UnitCell basis_get_cell(Basis *basis) {
double ax, ay, az, bx, by, bz, cx, cy, cz;
int s;
+ basis->a.x = 0.5; basis->a.y = 0.0; basis->a.z = 0.0;
+ basis->b.x = 0.0; basis->b.y = 0.2; basis->b.z = 0.0;
+ basis->c.x = 0.0; basis->c.y = 0.0; basis->c.z = 1.0;
+ printf("Reciprocal-space cell:\n");
+ basis_print(basis);
+
m = gsl_matrix_alloc(3, 3);
gsl_matrix_set(m, 0, 0, basis->a.x); gsl_matrix_set(m, 0, 1, basis->b.x); gsl_matrix_set(m, 0, 2, basis->c.x);
gsl_matrix_set(m, 1, 0, basis->a.y); gsl_matrix_set(m, 1, 1, basis->b.y); gsl_matrix_set(m, 1, 2, basis->c.y);
gsl_matrix_set(m, 2, 0, basis->a.z); gsl_matrix_set(m, 2, 1, basis->b.z); gsl_matrix_set(m, 2, 2, basis->c.z);
- gsl_matrix_transpose(m);
-
perm = gsl_permutation_alloc(m->size1);
inv = gsl_matrix_alloc(m->size1, m->size2);
gsl_linalg_LU_decomp(m, perm, &s);
@@ -106,10 +125,17 @@ UnitCell basis_get_cell(Basis *basis) {
gsl_permutation_free(perm);
gsl_matrix_free(m);
+ gsl_matrix_transpose(inv);
+
ax = gsl_matrix_get(inv, 0, 0); bx = gsl_matrix_get(inv, 0, 1); cx = gsl_matrix_get(inv, 0, 2);
ay = gsl_matrix_get(inv, 1, 0); by = gsl_matrix_get(inv, 1, 1); cy = gsl_matrix_get(inv, 1, 2);
az = gsl_matrix_get(inv, 2, 0); bz = gsl_matrix_get(inv, 2, 1); cz = gsl_matrix_get(inv, 2, 2);
+ printf("Real-space cell:\n");
+ printf("%12.8f %12.8f %12.8f\n", ax, ay, az);
+ printf("%12.8f %12.8f %12.8f\n", bx, by, bz);
+ printf("%12.8f %12.8f %12.8f\n", cx, cy, cz);
+
cell.a = sqrt(ax*ax + ay*ay + az*az);
cell.b = sqrt(bx*bx + by*by + bz*bz);
cell.c = sqrt(cx*cx + cy*cy + cz*cz);
@@ -119,6 +145,9 @@ UnitCell basis_get_cell(Basis *basis) {
gsl_matrix_free(inv);
+ printf("Cell parameters:\n");
+ cell_print(&cell);
+
return cell;
}