Re: [AMBER-Developers] sander.APBS broken

From: Jason Swails <>
Date: Sun, 21 Mar 2010 19:33:00 -0400


As a follow-up, I'm assuming all that was changed was ener%vdw to
pot%vdw, which is one of the changes that I tested out. EPB and ELE
are getting exchanged, which I'm trying to hunt down in
printe.f/force.f. This results in what appears to be a simple
*switch* of ELE and EPB values for the Na+, Cl-, etc. ion test cases
for iapbs_radi tests. (Moreover, a non-zero ELE value for a single
particle, even if charged, makes no sense, so this must be backwards).
 However, when actual amino acids are calculated, the EPB from the
save files matches exactly the EEL being printed out, but EPB from the
save files does NOT match EEL being printed out -- this value is
getting lost somewhere. This causes deviations in the total energy
equal to the amount by which EEL and EPB are off from one another.

I've attached my relative TEST_FAILURES.diff file.


On Sun, Mar 21, 2010 at 7:09 PM, Jason Swails <> wrote:
> Hey Mark,
> The "difficult" part about getting sander.APBS built correctly is
> simply getting apbs and iapbs properly built (iapbs is what actually
> provides the library necessary to make APBS functions available to MD
> engines, so if you haven't built this, that is why the link is failing
> with undefined references to apbs functions).
> The instructions on
> are
> quite good there.  I usually use apbs version 1.2 which can be found
> on sourceforge.  I also passed --disable-openmp as an apbs configure
> flag rather than an iapbs configure flag, since I was really only
> building that apbs for sander.APBS and had no need for openmp support.
> Next, just make sure that, according to the APBS_PREFIX set in the
> above guide, the environment variable APBS_LIB is set to
> $APBS_PREFIX/lib prior to building.  I typically attempt a sander.APBS
> build right after a serial build so that all other parts of the code
> (i.e. sqm?) that sander may link to have just been built in a
> compatible fashion.  I don't know if it's necessary, but it's what I
> do.  Then, go to $AMBERHOME/src/sander and run a make -e
> AMBERBUILDFLAGS="-DAPBS" sander.APBS and it should work.  It does for
> me on my mac os x 10.6 with gnu compilers (so obviously I didn't
> follow the setting of the intel compilers in the iapbs directions
> above).
> Thanks!
> Jason
> On Sun, Mar 21, 2010 at 6:51 PM, Mark Williamson <> wrote:
>> Jason Swails wrote:
>>> Hello,
>>> The sander.APBS build has recently been broken as a result of the new
>>> ener array structure (which, consequently, was a heck of a lot easier
>>> to figure out than when I tried to learn ene/ener in runmd.f/force.f,
>>> so thanks for that Mark).
>> Hi Jason,
>> Glad to hear... I never want anyone else to go through the ene/ener pain
>> again :)
>>> However, I ran into an issue building sander.APBS which is not a
>>> typical, default build so it's quite understandable why it slipped
>>> through.  The call to apbs_force within force.f passes "ener%vdw"
>>> which, to my understanding, doesn't exist.  It appears that this
>>> should be changed to "pot%vdw" as pot is used locally for these
>>> variables in force.f (or at the very least, changed to ener%pot%vdw).
>>> Both of these changes result in test failures in the iapbs_radi, even
>>> though they fix the compilation errors I was getting.  However, the
>>> numbers appear similar, though misplaced (EEL, EPB), but some appear
>>> slightly off, which is why I copied Robert on this as well.
>> Yes, I think this missed the checking since APBS is not built by default,
>> hence it is not tested. Your suggestion is correct; the fragment of code
>> that is there presently is an artifact of a previous local iteration of my
>> attempt and I've just updated the code to fix this.
>> However, I've not tested it since I don't know how to build sander.APBS (and
>> I don't know much of that part of the code either). Can you send me some
>> instructions on how to build this version of sander; a "make sander.APBS" in
>> sander's dir is failing in the final linking stage with:
>> apbs.APBS.o(.text+0x60ae): In function `apbs_mp_apbs_spenergy_':
>> : undefined reference to `apbsdrv_'
>> apbs.APBS.o(.text+0x88d0): In function `apbs_mp_apbs_force_':
>> : undefined reference to `apbsdrv_'
>> apbs.APBS.o(.text+0x91e1): In function `apbs_mp_apbs_force_':
>> : undefined reference to `apbsdrv_'
>> make: *** [sander.APBS] Error 1
>> I'm probably doing something wrong here or missed something.
>> With reference to the incorrect values after fixing the compile issue, I'm
>> taking a total guess here, but it *could* be a result of the fact that
>> historically the array position ener(26), ene(4) was used for the hbond
>> energy when igb=0 for gb when and this may not be totally
>> consistent with the printing in printe.f .
>> If I can get a APBS build working locally, I will work on this and hopefully
>> have a fix soon.
>> --
>> Mark Williamson, Post Doc
>> Walker Molecular Dynamics Group
>> Room 395E
>> San Diego Supercomputer Center
>> 9500 Gilman Drive
>> La Jolla, CA 92093-0505
>> Email:  mjw at
>> Office: 858-246-0827
>> _______________________________________________
>> AMBER-Developers mailing list
> --
> ---------------------------------------
> Jason M. Swails
> Quantum Theory Project,
> University of Florida
> Ph.D. Graduate Student
> 352-392-4032

Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Graduate Student

AMBER-Developers mailing list

Received on Sun Mar 21 2010 - 17:00:03 PDT
Custom Search