Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/sphere.py

    r0507e09 ra34b811  
    4949---------------------------- 
    5050 
    51 * **Author:**  
    52 * **Last Modified by:**  
     51* **Author:** 
     52* **Last Modified by:** 
    5353* **Last Reviewed by:** S King and P Parker **Date:** 2013/09/09 and 2014/01/06 
    5454* **Source added by :** Steve King **Date:** March 25, 2019 
     
    8181source = ["lib/sas_3j1x_x.c", "sphere.c"] 
    8282have_Fq = True 
    83 effective_radius_type = ["radius"] 
     83radius_effective_modes = ["radius"] 
    8484 
    8585def random(): 
     
    9292 
    9393tests = [ 
    94     [{}, 0.2, 0.726362], 
    95     [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1., 
    96       "radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
    97      0.2, 0.228843], 
    98     [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
    99      0.1, None, None, 120., None, 1.0], 
    100     [{"@S": "hardsphere"}, 0.1, None], 
     94     [{}, 0.2, 0.726362], # each test starts with default parameter values inside { }, unless modified. Then Q and expected value of I(Q) 
     95     [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1., 
     96       "radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
     97      0.2, 0.2288431], 
     98    [{"radius": 120., "radius_pd": 0.02, "radius_pd_n":45}, 
     99      0.2, 792.0646662454202, 1166737.0473152, 120.0, 7246723.820358589, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
     100   #  But note P(Q) = F2/volume 
     101   #  F and F^2 are "unscaled", with for  n <F F*>S(q) or for beta approx I(q) = n [<F F*> + <F><F*> (S(q) - 1)] 
     102   #  for n the number density and <.> the orientation average, and F = integral rho(r) exp(i q . r) dr. 
     103   #  The number density is volume fraction divided by particle volume. 
     104   #  Effectively, this leaves F = V drho form, where form is the usual 3 j1(qr)/(qr) or whatever depending on the shape. 
     105   # [{"@S": "hardsphere"}, 
     106   #    0.01, 55.881884232102124], # this is current value, not verified elsewhere yet 
     107   # [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
     108   #   0.2, 1.233304061, [1850806.119736], 120.0, 8087664.1226, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
     109   # [{"@S": "hardsphere"}, 
     110   #     0.2, 0.14730859242492958], #  this is current value, not verified elsewhere yet 
     111    # [{"@S": "hardsphere"}, 
     112    #    0.1, 0.7940350343811906], #  this is current value, not verified elsewhere yet 
     113    [{"@S": "hardsphere", 
     114     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
     115     "volfraction":0.2, 
     116     "radius_effective":45.0,     # uses this (check) 
     117     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
     118     "radius_effective_mode": 0   # equivalent sphere, there is only one valid mode for sphere. says -this used r_eff =0 or default 50? 
     119     }, 0.01, 1316.2990966463444 ], 
     120    [{"@S": "hardsphere", 
     121     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
     122     "volfraction":0.2, 
     123     "radius_effective":50.0,        # hard sphere structure factor 
     124     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
     125     "radius_effective_mode": 0   # this used r_eff =0 or default 50? 
     126     }, 0.01, 1324.7375636587356 ], 
     127    [{"@S": "hardsphere", 
     128     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
     129     "volfraction":0.2, 
     130     "radius_effective":50.0,        # hard sphere structure factor 
     131     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
     132     "radius_effective_mode": 1   # this used 120 ??? 
     133     }, 0.01, 1579.2858949296565 ] 
    101134] 
     135# putting None for expected result will pass the test if there are no errors from the routine, but without any check on the value of the result 
Note: See TracChangeset for help on using the changeset viewer.