Thanks Bill for pointing this out. I haven?t noticed it.
Vineetha, try as.double(rep(0,n)) or as.matrix(rep(0,n)),
Ed
On Jun 16, 2016, at 2:54 PM, William Dunlap <wdunlap at tibco.com> wrote:
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
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 <
wrote:
Hi,
I'm trying to write an R package that calls a Fortran subroutine on my
os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build
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
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
fix this issue? Any help would be much appreciated. I'm vey new to both
and Fortran coding, especially in package building.
Thanks in advance!
Vineetha
[[alternative HTML version deleted]]