def SimInt_ID3(FITPAR): TPARs=np.zeros([Trapnumber+1,2]) TPARs[:,0:2]=np.reshape(FITPAR[0:(Trapnumber+1)*2],(Trapnumber+1,2)) SPAR=FITPAR[Trapnumber*2+2:Trapnumber*2+5] X1=FITPAR[Trapnumber*2+5] (Coord)= CD.ID2CoordAssign(TPAR,SLD,Trapnumber,Pitch,X1) F1 = CD.FreeFormTrapezoid(Coord[:,:,0],Qx,Qz,Trapnumber) F2 = CD.FreeFormTrapezoid(Coord[:,:,1],Qx,Qz,Trapnumber) F3 = CD.FreeFormTrapezoid(Coord[:,:,2],Qx,Qz,Trapnumber) M=np.power(np.exp(-1*(np.power(Qx,2)+np.power(Qz,2))*np.power(SPAR[0],2)),0.5) Formfactor=(F1+F2+F3)*M Formfactor=abs(Formfactor) SimInt = np.power(Formfactor,2)*SPAR[1]+SPAR[2] return (SimInt,Formfactor)
def SimInt_LAM1(FITPAR): TPARs=np.zeros([Trapnumber+1,2]) TPARs[:,0:2]=np.reshape(FITPAR[0:(Trapnumber+1)*2],(Trapnumber+1,2)) SPAR=FITPAR[Trapnumber*2+2:Trapnumber*2+5] (Coord)= CD.LAM1CoordAssign(TPAR,SLD,Trapnumber,Pitch) F1 = CD.FreeFormTrapezoid(Coord[:,:,0],Qx,Qz,Trapnumber) return SimIntM=np.power(np.exp(-1*(np.power(Qx,2)+np.power(Qz,2))*np.power(SPAR[0],2)),0.5) Formfactor=F1*M Formfactor=abs(Formfactor) SimInt = np.power(Formfactor,2)*SPAR[1]+SPAR[2]
def SimInt_PSPVP(FITPAR): T=int(FITPAR[len(FITPAR)-3]) Disc=int(FITPAR[len(FITPAR)-2]) Pitch=int(FITPAR[len(FITPAR)-4]) Spline=np.reshape(FITPAR[0:T*5],(T,5)) Spline Offset=FITPAR[T*5:T*5+7] SPAR=FITPAR[T*5+7:T*5+11] Coord=CD.PSPVPCoord(Spline,MCoord,Trapnumber, Disc,Pitch, Offset) F1 = CD.FreeFormTrapezoid(Coord[:,:,0],Qx,Qz,Disc+1) F2 = CD.FreeFormTrapezoid(Coord[:,:,1],Qx,Qz,Disc+1) F3 = CD.FreeFormTrapezoid(Coord[:,:,2],Qx,Qz,Disc+1) F4 = CD.FreeFormTrapezoid(Coord[:,:,3],Qx,Qz,Disc+1) F5 = CD.FreeFormTrapezoid(Coord[:,:,4],Qx,Qz,Disc+1) F6 = CD.FreeFormTrapezoid(Coord[:,:,5],Qx,Qz,Disc+1) F7 = CD.FreeFormTrapezoid(Coord[:,:,6],Qx,Qz,Disc+1) F8 = CD.FreeFormTrapezoid(Coord[:,:,7],Qx,Qz,Disc+1) Formfactor=(F1+F2+F3+F4+F5+F6+F7+F8) M=np.power(np.exp(-1*(np.power(Qx,2)+np.power(Qz,2))*np.power(SPAR[0],2)),0.5); Formfactor=Formfactor*M SimInt = np.power(abs(Formfactor),2)*SPAR[1]+SPAR[2] return SimInt