package sansmodels; public class SquareWell extends SANSModel{ private double radius, volumeFraction, depth, width, background; //Default constructor public SquareWell() { radius = 50.0; volumeFraction = 0.04; depth = 1.5; width = 1.2; setNumberOfParameters(4); String[] parameters = {"Radius (A)", "Vol Fraction (0-1)", "Well Depth (kT)","Well Width (diams)"}; setParametersText(parameters); } public SquareWell(double inRadius, double inVolFrac, double inDepth, double inWidth, double inBackground) { radius = inRadius; volumeFraction = inVolFrac; depth = inDepth; width = inWidth; background = inBackground; setNumberOfParameters(4); String[] parameters = {"Radius (A)", "Vol Fraction (0-1)", "Well Depth (kT)","Well Width (diams)"}; setParametersText(parameters); } public double getFormFactor(double inX) { double sigma,eta,eta2,eta3,eta4,etam1,etam14,alpha,beta,gamma; double qvs,sk,sk2,sk3,sk4,t1,t2,t3,t4,ck; sigma = radius*2.; eta = volumeFraction; eta2 = eta*eta; eta3 = eta*eta2; eta4 = eta2*eta2; etam1 = 1.0 - eta; etam14 = etam1*etam1*etam1*etam1; alpha = (((1.0 + 2.0*eta)*(1.0 + 2.0*eta)) + eta3*(eta - 4.0))/etam14; beta = -1.0*(eta/3.0)*(18.0 + 20.0*eta - 12.0*eta2 +eta4)/etam14; gamma = alpha*0.5*eta; qvs = inX; sk = inX*sigma; sk2 = sk*sk; sk3 = sk*sk2; sk4 = sk2*sk2; t1 = alpha*sk3*(Math.sin(sk) - sk*Math.cos(sk)); t2 = beta*sk2*(2.0*sk*Math.sin(sk) - (sk2-2.)*Math.cos(sk) - 2.0); t3 = (4.0* sk3 - 24.0*sk)*Math.sin(sk); t3 = t3 - (sk4 - (12.0*sk2) + 24.0)*Math.cos(sk) + 24.0; t3 = gamma*t3; t4 = -1.0*depth*sk3*(Math.sin(width*sk) - width*sk*Math.cos(width*sk) +sk*Math.cos(sk) - Math.sin(sk)); ck = -24.0*eta*( t1 + t2 + t3 + t4 )/sk3/sk3; return 1.0/(1.0 - ck); } public void setParameters(double[] inParameters) { radius = inParameters[0]; volumeFraction = inParameters[1]; depth = inParameters[2]; width = inParameters[3]; } public double[] getParameters() { double[] outParameters = new double[4]; outParameters[0] = radius; outParameters[1] = volumeFraction; outParameters[2] = depth; outParameters[3] = width; return outParameters; } }