diff options
author | Thomas White <taw@physics.org> | 2019-08-14 14:04:32 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2019-08-16 10:26:58 +0200 |
commit | af115ec0a455929352fef516c35d2b77cd283e9d (patch) | |
tree | 5c424b7c44426287ccb86c15adbe951fc0d3b922 /libcrystfel/src | |
parent | 2676cb9d314bb0dbe128738e8ced25de75129802 (diff) |
cell_volume: Give answer in m^3, not m^3
Diffstat (limited to 'libcrystfel/src')
-rw-r--r-- | libcrystfel/src/asdf.c | 2 | ||||
-rw-r--r-- | libcrystfel/src/cell-utils.c | 25 |
2 files changed, 12 insertions, 15 deletions
diff --git a/libcrystfel/src/asdf.c b/libcrystfel/src/asdf.c index 72b110d7..6c9e6ca0 100644 --- a/libcrystfel/src/asdf.c +++ b/libcrystfel/src/asdf.c @@ -1083,7 +1083,7 @@ int run_asdf(struct image *image, void *ipriv) d_max = max(a, b, c) * 3 * 1e10; - double volume = cell_get_volume(dp->template); + double volume = cell_get_volume(dp->template) / 1e30; /* Divide volume constraints by number of lattice points per * unit cell since asdf always finds primitive cell */ diff --git a/libcrystfel/src/cell-utils.c b/libcrystfel/src/cell-utils.c index 59e98775..82b42b98 100644 --- a/libcrystfel/src/cell-utils.c +++ b/libcrystfel/src/cell-utils.c @@ -1637,32 +1637,29 @@ int forbidden_reflection(UnitCell *cell, /** - * \returns cell volume in A^3 + * \returns cell volume in m^3 */ double cell_get_volume(UnitCell *cell) { - double asx, asy, asz; - double bsx, bsy, bsz; - double csx, csy, csz; + double ax, ay, az; + double bx, by, bz; + double cx, cy, cz; struct rvec aCb; - double rec_volume; - if ( cell_get_reciprocal(cell, &asx, &asy, &asz, - &bsx, &bsy, &bsz, - &csx, &csy, &csz) ) { + if ( cell_get_cartesian(cell, &ax, &ay, &az, + &bx, &by, &bz, + &cx, &cy, &cz) ) { ERROR("Couldn't get reciprocal cell.\n"); return 0; } /* "a" cross "b" */ - aCb.u = asy*bsz - asz*bsy; - aCb.v = - (asx*bsz - asz*bsx); - aCb.w = asx*bsy - asy*bsx; + aCb.u = ay*bz - az*by; + aCb.v = - (ax*bz - az*bx); + aCb.w = ax*by - ay*bx; /* "a cross b" dot "c" */ - rec_volume = (aCb.u*csx + aCb.v*csy + aCb.w*csz)/1e30; - - return 1/rec_volume; + return (aCb.u*cx + aCb.v*cy + aCb.w*cz); } |