CharVariety is a complementary library to the following paper on arxiv:
Stationary measures and orbit closures of uniformly expanding random dynamical systems on surfaces by Ping Ngai (Brian) Chung
The goal is to implement the algorithm in Chapter 8 which allows one to verify uniform expansion on grid points of a given character variety (see Chapter 8 of the paper for details).
See Theorem C and D for key theoretical consequences of uniform expansion and motivation.
Currently there are three versions of the code:
- Latest Version (as of September 13th, 2021) :
main/mainScript.cpp
This is the latest version of the script. To compile on terminal: at the CharVariety directory, use
g++ -g .\main\mainScript.cpp .\utils\helpers.cpp -o .\main\mainScript -fopenmp
- Basic version:
main/mainStandAloneScript.cpp
This can be compiled on its own without any extra package or modules other than basic g++. To compile:
g++ -o .\main\mainStandAloneScript .\main\mainStandAloneScript.cpp
- Basic version with multithreading:
main/mainStandAloneWithMultithread.cpp
This is the same as the basic version except it allows for multithreading using OpenMP. To compile:
g++ -o .\main\mainStandAloneWithMultithread .\main\mainStandAloneWithMultithread.cpp -fopenmp
- Interval Arithmetic: to come
To make sure the result is not affected by floating point error, all the arithmetic should be done using interval arithmetic. Currently the plan is to use the boost/numeric/interval
package.
No matter which version is compiled, the output is stored in the result
directory as a txt file. It should look like the following:
Program run on: Mon Sep 13 16:11:22 2021
Minimum average expansion: 0.531619
Other parameters:
k-2: 1.990000
Spacing in the surface directions: r: 0.100000
Spacing in the tangent direction: rr: 0.010000
Total number of grid points on the surface: 5190
The point where the min average expansion occur: P = (1.928409, 1.900000, 1.700000)
Time taken: 1.879000 seconds
The ''Minimum average expansion'' is positive means that uniform expansion is verified on the grid points.
There are unit tests in the test
directory, implemented using Boost.Test (I am using Boost Version 1.75.0).