subroutine write_obeservation_header_csv(self, time_unit)
implicit none
class(type_output_observation), intent(inout) :: self
character(*), intent(in) :: time_unit
integer(int32) :: iObs, num_observations, idim
integer(int32) :: local_id
if (.not. self%do_output) return
num_observations = self%num_observations
open (newunit=self%num_unit, file=trim(adjustl(self%file_name)), status='replace', action='write')
write (self%num_unit, '(a)') "# "//trim(self%name)//" time variation"
write (self%num_unit, '(a)') "#"
select case (self%type)
case ("node_ids")
write (self%num_unit, '(a)') "# Observation Node ID"
do iObs = 1, num_observations
write (self%num_unit, '(a,i0,a,x,i0)') "# Node ID ", iObs, ":", self%node_ids(iObs)
end do
case ("coordinates")
write (self%num_unit, '(a)') "# Observation Coordinate (x,y,z)"
do iObs = 1, num_observations
local_id = self%elements(iObs)%e%get_id()
write (self%num_unit, '(a,x,i0,a,3(x,es18.11,a),a,i0)') &
"# Point", iObs, ": (", &
self%coordinate%x(iObs), ",", &
self%coordinate%y(iObs), ",", &
self%coordinate%z(iObs), ")", &
" => Element ID: ", &
local_id
end do
end select
write (self%num_unit, '(a)') "#"
write (self%num_unit, '(a)') "# Output Unit: Time ["//trim(adjustl(time_unit))//"], " & !&
//trim(self%name)//" ["//trim(self%unit)//"]" !&
write (self%num_unit, '(a)') "#"
select case (self%name)
case ("water_flux")
write (self%num_unit, '(a,'//to_string(num_observations)//'(",",a))') &
"Time", (("Obs"//to_string(iObs)//"_x", "Obs"//to_string(iObs)//"_y", "Obs"//to_string(iObs)//"_z"), &
iObs=1, num_observations / 3)
case default
write (self%num_unit, '(a,'//to_string(num_observations)//'(",",a))') &
"Time", ("Obs"//to_string(iObs), iObs=1, num_observations)
end select
end subroutine write_obeservation_header_csv