read_conditions_boundary_conditions Subroutine

subroutine read_conditions_boundary_conditions(self, json)

Arguments

Type IntentOptional Attributes Name
class(type_input) :: self
type(json_file), intent(inout) :: json

JSON parser


Calls

proc~~read_conditions_boundary_conditions~~CallsGraph proc~read_conditions_boundary_conditions read_conditions_boundary_conditions destroy destroy proc~read_conditions_boundary_conditions->destroy get get proc~read_conditions_boundary_conditions->get info info proc~read_conditions_boundary_conditions->info print_error_message print_error_message proc~read_conditions_boundary_conditions->print_error_message proc~error_message error_message proc~read_conditions_boundary_conditions->proc~error_message proc~join join proc~read_conditions_boundary_conditions->proc~join proc~read_conditions_boundary_conditions_hydraulic read_conditions_boundary_conditions_hydraulic proc~read_conditions_boundary_conditions->proc~read_conditions_boundary_conditions_hydraulic proc~read_conditions_boundary_conditions_thermal read_conditions_boundary_conditions_thermal proc~read_conditions_boundary_conditions->proc~read_conditions_boundary_conditions_thermal to_string to_string proc~read_conditions_boundary_conditions->to_string log_error log_error proc~error_message->log_error proc~read_conditions_boundary_conditions_hydraulic->destroy proc~read_conditions_boundary_conditions_hydraulic->get proc~read_conditions_boundary_conditions_hydraulic->proc~error_message proc~read_conditions_boundary_conditions_hydraulic->proc~join proc~read_conditions_boundary_conditions_thermal->destroy proc~read_conditions_boundary_conditions_thermal->get proc~read_conditions_boundary_conditions_thermal->proc~error_message proc~read_conditions_boundary_conditions_thermal->proc~join

Called by

proc~~read_conditions_boundary_conditions~~CalledByGraph proc~read_conditions_boundary_conditions read_conditions_boundary_conditions proc~inout_read_conditions inout_read_conditions proc~inout_read_conditions->proc~read_conditions_boundary_conditions interface~inout_read_conditions type_input%inout_read_conditions interface~inout_read_conditions->proc~inout_read_conditions proc~initialize_type_input type_input%initialize_type_input proc~initialize_type_input->interface~inout_read_conditions

Source Code

    subroutine read_conditions_boundary_conditions(self, json)
        implicit none
        class(type_input) :: self
        type(json_file), intent(inout) :: json !! JSON parser

        character(:), allocatable :: key
        character(:), allocatable :: key_base
        logical :: found
        integer(int32) :: i

        call json%info(boundary_conditions, found=found, n_children=self%conditions%num_boundaries)
        call json%print_error_message(output_unit)
        if (.not. found .or. self%conditions%num_boundaries <= 0) then
            call json%destroy()
            call error_message(904, c_opt=boundary_conditions)
        end if

        if (allocated(self%conditions%boundary_conditions)) deallocate (self%conditions%boundary_conditions)
        allocate (self%conditions%boundary_conditions(self%conditions%num_boundaries))

        do i = 1, self%conditions%num_boundaries
            key_base = boundary_conditions//"("//to_string(i)//")"
            key = join([key_base, id])
            call json%get(key, self%conditions%boundary_conditions(i)%id, found=found)
            if (.not. found) then
                call json%destroy()
                call error_message(904, c_opt=key)
            end if

            if (self%basic%analysis_controls%calculate_thermal) then
                key = join([key_base, thermal])
                call read_conditions_boundary_conditions_thermal(self%conditions%boundary_conditions(i)%thermal, json, key, &
                                                                 size(self%conditions%time_control%boundary_time_points(:)))
            end if

            if (self%basic%analysis_controls%calculate_hydraulic) then
                key = join([key_base, hydraulic])
                call read_conditions_boundary_conditions_hydraulic(self%conditions%boundary_conditions(i)%hydraulic, json, key, &
                                                                   size(self%conditions%time_control%boundary_time_points(:)))
            end if

        end do

    end subroutine read_conditions_boundary_conditions