Changeset 246517d in sasmodels for sasmodels/models/poly_gauss_coil.py


Ignore:
Timestamp:
Mar 17, 2016 8:43:19 AM (8 years ago)
Author:
smk78
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
3a45c2c, d6850fa
Parents:
c7062fe
Message:

Updated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/poly_gauss_coil.py

    r6dd90c1 r246517d  
    1414 
    1515     *I(q)* = *scale* |cdot| *I* \ :sub:`0` |cdot| *P(q)* + *background* 
    16           
     16 
    1717where 
    1818 
     
    2020 
    2121     *P(q)* = 2 [(1 + UZ)\ :sup:`-1/U` + Z - 1] / [(1 + U) Z\ :sup:`2`] 
    22           
    23         *Z* = [(*q R*\ :sub:`g`)\ :sup:`2`] / (1 + 2U) 
    24           
    25         *U* = (Mw / Mn) - 1 = (*polydispersity ratio*) - 1 
     22 
     23    *Z* = [(*q R*\ :sub:`g`)\ :sup:`2`] / (1 + 2U) 
     24 
     25    *U* = (Mw / Mn) - 1 = (*polydispersity ratio*) - 1 
    2626 
    2727and 
    2828 
    29         *V* = *M* / (*N*\ :sub:`A` |delta|) 
    30           
     29    *V* = *M* / (*N*\ :sub:`A` |delta|) 
     30 
    3131Here, |phi|\ :sub:`poly`, is the volume fraction of polymer, *V* is the volume of a polymer coil, *M* is the molecular weight of the polymer, *N*\ :sub:`A` is Avogadro's Number, |delta| is the bulk density of the polymer, |rho|\ :sub:`poly` is the sld of the polymer, |rho|\ :sub:`solv` is the sld of the solvent, and *R*\ :sub:`g` is the radius of gyration of the polymer coil. 
    3232 
     
    5757description =  """ 
    5858    Evaluates the scattering from  
    59         polydisperse polymer chains. 
     59    polydisperse polymer chains. 
    6060    """ 
    6161category =  "shape-independent" 
    6262 
    6363#             ["name", "units", default, [lower, upper], "type", "description"], 
    64 parameters =  [["i_zero", "1/cm", 1.0, [-inf, inf], "", "Intensity at q=0"], 
    65                ["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"], 
     64parameters =  [["i_zero", "1/cm", 70.0, [0.0, inf], "", "Intensity at q=0"], 
     65               ["radius_gyration", "Ang", 75.0, [0.0, inf], "", "Radius of gyration"], 
    6666               ["polydispersity", "None", 2.0, [1.0, inf], "", "Polymer Mw/Mn"]] 
    6767 
     
    6969def Iq(q, i_zero, radius_gyration, polydispersity): 
    7070    # pylint: disable = missing-docstring 
     71    # need to trap the case of the polydispersity being 1 (ie, monodispersity) 
    7172    u = polydispersity - 1.0 
    72     # TO DO 
    73     # should trap the case of polydispersity = 1 by switching to a taylor expansion 
    74     minusoneonu = -1.0 / u 
    75     z = (q * radius_gyration) ** 2 / (1.0 + 2.0 * u) 
    76     if q == 0: 
    77         inten = i_zero * 1.0 
     73    if polydispersity == 1: 
     74       minusoneonu = -1.0 / u 
    7875    else: 
    79         inten = i_zero * 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z)) 
     76       minusoneonu = -1.0 / u 
     77    z = ((q * radius_gyration) * (q * radius_gyration)) / (1.0 + 2.0 * u) 
     78    if (q == 0).any(): 
     79       inten = i_zero 
     80    else: 
     81       inten = i_zero * 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z)) 
    8082    return inten 
    81 #Iq.vectorized = True # Iq accepts an array of q values 
     83Iq.vectorized =  True # Iq accepts an array of q values 
    8284 
    8385def Iqxy(qx, qy, *args): 
     
    8789 
    8890demo =  dict(scale = 1.0, 
    89             i_zero = 1.0, 
    90             radius_gyration = 50.0, 
     91            i_zero = 70.0, 
     92            radius_gyration = 75.0, 
    9193            polydispersity = 2.0, 
    9294            background = 0.0) 
     
    99101 
    100102tests =  [ 
    101     [{'scale': 1.0, 'radius_gyration': 50.0, 'polydispersity': 2.0, 'background': 0.0}, 
    102      [0.0106939, 0.469418], [0.912993, 0.0054163]], 
     103    [{'scale': 70.0, 'radius_gyration': 75.0, 'polydispersity': 2.0, 'background': 0.0}, 
     104     [0.0106939, 0.469418], [57.6405, 0.169016]], 
    103105    ] 
Note: See TracChangeset for help on using the changeset viewer.