Jacobian partitioning using the DSM algorithm.
The purpose of dsm
is to determine an optimal or near-
optimal consistent partition of the columns of a sparse
m
by n
matrix a
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | m |
number of rows of |
||
integer, | intent(in) | :: | n |
number of columns of |
||
integer, | intent(in) | :: | npairs |
number of ( |
||
integer, | intent(inout), | dimension(npairs) | :: | indrow |
an integer array of length |
|
integer, | intent(inout), | dimension(npairs) | :: | indcol |
an integer array of length |
|
integer, | intent(out), | dimension(n) | :: | ngrp |
specifies the partition of the columns of |
|
integer, | intent(out) | :: | maxgrp |
the number of groups in the partition
of the columns of |
||
integer, | intent(out) | :: | mingrp |
a lower bound for the number of groups
in any consistent partition of the
columns of |
||
integer, | intent(out) | :: | info |
for normal termination |
||
integer, | intent(out), | dimension(m+1) | :: | ipntr |
an integer output array of length |
|
integer, | intent(out), | dimension(n+1) | :: | jpntr |
jpntr is an integer output array of length n + 1 which
specifies the locations of the row indices in indrow.
the row indices for column j are
|
Given the sparsity pattern of an m
by n
matrix a
,
this subroutine determines the degree sequence for
the intersection graph of the columns of a
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n |
a positive integer input variable set to the number
of columns of |
||
integer, | intent(in), | dimension(*) | :: | indrow |
an integer input array which contains the row
indices for the non-zeroes in the matrix |
|
integer, | intent(in), | dimension(n+1) | :: | jpntr |
an integer input array of length |
|
integer, | intent(in), | dimension(*) | :: | indcol |
an integer input array which contains the
column indices for the non-zeroes in the matrix |
|
integer, | intent(in), | dimension(*) | :: | ipntr |
an integer input array of length |
|
integer, | intent(out), | dimension(n) | :: | ndeg |
an integer output array of length |
|
integer, | dimension(n) | :: | iwa |
an integer work array of length |
given the sparsity pattern of an m
by n
matrix a
, this
subroutine determines an incidence-degree ordering of the
columns of a
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | m |
a positive integer input variable set to the number
of rows of |
||
integer, | intent(in) | :: | n |
a positive integer input variable set to the number
of columns of |
||
integer, | intent(in), | dimension(*) | :: | Indrow |
an integer input array which contains the row
indices for the non-zeroes in the matrix |
|
integer, | intent(in), | dimension(n+1) | :: | Jpntr |
an integer input array of length |
|
integer, | intent(in), | dimension(*) | :: | Indcol |
an integer input array which contains the
column indices for the non-zeroes in the matrix |
|
integer, | intent(in), | dimension(m+1) | :: | Ipntr |
an integer input array of length |
|
integer, | intent(in), | dimension(n) | :: | Ndeg |
an integer input array of length |
|
integer, | intent(out), | dimension(n) | :: | List |
an integer output array of length |
|
integer, | intent(out) | :: | Maxclq |
an integer output variable set to the size of the largest clique found during the ordering. |
||
integer, | dimension(0:n-1) | :: | Iwa1 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa2 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa3 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa4 |
integer work array of length |
Given a sequence of integers, this subroutine groups together those indices with the same sequence value and, optionally, sorts the sequence into either ascending or descending order.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n |
a positive integer input variable. |
||
integer | :: | Nmax |
a positive integer input variable. |
|||
integer, | dimension(n) | :: | Num |
an input array of length |
||
integer | :: | Mode |
an integer input variable. the sequence |
|||
integer, | dimension(n) | :: | Index |
an integer output array of length |
||
integer, | dimension(0:Nmax) | :: | Last |
an integer output array of length |
||
integer, | dimension(n) | :: | Next |
an integer output array of length |
given the sparsity pattern of an m
by n
matrix a
, this
subroutine determines a consistent partition of the
columns of a
by a sequential algorithm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
a positive integer input variable set to the number
of columns of |
|||
integer, | dimension(*) | :: | Indrow |
an integer input array which contains the row
indices for the non-zeroes in the matrix |
||
integer, | dimension(n+1) | :: | Jpntr |
an integer input array of length |
||
integer, | dimension(*) | :: | Indcol |
an integer input array which contains the
column indices for the non-zeroes in the matrix |
||
integer, | dimension(*) | :: | Ipntr |
an integer input array of length |
||
integer, | dimension(n) | :: | List |
an integer input array of length |
||
integer, | dimension(n) | :: | Ngrp |
an integer output array of length |
||
integer | :: | Maxgrp |
an integer output variable which specifies the
number of groups in the partition of the columns of |
|||
integer, | dimension(n) | :: | Iwa |
an integer work array of length |
given a column-oriented definition of the sparsity pattern
of an m
by n
matrix a
, this subroutine determines a
row-oriented definition of the sparsity pattern of a
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | m |
a positive integer input variable set to the number
of rows of |
||
integer, | intent(in) | :: | n |
a positive integer input variable set to the number
of columns of |
||
integer, | dimension(*) | :: | Indrow |
an integer input array which contains the row
indices for the non-zeroes in the matrix |
||
integer, | dimension(n+1) | :: | Jpntr |
an integer input array of length |
||
integer, | dimension(*) | :: | Indcol |
an integer output array which contains the
column indices for the non-zeroes in the matrix |
||
integer, | dimension(m+1) | :: | Ipntr |
an integer output array of length |
||
integer, | dimension(m) | :: | Iwa |
an integer work array of length |
given the sparsity pattern of an m
by n
matrix a
, this
subroutine determines the smallest-last ordering of the
columns of a
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
a positive integer input variable set to the number
of columns of |
|||
integer, | dimension(*) | :: | Indrow |
an integer input array which contains the row
indices for the non-zeroes in the matrix |
||
integer, | dimension(n+1) | :: | Jpntr |
an integer input array of length |
||
integer, | dimension(*) | :: | Indcol |
an integer input array which contains the
column indices for the non-zeroes in the matrix |
||
integer, | dimension(*) | :: | Ipntr |
an integer input array of length |
||
integer, | dimension(n) | :: | Ndeg |
an integer input array of length |
||
integer, | dimension(n) | :: | List |
an integer output array of length |
||
integer | :: | Maxclq |
an integer output variable set to the size of the largest clique found during the ordering. |
|||
integer, | dimension(0:n-1) | :: | Iwa1 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa2 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa3 |
integer work array of length |
||
integer, | dimension(n) | :: | Iwa4 |
integer work array of length |
given the non-zero elements of an m
by n
matrix a
in
arbitrary order as specified by their row and column
indices, this subroutine permutes these elements so
that their column indices are in non-decreasing order.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
a positive integer input variable set to the number
of columns of |
|||
integer | :: | Nnz |
a positive integer input variable set to the number
of non-zero elements of |
|||
integer, | dimension(Nnz) | :: | Indrow |
an integer array of length |
||
integer, | dimension(Nnz) | :: | Indcol |
an integer array of length |
||
integer, | dimension(n+1) | :: | Jpntr |
an integer output array of length |
||
integer, | dimension(n) | :: | Iwa |
an integer work array of length |
Given a consistent partition of the columns of an m
by n
jacobian matrix into groups, this subroutine computes
approximations to those columns in a given group. the
approximations are stored into either a column-oriented
or a row-oriented pattern.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | m |
a positive integer input variable set to the number of rows of the jacobian matrix. |
||
integer, | intent(in) | :: | n |
a positive integer input variable set to the number of columns of the jacobian matrix. |
||
logical, | intent(in) | :: | Col |
a logical input variable. if |
||
integer, | dimension(*) | :: | Ind |
an integer input array which contains the row
indices for the non-zeroes in the jacobian matrix
if |
||
integer, | dimension(*) | :: | Npntr |
an integer input array which specifies the
locations of the row indices in |
||
integer, | dimension(n) | :: | Ngrp |
an integer input array of length |
||
integer | :: | Numgrp |
a positive integer input variable set to a group number in the partition. the columns of the jacobian matrix in this group are to be estimated on this call. |
|||
real(kind=wp), | dimension(n) | :: | d |
an input array of length |
||
real(kind=wp), | dimension(m) | :: | Fjacd |
an input array of length |
||
real(kind=wp), | dimension(*) | :: | Fjac |
an output array of length |