subroutine write_data_to_vtk_c( &
dim1,vecDim,nVal,NPlot,nElems,strlen,VarNames_c,Coord,Values,FileString_c) &
bind(c,name='write_data_to_vtk')
! INPUT VARIABLES
! dimension of the data (either 2=quads or 3=hexas)
INTEGER(kind=C_INT), value :: dim1
INTEGER(kind=C_INT), value :: vecdim ! dimension of coordinates
INTEGER(kind=C_INT), value :: nVal ! Number of nodal output variables
! Number of output points per element: (nPlot+1)**dim1
INTEGER(kind=C_INT),INTENT(IN) :: NPlot(dim1)
INTEGER(kind=C_INT), value :: nElems ! Number of output elements
! CoordinatesVector
REAL(kind=CWP),INTENT(IN) :: Coord(vecdim,1:PRODUCT(Nplot+1),nElems)
integer(kind=C_INT), value :: strlen ! lenght of strings in VarNames_c
! Names of all variables that will be written out
character(kind=C_CHAR,len=1), intent(in) :: VarNames_c(strlen,nVal)
REAL(kind=CWP),INTENT(IN) :: Values(nVal,1:PRODUCT(Nplot+1),nElems) ! Statevector
! Output file name
character(kind=C_CHAR, len=1), dimension(*) :: FileString_c
character(len=strlen) :: VarNames_f(nVal)
character(len=strlen) :: VarName
character(len=:), allocatable :: FileString_f
integer :: val, nchar1, nchar2
nchar1 = get_c_string_length(FileString_c)
if(nchar1.gt.256) stop "c string length is restricted to 256"
! retrieve file name into Fortran string
call c_to_f_string(FileString_c, FileString_f)
! save all var names into VarNames_f
do val = 1, nVal
nchar2 = get_c_string_length(VarNames_c(:,val))
if(nchar2.gt.strlen) stop "c string length is restricted to strlen"
VarName = get_fortran_string(VarNames_c(:,val),nchar2)
VarNames_f(val) = trim(VarName(1:nchar2))
end do
call WriteDataToVTK( &
dim1,vecDim,nVal,NPlot,nElems,VarNames_f,Coord,Values,FileString_f)
end subroutine write_data_to_vtk_c