[R] ALLOCATE in a FORTRAN subroutine

Berend Hasselman bhh at xs4all.nl
Thu Mar 3 17:17:35 CET 2016


> On 3 Mar 2016, at 13:57, MAURICE Jean - externe <jean-externe.maurice at edf.fr> wrote:
> 
> Hi,
> I am 'translating' R functions in FORTRAN subroutines.
> 
> Very often, an R function gives an  'array' as result and you don't have to bother with the dimension of the array : R creates automatically an array with the good length. It's not really the case with FORTRAN.
> 
> Until now, I create an array with the 'max' dimensions in R, give it to FORTRAN; FORTRAN updates the array and R retrieves it. But calculating the 'max' before calling the FORTRAN subroutine can be complicated. Is it possible to create a 'new' array in a FORTRAN subroutine and to make it be read by R ? In my humble opinion, the answer is NO but as I am new to R ...
> 
> The other solution, is to work with dummies dimension in FORTRAN but can R work with that ?
> 

The question belongs on the R-devel mailinglist.

I do not think you can do what you describe, if I read your question correctly.
You are calling your Fortran routines directly from an R file with .Fortran, I presume?

Your other solution: I don't really understand what you are implying.
Declare them with (:,:) or (*,*), allocate and the return the array? A Fortran95 pointer?
I think  all of that is just a no no.

Is it possible to calculate the required size of the array in a separate routine given some parameters (as can often be done with Lapack routines) before calling the main subroutine?
If so, call the sizing routine and then declare the correctly sized array in your R code and pass it to the main subroutine.

Berend

> TIA
> Jean
> 
> 
> 
> Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis à l'intention exclusive des destinataires et les informations qui y figurent sont strictement confidentielles. Toute utilisation de ce Message non conforme à sa destination, toute diffusion ou toute publication totale ou partielle, est interdite sauf autorisation expresse.
> 
> Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de votre système, ainsi que toutes ses copies, et de n'en garder aucune trace sur quelque support que ce soit. Nous vous remercions également d'en avertir immédiatement l'expéditeur par retour du message.
> 
> Il est impossible de garantir que les communications par messagerie électronique arrivent en temps utile, sont sécurisées ou dénuées de toute erreur ou virus.
> ____________________________________________________
> 
> This message and any attachments (the 'Message') are intended solely for the addressees. The information contained in this Message is confidential. Any use of information contained in this Message not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval.
> 
> If you are not the addressee, you may not copy, forward, disclose or use any part of it. If you have received this message in error, please delete it and all copies from your system and notify the sender immediately by return message.
> 
> E-mail communication cannot be guaranteed to be timely secure, error or virus-free.
> ______________________________________________
> 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.



More information about the R-help mailing list