The Conley-Morse Graphs Software
p_lorenz.h
Go to the documentation of this file.
1/////////////////////////////////////////////////////////////////////////////
2///
3/// @file p_lorenz.h
4///
5/// Parameters for the Lorenz equations with 3 parameters.
6///
7/// @author Pawel Pilarczyk
8///
9/////////////////////////////////////////////////////////////////////////////
10
11// Copyright (C) 1997-2014 by Pawel Pilarczyk.
12//
13// This file is part of my research software package. This is free software:
14// you can redistribute it and/or modify it under the terms of the GNU
15// General Public License as published by the Free Software Foundation,
16// either version 3 of the License, or (at your option) any later version.
17//
18// This software is distributed in the hope that it will be useful,
19// but WITHOUT ANY WARRANTY; without even the implied warranty of
20// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21// GNU General Public License for more details.
22//
23// You should have received a copy of the GNU General Public License
24// along with this software; see the file "license.txt". If not,
25// please, see <https://www.gnu.org/licenses/>.
26
27// Started on June 26, 2012. Last revision: July 2, 2012.
28
29
30#ifndef _CMGRAPHS_P_H_
31#define _CMGRAPHS_P_H_
32
33
34namespace custom {
35
36/// Parameters for the Lorenz time-t map with 3 parameters.
37namespace lorenz {
38
39
40// --------------------------------------------------
41// --------- the phase space configuration ----------
42// --------------------------------------------------
43
44/// The dimension of the phase space.
45const int spaceDim = 3;
46
47/// Is space wrapping (a.k.a. periodic boundary conditions)
48/// in effect in the given directions?
49const bool spaceWrapping [spaceDim] = {false, false, false};
50
51/// The initial depth of subdivisions in the phase space.
52const int initialDepth = 5;
53
54/// The final depth of subdivisions in the phase space.
55const int finalDepth = 6;
56
57
58// --------------------------------------------------
59// ------------ the parameter selection -------------
60// --------------------------------------------------
61
62/// The dimension of the parameter space to iterate. Only those parameters
63/// which are varying are taken into consideration here.
64const int paramDim = 3;
65
66/// The numbers of subintervals in each direction of the parameter space.
67/// The type of these numbers must match "parCoord" in "typedefs.h".
68const short int paramSubdiv [paramDim] = {1, 1, 1};
69
70/// The numbers of parameters to subdivide.
71const int paramSelect [paramDim] = {0, 1, 2};
72
73
74// --------------------------------------------------
75// ---------- the parameter space settings ----------
76// --------------------------------------------------
77
78/// The number of all the parameters, both varying and fixed.
79const int paramCount = 3;
80
81/// Half of the width of the parameter interval.
82const double epsilonParam = 0;
83
84/// The left bounds on the parameters.
85const double paramLeft [paramCount] =
86 {10 - epsilonParam, 28 - epsilonParam, 8.0 / 3 - epsilonParam};
87
88/// The right bounds on the parameters.
89const double paramRight [paramCount] =
90 {10 + epsilonParam, 28 + epsilonParam, 8.0 / 3 + epsilonParam};
91
92
93// --------------------------------------------------
94// -------------- the phase space size --------------
95// --------------------------------------------------
96
97// An array which keeps the offset of the rectangular area
98// in the phase space that contains the invariant sets of interest.
99//const double spaceOffset [spaceDim] = {-16, -20, -5};
100
101// An array which keeps the width of the rectangular area
102// in the phase space that contains the invariant sets of interest.
103//const double spaceWidth [spaceDim] = {32, 40, 40};
104
105
106/// An imitation of an array which returns the offset of the rectangular area
107/// in the phase space which contains the invariant sets of interest.
109{
110 /// Returns the space offset in the requested direction.
111 double operator [] (int n) const
112 {
113 // for rho = 13
114 if (paramLeft [1] <= 13)
115 {
116 const double offset [] = {-16, -20, -5};
117 return offset [n];
118 }
119 // for rho = 18
120 else if (paramLeft [1] <= 18)
121 {
122 const double offset [] = {-20, -25, -5};
123 return offset [n];
124 }
125 // for rho = 28
126 else
127 {
128 const double offset [] = {-25, -35, -5};
129 return offset [n];
130 }
131 }
132}; /* struct SpaceOffsetType */
133
134/// An imitation of an array which returns the offset of the rectangular area
135/// in the phase space which contains the invariant sets of interest.
137
138/// An imitation of an array which returns the width of the rectangular area
139/// in the phase space which contains the invariant sets of interest.
141{
142 /// Returns the space width in the requested direction.
143 double operator [] (int n) const
144 {
145 // for rho = 13
146 if (paramLeft [1] <= 13)
147 {
148 const double width [] = {32, 40, 40};
149 return width [n];
150 }
151 // for rho = 18
152 else if (paramLeft [1] <= 18)
153 {
154 const double width [] = {40, 50, 50};
155 return width [n];
156 }
157 // for rho = 28
158 else
159 {
160 const double width [] = {50, 70, 70};
161 return width [n];
162 }
163 }
164}; /* struct SpaceWidthType */
165
166/// An imitation of an array which returns the width of the rectangular area
167/// in the phase space which contains the invariant sets of interest.
169
170
171// --------------------------------------------------
172// ------------------ refinements -------------------
173// --------------------------------------------------
174
175/// The number of refinements that should be done if a Morse set
176/// with the trivial index is encountered or if the image of a Morse set
177/// sticks out of the rectangular region to which the computations
178/// are restricted. Set to zero for no refinements.
179const int refineDepth = 2;
180
181/// The maximal allowed size of a set of cubes in the phase space
182/// which can be refined at the initial subdivision level.
183/// Set to zero to suppress any refinements.
184const int maxRefineSize0 = 1000;
185
186/// The maximal allowed size of a set of cubes in the phase space
187/// which can be refined at the subsequent subdivision levels.
188/// Set to zero to suppress any refinements.
189const int maxRefineSize1 = 1000;
190
191
192// --------------------------------------------------
193// ------------------- map images -------------------
194// --------------------------------------------------
195
196/// The maximal allowed diameter of the cubical image of a signle box.
197/// This limit is set up in order to prevent a blow-up of the program
198/// in the memory because of accumulating huge images of boxes.
199const int maxImageDiameter = 10000;
200
201/// The maximal allowed volume of the cubical image of a single box.
202/// This limit is set up in order to prevent a blow-up of the program
203/// in the memory because of accumulating huge images of boxes.
204const int maxImageVolume = 1000000;
205
206
207// --------------------------------------------------
208// -------------- max index pair size ---------------
209// --------------------------------------------------
210
211/// The maximal allowed size of the index pair. This size is measured
212/// as the total number of cubes in the index pair and its forward image.
213const int maxIndexPairSize = 1000000;
214
215
216// --------------------------------------------------
217// --------------- joining Morse sets ---------------
218// --------------------------------------------------
219
220/// The maximal number of cubes in a trivial Morse set for which an attempt
221/// is made to join this set with another near-by Morse set.
222/// Set to zero to suppress joining.
223const int maxJoinSize = 0;
224
225/// The maximal size of a connecting orbit between two Morse sets
226/// which can be considered for joining.
227const int maxJoinConnection = 1000;
228
229/// The maximal allowed distance between two Morse sets which can be
230/// considered for joining. Note: It doesn't work with space wrapping.
231const int maxJoinDistance = 100;
232
233
234// --------------------------------------------------
235// ----------------- other settings -----------------
236// --------------------------------------------------
237
238/// Should the ordering between the Morse sets be taken into consideration
239/// while determining whether two Morse decompositions
240/// computed for adjacent parameter boxes are in the same class?
241const bool compareMorseOrdering = false;
242
243/// Ignoring the isolation problem while matching Morse decompositions.
244/// If this constant is set to "true" then Morse sets are matched
245/// with each other indepent of whether the Conley index could be computed
246/// for them or not. Otherwise, 'correct' and 'wrong' Morse sets
247/// are matched with their counterparts in the same category only.
249
250/// Ignoring the isolation problem while computing the Conley index.
251/// If the constant is set to "true" then the index pair constructed on the
252/// basis of a combinatorial Morse set with respect to the dynamics
253/// restricted to the rectangular area of interest is also restricted
254/// to that area by means of projecting all the boxes that stick out
255/// of the region onto a single layer of boxes around the boundary.
257
258
259} // namespace lorenz
260} // namespace custom
261
262
263#endif // _CMGRAPHS_P_H_
264
const double paramRight[paramCount]
The right bounds on the parameters.
Definition: p_lorenz.h:89
const int maxIndexPairSize
The maximal allowed size of the index pair.
Definition: p_lorenz.h:213
const int initialDepth
The initial depth of subdivisions in the phase space.
Definition: p_lorenz.h:52
const int maxRefineSize0
The maximal allowed size of a set of cubes in the phase space which can be refined at the initial sub...
Definition: p_lorenz.h:184
const double epsilonParam
Half of the width of the parameter interval.
Definition: p_lorenz.h:82
const SpaceOffsetType spaceOffset
An imitation of an array which returns the offset of the rectangular area in the phase space which co...
Definition: p_lorenz.h:136
const bool ignoreIsolationForContinuation
Ignoring the isolation problem while matching Morse decompositions.
Definition: p_lorenz.h:248
const int maxRefineSize1
The maximal allowed size of a set of cubes in the phase space which can be refined at the subsequent ...
Definition: p_lorenz.h:189
const int finalDepth
The final depth of subdivisions in the phase space.
Definition: p_lorenz.h:55
const int maxImageVolume
The maximal allowed volume of the cubical image of a single box.
Definition: p_lorenz.h:204
const bool compareMorseOrdering
Should the ordering between the Morse sets be taken into consideration while determining whether two ...
Definition: p_lorenz.h:241
const SpaceWidthType spaceWidth
An imitation of an array which returns the width of the rectangular area in the phase space which con...
Definition: p_lorenz.h:168
const double paramLeft[paramCount]
The left bounds on the parameters.
Definition: p_lorenz.h:85
const int maxJoinSize
The maximal number of cubes in a trivial Morse set for which an attempt is made to join this set with...
Definition: p_lorenz.h:223
const bool spaceWrapping[spaceDim]
Is space wrapping (a.k.a.
Definition: p_lorenz.h:49
const int paramDim
The dimension of the parameter space to iterate.
Definition: p_lorenz.h:64
const int maxJoinConnection
The maximal size of a connecting orbit between two Morse sets which can be considered for joining.
Definition: p_lorenz.h:227
const int maxImageDiameter
The maximal allowed diameter of the cubical image of a signle box.
Definition: p_lorenz.h:199
const int spaceDim
The dimension of the phase space.
Definition: p_lorenz.h:45
const int refineDepth
The number of refinements that should be done if a Morse set with the trivial index is encountered or...
Definition: p_lorenz.h:179
const short int paramSubdiv[paramDim]
The numbers of subintervals in each direction of the parameter space.
Definition: p_lorenz.h:68
const int paramSelect[paramDim]
The numbers of parameters to subdivide.
Definition: p_lorenz.h:71
const int paramCount
The number of all the parameters, both varying and fixed.
Definition: p_lorenz.h:79
const bool ignoreIsolationForConleyIndex
Ignoring the isolation problem while computing the Conley index.
Definition: p_lorenz.h:256
const int maxJoinDistance
The maximal allowed distance between two Morse sets which can be considered for joining.
Definition: p_lorenz.h:231
Customizable settings that are supposed to be modified and/or chosen by the user of the software.
An imitation of an array which returns the offset of the rectangular area in the phase space which co...
Definition: p_lorenz.h:109
double operator[](int n) const
Returns the space offset in the requested direction.
Definition: p_lorenz.h:111
An imitation of an array which returns the width of the rectangular area in the phase space which con...
Definition: p_lorenz.h:141
double operator[](int n) const
Returns the space width in the requested direction.
Definition: p_lorenz.h:143