Index: /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.c
===================================================================
--- /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.c	(revision 35966)
+++ /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.c	(revision 35967)
@@ -687,4 +687,40 @@
 }
 
+// this is a test function which generates a full sersic model evaluation with sub-pixel sampling
+// Nsub is the number of sub-pixel samplings and must be odd
+// dx,dy are the centroid offset
+float pmModelCP_SersicSubpix (float dx, float dy, float Rxx, float Rxy, float Ryy, float Sindex, int Nsub) {
+
+    float flux = 0.0;
+    int   npix = 0;
+
+    float kappa = -0.275552 + 1.972625*Sindex + 0.003487 * PS_SQR(Sindex);
+    float rindex = 0.5 / Sindex;
+
+    // have the resolution be a user-parameter?
+    psAssert (Nsub % 2 == 1, "Nsub is not odd");
+    int Nsub2 = (Nsub - 1) / 2;
+
+    float delta = 1.0 / (float) Nsub;
+    float off = -Nsub2 * delta;
+    for (float ix = off; ix < 0.5; ix += delta) {
+	for (float iy = off; iy < 0.5; iy += delta) {
+
+	    float dX = dx + ix;
+	    float dY = dy + iy;
+	    float z = PS_SQR(dX / Rxx) + PS_SQR(dY / Ryy) + dX * dY * Rxy;
+
+	    float q = pow (z, rindex);
+	    float f = exp(-kappa*q);
+
+	    flux += f;
+	    npix ++;
+	}
+    }
+    float normFlux = flux / npix;
+    // fprintf (stderr, "full : %f %f %f\n", flux, (float) npix, normFlux);
+    return normFlux;
+}
+
 # if (0)
 // create a vector containing only the unique entries in the input vector
Index: /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.h
===================================================================
--- /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.h	(revision 35966)
+++ /branches/eam_branches/ipp-20130711/psModules/src/objects/pmModel_CentralPixel.h	(revision 35967)
@@ -62,3 +62,5 @@
 float pmModelCP_GetFlux_Old (pmModelCP *cp, float dx, float dy, float theta);
 
+float pmModelCP_SersicSubpix (float dx, float dy, float Rxx, float Rxy, float Ryy, float Sindex, int Nsub);
+
 # endif
