|
16 | 16 | <script src="_static/documentation_options.js?v=2709fde1"></script> |
17 | 17 | <script src="_static/doctools.js?v=fd6eb6e6"></script> |
18 | 18 | <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> |
19 | 20 | <script src="_static/js/theme.js"></script> |
20 | 21 | <link rel="index" title="Index" href="genindex.html" /> |
21 | 22 | <link rel="search" title="Search" href="search.html" /> |
|
46 | 47 | <li class="toctree-l1"><a class="reference internal" href="1_requirements.html">Requirements and Quickstart</a></li> |
47 | 48 | <li class="toctree-l1"><a class="reference internal" href="2_theory.html">Theory of FTLE and LCS</a></li> |
48 | 49 | <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> |
50 | 60 | <li class="toctree-l1"><a class="reference internal" href="5_gui.html">Graphical User Interface (GUI)</a></li> |
51 | 61 | <li class="toctree-l1"><a class="reference internal" href="6_inputdeck.html">Input Deck for Solver Parameters</a></li> |
52 | 62 | <li class="toctree-l1"><a class="reference internal" href="7_command.html">Command-Line Mode (Commands)</a></li> |
|
80 | 90 |
|
81 | 91 | <section id="input-data-files"> |
82 | 92 | <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> |
84 | 226 | </section> |
85 | 227 |
|
86 | 228 |
|
|
0 commit comments