package sansmodels; public class OblateCoreShell extends SANSModel{ private double scale, majorCoreAxis, majorShellAxis, background; private double minorShellAxis, minorCoreAxis, coreShellContrast; private double shellSolventContrast; //Default constructor public OblateCoreShell() { scale = 1.0; majorCoreAxis = 200.0; minorCoreAxis = 20.0; majorShellAxis = 250.0; minorShellAxis = 30.0; coreShellContrast = 1.e-6; shellSolventContrast = 1.e-6; background = 0.00; setNumberOfParameters(8); String[] parameters = {"Scale", "Core Major Axis (A)", "Core Minor Axis (A)", "Shell Major Axis (A)", "Shell Minor Axis (A)", "Core-Shell Cont(A-2)", "Shell-Solv Cont(A-2)", "Background (cm-1)"}; setParametersText(parameters); } public OblateCoreShell(double inScale, double inMajorCoreAxis, double inMinorCoreAxis, double inMajorShellAxis, double inMinorShellAxis, double inCoreShellContrast, double inShellSolventContrast, double inBackground) { scale = inScale; majorCoreAxis = inMajorCoreAxis; minorCoreAxis = inMinorCoreAxis; majorShellAxis = inMajorShellAxis; minorShellAxis = inMinorShellAxis; coreShellContrast = inCoreShellContrast; shellSolventContrast = inShellSolventContrast; background = inBackground; setNumberOfParameters(8); String[] parameters = {"Scale", "Core Major Axis (A)", "Core Minor Axis (A)", "Shell Major Axis (A)", "Shell Minor Axis (A)", "Core-Shell Contrast (A-2)", "Shell-Solvent Contrast (A-2)", "Background (cm-1)"}; setParametersText(parameters); } private double oblateCoreShellFunc(double inQ, double inZ) { double pi43,aa,bb,u2,ut2,u,ut,vc,vt,gfnc,gfnt,tgfn,cc,dd; pi43 = 4.0/3.0*Math.PI; aa = majorCoreAxis; bb = minorCoreAxis; cc = majorShellAxis; dd = minorShellAxis; u2 = (bb*bb*inZ*inZ + aa*aa*(1.0-inZ*inZ)); ut2 = (dd*dd*inZ*inZ + cc*cc*(1.0-inZ*inZ)); u = Math.sqrt(u2)*inQ; ut = Math.sqrt(ut2)*inQ; vc = pi43*aa*aa*bb; vt = pi43*cc*cc*dd; gfnc = 3.0*(Math.sin(u)/u/u - Math.cos(u)/u)/u*vc*coreShellContrast; gfnt = 3.0*(Math.sin(ut)/ut/ut - Math.cos(ut)/ut)/ut *vt*shellSolventContrast; tgfn = gfnc+gfnt; return tgfn*tgfn; } public double getFormFactor(double inX) { double nord, va, vb, zi, yyy, summ, answer, vol; nord = 76; va = 0.0; vb = 1.0; summ = 0.0; for(int i=0;i