The main data structure, and one of the single most important parts of VBM, is the bifurcation manifold object. Geometrically speaking, the bifurcation diagram object is a list of floating point vectors with the length of each vector being the number of representatives chosen in the construction of this bifurcation diagram, along with connectivity. Normally, the vectors in the bifurcation diagram object are not explicitly a solution of the desired equations. Often, some representatives are chosen, or quantities computed, which somehow capture the overall structure of the solution. The user is totally free in this regard and may include in the bifurcation diagram object any data they wish. The user is not even restricted to numeric data, since each point can also contain tags. These tags provide additional information about the point. For example, one can store information such as how one starts a computation at that point, or how one can reconstruct the entire solution from the given representatives. As currently implemented, the VBM core program only uses a few tags, the vast majority are user (or more precisely module) defined.
As the bifurcation diagram object is of such importance we will give an example. For ease of use we have defined a file in which a bifurcation diagram object may be stored. The file allows bifurcation diagram objects to be created using a wide variety of tools, not just VBM. An example of a bifurcation diagram object, in this file , is shown in the following figures.
# AUTO_EQ 0 5
# AUTO_PAR 6 9
# AUTO_EXTRA_DATA_REPORT 10 15 1.0
# VBM_Default_Plot_Coordinates 7 4 5 1
N3;phi;m2;r1;r3;s;lambda;nu;uhat2;kappa;eN3;ephi;em2;er1;er3;es1
16
7 2
3
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
4
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
##Begin VBM_Connectivity
line 1 0 1 1
line 1 1 1 2
triangle 2 0 2 1 2 2
line 2 2 2 3
##End
##Begin VBM_Compute_Module
NULL
./r.strut
./strut_ivp.f
./work
VBM_1D_AUTO
Continuation with IVP solver
##End
The above shows the overall structure of a bifurcation manifold object as it can be represented in an ASCII file. The individual sections of this data file are described in greater detail in the following figures.
# AUTO_EQ 0 5
# AUTO_PAR 6 9
# AUTO_EXTRA_DATA_REPORT 10 15 1.0
# VBM_Default_Plot_Coordinates 7 4 5 1
The above section of the bifurcation diagram object
file gives a list of tags that apply to all points in the
bifurcation diagram object, which our
interface calls global tags.
A tag is defined as a # followed by a tag name.
The arguments which follow the tag name are user
definable. In the example shown here the AUTO_EQ
and AUTO_PAR
tags are intended for a compute
engine based upon AUTO (Doedel, et. al).
These tags tell the compute engine what columns of the data are the
ones it should use for its computations.
The columns denoted by AUTO_EQ
contain
the values of the ODEs at one
endpoint (for example t=0), while
the columns denoted by AUTO_PAR
contain
parameters of the ODES which are not dependent
on t.
The `AUTO_EXTRA_DATA_REPORT' tag is an optional tag
for the above compute engine which asks it to compute additional
data. The `VBM_Default_Plot_Coordinates' is a general
tag for VBM which various modules use to determine what
graphics to draw by default. As you can see, the tags
are quite flexible. We also note that all
of these tags are optional. A bifurcation diagram
object file is legal even if it contains no global
tags. On the other hand, specific modules may check for
the existence of certain tags, and not function if the expected tags
are not present.
N3;phi;m2;r1;r3;s;lambda;nu;uhat2;kappa;eN3;ephi;em2;er1;er3;es1
16
7 2
This above section shows the header information which is required of all bifurcation diagram object files. The first line is a list of names by which the representatives in the file are known. They can be used to denote the representatives in various modules. The second line denotes the number of columns that each data point in the file should contain. This entry is mainly used for error checking. The third line contains two numbers. The first is the total number of data points in the file and the second is the number of sections of data in the file. The first number is not required and only exists for backward compatibility with former versions of the software. In current versions it may just be set to zero.
3
# AUTOFort8_file /tmp/fort.8 1
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
# AUTOFort8_file /tmp/fort.8 5
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
# AUTOFort8_file /tmp/fort.8 7
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
4
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0
The above section shows the actual body of the the bifurcation diagram object file. Each section of data begins with an integer which represents the number of data lines in the section. Each data line is a list of floating point numbers which are the representatives of a point of the bifurcation manifold. In addition, a line may be proceeded by any number of point-wise tags. Each point-wise tag applies to the point which follows it. For example, the point-wise tags in the first section, namely `AUTOFort8_file', inform various modules that additional data about this point is available in the given filename. In this example, the additional data can be used for full solution reconstruction.
##Begin VBM_Connectivity
line 1 0 1 1
line 1 1 1 2
triangle 2 0 2 1 2 2
line 2 2 2 3
##End
##Begin VBM_Compute_Module
NULL
./r.strut
./strut_ivp.f
./work
VBM_1D_AUTO
Continuation with IVP solver
##End
The above section shows the final section of the bifurcation diagram object file. This part of the file is very similar to the global tag section, except, instead of having all of the data for the tag on a single line, the data may be spread over several lines. Such data blocks are normally used to give additional information which is required for continuation or solution reconstruction, and each data block begins with ## followed by a block name. The two examples shown here have more specialized purposes. The first block, `VBM_Connectivity', is a general block which allows the bifurcation diagram to have arbitrary connectivity. Geometric objects may be defined here which use as vertices the data from the previous section (for more detail see Section). If this block is not defined, the bifurcation visualization modules may prescribe the connectivity as they wish. Canonically, they will draw the sections of data as a set of line segments which connect the data points in that section sequentially. The second section, `VBM_Compute_Module', gives a description of how to create a compute engine, which may be used to extend this data set.