Thanks Erik. n, in this case, is zero, so I'm expecting a 3x1 array.

On Monday, January 18, 2016 at 12:26:33 PM UTC-5, Erik Schnetter wrote:
>
> Chris 
>
> This array does not use Fortran 90 features; you're fine. Note that 
> the array indices will be different in Julia -- -n:n will be 1:(2*n+1) 
> instead. 
>
> What is "n" in your setup? You should declare the array size as 
> 3*(2*n+1) in Julia, or as 2d-array via 3, 2*n+1. 
>
> -erik 
>
> On Mon, Jan 18, 2016 at 12:05 PM, Chris <[email protected] <javascript:>> 
> wrote: 
> > Erik, 
> > 
> > The array declaration line in the Fortran code is something like 
> > 
> > integer,parameter:: fp_kind = kind(0.d0) 
> > real(fp_kind)    :: v1(3,-n:n) 
> > 
> > Does this appear to use any Fortran 90-specific features? 
> > 
> > I also tried declaring the type as Float64, then doing 
> > pointer_to_array(v1,3) gives me a 3x1 array of zeros. This is not the 
> > expected result of the code, but again, it might be an issue within the 
> > Fortran code itself. 
> > 
> > 
> > Adrian, 
> > 
> > Thank you for the link, there's a lot of useful information in there, 
> > although, unfortunately, nothing that I saw relating to my specific 
> problem. 
> > In any case, do you know if the example is waiting in a PR somewhere to 
> get 
> > into the docs? I agree that it would be very useful. 
> > 
> > Thanks, 
> > Chris 
> > 
> > On Saturday, January 16, 2016 at 10:59:44 AM UTC-5, Adrian Cuthbertson 
> > wrote: 
> >> 
> >> I happened to make a note of a post some time ago about getting fortran 
> >> and julia working together. Searching for that again returned this 
> link: 
> >> 
> >> 
> >> 
> http://julia-programming-language.2336112.n4.nabble.com/example-for-ccall-use-and-fortran-td7737.html
>  
> >> 
> >> Hth, Adrian. 
> >> 
> >> 
> >> On Sat, Jan 16, 2016 at 3:32 PM, Chris <[email protected]> wrote: 
> >>> 
> >>> The Fortran code I'm working with assigns results to a number of 
> global 
> >>> variables. One of those results is a 3x1 real array - let's call it 
> v1. 
> >>> 
> >>> I'm trying to understand how to access this. Here's what I have: 
> >>> 
> >>> v1 = cglobal((:__libkl_mod_MOD_v1,"libkl.so"),Ptr{Float64}) 
> >>> 
> >>> This gives me a Ptr{Ptr{Float64}}. I'm not sure what to do from here 
> -- 
> >>> using pointer_to_array just gives 
> >>> 
> >>> julia> pointer_to_array(v1,3) 
> >>> 3-element Array{Ptr{Float64},1}: 
> >>>  Ptr{Float64} @0x0000000000000000 
> >>>  Ptr{Float64} @0x0000000000000000 
> >>>  Ptr{Float64} @0x0000000000000000 
> >>> 
> >>> And then doing an unsafe_load on any of those elements gives me a 
> >>> segfault. 
> >>> 
> >>> Am I taking the right approach here? The Fortran code is not my own, 
> so 
> >>> it's possible this is due to an error in that code, but I'm trying to 
> rule 
> >>> out Julia interface issues first. 
> >>> 
> >>> Thanks in advance, 
> >>> Chris 
> >> 
> >> 
> > 
>
>
>
> -- 
> Erik Schnetter <[email protected] <javascript:>> 
> http://www.perimeterinstitute.ca/personal/eschnetter/ 
>

Reply via email to