operations after constraint deletion.
Note
This routine was formerly called plrmf0.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(psqp_class), | intent(inout) | :: | me | |||
| integer | :: | nf |
declared number of variables. |
|||
| integer | :: | nc |
number of constraints. |
|||
| integer | :: | ix(*) |
ix(nf) vector containing types of bounds. |
|||
| integer | :: | ia(*) |
ia(na) vector containing types of deviations. |
|||
| integer | :: | iaa(*) |
iaa(nf+1) vector containing indices of active functions. |
|||
| real(kind=wp) | :: | ar(*) |
ar((nf+1)*(nf+2)/2) triangular decomposition of kernel of the orthogonal projection. |
|||
| integer | :: | ic(*) |
ic(nc) vector containing types of constraints. |
|||
| real(kind=wp) | :: | s(*) |
s(nf+1) auxiliary vector. |
|||
| integer | :: | n |
actual number of variables. |
|||
| integer | :: | iold |
index of the old active constraint. |
|||
| integer | :: | krem |
auxiliary variable. |
|||
| integer | :: | ier |
error indicator. |
subroutine ops_after_constr_deletion(me, nf, nc, ix, ia, iaa, ar, & ic, s, n, iold, krem, ier) class(psqp_class), intent(inout) :: me integer :: ier !! error indicator. integer :: iold !! index of the old active constraint. integer :: krem !! auxiliary variable. integer :: n !! actual number of variables. integer :: nc !! number of constraints. integer :: nf !! declared number of variables. real(wp) :: ar(*) !! ar((nf+1)*(nf+2)/2) triangular decomposition !! of kernel of the orthogonal projection. real(wp) :: s(*) !! s(nf+1) auxiliary vector. integer :: ia(*) !! ia(na) vector containing types of deviations. integer :: iaa(*) !! iaa(nf+1) vector containing indices of active !! functions. integer :: ic(*) !! ic(nc) vector containing types of constraints. integer :: ix(*) !! ix(nf) vector containing types of bounds. integer :: l call update_tri_decomp_orthogonal(nf, iaa, ar, s, n, iold, krem, ier) n = n + 1 me%nrem = me%nrem + 1 l = iaa(nf - n + 1) if (l > nc) then l = l - nc ia(l) = -ia(l) elseif (l > 0) then ic(l) = -ic(l) else l = -l ix(l) = -ix(l) end if end subroutine ops_after_constr_deletion