compute_sparsity_dense Subroutine

private subroutine compute_sparsity_dense(me, x)

assume all elements of Jacobian are non-zero.

Arguments

Type IntentOptional Attributes Name
class(numdiff_type), intent(inout) :: me
real(kind=wp), intent(in), dimension(:) :: x

vector of variables (size n)


Calls

proc~~compute_sparsity_dense~~CallsGraph proc~compute_sparsity_dense numerical_differentiation_module::compute_sparsity_dense proc~compute_indices numerical_differentiation_module::sparsity_pattern%compute_indices proc~compute_sparsity_dense->proc~compute_indices proc~destroy_sparsity_pattern numerical_differentiation_module::numdiff_type%destroy_sparsity_pattern proc~compute_sparsity_dense->proc~destroy_sparsity_pattern proc~generate_dense_sparsity_partition numerical_differentiation_module::numdiff_type%generate_dense_sparsity_partition proc~compute_sparsity_dense->proc~generate_dense_sparsity_partition proc~destroy_sparsity numerical_differentiation_module::sparsity_pattern%destroy_sparsity proc~destroy_sparsity_pattern->proc~destroy_sparsity

Source Code

    subroutine compute_sparsity_dense(me,x)

    implicit none

    class(numdiff_type),intent(inout) :: me
    real(wp),dimension(:),intent(in)  :: x   !! vector of variables (size `n`)

    integer :: i !! counter
    integer :: r !! row counter
    integer :: c !! column counter

    call me%destroy_sparsity_pattern()

    if (me%exception_raised) return ! check for exceptions

    me%sparsity%num_nonzero_elements = me%m * me%n
    allocate(me%sparsity%irow(me%sparsity%num_nonzero_elements))
    allocate(me%sparsity%icol(me%sparsity%num_nonzero_elements))

    call me%sparsity%compute_indices()

    ! create the dense matrix:
    i = 0
    do c = 1, me%n
        do r = 1, me%m
            i = i + 1
            me%sparsity%irow(i) = r
            me%sparsity%icol(i) = c
        end do
    end do

    ! No real need for this, since it can't be partitioned (all elements are true)
    if (me%partition_sparsity_pattern) call me%generate_dense_sparsity_partition()

    me%sparsity%sparsity_computed = .true.

    end subroutine compute_sparsity_dense