Skip to content

Commit b2b9ffe

Browse files
committed
deploy: 2660f1b
1 parent 2f8e9af commit b2b9ffe

12 files changed

Lines changed: 608 additions & 27 deletions

.doctrees/4_input.doctree

27.2 KB
Binary file not shown.

.doctrees/6_inputdeck.doctree

-1.11 KB
Binary file not shown.

.doctrees/7_command.doctree

22.8 KB
Binary file not shown.

.doctrees/environment.pickle

5.53 KB
Binary file not shown.

4_input.html

Lines changed: 144 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<script src="_static/documentation_options.js?v=2709fde1"></script>
1717
<script src="_static/doctools.js?v=fd6eb6e6"></script>
1818
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
19+
<script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js"></script>
1920
<script src="_static/js/theme.js"></script>
2021
<link rel="index" title="Index" href="genindex.html" />
2122
<link rel="search" title="Search" href="search.html" />
@@ -46,7 +47,16 @@
4647
<li class="toctree-l1"><a class="reference internal" href="1_requirements.html">Requirements and Quickstart</a></li>
4748
<li class="toctree-l1"><a class="reference internal" href="2_theory.html">Theory of FTLE and LCS</a></li>
4849
<li class="toctree-l1"><a class="reference internal" href="3_numerical.html">Numerical Methods</a></li>
49-
<li class="toctree-l1 current"><a class="current reference internal" href="#">Input Data Files</a></li>
50+
<li class="toctree-l1 current"><a class="current reference internal" href="#">Input Data Files</a><ul>
51+
<li class="toctree-l2"><a class="reference internal" href="#supported-file-type">Supported File Type</a></li>
52+
<li class="toctree-l2"><a class="reference internal" href="#folder-based-time-sequence">Folder-Based Time Sequence</a></li>
53+
<li class="toctree-l2"><a class="reference internal" href="#structured-spatial-layout">Structured Spatial Layout</a></li>
54+
<li class="toctree-l2"><a class="reference internal" href="#velocity-arrays">Velocity Arrays</a></li>
55+
<li class="toctree-l2"><a class="reference internal" href="#minimal-qualified-skeleton">Minimal Qualified Skeleton</a></li>
56+
<li class="toctree-l2"><a class="reference internal" href="#two-dimensional-and-thin-slab-data">Two-Dimensional and Thin-Slab Data</a></li>
57+
<li class="toctree-l2"><a class="reference internal" href="#practical-checklist">Practical Checklist</a></li>
58+
</ul>
59+
</li>
5060
<li class="toctree-l1"><a class="reference internal" href="5_gui.html">Graphical User Interface (GUI)</a></li>
5161
<li class="toctree-l1"><a class="reference internal" href="6_inputdeck.html">Input Deck for Solver Parameters</a></li>
5262
<li class="toctree-l1"><a class="reference internal" href="7_command.html">Command-Line Mode (Commands)</a></li>
@@ -80,7 +90,139 @@
8090

