[Users] syntax for pointers from array in Cactus?

Bernard Kelly physicsbeany at gmail.com
Tue May 24 09:26:50 CDT 2016


Thanks, Roland. That is what I have to do.

C does permit multi-dimensional arrays that can be indexed like
[i][j][k] (presumably without guaranteed contiguous memory
allocation), but I didn't appreciate that the Cactus ones are the
simpler flat sort (OK, I suppose I knew that for the grid functions,
but not the other kind).

Anyway, I've changed to the "flat" 1D indexing as you've indicated,
and it's compiling now. Thanks again,

Bernard

On 24 May 2016 at 02:01, Roland Haas <rhaas at aei.mpg.de> wrote:
> Hello Bernard,
>
>> In my C source file, I get the pointers from the 0th rank of this
>> array, for passing into an interpolator:
>>
>> CCTK_POINTER outputs[59];
>> for(m=0;m<59;m++){
>>   outputs[m] = &dataslice[m][0][0];
>> }
> I C all arrays appear flat (not multi-dimensional as they are in
> Fortran), so you need to use:
>
> output[m] = &dataslice[m*numtheta*numphi]
>
> You can (if you want to) query dataslice's size by calling the Cactus
> function CCTK_GroupDynamicData
> (http://einsteintoolkit.org/documentation/ReferenceManual/ReferenceManualch2.html#x4-70000A2)
> though using the parameters is fine as well.
>
> Yours,
> Roland
>
> --
> My email is as private as my paper mail. I therefore support encrypting
> and signing email messages. Get my PGP key from http://keys.gnupg.net.
>
> _______________________________________________
> Users mailing list
> Users at einsteintoolkit.org
> http://lists.einsteintoolkit.org/mailman/listinfo/users
>


More information about the Users mailing list