allocate_rank1_real128 Subroutine

private subroutine allocate_rank1_real128(array, length, bounds)

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(inout), allocatable :: array(:)
integer(kind=int32), intent(in), optional :: length
integer(kind=int32), intent(in), optional :: bounds(:)

Calls

proc~~allocate_rank1_real128~~CallsGraph proc~allocate_rank1_real128 allocate_rank1_real128 proc~error_message error_message proc~allocate_rank1_real128->proc~error_message log_error log_error proc~error_message->log_error

Called by

proc~~allocate_rank1_real128~~CalledByGraph proc~allocate_rank1_real128 allocate_rank1_real128 interface~allocate_array allocate_array interface~allocate_array->proc~allocate_rank1_real128 proc~apply_reordering type_domain%apply_reordering proc~apply_reordering->interface~allocate_array proc~build_csr_from_coo build_csr_from_coo proc~build_csr_from_coo->interface~allocate_array proc~coloring_dsatur coloring_dsatur proc~coloring_dsatur->interface~allocate_array proc~get_neighbors_impl type_crs_adjacency_element%get_neighbors_impl proc~coloring_dsatur->proc~get_neighbors_impl proc~update_saturation update_saturation proc~coloring_dsatur->proc~update_saturation proc~coloring_lfo coloring_lfo proc~coloring_lfo->interface~allocate_array proc~coloring_lfo->proc~get_neighbors_impl proc~coloring_welsh_powell coloring_welsh_powell proc~coloring_welsh_powell->interface~allocate_array proc~find_smallest_available_color find_smallest_available_color proc~coloring_welsh_powell->proc~find_smallest_available_color proc~get_welsh_powell_order get_welsh_powell_order proc~coloring_welsh_powell->proc~get_welsh_powell_order proc~construct_side_first construct_side_first proc~construct_side_first->interface~allocate_array proc~initialize_abst_mesh abst_mesh%initialize_abst_mesh proc~construct_side_first->proc~initialize_abst_mesh proc~construct_side_second construct_side_second proc~construct_side_second->interface~allocate_array proc~construct_side_second->proc~initialize_abst_mesh proc~construct_square_first construct_square_first proc~construct_square_first->interface~allocate_array proc~construct_square_first->proc~initialize_abst_mesh proc~construct_square_second construct_square_second proc~construct_square_second->interface~allocate_array proc~construct_square_second->proc~initialize_abst_mesh proc~construct_triangle_first construct_triangle_first proc~construct_triangle_first->interface~allocate_array proc~construct_triangle_first->proc~initialize_abst_mesh proc~construct_triangle_second construct_triangle_second proc~construct_triangle_second->interface~allocate_array proc~construct_triangle_second->proc~initialize_abst_mesh proc~construct_type_hydraulic_crs construct_type_hydraulic_crs proc~construct_type_hydraulic_crs->interface~allocate_array proc~get_csr type_node_adjacency%get_csr proc~construct_type_hydraulic_crs->proc~get_csr proc~initialize_type_crs type_crs%initialize_type_crs proc~construct_type_hydraulic_crs->proc~initialize_type_crs proc~construct_type_thermal_crs construct_type_thermal_crs proc~construct_type_thermal_crs->interface~allocate_array proc~construct_type_thermal_crs->proc~get_csr proc~construct_type_thermal_crs->proc~initialize_type_crs proc~create_coo_from_mesh create_coo_from_mesh proc~create_coo_from_mesh->interface~allocate_array proc~create_inverse_permutation create_inverse_permutation proc~create_inverse_permutation->interface~allocate_array proc~create_unique_coo create_unique_coo proc~create_unique_coo->interface~allocate_array interface~unique unique proc~create_unique_coo->interface~unique proc~execute_reordering_core execute_reordering_core proc~execute_reordering_core->interface~allocate_array proc~execute_bfs_ordering execute_bfs_ordering proc~execute_reordering_core->proc~execute_bfs_ordering proc~find_smallest_available_color->interface~allocate_array proc~find_smallest_available_color->proc~get_neighbors_impl proc~find_target_edges_by_group find_target_edges_by_group proc~find_target_edges_by_group->interface~allocate_array proc~get_coo type_node_adjacency%get_coo proc~get_coo->interface~allocate_array proc~get_csr->interface~allocate_array proc~get_neighbors_impl->interface~allocate_array proc~get_welsh_powell_order->interface~allocate_array proc~initialize_abst_mesh->interface~allocate_array proc~initialize_crs_adjacency type_crs_adjacency_element%initialize_crs_adjacency proc~initialize_crs_adjacency->interface~allocate_array proc~initialize_hybrid_from_mesh type_node_adjacency%initialize_hybrid_from_mesh proc~initialize_hybrid_from_mesh->interface~allocate_array proc~initialize_hybrid_from_mesh->proc~build_csr_from_coo proc~initialize_hybrid_from_mesh->proc~create_coo_from_mesh proc~initialize_hybrid_from_mesh->proc~create_unique_coo proc~initialize_output_overall_vtk initialize_output_overall_vtk proc~initialize_output_overall_vtk->interface~allocate_array proc~initialize_type_dp_3d type_dp_3d%initialize_type_dp_3d proc~initialize_output_overall_vtk->proc~initialize_type_dp_3d proc~initialize_output_overall_vtu initialize_output_overall_vtu proc~initialize_output_overall_vtu->interface~allocate_array proc~initialize_output_overall_vtu->proc~initialize_type_dp_3d proc~initialize_type_bc_thermal_adiabatic initialize_type_bc_thermal_adiabatic proc~initialize_type_bc_thermal_adiabatic->interface~allocate_array interface~find_target_edges_by_group find_target_edges_by_group proc~initialize_type_bc_thermal_adiabatic->interface~find_target_edges_by_group proc~initialize_type_bc_thermal_dirichlet initialize_type_bc_thermal_dirichlet proc~initialize_type_bc_thermal_dirichlet->interface~allocate_array proc~initialize_type_bc_thermal_dirichlet->interface~find_target_edges_by_group proc~initialize_type_coo type_coo%initialize_type_coo proc~initialize_type_coo->interface~allocate_array proc~initialize_type_crs->interface~allocate_array proc~initialize_type_dense type_dense%initialize_type_dense proc~initialize_type_dense->interface~allocate_array proc~initialize_type_dense_from_node type_dense%initialize_type_dense_from_node proc~initialize_type_dense_from_node->interface~allocate_array proc~initialize_type_dp_2d type_dp_2d%initialize_type_dp_2d proc~initialize_type_dp_2d->interface~allocate_array proc~initialize_type_dp_3d->interface~allocate_array proc~initialize_type_int_2d type_int_2d%initialize_type_int_2d proc~initialize_type_int_2d->interface~allocate_array proc~initialize_type_int_3d type_int_3d%initialize_type_int_3d proc~initialize_type_int_3d->interface~allocate_array proc~initialize_type_time type_time%initialize_type_time proc~initialize_type_time->interface~allocate_array proc~initialize_type_variable type_variable%initialize_type_variable proc~initialize_type_variable->interface~allocate_array proc~output_overall_vtk_fields output_overall_vtk_fields proc~output_overall_vtk_fields->interface~allocate_array proc~output_overall_vtu_fields output_overall_vtu_fields proc~output_overall_vtu_fields->interface~allocate_array proc~process_element_hydraulic_linear_1 process_element_hydraulic_linear_1 proc~process_element_hydraulic_linear_1->interface~allocate_array proc~process_element_hydraulic_linear_1->proc~initialize_type_dense_from_node proc~rcm_reorder_method rcm_reorder_method proc~rcm_reorder_method->interface~allocate_array proc~rcm_reorder_method->proc~execute_reordering_core proc~read_parameters_materials_thermal read_parameters_materials_thermal proc~read_parameters_materials_thermal->interface~allocate_array proc~sort_and_enqueue_neighbors sort_and_enqueue_neighbors proc~sort_and_enqueue_neighbors->interface~allocate_array proc~type_vtk_vtk_initialize type_vtk%type_vtk_vtk_initialize proc~type_vtk_vtk_initialize->interface~allocate_array proc~type_vtk_vtk_initialize->proc~initialize_type_dp_3d proc~type_vtk_vtu_initialize type_vtk%type_vtk_vtu_initialize proc~type_vtk_vtu_initialize->interface~allocate_array proc~type_vtk_vtu_initialize->proc~initialize_type_dp_3d proc~unique_int16 unique_int16 proc~unique_int16->interface~allocate_array proc~unique_int32 unique_int32 proc~unique_int32->interface~allocate_array proc~unique_int64 unique_int64 proc~unique_int64->interface~allocate_array proc~unique_int8 unique_int8 proc~unique_int8->interface~allocate_array proc~update_type_thermal_crs update_type_thermal_crs proc~update_type_thermal_crs->interface~allocate_array interface~coloring_dsatur type_coloring%coloring_dsatur interface~coloring_dsatur->proc~coloring_dsatur interface~coloring_lfo type_coloring%coloring_lfo interface~coloring_lfo->proc~coloring_lfo interface~coloring_welsh_powell type_coloring%coloring_welsh_powell interface~coloring_welsh_powell->proc~coloring_welsh_powell interface~construct_side_first construct_side_first interface~construct_side_first->proc~construct_side_first interface~construct_side_second construct_side_second interface~construct_side_second->proc~construct_side_second interface~construct_square_first construct_square_first interface~construct_square_first->proc~construct_square_first interface~construct_square_second construct_square_second interface~construct_square_second->proc~construct_square_second interface~construct_triangle_first construct_triangle_first interface~construct_triangle_first->proc~construct_triangle_first interface~construct_triangle_second construct_triangle_second interface~construct_triangle_second->proc~construct_triangle_second interface~construct_type_hydraulic_crs construct_type_hydraulic_crs interface~construct_type_hydraulic_crs->proc~construct_type_hydraulic_crs interface~construct_type_thermal_crs construct_type_thermal_crs interface~construct_type_thermal_crs->proc~construct_type_thermal_crs interface~create_inverse_permutation type_reordering%create_inverse_permutation interface~create_inverse_permutation->proc~create_inverse_permutation interface~find_target_edges_by_group->proc~find_target_edges_by_group interface~initialize_output_overall_vtk type_output_overall%initialize_output_overall_vtk interface~initialize_output_overall_vtk->proc~initialize_output_overall_vtk interface~initialize_output_overall_vtu type_output_overall%initialize_output_overall_vtu interface~initialize_output_overall_vtu->proc~initialize_output_overall_vtu interface~initialize_type_bc_thermal_adiabatic type_bc_thermal_adiabatic%initialize_type_bc_thermal_adiabatic interface~initialize_type_bc_thermal_adiabatic->proc~initialize_type_bc_thermal_adiabatic interface~initialize_type_bc_thermal_dirichlet type_bc_thermal_dirichlet%initialize_type_bc_thermal_dirichlet interface~initialize_type_bc_thermal_dirichlet->proc~initialize_type_bc_thermal_dirichlet interface~rcm_reorder_method type_reordering%rcm_reorder_method interface~rcm_reorder_method->proc~rcm_reorder_method interface~unique->proc~unique_int16 interface~unique->proc~unique_int32 interface~unique->proc~unique_int64 interface~unique->proc~unique_int8 interface~update_type_thermal_crs type_thermal_crs%update_type_thermal_crs interface~update_type_thermal_crs->proc~update_type_thermal_crs proc~cm_reorder_method cm_reorder_method proc~cm_reorder_method->proc~execute_reordering_core proc~execute_bfs_ordering->proc~sort_and_enqueue_neighbors proc~hydraulic_assemble_system_linear_1 hydraulic_assemble_system_linear_1 proc~hydraulic_assemble_system_linear_1->proc~process_element_hydraulic_linear_1 proc~hydraulic_assemble_system_linear_1_parallel hydraulic_assemble_system_linear_1_parallel proc~hydraulic_assemble_system_linear_1_parallel->proc~process_element_hydraulic_linear_1 proc~initialize_type_domain type_domain%initialize_type_domain proc~initialize_type_domain->proc~apply_reordering proc~initialize_type_domain->proc~initialize_hybrid_from_mesh proc~initialize_type_ftdss type_ftdss%initialize_type_ftdss proc~initialize_type_ftdss->proc~initialize_type_time proc~initialize_type_output_observation initialize_type_output_observation proc~initialize_type_output_observation->proc~initialize_type_dp_3d proc~inout_read_geometry inout_read_geometry proc~inout_read_geometry->proc~type_vtk_vtk_initialize proc~inout_read_geometry->proc~type_vtk_vtu_initialize proc~read_parameters_materials read_parameters_materials proc~read_parameters_materials->proc~read_parameters_materials_thermal proc~update_saturation->proc~get_neighbors_impl interface~cm_reorder_method type_reordering%cm_reorder_method interface~cm_reorder_method->proc~cm_reorder_method interface~initialize_type_output_observation type_output_observation%initialize_type_output_observation interface~initialize_type_output_observation->proc~initialize_type_output_observation interface~inout_read_geometry type_input%inout_read_geometry interface~inout_read_geometry->proc~inout_read_geometry interface~type_hydraulic_crs type_hydraulic_crs interface~type_hydraulic_crs->interface~construct_type_hydraulic_crs interface~type_side_first type_side_first interface~type_side_first->interface~construct_side_first interface~type_side_second type_side_second interface~type_side_second->interface~construct_side_second interface~type_square_first type_square_first interface~type_square_first->interface~construct_square_first interface~type_square_second type_square_second interface~type_square_second->interface~construct_square_second interface~type_thermal_crs type_thermal_crs interface~type_thermal_crs->interface~construct_type_thermal_crs interface~type_triangle_first type_triangle_first interface~type_triangle_first->interface~construct_triangle_first interface~type_triangle_second type_triangle_second interface~type_triangle_second->interface~construct_triangle_second proc~get_active_region_info type_vtk%get_active_region_info proc~get_active_region_info->interface~unique proc~initialize_input_type_output_overall initialize_input_type_output_overall proc~initialize_input_type_output_overall->interface~initialize_output_overall_vtk proc~initialize_input_type_output_overall->interface~initialize_output_overall_vtu proc~initialize_type_coloring type_coloring%initialize_type_coloring proc~initialize_type_coloring->interface~coloring_dsatur proc~initialize_type_coloring->interface~coloring_lfo proc~initialize_type_coloring->interface~coloring_welsh_powell proc~initialize_type_reordering type_reordering%initialize_type_reordering proc~initialize_type_reordering->interface~create_inverse_permutation proc~initialize_type_reordering->interface~rcm_reorder_method proc~initialize_type_reordering->interface~cm_reorder_method proc~inout_read_basic_parameters inout_read_basic_parameters proc~inout_read_basic_parameters->proc~read_parameters_materials interface~initialize_input_type_output_overall type_output_overall%initialize_input_type_output_overall interface~initialize_input_type_output_overall->proc~initialize_input_type_output_overall interface~inout_read_basic_parameters type_input%inout_read_basic_parameters interface~inout_read_basic_parameters->proc~inout_read_basic_parameters proc~initialize_type_controls type_controls%initialize_type_controls proc~initialize_type_controls->proc~get_active_region_info proc~initialize_type_input type_input%initialize_type_input proc~initialize_type_input->interface~inout_read_geometry proc~initialize_type_input->interface~inout_read_basic_parameters proc~initialize_type_material_manager type_material_manager%initialize_type_material_manager proc~initialize_type_material_manager->proc~get_active_region_info proc~initialize_type_output type_output%initialize_type_output proc~initialize_type_output->interface~initialize_type_output_observation proc~initialize_properties_manager type_properties_manager%initialize_properties_manager proc~initialize_properties_manager->proc~initialize_type_material_manager

