source: sasview/sansmodels/src/sans/models/prototypes/src/disperse_cylinder.c @ 3db3895

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 3db3895 was ae3ce4e, checked in by Mathieu Doucet <doucetm@…>, 17 years ago

Moving sansmodels to trunk

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/**
2 * Scattering model for a cylinder
3 * @author: Mathieu Doucet / UTK
4 */
5
6#include "cylinder.h"
7#include "disperse_cylinder.h"
8#include <math.h>
9#include "libCylinder.h"
10
11double c_disperser( double (*eval)(), double dp[], int n_pars, 
12                                        int *idList, double *sigmaList, int n_pts, double q, double phi );
13
14/**
15 * Function to evaluate 1D scattering function
16 * @param pars: parameters of the cylinder
17 * @param q: q-value
18 * @return: function value
19 */
20double disperse_cylinder_analytical_1D(DispCylinderParameters *pars, double q) {
21        double dp[5];
22       
23        // Fill paramater array
24        dp[0] = pars->scale;
25        dp[1] = pars->radius;
26        dp[2] = pars->length;
27        dp[3] = pars->contrast;
28        dp[4] = pars->background;
29       
30        return CylinderForm(dp, q);
31}
32       
33double disp_cyl_run(double pars[], double q, double phi) {
34        CylinderParameters danse_pars;
35        danse_pars.scale        = pars[0];
36        danse_pars.radius       = pars[1];
37        danse_pars.length       = pars[2];
38        danse_pars.contrast     = pars[3];
39        danse_pars.background   = pars[4];
40        danse_pars.cyl_theta    = pars[5];
41        danse_pars.cyl_phi      = pars[6];
42
43        return cylinder_analytical_2D(&danse_pars, q, phi);             
44               
45}
46       
47/**
48 * Function to evaluate 2D scattering function
49 * @param pars: parameters of the cylinder
50 * @param q: q-value
51 * @return: function value
52 */
53double disperse_cylinder_analytical_2D(DispCylinderParameters *pars, double q, double phi) {
54        CylinderParameters cyl_pars;
55        double dp[6];
56        int paramList[3];
57        double sigmaList[3];
58        int npts;
59       
60       
61        // Fill paramater struct
62        dp[0] = pars->scale;
63        dp[1] = pars->radius;
64        dp[2] = pars->length;
65        dp[3] = pars->contrast;
66        dp[4] = pars->background;
67        dp[6] = pars->cyl_phi;
68        dp[5] = pars->cyl_theta;
69       
70        paramList[0] = 6;
71        paramList[1] = 5;
72        paramList[2] = 1;
73       
74       
75        sigmaList[0] = pars->sigma_phi;
76        sigmaList[1] = pars->sigma_theta;
77        sigmaList[2] = pars->sigma_radius;
78       
79        npts = (int)(floor(pars->n_pts));
80       
81        return c_disperser( &disp_cyl_run, &dp, 3, 
82                                        paramList, sigmaList, npts, q, phi ); 
83
84       
85}
86   
Note: See TracBrowser for help on using the repository browser.