OpenDX scalar data format

We output most discretized scalar data (e.g., potential, accessibility, etc.) from APBS in the data format used by the OpenDX software package (http://www.opendx.org). The OpenDX data format is very flexible; the following sections describe the application of this format for APBS multigrid and finite element datasets.

Multigrid

This data format has the following form:


          # Comments
          object 1 class gridpositions counts nx ny nz
          origin xmin ymin zmin
          delta hx 0.0 0.0
          delta 0.0 hy 0.0 
          delta 0.0 0.0 hz
          object 2 class gridconnections counts nx ny nz
          object 3 class array type double rank 0 times n
          u(0,0,0) u(0,0,1) u(0,0,2)
          ...
          u(0,0,nz-3) u(0,0,nz-2) u(0,0,nz-1)
          u(0,1,0) u(0,1,1) u(0,1,2)
          ...
          u(0,1,nz-3) u(0,1,nz-2) u(0,1,nz-1)
          ...
          u(0,ny-3,nz-3) u(0,ny-2,nz-2) u(0,ny-1,nz-1)
          u(1,0,0) u(1,0,1) u(1,0,2)
          ...
          attribute "dep" string "positions"
          object "regular positions regular connections" class field
          component "positions" value 1
          component "connections" value 2
          component "data" value 3
        
The variables in this example are:

Comments

Any number of comment lines, each line starting with the "#" symbol

nx ny nz

The number of grid points in the x-, y-, and z-directions.

xmin ymin zmin

The coordinates of the grid lower corner.

hx hy hz

The grid spacings in the x-, y-, and z-directions.

n

The total number of grid points; n = nx * ny * nz

u(*,*,*)

The data values, ordered with the z-index increasing most quickly, followed by the y-index, and then the x-index.

Finite element

For finite element solutions, the OpenDX format takes the following form:


          object 1 class array type float rank 1 shape 3 items N
          v1x v1y v1z
          v2x v2y v2z
          ...
          vNx vNy vNz
          object 2 class array type int rank 1 shape 4 items M
          s1a s1b s1c s1d
          s2a s2b s2c s2d
          ...
          sMa sMb sMc sMd
          attribute "element type" string "tetrahedra"
          object 3 class array type float rank 0 items N
          u1
          u2
          ...
          uN
          attribute "dep" string "positions"
          object "irregular positions irregular connections" class field
          component "positions" value 1
          component "connections" value 2
          component "data" value 3
          end
        
where the variables are:

N

Number of vertices

vix viy viz

Coordinates of vertex i

M

Number of simplices

sia sib sic sid

IDs of vertices in simplex i

ui

Data value associated with vertex i