Subroutine to save deterministic data following VTK model
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(FE_FILM), | intent(in) | :: | fe_f | FE_FILM element to store |
||
character(len=*), | intent(in) | :: | nom_fic | filename |
subroutine save_fe_f_vtk(fe_f, nom_fic)
implicit none
type(FE_FILM), intent(in) :: fe_f !! [[FE_FILM]] *element to store*
character(len=*), intent(in) :: nom_fic !! *filename*
integer(kind=I4) :: E_IO ! parametre identification vtk
integer(kind=I4) :: i, k
real(kind=R8), dimension(:), allocatable :: z ! tableau supplementaire pour la sortie
integer(kind=I4), dimension(:), allocatable :: connec, tipo
allocate (z(fe_f%m%n), connec(fe_f%m%ne*(1+4)), tipo(fe_f%m%ne))
z = 0._R8
tipo = 9 ! elements a quatre noeuds: 9 dans le formalisme vtk
k = 0
do i = 1, fe_f%m%ne
connec(k+1) = 4
connec(k+2) = fe_f%m%con(i, 1) -1
connec(k+3) = fe_f%m%con(i, 2) -1
connec(k+4) = fe_f%m%con(i, 3) -1
connec(k+5) = fe_f%m%con(i, 4) -1
k=k+5
enddo
! ouverture du fichier
E_IO = VTK_INI(output_format = 'binary', &
filename = nom_fic, &
title = 'Resultats fe_f fluide', &
mesh_topology = 'UNSTRUCTURED_GRID')
! ecriture des coordonnees
E_IO = VTK_GEO(NN = fe_f%m%n, &
X = fe_f%m%x, &
Y = fe_f%m%y, &
Z = Z)
! definition des cellules
E_IO = VTK_CON(NC = fe_f%m%ne, &
connect = connec, &
cell_type = tipo)
! choix du type de variable (elementaire)
E_IO = VTK_DAT(NC_NN = fe_f%m%ne, &
var_location = 'cell')
! passage des variables cellules
do i = 1, fe_f%n_vc
E_IO = VTK_VAR(NC_NN = fe_f%m%ne, &
varname = fe_f%vc_name(i), &
var = fe_f%vc(:,i))
enddo
! choix du type de variable (nodale)
E_IO = VTK_DAT(NC_NN = fe_f%m%n, &
var_location = 'node')
! passage des variables nodales
do i = 1, fe_f%n_vn
E_IO = VTK_VAR(NC_NN = fe_f%m%n, &
varname = fe_f%vn_name(i), &
var = fe_f%vn(:, i))
enddo
! fermeture du fichier vtk
E_IO = VTK_END()
! liberation des tableaux
deallocate(z, connec, tipo)
return
endsubroutine save_fe_f_vtk