Subroutines that takes array of variable rank as input

Dear all,

I’m working on a function that should ideally work for an input array that may have, in different calls, rank 0, 1, 2 or 3.

SELECT RANK seems like doing the job, but as it’s a new feature and the rest of the code is mostly F90 I hesitate a bit to introduce it.

Alternatively, I can always declare a 3D arrays and then keep number of elements in one or two or all three dimensions equal to 1. However, than the code starts to look really ugly (it’s a long code with dozen of variables like that) and I’d rather have some more elegant solution.

What do you do in such situation? Any recommendations? Any example?

Many thanks!
Niko

@Niko,

See my comments at a similar question at another forum .

And an example at this link.

So one option you can consider is to take advantage of the Fortran facility where the target of a RANK-N array pointer can be a RANK-1 array. This can greatly simplify the code structure depending on your needs.

That is, elevate your code design a step higher so that the circumstances where you get into situations where you require subroutines with dummy arguments of different ranks are greatly diminished or eliminated altogether.

Nice. That’s a pretty neat way of doing it! Many thanks!