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

Last change on this file since 453 was 453, checked in by srkline, 14 years ago

Additions to the library of the 2008 model functions. Direct proting of the Igor code, duplicated by these XOPs

File size: 7.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//
34double Lamellar_ParaCrystal(double dp[], double q);
35double Spherocylinder(double dp[], double q);
36double ConvexLens(double dp[], double q);
37double Dumbbell(double dp[], double q);
38double CappedCylinder(double dp[], double q);
39double Barbell(double dp[], double q);
40
41
42/* internal functions */
43double CylKernel(double qq, double rr,double h, double theta);
44double NR_BessJ1(double x);
45double EllipCylKernel(double qq, double ra,double nu, double theta);
46double TriaxialKernel(double q, double aa, double bb, double cc, double dx, double dy);
47double PPKernel(double aa, double mu, double uu);
48double HolCylKernel(double qq, double rcore, double rshell, double length, double dum);
49double EllipsoidKernel(double qq, double a, double va, double dum);
50double Cyl_PolyRadKernel(double q, double radius, double length, double zz, double delrho, double dumRad);
51double SchulzPoint_cpr(double dumRad, double radius, double zz);
52double Cyl_PolyLenKernel(double q, double radius, double len_avg, double zz, double delrho, double dumLen);
53double CoreShellCylKernel(double qq, double rcore, double thick, double rhoc, double rhos, double rhosolv, double length, double dum);
54double gfn4(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq);
55double gfn2(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq);
56double FlePolyLen_kernel(double q, double radius, double length, double lb, double zz, double delrho, double zi);
57double FlePolyRad_kernel(double q, double ravg, double Lc, double Lb, double zz, double delrho, double zi);
58double EllipticalCross_fn(double qq, double a, double b);
59double CScyl(double qq, double rad, double radthick, double facthick, double rhoc, double rhos, double rhosolv, double length, double dum);
60double CSCylIntegration(double qq, double rad, double radthick, double facthick, double rhoc, double rhos, double rhosolv, double length);
61double Stackdisc_kern(double qq, double rcore, double rhoc, double rhol, double rhosolv, double length, double thick, double dum, double gsd, double d, double N);
62
63//
64/* IGOR Fit Functions */
65double MultiShell(double dp[], double q);
66double PolyMultiShell(double dp[], double q);
67double SphereForm(double dp[], double q);
68double CoreShellForm(double dp[], double q);
69double PolyCoreForm(double dp[], double q);
70double PolyCoreShellRatio(double dp[], double q);
71double VesicleForm(double dp[], double q);
72double SchulzSpheres(double dp[], double q);
73double PolyRectSpheres(double dp[], double q);
74double PolyHardSphereIntensity(double dp[], double q);
75double BimodalSchulzSpheres(double dp[], double q);
76double GaussPolySphere(double dp[], double q);
77double LogNormalPolySphere(double dp[], double q);
78double BinaryHS(double dp[], double q);
79double BinaryHS_PSF11(double dp[], double q);
80double BinaryHS_PSF12(double dp[], double q);
81double BinaryHS_PSF22(double dp[], double q);
82//
83double OneShell(double dp[], double q);
84double TwoShell(double dp[], double q);
85double ThreeShell(double dp[], double q);
86double FourShell(double dp[], double q);
87double PolyOneShell(double dp[], double q);
88double PolyTwoShell(double dp[], double q);
89double PolyThreeShell(double dp[], double q);
90double PolyFourShell(double dp[], double q);
91double BCC_ParaCrystal(double dp[], double q);
92double FCC_ParaCrystal(double dp[], double q);
93double SC_ParaCrystal(double dp[], double q);
94
95//function prototypes
96double F_func(double qr);
97double MultiShellGuts(double q,double rcore,double ts,double tw,double rhocore,double rhoshel,int num);
98double fnt2(double yy, double zz);
99double fnt3(double yy, double pp, double zz);
100double SchulzSphere_Fn(double scale, double ravg, double pd, double rho, double rhos, double x);
101int ashcroft(double qval, double r2, double nf2, double aa, double phi, double *s11, double *s22, double *s12);
102
103
104////
105double HardSphereStruct(double dp[], double q);
106double SquareWellStruct(double dp[], double q);
107double StickyHS_Struct(double dp[], double q);
108double HayterPenfoldMSA(double dp[], double q);
109double DiamCyl(double a, double b);
110double DiamEllip(double a, double b);
111double sqhcal(double qq);
112int sqfun(int ix, int ir);
113int sqcoef(int ir);
114
115////
116/* IGOR Fit Functions */
117double TeubnerStreyModel(double dp[], double q);
118double Power_Law_Model(double dp[], double q);
119double Peak_Lorentz_Model(double dp[], double q);
120double Peak_Gauss_Model(double dp[], double q);
121double Lorentz_Model(double dp[], double q);
122double Fractal(double dp[], double q);
123double DAB_Model(double dp[], double q);
124double OneLevel(double dp[], double q);
125double TwoLevel(double dp[], double q);
126double ThreeLevel(double dp[], double q);
127double FourLevel(double dp[], double q);
128//
129double BroadPeak(double dp[], double q);
130double CorrLength(double dp[], double q);
131double TwoLorentzian(double dp[], double q);
132double TwoPowerLaw(double dp[], double q);
133double PolyGaussCoil(double dp[], double q);
134double GaussLorentzGel(double dp[], double q);
135double GaussianShell(double dp[], double q);
136
137
138// since the XOP and the library are separate chunks of compiled code
139// it is imperative to set ALL the structure alignments to be two-byte
140// rather than leave it to the whim of the compiler
141/* SRK08
142#include "XOPStructureAlignmentTwoByte.h"
143
144typedef struct {
145    double scale;
146    double radius;
147    double length;
148    double contrast;
149        double background;   
150    double cyl_theta;
151    double cyl_phi;   
152} CylinderParameters;
153
154typedef struct {
155    double scale;
156    double radius;
157    double length;
158    double contrast;
159        double background;
160    double cyl_theta;
161    double cyl_phi;
162    double sigma_theta;
163    double sigma_phi;
164    double sigma_radius;
165} SmearCylinderParameters;
166
167#include "XOPStructureAlignmentReset.h"
168
169/// 1D scattering function
170double cylinder_analytical_1D(CylinderParameters *pars, double q);
171/// 2D scattering function
172double cylinder_analytical_2D(CylinderParameters *pars, double q, double phi);
173/// 1D scattering function
174double smeared_cylinder_analytical_1D(SmearCylinderParameters *pars, double q);
175/// 2D scattering function
176double dist_cylinder_2D(double pars[], double q, double phi);
177double smeared_cylinder_analytical_2D(SmearCylinderParameters *pars, double q, double phi);
178double smeared_cylinder_dist( double x, double mean, double sigma );
179*/
Note: See TracBrowser for help on using the repository browser.