Index: doc/rst_prolog
===================================================================
--- doc/rst_prolog	(revision 0a4628d166f9d3d4ed9811ec8882eea0e9675a8e)
+++ doc/rst_prolog	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
@@ -50,4 +50,5 @@
 .. |cm^-2| replace:: cm\ :sup:`-2`
 .. |cm^3| replace:: cm\ :sup:`3`
+.. |1e15cm^3| replace:: 10\ :sup:`15`\ cm\ :sup:`3`
 .. |cm^-3| replace:: cm\ :sup:`-3`
 .. |sr^-1| replace:: sr\ :sup:`-1`
Index: sasmodels/convert.py
===================================================================
--- sasmodels/convert.py	(revision 7d4b2ae2af901813f3ff60e60aa0eae98f4dfd5e)
+++ sasmodels/convert.py	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
@@ -52,5 +52,5 @@
     new model definition end with sld.
     """
-    return dict((p, (v*1e6 if p.endswith('sld') else v))
+    return dict((p, (v*1e6 if p.endswith('sld') else v*1e-15 if 'ndensity' in p else v))
                 for p, v in pars.items())
 
@@ -70,5 +70,5 @@
     new model definition end with sld.
     """
-    return dict((p, (v*1e-6 if p.endswith('sld') else v))
+    return dict((p, (v*1e-6 if p.endswith('sld') else v*1e15 if 'ndensity' in p else v))
                 for p, v in pars.items())
 
Index: sasmodels/generate.py
===================================================================
--- sasmodels/generate.py	(revision c437dbb3bdf21e923e4309e102d0e76cc8b331db)
+++ sasmodels/generate.py	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
@@ -242,7 +242,10 @@
     "1/Ang^2": "|Ang^-2|",
     "1e-6/Ang^2": "|1e-6Ang^-2|",
+    "1e15/cm^3": "|1e15cm^3|",
     "degrees": "degree",
     "1/cm": "|cm^-1|",
+    "1/cm^3": "|cm^-3|",
     "Ang/cm": "|Ang*cm^-1|",
+    "Ang^3": "|Ang^3|",
     "": "None",
     }
