initialize_type_output Subroutine

private subroutine initialize_type_output(self, input, domain, coordinate)

Type Bound

type_output

Arguments

Type IntentOptional Attributes Name
class(type_output), intent(inout) :: self
type(type_input), intent(in) :: input
class(type_domain), intent(inout), optional :: domain
type(type_dp_3d), intent(inout), pointer :: coordinate

Calls

proc~~initialize_type_output~~CallsGraph proc~initialize_type_output type_output%initialize_type_output interface~initialize_type_output_observation type_output_observation%initialize_type_output_observation proc~initialize_type_output->interface~initialize_type_output_observation interface~setup_directory setup_directory proc~initialize_type_output->interface~setup_directory proc~get_project_path get_project_path proc~initialize_type_output->proc~get_project_path proc~initialize_type_output_observation initialize_type_output_observation interface~initialize_type_output_observation->proc~initialize_type_output_observation proc~setup_directory setup_directory interface~setup_directory->proc~setup_directory proc~inout_project_path_initialize inout_project_path_initialize proc~get_project_path->proc~inout_project_path_initialize get_id get_id proc~initialize_type_output_observation->get_id is_inside is_inside proc~initialize_type_output_observation->is_inside proc~create_element create_element proc~initialize_type_output_observation->proc~create_element proc~get_num_elements type_domain%get_num_elements proc~initialize_type_output_observation->proc~get_num_elements proc~type_dp_3d_initialize type_dp_3d%type_dp_3d_initialize proc~initialize_type_output_observation->proc~type_dp_3d_initialize proc~error_message error_message proc~inout_project_path_initialize->proc~error_message log_error log_error proc~error_message->log_error interface~allocate_array allocate_array proc~type_dp_3d_initialize->interface~allocate_array proc~allocate_rank1_int16 allocate_rank1_int16 interface~allocate_array->proc~allocate_rank1_int16 proc~allocate_rank1_int32 allocate_rank1_int32 interface~allocate_array->proc~allocate_rank1_int32 proc~allocate_rank1_int64 allocate_rank1_int64 interface~allocate_array->proc~allocate_rank1_int64 proc~allocate_rank1_int8 allocate_rank1_int8 interface~allocate_array->proc~allocate_rank1_int8 proc~allocate_rank1_logical1 allocate_rank1_logical1 interface~allocate_array->proc~allocate_rank1_logical1 proc~allocate_rank1_logical4 allocate_rank1_logical4 interface~allocate_array->proc~allocate_rank1_logical4 proc~allocate_rank1_logical8 allocate_rank1_logical8 interface~allocate_array->proc~allocate_rank1_logical8 proc~allocate_rank1_real128 allocate_rank1_real128 interface~allocate_array->proc~allocate_rank1_real128 proc~allocate_rank1_real32 allocate_rank1_real32 interface~allocate_array->proc~allocate_rank1_real32 proc~allocate_rank1_real64 allocate_rank1_real64 interface~allocate_array->proc~allocate_rank1_real64 proc~allocate_rank2_int16 allocate_rank2_int16 interface~allocate_array->proc~allocate_rank2_int16 proc~allocate_rank2_int32 allocate_rank2_int32 interface~allocate_array->proc~allocate_rank2_int32 proc~allocate_rank2_int64 allocate_rank2_int64 interface~allocate_array->proc~allocate_rank2_int64 proc~allocate_rank2_int8 allocate_rank2_int8 interface~allocate_array->proc~allocate_rank2_int8 proc~allocate_rank2_logical1 allocate_rank2_logical1 interface~allocate_array->proc~allocate_rank2_logical1 proc~allocate_rank2_logical4 allocate_rank2_logical4 interface~allocate_array->proc~allocate_rank2_logical4 proc~allocate_rank2_logical8 allocate_rank2_logical8 interface~allocate_array->proc~allocate_rank2_logical8 proc~allocate_rank2_real128 allocate_rank2_real128 interface~allocate_array->proc~allocate_rank2_real128 proc~allocate_rank2_real32 allocate_rank2_real32 interface~allocate_array->proc~allocate_rank2_real32 proc~allocate_rank2_real64 allocate_rank2_real64 interface~allocate_array->proc~allocate_rank2_real64 proc~allocate_rank1_int16->proc~error_message proc~allocate_rank1_int32->proc~error_message proc~allocate_rank1_int64->proc~error_message proc~allocate_rank1_int8->proc~error_message proc~allocate_rank1_logical1->proc~error_message proc~allocate_rank1_logical4->proc~error_message proc~allocate_rank1_logical8->proc~error_message proc~allocate_rank1_real128->proc~error_message proc~allocate_rank1_real32->proc~error_message proc~allocate_rank1_real64->proc~error_message proc~allocate_rank2_int16->proc~error_message proc~allocate_rank2_int32->proc~error_message proc~allocate_rank2_int64->proc~error_message proc~allocate_rank2_int8->proc~error_message proc~allocate_rank2_logical1->proc~error_message proc~allocate_rank2_logical4->proc~error_message proc~allocate_rank2_logical8->proc~error_message proc~allocate_rank2_real128->proc~error_message proc~allocate_rank2_real32->proc~error_message proc~allocate_rank2_real64->proc~error_message

Source Code

    subroutine initialize_type_output(self, input, domain, coordinate)
        implicit none
        class(type_output), intent(inout) :: self
        type(type_input), intent(in) :: input
        class(type_domain), intent(inout), optional :: domain
        type(type_dp_3d), intent(inout), pointer :: coordinate

        character(256) :: dir_path
        logical :: exists

        character(:), allocatable :: command
        integer(int32) :: i, j, idx
        integer(int32) :: total
        real(real64) :: tmp_xi, tmp_eta
        logical :: is_inside

        integer(int32) :: iObs, iElem
        integer(int32) :: nElements
        integer(int32) :: local_id, local_type
        integer(int32) :: ierr

        character(8) :: output_extentions(3) = [".dat", ".csv", ".log"]
        character(8) :: output_file_extentions(5) = [".dat", ".csv", ".vtk", ".vtu", ".log"]

        ! Path settings
        dir_path = get_project_path()

        self%dir_output = trim(adjustl(dir_path))//"Output/"
        call setup_directory(self%dir_output, output_extentions)
        self%dir_output_field = trim(adjustl(dir_path))//"Output/Files/"
        call setup_directory(self%dir_output_field, output_file_extentions)

        self%log_file_name = trim(adjustl(self%dir_output))//"run.log"

        self%is_thermal = input%basic%analysis_controls%calculate_thermal
        self%is_hydraulic = input%basic%analysis_controls%calculate_hydraulic

        if (allocated(self%observations)) deallocate (self%observations)
        allocate (self%observations(size(input%output_settings%history_output%variable_names)))
        do i = 1, size(input%output_settings%history_output%variable_names)
            call self%observations(i)%initialize(input, coordinate, domain, self%dir_output, &
                                                 input%output_settings%history_output%variable_names(i))
            call self%observations(i)%write_header(input%output_settings%history_output%output_interval_unit)
        end do

        call self%overall%initialize(input, coordinate, domain, self%dir_output_field)

    end subroutine initialize_type_output