ops_after_constr_deletion Subroutine

private subroutine ops_after_constr_deletion(me, nf, nc, ix, ia, iaa, ar, ic, s, n, iold, krem, ier)

operations after constraint deletion.

Note

This routine was formerly called plrmf0.

Type Bound

psqp_class

Arguments

Type IntentOptional 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.


Calls

proc~~ops_after_constr_deletion~~CallsGraph proc~ops_after_constr_deletion psqp_class%ops_after_constr_deletion proc~update_tri_decomp_orthogonal update_tri_decomp_orthogonal proc~ops_after_constr_deletion->proc~update_tri_decomp_orthogonal proc~mxvcop mxvcop proc~update_tri_decomp_orthogonal->proc~mxvcop proc~mxvort mxvort proc~update_tri_decomp_orthogonal->proc~mxvort proc~mxvrot mxvrot proc~update_tri_decomp_orthogonal->proc~mxvrot proc~mxvset mxvset proc~update_tri_decomp_orthogonal->proc~mxvset

Called by

proc~~ops_after_constr_deletion~~CalledByGraph proc~ops_after_constr_deletion psqp_class%ops_after_constr_deletion proc~dual_range_space_quad_prog psqp_class%dual_range_space_quad_prog proc~dual_range_space_quad_prog->proc~ops_after_constr_deletion proc~psqp psqp_class%psqp proc~psqp->proc~dual_range_space_quad_prog proc~psqpn psqp_class%psqpn proc~psqpn->proc~psqp

Source Code

   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