LatNet Builder Manual 2.1.3-6
Software Package for Constructing Highly Uniform Point Sets
|
This file contains the base classes for digital nets in base 2. More...
#include "latbuilder/Util.h"
#include "netbuilder/Types.h"
#include "netbuilder/GeneratingMatrix.h"
#include "netbuilder/NetConstructionTraits.h"
#include <memory>
#include <sstream>
#include <stdexcept>
Classes | |
class | NetBuilder::AbstractDigitalNet |
Abstract class representing digital nets in base 2. More... | |
class | NetBuilder::DigitalNet< NC > |
Derived class of AbstractDigitalNet designed to implement specific construction methods. More... |
Namespaces | |
namespace | NetBuilder |
NetBuilder namespace. |
This file contains the base classes for digital nets in base 2.
The high-level abstract representation of a digital net essentially corresponds to a vector of generating matrices. This representation is used to reason about digital nets whenever we do not need to actually construct them, e.g. to implement figures of merit that run computations based on the matrices. The AbstractDigitalNet class implements this representation.
Concrete implementations of digital nets rely on construction methods. A construction method is a way of specifying the subspace of nets which is of interest for us and how to construct nets from this subspace. We can be interested in exploring the whole space (which we called explicit construction, as we directly work on the generating matrices). But we can also be interested in exploring specific subspaces (such as Sobol nets, polynomial lattice rules), or even subspaces generated by applying randomizations to a base net.
A construction method is defined by choosing two main variables:
There are currently 4 construction methods implemented: Sobol, polynomial, explicit, and Left Matrix Scramble
The DigitalNet class derives from AbstractDigitalNet, and contains methods common to all construction methods (such as extending the net by using a new generating value). It is templated by the NetConstruction class. This is the good level of abstraction in order to create tasks (e.g. search methods) on digital nets.
Finally, the NetConstructionTraits (in NetConstructionsTraits.h) enumerations contain, for each construction method, the functions that are specific to the construction method, the most important ones being:
This organization allows static polymorphism, while limiting the complexity of the code (in most instances, the AbstractDigitalNet class is the good level of abstraction, and it does not require templating).
Currently there are two types of FOMs for digital nets: FOMs based on t-value, and kernel based FOMs.