8191
<section id="input-data-files">
8292
<span id="input"></span><h1>Input Data Files<a class="headerlink" href="#input-data-files" title="Link to this heading"></a></h1>
83-
<p>This page describes the input file</p>
93+
<p>This page describes what constitutes a qualified velocity-field input for the current native
94+
solver. In both GUI and command-line workflows, the solver reads a folder of time-ordered
95+
legacy <code class="docutils literal notranslate"><span class="pre">.vtk</span></code> files given by <code class="docutils literal notranslate"><span class="pre">vtk_folder</span></code> in <a class="reference internal" href="6_inputdeck.html#inputdeck"><span class="std std-ref">Input Deck for Solver Parameters</span></a>.
96+
Each file represents one time frame of the same flow field, and the whole folder is interpreted as
97+
one temporal sequence.</p>
98+
<section id="supported-file-type">
99+
<h2>Supported File Type<a class="headerlink" href="#supported-file-type" title="Link to this heading"></a></h2>
100+
<p>The current native solver scans only files whose extension is <code class="docutils literal notranslate"><span class="pre">.vtk</span></code>.
101+
These files are loaded through VTK’s legacy-data reader. As a consequence:</p>
102+
<ul class="simple">
103+
<li><p>legacy VTK <code class="docutils literal notranslate"><span class="pre">.vtk</span></code> is the supported input container for the solver;</p></li>
104+
<li><p>ASCII and binary legacy files are both acceptable as long as VTK can parse them;</p></li>
105+
<li><p>XML VTK files such as <code class="docutils literal notranslate"><span class="pre">.vts</span></code> or <code class="docutils literal notranslate"><span class="pre">.vti</span></code> are not used as solver input in the current mainline,
106+
even though they may be viewable elsewhere.</p></li>
107+
</ul>
108+
</section>
109+
<section id="folder-based-time-sequence">
110+
<h2>Folder-Based Time Sequence<a class="headerlink" href="#folder-based-time-sequence" title="Link to this heading"></a></h2>
111+
<p>The solver treats the input as a folder-level sequence rather than a single file:</p>
112+
<ul class="simple">
113+
<li><p>only regular <code class="docutils literal notranslate"><span class="pre">.vtk</span></code> files in <code class="docutils literal notranslate"><span class="pre">vtk_folder</span></code> are considered;</p></li>
114+
<li><p>subfolders are not scanned recursively;</p></li>
115+
<li><p>files are sorted by the last integer appearing in the filename;</p></li>
116+
<li><p>this sorted order defines the frame index used by <code class="docutils literal notranslate"><span class="pre">T_range</span></code>.</p></li>
117+
</ul>
118+
<p>For this reason, filenames such as
119+
<code class="docutils literal notranslate"><span class="pre">frame_00000.vtk</span></code>, <code class="docutils literal notranslate"><span class="pre">frame_00001.vtk</span></code>, <code class="docutils literal notranslate"><span class="pre">frame_00002.vtk</span></code> are strongly recommended.
120+
Missing frame numbers are allowed, but the ordering still follows the extracted integer tags.
121+
If a filename contains more than one integer group, the last one is the one used for sorting.</p>
122+
</section>
123+
<section id="structured-spatial-layout">
124+
<h2>Structured Spatial Layout<a class="headerlink" href="#structured-spatial-layout" title="Link to this heading"></a></h2>
125+
<p>The native solver assumes that every frame lies on one structured tensor-product lattice in
126+
<span class="math notranslate nohighlight">\(x\)</span>, <span class="math notranslate nohighlight">\(y\)</span>, and <span class="math notranslate nohighlight">\(z\)</span>.
127+
In practice, the most reliable qualified inputs are legacy VTK files whose dataset is either
128+
<code class="docutils literal notranslate"><span class="pre">RECTILINEAR_GRID</span></code> or <code class="docutils literal notranslate"><span class="pre">STRUCTURED_GRID</span></code>.</p>
129+
<p>For a sequence to be qualified:</p>
130+
<ul class="simple">
131+
<li><p>all frames must describe the same spatial grid;</p></li>
132+
<li><p>the point count must remain identical across all frames;</p></li>
133+
<li><p>the coordinate axes must be consistent from frame to frame;</p></li>
134+
<li><p>each point must be mappable to one unique lattice index <span class="math notranslate nohighlight">\((i,j,k)\)</span>.</p></li>
135+
</ul>
136+
<p>For <code class="docutils literal notranslate"><span class="pre">RECTILINEAR_GRID</span></code>, the solver takes the axes directly from
137+
<code class="docutils literal notranslate"><span class="pre">X_COORDINATES</span></code>, <code class="docutils literal notranslate"><span class="pre">Y_COORDINATES</span></code>, and <code class="docutils literal notranslate"><span class="pre">Z_COORDINATES</span></code>.
138+
For other structured datasets, the solver reconstructs the axes from the point coordinates.
139+
Therefore, even when <code class="docutils literal notranslate"><span class="pre">STRUCTURED_GRID</span></code> is used, the point coordinates should still lie on
140+
separable <span class="math notranslate nohighlight">\(x\)</span>, <span class="math notranslate nohighlight">\(y\)</span>, <span class="math notranslate nohighlight">\(z\)</span> axes.
141+
General unstructured meshes are not qualified input for the present solver.</p>
142+
</section>
143+
<section id="velocity-arrays">
144+
<h2>Velocity Arrays<a class="headerlink" href="#velocity-arrays" title="Link to this heading"></a></h2>
145+
<p>Velocity must be stored in <code class="docutils literal notranslate"><span class="pre">POINT_DATA</span></code>.
146+
Arrays provided only in <code class="docutils literal notranslate"><span class="pre">CELL_DATA</span></code> are not sufficient for the current solver.</p>
147+
<p>The parser currently accepts any of the following point-data conventions:</p>
148+
<ul class="simple">
149+
<li><p>three scalar arrays named <code class="docutils literal notranslate"><span class="pre">u</span></code>, <code class="docutils literal notranslate"><span class="pre">v</span></code>, <code class="docutils literal notranslate"><span class="pre">w</span></code>;</p></li>
150+
<li><p>three scalar arrays named <code class="docutils literal notranslate"><span class="pre">U</span></code>, <code class="docutils literal notranslate"><span class="pre">V</span></code>, <code class="docutils literal notranslate"><span class="pre">W</span></code>;</p></li>
151+
<li><p>three scalar arrays named <code class="docutils literal notranslate"><span class="pre">Ux</span></code>, <code class="docutils literal notranslate"><span class="pre">Uy</span></code>, <code class="docutils literal notranslate"><span class="pre">Uz</span></code>;</p></li>
152+
<li><p>three scalar arrays named <code class="docutils literal notranslate"><span class="pre">Vx</span></code>, <code class="docutils literal notranslate"><span class="pre">Vy</span></code>, <code class="docutils literal notranslate"><span class="pre">Vz</span></code>;</p></li>
153+
<li><p>two scalar arrays named <code class="docutils literal notranslate"><span class="pre">u</span></code> and <code class="docutils literal notranslate"><span class="pre">v</span></code>;</p></li>
154+
<li><p>two scalar arrays named <code class="docutils literal notranslate"><span class="pre">U</span></code> and <code class="docutils literal notranslate"><span class="pre">V</span></code>;</p></li>
155+
<li><p>two scalar arrays named <code class="docutils literal notranslate"><span class="pre">Ux</span></code> and <code class="docutils literal notranslate"><span class="pre">Uy</span></code>;</p></li>
156+
<li><p>two scalar arrays named <code class="docutils literal notranslate"><span class="pre">Vx</span></code> and <code class="docutils literal notranslate"><span class="pre">Vy</span></code>;</p></li>
157+
<li><p>one vector array named <code class="docutils literal notranslate"><span class="pre">U</span></code>, <code class="docutils literal notranslate"><span class="pre">V</span></code>, <code class="docutils literal notranslate"><span class="pre">Velocity</span></code>, <code class="docutils literal notranslate"><span class="pre">velocity</span></code>, <code class="docutils literal notranslate"><span class="pre">Vel</span></code>, <code class="docutils literal notranslate"><span class="pre">vel</span></code>, <code class="docutils literal notranslate"><span class="pre">data</span></code>,
158+
or <code class="docutils literal notranslate"><span class="pre">Data</span></code> with at least two components.</p></li>
159+
</ul>
160+
<p>If only two components are present, the solver fills the third component with zero and therefore
161+
treats the input as quasi-two-dimensional.
162+
All frames in the sequence should use the same array naming convention.</p>
163+
</section>
164+
<section id="minimal-qualified-skeleton">
165+
<h2>Minimal Qualified Skeleton<a class="headerlink" href="#minimal-qualified-skeleton" title="Link to this heading"></a></h2>
166+
<p>A minimal qualified legacy-VTK frame may look conceptually like this:</p>
167+
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span># vtk DataFile Version 5.1
168+
velocity frame
169+
BINARY
170+
DATASET RECTILINEAR_GRID
171+
DIMENSIONS Nx Ny Nz
172+
X_COORDINATES Nx double
173+
...
174+
Y_COORDINATES Ny double
175+
...
176+
Z_COORDINATES Nz double
177+
...
178+
POINT_DATA Nx*Ny*Nz
179+
VECTORS Velocity double
180+
...
181+
</pre></div>
182+
</div>
183+
<p>An equally acceptable scalar-array variant is:</p>
184+
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>POINT_DATA Nx*Ny*Nz
185+
SCALARS u double
186+
LOOKUP_TABLE default
187+
...
188+
SCALARS v double
189+
LOOKUP_TABLE default
190+
...
191+
SCALARS w double
192+
LOOKUP_TABLE default
193+
...
194+
</pre></div>
195+
</div>
196+
<p>The exact numeric precision is not prescribed here, but the data must be readable by VTK and the
197+
point-data array lengths must match the total number of grid points.</p>
198+
</section>
199+
<section id="two-dimensional-and-thin-slab-data">
200+
<h2>Two-Dimensional and Thin-Slab Data<a class="headerlink" href="#two-dimensional-and-thin-slab-data" title="Link to this heading"></a></h2>
201+
<p>The current native solver can also work with quasi-two-dimensional inputs.
202+
In that case:</p>
203+
<ul class="simple">
204+
<li><p>the <span class="math notranslate nohighlight">\(x\)</span> and <span class="math notranslate nohighlight">\(y\)</span> directions must still contain at least two grid points;</p></li>
205+
<li><p>the <span class="math notranslate nohighlight">\(z\)</span> direction may be a single layer or a very thin slab;</p></li>
206+
<li><p>the third velocity component may be omitted if the input follows one of the accepted
207+
two-component conventions above.</p></li>
208+
</ul>
209+
<p>This is useful for planar velocity fields embedded in a three-dimensional file format.</p>
210+
</section>
211+
<section id="practical-checklist">
212+
<h2>Practical Checklist<a class="headerlink" href="#practical-checklist" title="Link to this heading"></a></h2>
213+
<p>Before launching the solver, it is recommended to confirm the following:</p>
214+
<ul class="simple">
215+
<li><p><code class="docutils literal notranslate"><span class="pre">vtk_folder</span></code> points to a directory, not to a single file;</p></li>
216+
<li><p>the directory contains only the intended <code class="docutils literal notranslate"><span class="pre">.vtk</span></code> time frames, or at least no unrelated
217+
<code class="docutils literal notranslate"><span class="pre">.vtk</span></code> files whose filename numbers would disturb the ordering;</p></li>
218+
<li><p>all frames share one structured grid and one consistent point-data layout;</p></li>
219+
<li><p>velocity is stored in <code class="docutils literal notranslate"><span class="pre">POINT_DATA</span></code>;</p></li>
220+
<li><p>the sorted sequence is long enough for the requested <code class="docutils literal notranslate"><span class="pre">T_range</span></code>.</p></li>
221+
</ul>
222+
<p>If <code class="docutils literal notranslate"><span class="pre">auto_wall</span> <span class="pre">=</span> <span class="pre">1</span></code>, the solver uses the outer coordinates of the input grid as the seeding bounds.
223+
If <code class="docutils literal notranslate"><span class="pre">auto_wall</span> <span class="pre">=</span> <span class="pre">0</span></code>, the wall ranges in the <code class="docutils literal notranslate"><span class="pre">.par</span></code> file must instead define the computational
224+
domain explicitly.</p>
225+
</section>
84226
</section>
85227

