fortran - rank values passed in subroutines -


i having issues using multi-dimensional array in fortran code writing.

basically, define 2-dimensional array, passed membrane, have pass 1-dimensional version of set.

case (1)   call membrane ("set", scv(i,:), sty) 

here routine takes 1-d array.

subroutine membrane (tsk, scv, sty) implicit none character (len=*), intent (in) :: tsk logical, intent (in), optional :: scv(:,:) character (len=*), intent (in), optional :: sty  select case (tsk)  case ("set")   call set (tsk, scv(1,:), sty)   ... 

here set subroutine

subroutine set (tsk, scv, sty)  implicit none character (len=*), intent (in) :: tsk logical, intent (in), optional :: scv(:) character (len=*), intent (in), optional :: sty 

i error when try compile code

sct/btun/membrane.f:185:35:       call membrane ("set", scv(i,:), sty)                                1 error: rank mismatch in argument 'scv' @ (1)  (rank-2 , rank-1) 

you calling routine membrane using one-dimensional slice of scv. since subroutine expecting two-dimensional array:

logical, intent (in), optional :: scv(:,:) 

you error. not quite sure trying achieve, since accessing first column of array in membrane (hard-coded), change dummy argument scv one-dimensional in membrane:

subroutine membrane (tsk, scv, sty) ... logical, intent (in), optional :: scv(:) ...  select case (tsk)  case ("set")   call set (tsk, scv(:), sty)  ... 

note that complete array passed set.

alternatively, pass complete 2d array membrane along counter i, , pass i-th row set.


Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

Rendering JButton to get the JCheckBox behavior in a JTable by using images does not update my table -