<html>#2898: CarpetX: Interpolator caches
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Lucas Timotheo Sanches</td></tr>
<tr><td style='text-align:right'> Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></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>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td></td></tr>
</table>
<p>Comment (by Roland Haas):</p>
<p>Having a hidden cache is dangerous since it will accumulate cache entries that may no longer be required (eg a run that never regrids but updates coordinates). Something like this happened to the HTTP thorn </p>
<p>Better maybe to let the user code control cache entries. </p>
<p>Eg. Slab uses (in <code>Slab/src/slab.h</code> (though apparently there’s no LaTeXed docs for this) <code>Slab_MultiTransfer_Init</code> and <code>Slab_MultiTransfer_Finalize</code> to manage lifetime of its control structures. CarpetInterp2 (being C++ only) uses the <code>fasterp_setup_t</code>class (<code>CarpetInterp2/src/fasterp.hh</code>).</p>
<p>This also avoids the need to have to hash the input coordinates etc. or otherwise find out which cached entry to use.</p>
<p>This can be added to the regular Cactus interpolator (could be in Carpet as well, though apparently I never created code for this) by having a handle based interface and storing the (int) handle is a parameter in the interpolator parameter table (in fact the interpolator is free to modify the table, so it could actually allocate the cache entry is an “emtpy” field for the cache handle is found in the table, which would require only call to deallocate the handle object).</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2898/carpetx-interpolator-caches'>https://bitbucket.org/einsteintoolkit/tickets/issues/2898/carpetx-interpolator-caches</a></p>
</html>