Source Code

    subroutine allocate_rank1_real128(array, length, bounds)
        implicit none
        real(real128), intent(inout), allocatable :: array(:)
        integer(int32), intent(in), optional :: length
        integer(int32), intent(in), optional :: bounds(:)
        integer(int32) :: stat
        logical :: length_present, bounds_present
        integer(int64) :: requested_size
        integer(int32) :: first, last

        length_present = present(length)
        bounds_present = present(bounds)

        ! --- Argument validation ---
#ifdef USE_DEBUG
        if (length_present .and. bounds_present) call error_message(956)
        if (.not. length_present .and. .not. bounds_present) call error_message(957)
        if (bounds_present) then
            if (size(bounds) /= 2) call error_message(958)
        end if
#endif

        ! --- Main logic ---
        if (allocated(array)) call error_message(951)

        if (length_present) then
            ! Allocate by length
#ifdef USE_DEBUG
            if (length <= 0) call error_message(952)
            if (int(length, kind=int64) > huge(0_int32)) call error_message(953)
#endif
            allocate (array(length), stat=stat)
        else if (bounds_present) then
            ! Allocate by bounds
            first = bounds(1)
            last = bounds(2)

#ifdef USE_DEBUG
            if (first > last) call error_message(954)

            requested_size = int(last, kind=int64) - int(first, kind=int64) + 1_int64
            if (requested_size > huge(0_int64) / 4) call error_message(953)
#endif
            allocate (array(first:last), stat=stat)
        end if

        if (stat /= 0) call error_message(955)

    end subroutine allocate_rank1_real128