write_obeservation_header_csv Subroutine

subroutine write_obeservation_header_csv(self, time_unit)

Arguments

Type IntentOptional Attributes Name
class(type_output_observation), intent(inout) :: self
character(len=*), intent(in) :: time_unit

Calls

proc~~write_obeservation_header_csv~~CallsGraph proc~write_obeservation_header_csv write_obeservation_header_csv get_id get_id proc~write_obeservation_header_csv->get_id to_string to_string proc~write_obeservation_header_csv->to_string

Source Code

    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