diff -Naur ../NAMD_2.8_Source.orig/config ./config
--- ../NAMD_2.8_Source.orig/config	2011-05-10 09:09:00.000000000 -0700
+++ ./config	2012-01-09 18:22:45.174353287 -0800
@@ -28,6 +28,7 @@
   echo '  --arch-suffix <suffix for NAMD platform printed at startup>'
   echo '  (the following are experimental features)'
   echo '  --without-memopt (default)  --with-memopt'
+  echo '  --without-apbs (default)  --with-apbs'
   echo '  --without-cuda (default)  --with-cuda'
   echo '      (do NOT use CUDA-enabled Charm++, NAMD does not need it)'
   echo '  --cuda-prefix <directory containing CUDA bin, lib, and include>'
@@ -99,6 +100,7 @@
   set use_fftw = 1
   set use_cuda = 0
   set use_memopt = 0
+  set use_apbs = 0
 
   if ($#argv < 1) then
     set PRINT_ARCH_LIST
@@ -123,6 +125,14 @@
   endif
 
   if ($#argv < 1) goto syntax
+  if ( $1 == apbs ) then
+    set use_apbs = 1
+    shift
+  else
+    set use_apbs = 0
+  endif
+
+  if ($#argv < 1) goto syntax
   if ( $1 == plugins ) then
     echo 'The "plugins" flag is not needed; plugins are built automatically.'
     shift
@@ -235,6 +245,13 @@
         set use_memopt = 1
       breaksw
 
+      case --with-apbs:
+        set use_apbs = 1
+      breaksw
+      case --without-apbs:
+        set use_apbs = 0
+      breaksw
+
       case --charm-base:
         shift
         if ( ! -d $1 ) then
@@ -392,6 +409,8 @@
 
   if ( $use_memopt ) echo 'MEMOPT=-DMEM_OPT_VERSION' >> Make.config
 
+  if ( $use_apbs ) echo 'include .rootdir/arch/$(NAMD_ARCH).apbs' >> Make.config
+
   if ( $use_tcl ) then
     if ( $?TCL_PREFIX ) then
       echo "TCLDIR = $TCL_PREFIX" >> Make.config
diff -Naur ../NAMD_2.8_Source.orig/Make.depends ./Make.depends
--- ../NAMD_2.8_Source.orig/Make.depends	2011-05-11 08:38:25.000000000 -0700
+++ ./Make.depends	2012-01-09 18:22:45.174353287 -0800
@@ -1734,6 +1734,7 @@
 	src/GlobalMasterEasy.h \
 	src/GlobalMasterMisc.h \
 	src/GlobalMasterFreeEnergy.h \
+	src/GlobalMasterAPBS.h \
 	src/GlobalMasterColvars.h \
 	src/colvarmodule.h \
 	src/colvartypes.h \
@@ -3089,6 +3090,17 @@
 	src/InfoStream.h \
 	src/Debug.h
 	$(CXX) $(CXXFLAGS) $(COPTO)obj/GlobalMasterServer.o $(COPTC) src/GlobalMasterServer.C
+obj/GlobalMasterAPBS.o: \
+	src/GlobalMasterAPBS.C \
+	src/NamdTypes.h \
+	src/Vector.h \
+	src/common.h \
+	src/ResizeArray.h \
+	src/ResizeArrayRaw.h \
+	src/GlobalMaster.h \
+	src/GlobalMasterAPBS.h \
+	src/Debug.h
+	$(CXX) $(CXXFLAGS) $(COPTO)obj/GlobalMasterAPBS.o $(COPTC) src/GlobalMasterAPBS.C
 obj/GlobalMasterTest.o: \
 	src/GlobalMasterTest.C \
 	src/NamdTypes.h \
diff -Naur ../NAMD_2.8_Source.orig/Makefile ./Makefile
--- ../NAMD_2.8_Source.orig/Makefile	2011-05-25 13:51:23.000000000 -0700
+++ ./Makefile	2012-01-09 18:23:29.064685734 -0800
@@ -147,6 +147,7 @@
         $(DSTDIR)/FreeEnergyVector.o \
 	$(DSTDIR)/GlobalMaster.o \
 	$(DSTDIR)/GlobalMasterServer.o \
+	$(DSTDIR)/GlobalMasterAPBS.o \
 	$(DSTDIR)/GlobalMasterTest.o \
 	$(DSTDIR)/GlobalMasterIMD.o \
 	$(DSTDIR)/GlobalMasterTcl.o \
@@ -332,7 +333,7 @@
 LIBS = $(CUDAOBJS) $(PLUGINLIB) $(DPMTALIBS) $(DPMELIBS) $(TCLDLL)
 
 # CXX is platform dependent
-CXXBASEFLAGS = $(COPTI)$(CHARMINC) $(COPTI)$(SRCDIR) $(COPTI)$(INCDIR) $(DPMTA) $(DPME) $(COPTI)$(PLUGININCDIR) $(COPTD)STATIC_PLUGIN $(TCL) $(FFT) $(CUDA) $(MEMOPT) $(CCS) $(RELEASE) $(EXTRADEFINES) $(TRACEOBJDEF) $(EXTRAINCS)
+CXXBASEFLAGS = $(COPTI)$(CHARMINC) $(COPTI)$(SRCDIR) $(COPTI)$(INCDIR) $(DPMTA) $(DPME) $(COPTI)$(PLUGININCDIR) $(COPTD)STATIC_PLUGIN $(TCL) $(FFT) $(CUDA) $(MEMOPT) $(CCS) $(APBS) $(RELEASE) $(EXTRADEFINES) $(TRACEOBJDEF) $(EXTRAINCS)
 CXXFLAGS = $(CXXBASEFLAGS) $(CXXOPTS)
 CXXTHREADFLAGS = $(CXXBASEFLAGS) $(CXXTHREADOPTS)
 CXXSIMPARAMFLAGS = $(CXXBASEFLAGS) $(CXXSIMPARAMOPTS)
@@ -374,6 +375,7 @@
 	$(TCLLIB) \
 	$(FFTLIB) \
 	$(PLUGINLIB) \
+	$(APBSLIB) \
 	$(CHARMOPTS) \
 	$(EXTRALINKLIBS) \
 	-lm -o namd2
diff -Naur ../NAMD_2.8_Source.orig/src/ComputeMgr.C ./src/ComputeMgr.C
--- ../NAMD_2.8_Source.orig/src/ComputeMgr.C	2011-04-26 01:43:41.000000000 -0700
+++ ./src/ComputeMgr.C	2012-01-09 18:22:45.174353287 -0800
@@ -80,6 +80,9 @@
 #include "GlobalMasterEasy.h"
 #include "GlobalMasterMisc.h"
 #include "GlobalMasterFreeEnergy.h"
+#ifdef NAMD_APBS
+#include "GlobalMasterAPBS.h"
+#endif NAMD_APBS
 #include "GlobalMasterColvars.h"
 
 ComputeMgr::ComputeMgr()
@@ -749,6 +752,10 @@
             masterServerObject->addClient(new GlobalMasterFreeEnergy());
 		if ( simParams->colvarsOn )
 			masterServerObject->addClient(new GlobalMasterColvars());
+#ifdef NAMD_APBS
+	if ( simParams->apbsForcesOn )
+	    masterServerObject->addClient(new GlobalMasterAPBS);
+#endif NAMD_APBS
 
     }
 
diff -Naur ../NAMD_2.8_Source.orig/src/SimParameters.C ./src/SimParameters.C
--- ../NAMD_2.8_Source.orig/src/SimParameters.C	2011-05-27 14:28:04.000000000 -0700
+++ ./src/SimParameters.C	2012-01-09 18:22:45.174353287 -0800
@@ -1354,6 +1354,13 @@
        "Configuration file for constant forces", PARSE_STRING);
    opts.require("constantforce", "consForceScaling",
        "Scaling factor for constant forces", &consForceScaling, 1.0);
+
+    ////  APBS solvation forces
+    opts.optionalB("main", "apbsForces", "Apply APBS solvation forces?",
+      &apbsForcesOn, FALSE);
+    opts.require("apbsForces", "apbsPQRFile", "Path to PQR file", apbsPQRFile);
+    opts.require("apbsForces", "apbsForcesConfig",
+        "Configuration file for APBS solvation forces", PARSE_MULTIPLES);
  
     //// Collective variables
     opts.optionalB("main", "colvars", "Is the colvars module enabled?",
@@ -4105,9 +4112,15 @@
    // Global forces configuration
 
    globalForcesOn = ( tclForcesOn || freeEnergyOn || miscForcesOn ||
-                      (IMDon) || SMDOn || TMDOn || colvarsOn || symmetryOn );
-
+                      (IMDon) || SMDOn || TMDOn || colvarsOn || symmetryOn ||
+		      apbsForcesOn );
 
+   if (apbsForcesOn) {
+     iout << iINFO << "APBS SOLVATION FORCES ACTIVE\n";
+     iout << iINFO << "    APBS PQR FILE: " << apbsPQRFile << "\n";
+     iout << endi;
+   }
+ 
    if (tclForcesOn)
    {
      iout << iINFO << "TCL GLOBAL FORCES ACTIVE\n";
diff -Naur ../NAMD_2.8_Source.orig/src/SimParameters.h ./src/SimParameters.h
--- ../NAMD_2.8_Source.orig/src/SimParameters.h	2011-05-10 14:28:45.000000000 -0700
+++ ./src/SimParameters.h	2012-01-09 18:22:45.174353287 -0800
@@ -403,6 +403,9 @@
 	Bool miscForcesOn;		//  Using misc forces?
 	Bool colvarsOn;         //  Using the colvars module?
 
+    Bool apbsForcesOn;      // Using APBS to compute solvation forces?
+    char apbsPQRFile[128];  // path to PQR file for charges and radii.
+
 	Bool fixedAtomsOn;		//  Are there fixed atoms?
 	Bool fixedAtomsForces;		//  Calculate forces anyway?
 
