Yes, I had stripped out the Fortran from the geta subroutine downwards because is wasn't very important in returning a test output matrix.
I think that I should make explicit what problem I believe I am seeing in what I have coded, and what form of the output matrix I would prefer. When I run the R code > #Source positions in lens plane under annual parallax > xypos_parallax <- function(year,ra,dec,ti,model_par) { > if (!is.loaded('xypos_parallax_r')){ > dyn.load('parallax.so')} > returned_data = .Fortran('xypos_parallax_r', > as.integer(length(ti)), > as.integer(year), > as.double(ra), > as.double(dec), > as.double(ti), > as.double(model_par$t0), > as.double(model_par$tE), > as.double(model_par$alpha), > as.double(model_par$u0), > as.double(model_par$piee), > as.double(model_par$pien), > matrix(0,nrow=length(ti),ncol=2) )[[12]] > } > > model_par<-list(t0=5781.49344, > tE=63.0814, > alpha=1.2797, > u0=0.0555, > rho=0.0063, > d=0.7119, > q=0.0020496, > piee=-0.900, > pien=-0.800) > > ti<-seq(from=5770.0,to=5797.0,length=10) > ra<-264.5590833 > dec<--27.13613889 > year<-2011 > y<-xypos_parallax(year,ra,dec,ti,model_par) calling the Fortran subroutines; > !************************************************************************************************** > !XYPOS_PARALLAX_R: R wrapper subroutine > !************************************************************************************************** > subroutine xypos_parallax_r(k,year,ra,dec,ti,t0,tE,alpha,u0,piee,pien,y) > implicit none > integer::year,i,k > double precision,dimension(k)::ti > double precision::ra,dec > double precision::t0,tE,alpha,u0 > double precision::piee,pien > double precision::y1,y2 > double precision,dimension(2,k)::y > do i=1,k > call xypos_parallax(year,ra,dec,ti(i),t0,tE,alpha,u0,piee,pien,y1,y2) > y(1,i) = y1 > y(2,i) = y2 > end do > return > end > !************************************************************************************************** > !XYPOS_PARALLAX: Source positions under annual parallax > !************************************************************************************************** > subroutine xypos_parallax(year,ra,dec,ti,t0,tE,alpha,u0,piee,pien,xx,yy) > implicit none > > double precision::ra,dec > double precision::ti,t0,tE,alpha,u0 > double precision::piee,pien > double precision::xx,yy > integer::year > > double precision::qn, qe, thjd, t0dum > double precision::dtau,du0 > > thjd = ti > t0dum = t0 > > IF((piee .ne. 0) .or. (pien .ne. 0))then > call geta(qn,qe,thjd,ra,dec,t0dum,year) > !the following equations are still to be checked. > dtau = piee*qn + pien*qe > du0 = -piee*qe + pien*qn > du0 = -du0 > ELSE > dtau=0 > du0=0 > END IF > > xx = ((ti-t0)/te+dtau)*cos(alpha)-(u0+du0)*sin(alpha) > yy = ((ti-t0)/te+dtau)*sin(alpha)+(u0+du0)*cos(alpha) > > return > end The matrix y which R returns is; > - * > 0.09712576 * > -0.036362910 * > -0.17291343 * > 0.067752761 > -0.08716623 -0.020590942 > -0.12098203 0.109764867 > -0.07617879 -0.003468398 > -0.07086033 0.149555601 > -0.06409356 0.015060440 > -0.02263996 0.187057573 > -0.05084316 0.035047997 > 0.02359192 0.222208831 But from Fortan, via > do i=1,npoint > write(*,*) y(1,i),y(2,i) > end do The following matrix is reported; > * > -9.71257556964655877E-002 -0.17291342658178052 * > > -8.71662283852910891E-002 -0.12098202580263227 > -7.61787919231983052E-002 -7.08603339220746364E-002 > -6.40935606206668174E-002 -2.26399573881042940E-002 > -5.08431642024918945E-002 2.35919215412063593E-002 > -3.63629100550238102E-002 6.77527605328501203E-002 > -2.05909424429263285E-002 0.10976486692565257 > -3.46839842574317436E-003 0.14955560107302845 > 1.50604398227174099E-002 0.18705757282679777 > 3.50479966174077409E-002 0.22220883066716274 The second is the form of the matrix that should be stored in the returned matrix y in the R function call, if possible. Do you see how the elements are being stored in the wrong order in the matrix that R is storing, versus the one that is read out in the Fortran? Is it possible to get the form of the second matrix? Thanks in advance. -- View this message in context: http://r.789695.n4.nabble.com/Trouble-returning-2D-array-into-R-from-Fortran-tp4646862p4647106.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list 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.