Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(type_input) | :: | self | ||||
type(json_file), | intent(inout) | :: | json |
JSON parser |
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