<html>#2735: EinsteinBase: storage declaration simplification
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Samuel Cupp</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td>ET_2023_11</td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>enhancement</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>trivial</td></tr>
<tr><td style='text-align:right'>Component:</td><td>EinsteinToolkit thorn</td></tr>
</table>

<p>Currently, the various *Base thorns declare storage like</p>
<div class="codehilite"><pre><span></span><span>if (timelevels == 1)</span>
<span>{</span>
<span>  STORAGE: stress_energy_scalar[1]</span>
<span>  STORAGE: stress_energy_vector[1]</span>
<span>  STORAGE: stress_energy_tensor[1]</span>
<span>}</span>
<span>else if (timelevels == 2)</span>
<span>{</span>
<span>  STORAGE: stress_energy_scalar[2]</span>
<span>  STORAGE: stress_energy_vector[2]</span>
<span>  STORAGE: stress_energy_tensor[2]</span>
<span>}</span>
<span>else if (timelevels == 3)</span>
<span>{</span>
<span>  STORAGE: stress_energy_scalar[3]</span>
<span>  STORAGE: stress_energy_vector[3]</span>
<span>  STORAGE: stress_energy_tensor[3]</span>
<span>}</span>
</pre></div>


<p>We can instead just say</p>
<div class="codehilite"><pre><span></span><span class="nl">STORAGE</span><span class="p">:</span><span class="w"> </span><span class="n">stress_energy_scalar</span><span class="o">[</span><span class="n">timelevels</span><span class="o">]</span><span class="w"></span>
<span class="nl">STORAGE</span><span class="p">:</span><span class="w"> </span><span class="n">stress_energy_vector</span><span class="o">[</span><span class="n">timelevels</span><span class="o">]</span><span class="w"></span>
<span class="nl">STORAGE</span><span class="p">:</span><span class="w"> </span><span class="n">stress_energy_tensor</span><span class="o">[</span><span class="n">timelevels</span><span class="o">]</span><span class="w"></span>
</pre></div>


<p>This, of course, will properly declare the storage depending on the parameter at runtime. As I understand the behavior, this also works for timelevels = 0.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2735/einsteinbase-storage-declaration'>https://bitbucket.org/einsteintoolkit/tickets/issues/2735/einsteinbase-storage-declaration</a></p>
</html>