Subroutine to save a FE_FILM in a .sur
file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(FE_FILM), | intent(in) | :: | fe_f | |||
character(len=*), | intent(in) | :: | file_name | |||
integer(kind=I4), | intent(in) | :: | code | |||
logical(kind=I4), | intent(in) | :: | nodal | if false : cell value, if true : nodal value |
subroutine save_fe_field(fe_f, file_name, code, nodal)
implicit none
type(FE_FILM), intent(in) :: fe_f
character(len=*), intent(in) :: file_name
integer(kind=I4), intent(in) :: code
logical(kind=I4), intent(in) :: nodal !! if false : cell value, if true : nodal value
integer(kind=I4) :: nx, ny
integer(kind=I4), dimension(1) :: i1, i2
real(kind=R8), allocatable, dimension(:,:) :: tab_s
real(kind=R8) :: lx, ly
character(len=8) :: unit_z
nx = fe_f%m%nx
ny = fe_f%m%ny
lx = fe_f%m%lx
ly = fe_f%m%ly
call empty(unit_z)
if (.not.nodal) then
nx = nx -1
ny = ny -1
endif
allocate( tab_s(1:nx, 1:ny) ) ; tab_s = -1.
if (nodal) then
tab_s = reshape( fe_f%vn(:, code), (/nx, ny/) )
i1 = index(fe_f%vn_name(code), '(') +1
i2 = index(fe_f%vn_name(code), ')') -1
unit_z = fe_f%vn_name(code)(i1(1):i2(1))
else
tab_s = reshape( fe_f%vc(:, code), (/nx, ny/) )
i1 = index(fe_f%vc_name(code), '(') +1
i2 = index(fe_f%vc_name(code), ')') -1
unit_z = fe_f%vc_name(code)(i1(1):i2(1))
endif
call init_scal(scal = scal_tmp, & !
nx = nx, & !
ny = ny, & !
lx = lx, & ! default unit : m
ly = ly, & !
unit_z = unit_z ) !
call write_surf(nom_fic = file_name, & !
tab_s = tab_s, & !
scal = scal_tmp )
deallocate(tab_s)
return
endsubroutine save_fe_field