source: sans/XOP_Dev/SANSAnalysis/lib/libSANSAnalysis.h @ 330

Last change on this file since 330 was 231, checked in by srkline, 15 years ago

EXTENSIVE changes to the XOP.

DANSE code has been directly incorporated into our libSANSAnalysis. Maybe not the cleanest way it Mathieu changes much in his code, but hopefully not too much of a mess.

Our old libFunc2D.c(.h) has been deleted (and replaced with multiple files of Mathieu's code, danse.h has the "exported" functions that we want
-note that there are some overlapping file names, (like cylinder.c), but they belong to different targets.

In our XOP, Func2D has the XOP wrappers to the 2D functions in danse.h

so far, works only for Mac. Still needs to be ported to WIN. Lots more entries in SANSAnalysis.c(.r)

File size: 6.3 KB
Line 
1/*
2 *  libSANSAnalysis.h
3 *  SANSAnalysis
4 *
5 *  Created by Andrew Jackson on 4/24/07.
6 *  Copyright 2007 __MyCompanyName__. All rights reserved.
7 *
8 */
9
10/* IGOR Fit Functions */
11double CylinderForm(double dp[], double q);
12double EllipCyl76(double dp[], double q);
13double EllipCyl20(double dp[], double q);
14double TriaxialEllipsoid(double dp[], double q);
15double Parallelepiped(double dp[], double q);
16double HollowCylinder(double dp[], double q);
17double EllipsoidForm(double dp[], double q);
18double Cyl_PolyRadius(double dp[], double q);
19double Cyl_PolyLength(double dp[], double q);
20double CoreShellCylinder(double dp[], double q);
21double OblateForm(double dp[], double q);
22double ProlateForm(double dp[], double q);
23double FlexExclVolCyl(double dp[], double q);
24double FlexCyl_PolyLen(double dp[], double q);
25double FlexCyl_PolyRad(double dp[], double q);
26double FlexCyl_Ellip(double dp[], double q);
27double PolyCoShCylinder(double dp[], double q);
28double StackedDiscs(double dp[], double q);
29double LamellarFF(double dp[], double q);
30double LamellarFF_HG(double dp[], double q);
31double LamellarPS(double dp[], double q);
32double LamellarPS_HG(double dp[], double q);
33
34/* internal functions */
35double CylKernel(double qq, double rr,double h, double theta);
36double NR_BessJ1(double x);
37double EllipCylKernel(double qq, double ra,double nu, double theta);
38double TriaxialKernel(double q, double aa, double bb, double cc, double dx, double dy);
39double PPKernel(double aa, double mu, double uu);
40double HolCylKernel(double qq, double rcore, double rshell, double length, double dum);
41double EllipsoidKernel(double qq, double a, double va, double dum);
42double Cyl_PolyRadKernel(double q, double radius, double length, double zz, double delrho, double dumRad);
43double SchulzPoint_cpr(double dumRad, double radius, double zz);
44double Cyl_PolyLenKernel(double q, double radius, double len_avg, double zz, double delrho, double dumLen);
45double CoreShellCylKernel(double qq, double rcore, double thick, double rhoc, double rhos, double rhosolv, double length, double dum);
46double gfn4(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq);
47double gfn2(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq);
48double FlePolyLen_kernel(double q, double radius, double length, double lb, double zz, double delrho, double zi);
49double FlePolyRad_kernel(double q, double ravg, double Lc, double Lb, double zz, double delrho, double zi);
50double EllipticalCross_fn(double qq, double a, double b);
51double CScyl(double qq, double rad, double radthick, double facthick, double rhoc, double rhos, double rhosolv, double length, double dum);
52double CSCylIntegration(double qq, double rad, double radthick, double facthick, double rhoc, double rhos, double rhosolv, double length);
53double Stackdisc_kern(double qq, double rcore, double rhoc, double rhol, double rhosolv, double length, double thick, double dum, double gsd, double d, double N);
54
55//
56/* IGOR Fit Functions */
57double MultiShell(double dp[], double q);
58double PolyMultiShell(double dp[], double q);
59double SphereForm(double dp[], double q);
60double CoreShellForm(double dp[], double q);
61double PolyCoreForm(double dp[], double q);
62double PolyCoreShellRatio(double dp[], double q);
63double VesicleForm(double dp[], double q);
64double SchulzSpheres(double dp[], double q);
65double PolyRectSpheres(double dp[], double q);
66double PolyHardSphereIntensity(double dp[], double q);
67double BimodalSchulzSpheres(double dp[], double q);
68double GaussPolySphere(double dp[], double q);
69double LogNormalPolySphere(double dp[], double q);
70double BinaryHS(double dp[], double q);
71double BinaryHS_PSF11(double dp[], double q);
72double BinaryHS_PSF12(double dp[], double q);
73double BinaryHS_PSF22(double dp[], double q);
74
75//function prototypes
76double F_func(double qr);
77double MultiShellGuts(double q,double rcore,double ts,double tw,double rhocore,double rhoshel,int num);
78double fnt2(double yy, double zz);
79double fnt3(double yy, double pp, double zz);
80double SchulzSphere_Fn(double scale, double ravg, double pd, double rho, double rhos, double x);
81int ashcroft(double qval, double r2, double nf2, double aa, double phi, double *s11, double *s22, double *s12);
82
83
84////
85double HardSphereStruct(double dp[], double q);
86double SquareWellStruct(double dp[], double q);
87double StickyHS_Struct(double dp[], double q);
88double HayterPenfoldMSA(double dp[], double q);
89double DiamCyl(double a, double b);
90double DiamEllip(double a, double b);
91double sqhcal(double qq);
92int sqfun(int ix, int ir);
93int sqcoef(int ir);
94
95////
96/* IGOR Fit Functions */
97double TeubnerStreyModel(double dp[], double q);
98double Power_Law_Model(double dp[], double q);
99double Peak_Lorentz_Model(double dp[], double q);
100double Peak_Gauss_Model(double dp[], double q);
101double Lorentz_Model(double dp[], double q);
102double Fractal(double dp[], double q);
103double DAB_Model(double dp[], double q);
104double OneLevel(double dp[], double q);
105double TwoLevel(double dp[], double q);
106double ThreeLevel(double dp[], double q);
107double FourLevel(double dp[], double q);
108
109// since the XOP and the library are separate chunks of compiled code
110// it is imperative to set ALL the structure alignments to be two-byte
111// rather than leave it to the whim of the compiler
112/* SRK08
113#include "XOPStructureAlignmentTwoByte.h"
114
115typedef struct {
116    double scale;
117    double radius;
118    double length;
119    double contrast;
120        double background;   
121    double cyl_theta;
122    double cyl_phi;   
123} CylinderParameters;
124
125typedef struct {
126    double scale;
127    double radius;
128    double length;
129    double contrast;
130        double background;
131    double cyl_theta;
132    double cyl_phi;
133    double sigma_theta;
134    double sigma_phi;
135    double sigma_radius;
136} SmearCylinderParameters;
137
138#include "XOPStructureAlignmentReset.h"
139
140/// 1D scattering function
141double cylinder_analytical_1D(CylinderParameters *pars, double q);
142/// 2D scattering function
143double cylinder_analytical_2D(CylinderParameters *pars, double q, double phi);
144/// 1D scattering function
145double smeared_cylinder_analytical_1D(SmearCylinderParameters *pars, double q);
146/// 2D scattering function
147double dist_cylinder_2D(double pars[], double q, double phi);
148double smeared_cylinder_analytical_2D(SmearCylinderParameters *pars, double q, double phi);
149double smeared_cylinder_dist( double x, double mean, double sigma );
150*/
Note: See TracBrowser for help on using the repository browser.