Index: sasmodels/models/micelle_spherical_core.c
===================================================================
--- sasmodels/models/micelle_spherical_core.c	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
+++ sasmodels/models/micelle_spherical_core.c	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
@@ -0,0 +1,129 @@
+double Iq(double q,
+        double ndensity,
+        double v_core,
+        double v_corona,
+        double solvent_sld,
+        double core_sld,
+        double corona_sld,
+        double radius_core,
+        double radius_gyr,
+        double d_penetration,
+        double n_aggreg);
+
+
+double Iqxy(double qx, double qy,
+            double ndensity,
+            double v_core,
+            double v_corona,
+            double solvent_sld,
+            double core_sld,
+            double corona_sld,
+            double radius_core,
+            double radius_gyr,
+            double d_penetration,
+            double n_aggreg);
+
+
+static double micelle_spherical_kernel(double q,
+        double ndensity,
+        double v_core,
+        double v_corona,
+        double solvent_sld,
+        double core_sld,
+        double corona_sld,
+        double radius_core,
+        double radius_gyr,
+        double d_penetration,
+        double n_aggreg)
+{
+    const double rho_solv = solvent_sld;     // sld of solvent [1/A^2]
+    const double rho_core = core_sld;        // sld of core [1/A^2]
+    const double rho_corona = corona_sld;    // sld of corona [1/A^2]
+
+    const double beta_core = v_core * (rho_core - rho_solv);
+    const double beta_corona = v_corona * (rho_corona - rho_solv);
+
+    // Self-correlation term of the core
+    const double bes_core = sph_j1c(q*radius_core);
+    const double term1 = n_aggreg*n_aggreg*beta_core*beta_core*bes_core*bes_core;
+
+    // Self-correlation term of the chains
+    const double qrg2 = q*radius_gyr*q*radius_gyr;
+    const double debye_chain = (qrg2 == 0.0) ? 1.0 : 2.0*(exp(-qrg2)-1+qrg2)/(qrg2*qrg2);
+    const double term2 = n_aggreg * beta_corona * beta_corona * debye_chain;
+
+    // Interference cross-term between core and chains
+    const double chain_ampl = (qrg2 == 0.0) ? 1.0 : (1-exp(-qrg2))/qrg2;
+    const double bes_corona = sinc(q*(radius_core + d_penetration * radius_gyr));
+    const double term3 = 2 * n_aggreg * n_aggreg * beta_core * beta_corona *
+                 bes_core * chain_ampl * bes_corona;
+
+    // Interference cross-term between chains
+    const double term4 = n_aggreg * (n_aggreg - 1.0) * beta_corona * beta_corona *
+                 chain_ampl * chain_ampl * bes_corona * bes_corona;
+
+    // I(q)_micelle : Sum of 4 terms computed above
+    double i_micelle = term1 + term2 + term3 + term4;
+
+    // rescale from [A^2] to [cm^2]
+    i_micelle *= 1.0e-13;
+
+    // "normalize" by number density --> intensity in [cm-1]
+    i_micelle *= ndensity;
+
+    return(i_micelle);
+
+}
+
+double Iq(double q,
+        double ndensity,
+        double v_core,
+        double v_corona,
+        double solvent_sld,
+        double core_sld,
+        double corona_sld,
+        double radius_core,
+        double radius_gyr,
+        double d_penetration,
+        double n_aggreg)
+{
+    return micelle_spherical_kernel(q,
+            ndensity,
+            v_core,
+            v_corona,
+            solvent_sld,
+            core_sld,
+            corona_sld,
+            radius_core,
+            radius_gyr,
+            d_penetration,
+            n_aggreg);
+}
+
+double Iqxy(double qx, double qy,
+            double ndensity,
+            double v_core,
+            double v_corona,
+            double solvent_sld,
+            double core_sld,
+            double corona_sld,
+            double radius_core,
+            double radius_gyr,
+            double d_penetration,
+            double n_aggreg)
+{
+    double q = sqrt(qx*qx + qy*qy);
+    return micelle_spherical_kernel(q,
+            ndensity,
+            v_core,
+            v_corona,
+            solvent_sld,
+            core_sld,
+            corona_sld,
+            radius_core,
+            radius_gyr,
+            d_penetration,
+            n_aggreg);
+
+}
+
Index: sasmodels/models/micelle_spherical_core.py
===================================================================
--- sasmodels/models/micelle_spherical_core.py	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
+++ sasmodels/models/micelle_spherical_core.py	(revision 0d0aee160a94e4d66091b571a5117dc34ac0052a)
@@ -0,0 +1,73 @@
+r"""
+
+This model provides the form factor, $P(q)$, for a micelle with a spherical
+core and Gaussian polymer chains attached to the surface.
+
+Definition
+----------
+
+The 1D scattering intensity for this model is calculated according to
+the equations given by Pedersen (Pedersen, 2000).
+
+Validation
+----------
+
+This model has not yet been validated. Feb2015
+
+
+Reference
+---------
+
+J Pedersen, *J. Appl. Cryst.*, 33 (2000) 637-640
+
+"""
+
+from numpy import inf
+
+name = "micelle_spherical_core"
+title = "Micelle Spherical Core model"
+description = """
+    This model provides the form factor, $P(q)$, for a micelle with
+    a spherical core and Gaussian polymer chains attached to the surface.
+    """
+category = "shape-independent"
+
+# pylint: disable=bad-whitespace, line-too-long
+#   ["name", "units", default, [lower, upper], "type","description"],
+parameters = [
+    ["ndensity",      "1e15/cm^3",  8.94, [0.0, inf], "", "Number density of micelles"],
+    ["v_core",        "Ang^3",  62624.0,  [0.0, inf], "", "Core volume"],
+    ["v_corona",      "Ang^3",  61940.0,  [0.0, inf], "", "Corona volume"],
+    ["solvent_sld",   "1e-6/Ang^2", 6.4,  [0.0, inf], "", "Solvent scattering length density"],
+    ["core_sld",      "1e-6/Ang^2", 0.34, [0.0, inf], "", "Core scattering length density"],
+    ["corona_sld",    "1e-6/Ang^2", 0.8,  [0.0, inf], "", "Corona scattering length density"],
+    ["radius_core",   "Ang",       45.0,  [0.0, inf], "", "Radius of core"],
+    ["radius_gyr",    "Ang",       20.0,  [0.0, inf], "", "Radius of gyration of chains in corona"],
+    ["d_penetration", "",           1.0,  [-inf, inf], "", "Factor to mimic non-penetration of Gaussian chains"],
+    ["n_aggreg",      "",           6.0,  [-inf, inf], "", "Aggregation number of the micelle"],
+    ]
+# pylint: enable=bad-whitespace, line-too-long
+
+source = ["lib/sph_j1c.c", "micelle_spherical_core.c"]
+
+demo = dict(scale=1, background=0,
+            ndensity=8.94,
+            v_core=62624.0,
+            v_corona=61940.0,
+            solvent_sld=6.4,
+            core_sld=0.34,
+            corona_sld=0.8,
+            radius_core=45.0,
+            radius_gyr=20.0,
+            d_penetration=1.0,
+            n_aggreg=6.0)
+
+
+oldname = 'MicelleSphCoreModel'
+oldpars = dict(solvent_sld='rho_solv',
+               core_sld='rho_core',
+               corona_sld='rho_corona')
+
+tests = [
+    [{}, 0.01, 15.3532],
+    ]
