def SimInt_ID5M(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.ID5MCoordAssign(TPARs, 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) F4 = CD.FreeFormTrapezoid(Coord[:, :, 3], 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 + F4) * M Formfactor = abs(Formfactor) SimInt = np.power(Formfactor, 2) * SPAR[1] + SPAR[2] return (SimInt, Formfactor)
X1 = Pitch / 5 W = Param[SampleNumber, 0] H = Param[SampleNumber, 1] WidthLoad = 'W' + str(int(W)) + '.txt' HeightLoad = 'H' + str(int(H)) + '.txt' Width = np.loadtxt(WidthLoad) Height = np.loadtxt(HeightLoad) TPAR[:, 0] = Width TPAR[:, 1] = Height SLD[0, 0] = SLD1 SLD[1, 0] = SLD1 SLD[2, 0] = SLD1 SLD[3, 0] = SLD1 Coord = CD.ID5MCoordAssign(TPAR, SLD, Trapnumber, Pitch, X1) #CDp.plotID1(Coord,Trapnumber,Pitch) (FITPAR, FITPARLB, FITPARUB) = CD.PBA_ID2(TPAR, SPAR, Trapnumber, X1) #Does not need to be changed R = np.random.normal(0, 0.225, [len(Qx[:, 0]), len(Qx[0, :])]) (Intensity, Amplitude) = SimInt_ID5M(FITPAR) N = (1 / (np.power(Intensity, 0.5))) * Intensity # Generates noise N = N * R Intensity2 = Intensity + R # Applies Noise C = CD.Misfit(Intensity, Intensity2) Chi2 = np.sum((C))