Calling CDO functions from inside FORTRAN
Added by Marston Ward over 9 years ago
Hi,
I would like to know if it is possible to call CDO specific functions from inside a fortran subroutine and have the data
be returned to the calling function? For example, can I link the CDO library to my fortran library and call remapcon?
If so, how could I go about doing this?
Appreciate any ideas/help rendered,
/M
Replies (3)
RE: Calling CDO functions from inside FORTRAN - Added by Ralf Mueller over 9 years ago
Hi Marston!
This is not possible because of several reasons
- There is no CDO library, which has an api for calling operators
- operators are C-functoin pointers, which would make them complex to use in fortran
- operators do not work on something like a real field, but separately handled CDI streams - transforming fortran arrays into CDI Stream and vice versa would be necessary with the current implementation
IMO the current implemention of CDO is not suited for being used in a library-like way used fortran. I don't say, it not possible at the moment, I don't say it will never be possible, but it is simply not designed that way.
Currently the implementation is focused on
- IO targets are files with support for many formats
- operators should be combinable as much as possible
- combined operator calls should run in parallel as much as possible
I think, it would be great to use CDO functionality from other languages, but I also guess that a design review would be necessary.
cheers
ralf
RE: Calling CDO functions from inside FORTRAN - Added by Jaison-Thomas Ambadan over 9 years ago
Hi Marston,
If you need only the remap functionality, you could try using the SCRIP package which is written in FORTRAN I guess: http://oceans11.lanl.gov/trac/SCRIP CDO remaps are based on SCRIP library.
Cheers,
J
RE: Calling CDO functions from inside FORTRAN - Added by Marston Ward over 9 years ago
Hi Ralf, J,
Thanks for the information guys. I understand the situation with CDO.
Yes, Ralf, it would be great to be able to use CDO as a library and use the functions from within other programs. Something to think about for the future, perhaps.
J, yes, I am looking at SCRIPS as well as EMOS. Just trying not to reinvent the wheel here.
Appreciate the info,
/M