[R] Writing R package that call Fortran codes

William Dunlap wdunlap at tibco.com
Thu Jun 16 19:54:56 CEST 2016


>  1: .Fortran("dataxy", n = as.integer(n), tmax = as.integer(tmax),
 alpha = as.double(alpha), beta = as.double(beta), x = as.double(0,
 length = n), y = as.double(0, length = n), tau = as.integer(0,
 length = n))

Are you expecting that
    as.integer(0, length=n)
and
    as.double(0, length = n)
will produce vectors of length 'n'?  They do not and short inputs will
usually
cause memory misuse and crashes in the Fortran code.



Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Thu, Jun 16, 2016 at 10:03 AM, Kodalore Vijayan, Vineetha W <
vwkv13 at mun.ca> wrote:

> Hi Eduardo,
>
>  Thanks for your comments. I haven't tried the way you told me. Now when I
> tried, got the following error:
>
> *** caught segfault ***
> address 0x0, cause 'memory not mapped'
>
> Traceback:
>  1: .Fortran("dataxy", n = as.integer(n), tmax = as.integer(tmax),
> alpha = as.double(alpha), beta = as.double(beta), x = as.double(0,
> length = n), y = as.double(0, length = n), tau = as.integer(0,
> length = n))
>  2: out(NULL, NULL, NULL, NULL)
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
> Any suggestions?
>
> Thanks,
> Vineetha
>
> On Wed, Jun 15, 2016 at 3:55 PM, Eduardo M. A. M.Mendes <
> emammendes at gmail.com> wrote:
>
> > Hi
> >
> > Have you tried to load and run the fortran code using just a wrapper
> > function in R?   I do that as the first step in order to build a package.
> >
> > Example:   fortran sources -> rk4_mod_r.f90 ,derive_henonheilles.f90,
> > poincare_section.f90
> >
> > a) I use R CMD SHLIB rk4_mod_r.f90 ,derive_henonheilles.f90,
> > poincare_section.f90 - o poincare_section_henonheilles_rk4.so
> > b) Then I write a wrapper function in R, poinc_section_henonheilles.R
> > ...
> >  dyn.load("poincare_section_henonheilles_rk4.so")
> >
> >   out<-.Fortran("section_crossing",
> >                 h=as.numeric(h),
> >                 nphas=as.integer(nphas),..
> > ...
> > c) and call the function as usual.
> >
> > Please note that the function called by .Fortran is the name of the
> > subroutine within poincare_section.f90 and not the filename.
> >
> > I take the opportunity to thank R-developers for making the calling of C
> > and Fortran in R very easy.
> >
> > I hope this helps.
> >
> > regards
> >
> > Ed
> >
> > PS.  If you need an example of a package using Fortran90, please check
> > https://github.com/emammendes/mittagleffler
> >
> >
> >
> > On Jun 15, 2016, at 5:20 PM, Kodalore Vijayan, Vineetha W <vwkv13 at mun.ca
> >
> > wrote:
> >
> > Hi,
> >
> > I'm trying to write an R package that calls a Fortran subroutine on my
> Mac
> > os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0.   I can build and
> > load the library but when I try to use it in R I get this error:
> >
> > library(NEpidemic)
> > random_epi(variable_names)
> >
> >
> > Error in .Fortran("random_epi", : "random_pi" not resolved from current
> > namespace (NEpidemic).
> >
> > Then I  tried adding useDynLib(random_epi.f95) in the NAMESPACE file,
> > additional to useDynLib(NEpidemic). After doing that I couldn't build the
> > package and it gave me another error:
> >
> > Error in library.dynam(lib, package, package.lib) :
> >  shared object ‘random_epi.so’ not found
> > Error: loading failed
> > Execution halted
> > ERROR: loading failed
> >
> > When I checked my src folder, there is only random_epi.o file.  How can I
> > fix this issue? Any help would be much appreciated. I'm vey new to both R
> > and Fortran coding, especially in package building.
> >
> > Thanks in advance!
> > Vineetha
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> >
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

	[[alternative HTML version deleted]]



More information about the R-help mailing list