329#define APBS_TIMER_WALL_CLOCK 26
335#define APBS_TIMER_SETUP 27
341#define APBS_TIMER_SOLVER 28
347#define APBS_TIMER_ENERGY 29
353#define APBS_TIMER_FORCE 30
359#define APBS_TIMER_TEMP1 31
365#define APBS_TIMER_TEMP2 32
444#define VPMGSMALL 1e-12
450#define SINH_MIN -85.0
458#define MAX_HASH_DIM 75
461# if !defined(APBS_NOINLINE)
462# define APBS_NOINLINE 1
466#if !defined(APBS_NOINLINE)
476# define VINLINE_VATOM
496# define VINLINE_VGREEN
501# define VINLINE_VFETK
515#if defined(VF77_UPPERCASE)
516# if defined(VF77_NOUNDERSCORE)
517# define VF77_MANGLE(name,NAME) NAME
518# elif defined(VF77_ONEUNDERSCORE)
519# define VF77_MANGLE(name,NAME) NAME ## _
521# define VF77_MANGLE(name,NAME) name
524# if defined(VF77_NOUNDERSCORE)
525# define VF77_MANGLE(name,NAME) name
526# elif defined(VF77_ONEUNDERSCORE)
527# define VF77_MANGLE(name,NAME) name ## _
532# define VF77_MANGLE(name,NAME) name
537#if defined(FLOAT_EPSILON)
538# define VFLOOR(value) \
539 ((floor(value) != floor(value + FLOAT_EPSILON)) ? \
540 floor(value + FLOAT_EPSILON) : floor(value))
547# define VFLOOR(value) floor(value)
551#if defined(HAVE_EMBED)
556# define VEMBED(rctag) \
557 VPRIVATE const char* rctag; \
558 static void* use_rcsid=(0 ? &use_rcsid : (void**)&rcsid);
564# define VEMBED(rctag)
570#if !defined(_WIN32) || defined(__MINGW32__)
571#define PRINT_FUNC __PRETTY_FUNCTION__
572#define OS_SEP_STR "/"
573#define OS_SEP_CHAR '/'
575#define OS_SEP_STR "\\"
576#define OS_SEP_CHAR '\\'
577#define PRINT_FUNC __FUNCSIG__
578#define snprintf sprintf_s
582#define ANNOUNCE_FUNCTION \
584 Vnm_prrint(2, "%s() [%s:%d]\n", \
585 PRINT_FUNC, __FILE__, __LINE__ ); \
588#define WARN_UNTESTED \
590 Vnm_print(2, "%s() [%s:%d]: Untested Translation!\n", \
591 __FUNCTION__, __FILE__, __LINE__); \
594#define WARN_PARTTESTED \
596 Vnm_print(2, "%s() [%s:%d]: Partially Tested Translation.\n", \
597 __FUNCTION__, __FILE__, __LINE__); \
600#define ANNOUNCE_FUNCTION
602#define WARN_PARTTESTED
609#define VCHANNELEDMESSAGE0(channel, msg) \
611 Vnm_print(channel, "%s:%d [%s()]: MESSAGE:\n" \
613 __FILE__, __LINE__, __FUNCTION__, msg); \
616#define VCHANNELEDMESSAGE1(channel, msg, arg) \
619 snprintf( buff, 1000, msg, arg ); \
620 Vnm_print(channel, "%s:%d [%s()]: MESSAGE:\n" \
622 __FILE__, __LINE__, __FUNCTION__, buff); \
625#define VCHANNELEDMESSAGE2(channel, msg, arg0, arg1) \
628 snprintf( buff, 1000, msg, arg0, arg1 ); \
629 Vnm_print(channel, "%s:%d [%s()]: MESSAGE:\n" \
631 __FILE__, __LINE__, __FUNCTION__, buff); \
634#define VCHANNELEDMESSAGE3(channel, msg, arg0, arg1, arg2) \
637 snprintf(buff, 1000, msg, arg0, arg1, arg2); \
638 Vnm_print(channel, "%s:%d [%s()]: MESSAGE:\n" \
640 __FILE__, __LINE__, __FUNCTION__, buff); \
643#define VMESSAGE0(msg) VCHANNELEDMESSAGE0(2, msg)
644#define VMESSAGE1(msg, arg0) VCHANNELEDMESSAGE1(2, msg, arg0)
645#define VMESSAGE2(msg, arg0, arg1) VCHANNELEDMESSAGE2(2, msg, arg0, arg1)
646#define VMESSAGE3(msg, arg0, arg1, arg2) VCHANNELEDMESSAGE3(2, msg, arg0, arg1, arg2)
648#define VERRMSG0(msg) VMESSAGE0(msg)
649#define VERRMSG1(msg, arg0) VMESSAGE1(msg, arg0)
650#define VERRMSG2(msg, arg0, arg1) VMESSAGE2(msg, arg0, arg1)
651#define VERRMSG3(msg, arg0, arg1, arg2) VMESSAGE3(msg, arg0, arg1, arg2)
653#define VCHANNELEDMESSAGE0(channel, msg) \
655 Vnm_print(channel, "%s: %s\n", __FUNCTION__, msg); \
658#define VCHANNELEDMESSAGE1(channel, msg, arg0) \
661 snprintf( buff, 1000, msg, arg0 ); \
662 Vnm_print(channel, "%s: %s\n", __FUNCTION__, buff); \
665#define VCHANNELEDMESSAGE2(channel, msg, arg0, arg1) \
668 snprintf( buff, 1000, msg, arg0, arg1 ); \
669 Vnm_print(channel, "%s: %s\n", __FUNCTION__, buff); \
672#define VCHANNELEDMESSAGE3(channel, msg, arg0, arg1, arg2) \
675 snprintf(buff, 1000, msg, arg0, arg1, arg2); \
676 Vnm_print(channel, "%s: %s\n", __FUNCTION__, buff); \
679#define VMESSAGE0(msg) VCHANNELEDMESSAGE0(0, msg)
680#define VMESSAGE1(msg, arg0) VCHANNELEDMESSAGE1(0, msg, arg0)
681#define VMESSAGE2(msg, arg0, arg1) VCHANNELEDMESSAGE2(0, msg, arg0, arg1)
682#define VMESSAGE3(msg, arg0, arg1, arg2) VCHANNELEDMESSAGE3(0, msg, arg0, arg1, arg2)
684#define VERRMSG0(msg) VCHANNELEDMESSAGE0(2, msg)
685#define VERRMSG1(msg, arg0) VCHANNELEDMESSAGE1(2, msg, arg0)
686#define VERRMSG2(msg, arg0, arg1) VCHANNELEDMESSAGE2(2, msg, arg0, arg1)
687#define VERRMSG3(msg, arg0, arg1, arg2) VCHANNELEDMESSAGE3(2, msg, arg0, arg1, arg2)
697#define VASSERT_MSG0(cnd, msg) \
700 Vnm_print(2, "%s:%d [%s()]: ERROR:\n" \
701 " Assertion Failed (%s): %s\n\n", \
702 __FILE__, __LINE__, __FUNCTION__, #cnd, msg); \
707#define VASSERT_MSG1(cnd, msg, arg) \
711 snprintf( buff, 1000, msg, arg ); \
712 Vnm_print(2, "%s:%d [%s()]: ERROR:\n" \
713 " Assertion Failed (%s): %s\n\n", \
714 __FILE__, __LINE__, __FUNCTION__, #cnd, buff); \
719#define VASSERT_MSG2(cnd, msg, arg0, arg1) \
723 snprintf( buff, 1000, msg, arg0, arg1 ); \
724 Vnm_print(2, "%s:%d [%s()]: ERROR:\n" \
725 " Assertion Failed (%s): %s\n\n", \
726 __FILE__, __LINE__, __FUNCTION__, #cnd, buff); \
731#define VASSERT_MSG0(cnd, msg) \
734 Vnm_print(2, "%[%s()]: ERROR:\n" \
735 " Assertion Failed (%s): %s\n\n", \
736 __FUNCTION__, #cnd, msg); \
741#define VASSERT_MSG1(cnd, msg, arg) \
745 snprintf( buff, 1000, msg, arg ); \
746 Vnm_print(2, "[%s()]: ERROR:\n" \
747 " Assertion Failed (%s): %s\n\n", \
748 __FUNCTION__, #cnd, buff); \
753#define VASSERT_MSG2(cnd, msg, arg0, arg1) \
757 snprintf( buff, 1000, msg, arg0, arg1 ); \
758 Vnm_print(2, "[%s()]: ERROR:\n" \
759 " Assertion Failed (%s): %s\n\n", \
760 __FUNCTION__, #cnd, buff); \
773#define VWARN_MSG0(cnd, msg) \
778 "%s:%d [%s()]: WARNING:\n" \
779 " Condition Failed (%s):\n %s\n\n", \
789#define VWARN_MSG1(cnd, msg, arg0) \
793 snprintf(buff, 1000, msg, arg0); \
796 "%s:%d [%s()]: WARNING:\n" \
797 " Condition Failed (%s):\n %s\n\n", \
807#define VWARN_MSG2(cnd, msg, arg0, arg1) \
811 snprintf(buff, 1000, msg, arg0, arg1); \
814 "%s:%d [%s()]: WARNING:\n" \
815 " Condition Failed (%s):\n %s\n\n", \
825#define VWARN_MSG0(cnd, msg) \
830 "[%s()]: WARNING:\n" \
838#define VWARN_MSG1(cnd, msg, arg0) \
842 snprintf(buff, 1000, msg, arg0); \
845 "[%s()]: WARNING:\n" \
853#define VWARN_MSG2(cnd, msg, arg0, arg1) \
857 snprintf(buff, 1000, msg, arg0, arg1); \
860 "[%s()]: WARNING:\n" \
871#define VABORT_MSG0(msg) \
873 Vnm_print(2, "%s:%d [%s()]: ABORTING:\n" \
875 __FILE__, __LINE__, __FUNCTION__, msg); \
879#define VABORT_MSG1(msg, arg) \
882 snprintf( buff, 1000, msg, arg ); \
883 Vnm_print(2, "%s:%d [%s()]: ABORTING:\n" \
885 __FILE__, __LINE__, __FUNCTION__, buff); \
889#define VABORT_MSG2(msg, arg0, arg1) \
892 snprintf( buff, 1000, msg, arg0, arg1); \
893 Vnm_print(2, "%s:%d [%s()]: ABORTING:\n" \
895 __FILE__, __LINE__, __FUNCTION__, buff); \
899#define VABORT_MSG0(msg) \
901 Vnm_print(2, "%[%s()]: ABORTING:\n" \
903 __FUNCTION__, msg); \
907#define VABORT_MSG1(msg, arg) \
910 snprintf( buff, 1000, msg, arg ); \
911 Vnm_print(2, "[%s()]: ABORTING:\n" \
913 __FUNCTION__, buff); \
917#define VABORT_MSG2(msg, arg0, arg1) \
920 snprintf( buff, 1000, msg, arg0, arg1); \
921 Vnm_print(2, "[%s()]: ABORTING:\n" \
923 __FUNCTION__, buff); \
932#define PRINT_INT(expr) \
934 Vnm_print(2, "%s:%d [%s()]: %s == %d\n", \
935 __FILE__, __LINE__, __FUNCTION__, #expr, expr); \
938#define PRINT_DBL(expr) \
940 Vnm_print(2, "%s:%d [%s()]: %s == %f\n\n", \
941 __FILE__, __LINE__, __FUNCTION__, #expr, expr); \
944#define PRINT_INT(expr)
945#define PRINT_DBL(expr)
948#define VMALLOC(vmem, n, type) ((type*)Vmem_malloc(vmem, n, sizeof(type)))
950#define VFREE(vmem, n, type, ptr) (Vmem_free(vmem, n, sizeof(type), (void **)&(ptr)))
952#define VFILL(vec, n, val) \
955 for (fill_idx = 0; fill_idx < n; fill_idx++) \
956 vec[fill_idx] = val; \
959#define VCOPY(srcvec, dstvec, i, n) \
961 for (i = 0; i < n; i++) \
962 dstvec[i] = srcvec[i]; \
966char* wrap_text(
char* str,
int right_margin,
int left_padding );
968#define VAT(array, i) ((array)[(i) - 1])
969#define RAT(array, i) ((array) + i - 1)
eVhal_NONLINType
Type of nonlinear to use for MG methods.
eVsurf_Meth
Types of molecular surface definitions.
eVdata_Type
Types of (scalar) data that can be written out of APBS.
eVdata_Format
Format of data for APBS I/O.
enum eVchrg_Src Vchrg_Src
Declaration of the Vchrg_Src type as the Vchrg_Meth enum.
eVbcfl
Types of boundary conditions.
eVchrg_Meth
Types of charge discretization methods.
enum eVdata_Format Vdata_Format
Declaration of the Vdata_Format type as the Vdata_Format enum.
enum eVsurf_Meth Vsurf_Meth
Declaration of the Vsurf_Meth type as the Vsurf_Meth enum.
enum eVbcfl Vbcfl
Declare Vbcfl type.
enum eVhal_NONLINType Vhal_NONLINType
Declaration of the Vhal_NONLINType type as the Vhal_NONLINType enum.
enum eVhal_PBEType Vhal_PBEType
Declaration of the Vhal_PBEType type as the Vhal_PBEType enum.
eVrc_Codes
Return code enumerations.
eVhal_PBEType
Version of PBE to solve.
enum eVdata_Type Vdata_Type
Declaration of the Vdata_Type type as the Vdata_Type enum.
enum eVhal_IPKEYType Vhal_IPKEYType
Declaration of the Vhal_IPKEYType type as the Vhal_IPKEYType enum.
enum eVchrg_Meth Vchrg_Meth
Declaration of the Vchrg_Meth type as the Vchrg_Meth enum.
enum eVoutput_Format Voutput_Format
Declaration of the Voutput_Format type as the VOutput_Format enum.
eVoutput_Format
Output file format.
eVsol_Meth
Solution Method enumerations.
eVhal_IPKEYType
Type of ipkey to use for MG methods.