assume all elements of Jacobian are non-zero.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(numdiff_type), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
vector of variables (size |
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