def setUp(self):
     self.P = PdfFit()
     self.qmax = 25
     self.qdamp = 0.5
     self.rmin = 4.0
     self.rmax = 10.0
     self.bin = 100
 def setUp(self):
     self.P = PdfFit()
     self.P.read_struct(datafile('Ni.stru'))
     self.P.read_struct(datafile('PbScW25TiO3.stru'))
     self.P.alloc('X', 0.0, 0.05, 0.1, 10, 200)
     self.P.alloc('N', 0.0, 0.05, 0.1, 10, 200)
     return
Exemple #3
0
def load_ipython_extension(ipython):
    from diffpy.pdffit2 import PdfFit
    pf = PdfFit()
    pdf = EasyPDFPlotting(pf)
    print('        Type  help(pdffit)  or  help(topic)  for information.\n')
    ns = dict(pdffit=PdfFit, pdf=pdf)
    pf._exportAll(ns)
    ipython.user_ns.update(ns)
    return
Exemple #4
0
    def calculate(self):
        """do the real calculation
        """
        # clean up old results
        self.rcalc = []
        self.Gcalc = []

        # do the job
        if len(self.owner.strucs) == 0:
            raise ControlConfigError("No structure is given for calculation")

        # make sure parameters are initialized
        self.owner.updateParameters()
        from diffpy.pdffit2 import PdfFit
        server = PdfFit()

        # structure needs to be read before dataset allocation
        for struc in self.owner.strucs:
            server.read_struct_string(struc.writeStr('pdffit'))
            for key, var in struc.constraints.items():
                server.constrain(key.encode('ascii'),
                                 var.formula.encode('ascii'))

        # set up dataset
        server.alloc(self.stype, self.qmax, self.qdamp, self.rmin, self.rmax,
                     self.rlen)
        server.setvar('qbroad', self.qbroad)
        server.setvar('dscale', self.dscale)

        # phase related variables
        # pair selection applies to current dataset,
        # therefore it has to be done after alloc
        for phaseidx0, struc in enumerate(self.owner.strucs):
            phaseidx1 = phaseidx0 + 1
            server.setphase(phaseidx1)
            server.setvar('pscale', struc.getvar('pscale'))
            server.setvar('spdiameter', struc.getvar('spdiameter'))
            struc.applyPairSelection(server, phaseidx1)

        # set up parameters
        for index, par in self.owner.parameters.items():
            server.setpar(index, par.initialValue())  # info[0] = init value
            # fix if fixed.  Note: all parameters are free after server.reset().
            if par.fixed:
                server.fixpar(index)

        # all ready here
        server.calc()

        # get results
        self.rcalc = server.getR()
        self.Gcalc = server.getpdf_fit()
 def setUp(self):
     self.P = PdfFit()
     self.r_data = [0.1, 0.2]
     self.Gr_data = [1, 2, 3]
     self.qmax = 10
     self.qdamp = 0.5
 def setUp(self):
     self.P = PdfFit()
     self.iset = 1
     self.i = 1
 def setUp(self):
     self.P = PdfFit()
     self.ip = 1
 def setUp(self):
     self.P = PdfFit()
     self.val = 3.0
 def setUp(self):
     self.P = PdfFit()
     self.par = 1
     return
 def setUp(self):
     self.P = PdfFit()
     self.strufile = "temp.stru"
 def setUp(self):
     self.P = PdfFit()
     self.P.read_struct(datafile("Ni.stru"))
 def setUp(self):
     self.P = PdfFit()
     self.iset = 1
     self.rmin = 4.0
     self.rmax = 10.0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''Perform simple refinement of Ni structure to the experimental x-ray PDF.
Save fitted curve, refined structure and results summary.
'''

from diffpy.pdffit2 import PdfFit

# Create new PDF calculator object.
pf = PdfFit()

# Load data ------------------------------------------------------------------

# Load experimental x-ray PDF data
qmax = 30.0  # Q-cutoff used in PDF calculation in 1/A
qdamp = 0.01  # instrument Q-resolution factor, responsible for PDF decay
pf.read_data('Ni-xray.gr', 'X', qmax, qdamp)

# Load nickel structure, must be in PDFFIT or DISCUS format
pf.read_struct('Ni.stru')

# Configure Refinement -------------------------------------------------------

# Refine lattice parameters a, b, c.
# Make them all equal to parameter @1.
pf.constrain(pf.lat(1), "@1")
pf.constrain(pf.lat(2), "@1")
pf.constrain(pf.lat(3), "@1")
# set initial value of parameter @1
pf.setpar(1, pf.lat(1))
 def setUp(self):
     self.P = PdfFit()
     self.a1 = 1
     self.a2 = 2
 def setUp(self):
     self.P = PdfFit()
     self.resfile = "temp.res"
 def setUp(self):
     self.P = PdfFit()
     return
Exemple #17
0
#!/usr/bin/env python
'''Calculate PDF of FCC nickel.  Save data to Ni_calculation.cgr.
'''

from diffpy.pdffit2 import PdfFit

# create new PDF calculator object
P = PdfFit()

# load structure file in PDFFIT or DISCUS format
P.read_struct("Ni.stru")

radiation_type = 'X'  # x-rays
qmax = 30.0  # Q-cutoff used in PDF calculation in 1/A
qdamp = 0.01  # instrument Q-resolution factor, responsible for PDF decay
rmin = 0.01  # minimum r-value
rmax = 30.0  # maximum r-value
npts = 3000  # number of points in the r-grid

# allocate and configure PDF calculation
P.alloc(radiation_type, qmax, qdamp, rmin, rmax, npts)
P.calc()

P.save_pdf(1, "Ni_calculation.cgr")