Index: realSpaceModeling/analmodelpy/libanalmodelpy/Make.mm
===================================================================
--- realSpaceModeling/analmodelpy/libanalmodelpy/Make.mm	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
+++ realSpaceModeling/analmodelpy/libanalmodelpy/Make.mm	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
@@ -0,0 +1,66 @@
+# -*- Makefile -*-
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#                               Michael A.G. Aivazis
+#                        California Institute of Technology
+#                        (C) 1998-2005  All Rights Reserved
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+
+include local.def
+
+PROJECT = analmodelpy
+PACKAGE = libanalmodelpy
+
+PROJ_SAR = $(BLD_LIBDIR)/$(PACKAGE).$(EXT_SAR)
+PROJ_DLL = $(BLD_BINDIR)/$(PACKAGE).$(EXT_SO)
+PROJ_TMPDIR = $(BLD_TMPDIR)/$(PROJECT)/$(PACKAGE)
+PROJ_CLEAN += $(PROJ_SAR) $(PROJ_DLL)
+PROJ_LIBRARIES = -lgeoshpespy -liqPy
+#PROJ_LIBRARIES = -L/home/jingz1/dv/tools/pythia-0.8/lib -lgeoshpespy -liqPy
+
+PROJ_SRCS = \
+    analytical_model.cc
+    
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# build the library
+
+all: $(PROJ_SAR) export
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ifeq (Win32, ${findstring Win32, $(PLATFORM_ID)})
+
+# build the shared object
+$(PROJ_SAR): product_dirs $(PROJ_OBJS)
+	$(CXX) $(LCXXFLAGS) -o $(PROJ_DLL) \
+	-Wl,--out-implib=$(PROJ_SAR) $(PROJ_OBJS)
+
+# export
+export:: export-headers export-libraries export-binaries
+
+else
+
+# build the shared object
+$(PROJ_SAR): product_dirs $(PROJ_OBJS)
+	$(CXX) $(LCXXFLAGS) -o $(PROJ_SAR) $(PROJ_OBJS) $(PROJ_LIBRARIES)
+
+# export
+export:: export-headers export-libraries
+
+endif
+
+EXPORT_HEADERS = \
+    analytical_model.h  \
+    sans_model.h
+
+EXPORT_LIBS = $(PROJ_SAR)
+EXPORT_BINS = $(PROJ_DLL)
+
+# version
+# $Id$
+
+#
+# End of file
Index: realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.cc
===================================================================
--- realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.cc	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
+++ realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.cc	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
@@ -0,0 +1,29 @@
+/** \file analytical_model.cc  */
+
+#include "sphere.h"
+#include "hollow_sphere.h"
+#include "analytical_model.h"
+
+AnalyticalModel::AnalyticalModel(const GeoShape &geo_shape)
+{
+  switch (geo_shape.GetShapeType()){
+    case SPHERE:
+      shape_ = new Sphere(static_cast<const Sphere&>(geo_shape));
+      break;
+    case HOLLOWSPHERE:
+      shape_ = new HollowSphere(static_cast<const HollowSphere&>(geo_shape));
+      break;
+    case CYLINDER:
+      break;
+  }
+}
+
+AnalyticalModel::~AnalyticalModel() 
+{
+  if (shape_ != NULL) delete shape_;
+}
+
+void AnalyticalModel::CalculateIQ(IQ * iq)
+{
+  shape_->GetFormFactor(iq);
+}
Index: realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.h
===================================================================
--- realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.h	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
+++ realSpaceModeling/analmodelpy/libanalmodelpy/analytical_model.h	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
@@ -0,0 +1,23 @@
+/** \file analytical_model.h class AnalyticalModel:SANSModel */
+
+#ifndef ANALYTICALMODEL_H
+#define ANALYTICALMODEL_H
+
+#include "sans_model.h"
+#include "geo_shape.h"
+#include "iq.h"
+
+class AnalyticalModel : public SANSModel{
+
+ public:
+  AnalyticalModel(const GeoShape &);
+  ~AnalyticalModel();
+
+  void CalculateIQ(IQ *);
+
+ private:
+  AnalyticalModel();
+  GeoShape *shape_;
+};
+
+#endif
Index: realSpaceModeling/analmodelpy/libanalmodelpy/local.def
===================================================================
--- realSpaceModeling/analmodelpy/libanalmodelpy/local.def	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
+++ realSpaceModeling/analmodelpy/libanalmodelpy/local.def	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
@@ -0,0 +1,31 @@
+# -*- Makefile -*-
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#                               Michael A.G. Aivazis
+#                        California Institute of Technology
+#                        (C) 1998-2005  All Rights Reserved
+#
+# <LicenseText>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+
+#
+# Local (project) definitions
+#
+
+# C++
+
+PROJ_CXX_INCLUDES += ../../iqPy/libiqPy/tnt   \
+		     ../../iqPy/libiqPy     \
+		     ../../geoshapespy/libgeoshapespy  \
+		     ../../pointsmodelpy/libpointsmodelpy 
+
+    PROJ_CXX_FLAGS += $(CXX_SOFLAGS)
+    PROJ_LCXX_FLAGS += $(LCXX_SARFLAGS)
+
+# version
+# $Id$
+
+# End of file
Index: realSpaceModeling/analmodelpy/libanalmodelpy/sans_model.h
===================================================================
--- realSpaceModeling/analmodelpy/libanalmodelpy/sans_model.h	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
+++ realSpaceModeling/analmodelpy/libanalmodelpy/sans_model.h	(revision f2d6445700c382c6d6dc62bc2017ea43391f7e0d)
@@ -0,0 +1,15 @@
+/** \file sans_model.h    class SANSModel virtual base class */
+
+#ifndef SANSMODEL_H
+#define SANSMODEL_H
+
+#include "iq.h"
+
+class SANSModel{
+ public:
+
+  virtual void CalculateIQ(IQ *iq) = 0;
+
+};
+
+#endif
