estimate_max_coo_size Function

private function estimate_max_coo_size(computation_dimension, sides, elements) result(max_size)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: computation_dimension
class(holder_sides), intent(in) :: sides(:)
class(holder_elements), intent(in) :: elements(:)

Return Value integer(kind=int32)


Calls

proc~~estimate_max_coo_size~~CallsGraph proc~estimate_max_coo_size estimate_max_coo_size proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~estimate_max_coo_size->proc~get_num_nodes~3

Called by

proc~~estimate_max_coo_size~~CalledByGraph proc~estimate_max_coo_size estimate_max_coo_size proc~initialize_hybrid_from_mesh type_node_adjacency%initialize_hybrid_from_mesh proc~initialize_hybrid_from_mesh->proc~estimate_max_coo_size proc~initialize_type_domain type_domain%initialize_type_domain proc~initialize_type_domain->proc~initialize_hybrid_from_mesh

Source Code

    function estimate_max_coo_size(computation_dimension, sides, elements) result(max_size)
        implicit none
        integer(int32), intent(in) :: computation_dimension
        class(holder_sides), intent(in) :: sides(:)
        class(holder_elements), intent(in) :: elements(:)
        integer(int32) :: max_size
        integer(int32) :: i

        max_size = 0

        if (computation_dimension >= 2) then
            !$omp parallel do reduction(+:max_size) private(i)
            do i = 1, size(elements)
                max_size = max_size + elements(i)%e%get_num_nodes()**2
            end do
            !$omp end parallel do
        end if

        if (computation_dimension >= 1) then
            !$omp parallel do reduction(+:max_size) private(i)
            do i = 1, size(sides)
                max_size = max_size + sides(i)%s%get_num_nodes()**2
            end do
            !$omp end parallel do
        end if
    end function estimate_max_coo_size