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 <http://tibco.com/>
On Thu, Jun 16, 2016 at 10:03 AM, Kodalore Vijayan, Vineetha W <vwkv13 at mun.ca <mailto: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 <mailto: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 <https://github.com/emammendes/mittagleffler>
On Jun 15, 2016, at 5:20 PM, Kodalore Vijayan, Vineetha W <vwkv13 at mun.ca <mailto: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]]