[08648c0] | 1 | #if !defined(masssurfacefractal_h) |
---|
| 2 | #define masssurfacefractal_h |
---|
| 3 | #include "parameters.hh" |
---|
| 4 | |
---|
| 5 | /** |
---|
| 6 | * Structure definition for sphere parameters |
---|
| 7 | */ |
---|
| 8 | //[PYTHONCLASS] = MassSurfaceFractal |
---|
| 9 | //[DESCRIPTION] =<text> The scattering intensity I(x) = scale*P(x) + background, |
---|
| 10 | // p(x)= {[1+(x^2*a)]^(Dm/2) * [1+(x^2*b)]^(6-Ds-Dm)/2}^(-1) |
---|
| 11 | // a = Rg^2/(3*Dm/2) |
---|
| 12 | // b = rg^2/(3*(6-Ds-Dm)/2) |
---|
| 13 | // scale = scale factor * N*Volume^2*contrast^2 |
---|
| 14 | // mass_dim = Dm (mass fractal dimension) |
---|
| 15 | // surface_dim = Ds |
---|
| 16 | // cluster_rg = Rg |
---|
| 17 | // primary_rg = rg |
---|
| 18 | // background = background |
---|
| 19 | // Ref: Schmidt, J Appl Cryst, eq(19), (1991), 24, 414-435 |
---|
| 20 | // : Hurd, Schaefer, Martin, Phys Rev A, eq(2),(1987),35, 2361-2364 |
---|
| 21 | // Note that 0 < Ds< 6 and 0 < Dm < 6. |
---|
| 22 | // </text> |
---|
| 23 | //[ORIENTATION_PARAMS]= <text> </text> |
---|
| 24 | |
---|
| 25 | class MassSurfaceFractal{ |
---|
| 26 | public: |
---|
| 27 | // Model parameters |
---|
| 28 | /// Scale factor |
---|
| 29 | // [DEFAULT]=scale= 1.0 |
---|
| 30 | Parameter scale; |
---|
| 31 | |
---|
| 32 | /// Mass fractal dimension |
---|
| 33 | // [DEFAULT]=mass_dim=1.8 |
---|
| 34 | Parameter mass_dim; |
---|
| 35 | |
---|
| 36 | /// Surface fractal dimension |
---|
| 37 | // [DEFAULT]=surface_dim=2.3 |
---|
| 38 | Parameter surface_dim; |
---|
| 39 | |
---|
| 40 | /// cluster_rg [A] |
---|
| 41 | // [DEFAULT]=cluster_rg=86.7 [A] |
---|
| 42 | Parameter cluster_rg; |
---|
| 43 | |
---|
| 44 | /// primary_rg [A] |
---|
| 45 | // [DEFAULT]=primary_rg=4000.0 [A] |
---|
| 46 | Parameter primary_rg; |
---|
| 47 | |
---|
| 48 | /// Incoherent Background |
---|
| 49 | // [DEFAULT]=background=0.0 |
---|
| 50 | Parameter background; |
---|
| 51 | |
---|
| 52 | // Constructor |
---|
| 53 | MassSurfaceFractal(); |
---|
| 54 | |
---|
| 55 | // Operators to get I(Q) |
---|
| 56 | double operator()(double q); |
---|
| 57 | double operator()(double qx, double qy); |
---|
| 58 | double calculate_ER(); |
---|
| 59 | double evaluate_rphi(double q, double phi); |
---|
| 60 | }; |
---|
| 61 | |
---|
| 62 | #endif |
---|