86228

6_inputdeck.html

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ <h2>Input and Range Control<a class="headerlink" href="#input-and-range-control"
155155
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">T_range</span></code></p></td>
156156
<td><p>Time range [<code class="docutils literal notranslate"><span class="pre">T_start</span></code>, <code class="docutils literal notranslate"><span class="pre">T_end</span></code>] in frames</p></td>
157157
<td><p><code class="docutils literal notranslate"><span class="pre">[&lt;float&gt;,</span> <span class="pre">&lt;float&gt;]</span></code></p></td>
158-
<td><p><code class="docutils literal notranslate"><span class="pre">T_end</span></code> no larger than <code class="docutils literal notranslate"><span class="pre">N_frames</span></code>.</p></td>
158+
<td><p>Sorted <code class="docutils literal notranslate"><span class="pre">.vtk</span></code> frames; zero-based inclusive indices; <code class="docutils literal notranslate"><span class="pre">T_end</span></code> clamped to the last frame.</p></td>
159159
</tr>
160160
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">dt</span></code></p></td>
161161
<td><p>Time step for particle advection in frames</p></td>
@@ -251,37 +251,32 @@ <h2>Numerical Methods<a class="headerlink" href="#numerical-methods" title="Link
251251
<td><p><code class="docutils literal notranslate"><span class="pre">WENO</span></code></p></td>
252252
<td><p>Weighted Essentially Non-Oscillatory (WENO) scheme with shockwave capture capability.</p></td>
253253
</tr>
254-
<tr class="row-even"><td></td>
255-
<td></td>
256-
<td><p><code class="docutils literal notranslate"><span class="pre">tricubicFL</span></code></p></td>
257-
<td><p><code class="docutils literal notranslate"><span class="pre">I.P.</span></code> The high-performance 3D tricubic interpolation method by <a class="reference internal" href="9_references.html#lekien2005" id="id1"><span>[Lekien2005]</span></a>.</p></td>
258-
</tr>
259-
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">grad_order</span></code></p></td>
254+
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">grad_order</span></code></p></td>
260255
<td><p>Method of gradient discretization</p></td>
261256
<td><p>(<code class="docutils literal notranslate"><span class="pre">2</span></code>)</p></td>
262257
<td><p>2nd-order central difference.</p></td>
263258
</tr>
264-
<tr class="row-even"><td></td>
259+
<tr class="row-odd"><td></td>
265260
<td></td>
266261
<td><p><code class="docutils literal notranslate"><span class="pre">4</span></code></p></td>
267262
<td><p><code class="docutils literal notranslate"><span class="pre">I.P.</span></code> 4th-order central difference.</p></td>
268263
</tr>
269-
<tr class="row-odd"><td></td>
264+
<tr class="row-even"><td></td>
270265
<td></td>
271266
<td><p><code class="docutils literal notranslate"><span class="pre">6</span></code></p></td>
272267
<td><p><code class="docutils literal notranslate"><span class="pre">I.P.</span></code> 6th-order central difference.</p></td>
273268
</tr>
274-
<tr class="row-even"><td></td>
269+
<tr class="row-odd"><td></td>
275270
<td></td>
276271
<td><p><code class="docutils literal notranslate"><span class="pre">100</span></code></p></td>
277272
<td><p><code class="docutils literal notranslate"><span class="pre">I.P.</span></code> Global Fast Fourier Transform (FFT) with finite order. Compute extremely intensive!</p></td>
278273
</tr>
279-
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">eigen_method</span></code></p></td>
274+
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">Eigen_method</span></code></p></td>
280275
<td><p>Max eigenvalue of C-G tensor</p></td>
281276
<td><p>(<code class="docutils literal notranslate"><span class="pre">eigmax_sym3</span></code>)</p></td>
282277
<td><p>Closed-form cubic eigenvalue solver for symmetric 3×3 matrices (noniterative solver).</p></td>
283278
</tr>
284-
<tr class="row-even"><td></td>
279+
<tr class="row-odd"><td></td>
285280
<td></td>
286281
<td><p><code class="docutils literal notranslate"><span class="pre">jacobi</span></code></p></td>
287282
<td><p><code class="docutils literal notranslate"><span class="pre">I.P.</span></code> Jacobi eigenvalue algorithm (iterative).</p></td>

0 commit comments

Comments
 (0)