HFUN1P Subroutine

subroutine HFUN1P(QDG, LAMBDA, X, PDG, CL, COEF, RHO, DRHOX, DRHOL, XDGM1, XDG, G, DG, PXDGM1, PXDG, F, DF, XX, TRM, DTRM, CLX, DXNP1, N, MAXT, IDEG, NUMT, KDEG)

Uses

  • proc~~hfun1p~~UsesGraph proc~hfun1p HFUN1P module~real_precision REAL_PRECISION proc~hfun1p->module~real_precision

Arguments

Type IntentOptional Attributes Name
real(kind=R8), intent(in) :: QDG(2,N)
real(kind=R8), intent(in) :: LAMBDA
real(kind=R8), intent(in) :: X(2,N)
real(kind=R8), intent(in) :: PDG(2,N)
real(kind=R8), intent(in) :: CL(2,N+1)
real(kind=R8), intent(in) :: COEF(N,MAXT)
real(kind=R8), intent(out) :: RHO(2*N)
real(kind=R8), intent(out) :: DRHOX(2*N,2*N)
real(kind=R8), intent(out) :: DRHOL(2*N)
real(kind=R8), intent(inout) :: XDGM1(2,N)
real(kind=R8), intent(inout) :: XDG(2,N)
real(kind=R8), intent(inout) :: G(2,N)
real(kind=R8), intent(inout) :: DG(2,N)
real(kind=R8), intent(inout) :: PXDGM1(2,N)
real(kind=R8), intent(inout) :: PXDG(2,N)
real(kind=R8), intent(inout) :: F(2,N)
real(kind=R8), intent(inout) :: DF(2,N,N+1)
real(kind=R8), intent(inout) :: XX(2,N,N+1,MAXT)
real(kind=R8), intent(inout) :: TRM(2,N,MAXT)
real(kind=R8), intent(inout) :: DTRM(2,N,N+1,MAXT)
real(kind=R8), intent(inout) :: CLX(2,N)
real(kind=R8), intent(inout) :: DXNP1(2,N)
integer, intent(in) :: N
integer, intent(in) :: MAXT
integer, intent(in) :: IDEG(N)
integer, intent(in) :: NUMT(N)
integer, intent(in) :: KDEG(N,N+1,MAXT)

Calls

proc~~hfun1p~~CallsGraph proc~hfun1p HFUN1P ffunp ffunp proc~hfun1p->ffunp gfunp gfunp proc~hfun1p->gfunp

Variables

Type Visibility Attributes Name Initial
integer, public :: J
integer, public :: J2
integer, public :: J2M1
integer, public :: K
integer, public :: K2
integer, public :: K2M1
real(kind=R8), public :: ONEML

Source Code

      SUBROUTINE HFUN1P(QDG,LAMBDA,X,
     & PDG,CL,COEF,RHO,
     & DRHOX,DRHOL,XDGM1,XDG,
     & G,DG,PXDGM1,PXDG,
     & F,DF,XX,TRM,
     & DTRM,CLX,DXNP1,
     & N,MAXT,IDEG,
     & NUMT,KDEG)
C
C  HFUN1P  EVALUATES THE CONTINUATION EQUATION "RHO".
C
C  NOTE THAT:
C    DRHOX IS THE "REALIFICATION" OF DCRHOX, WHERE
C    DCRHOX DENOTES THE (COMPLEX) PARTIAL
C    DERIVATIVE MATRIX OF THE CONTINUATION SYSTEM
C    WITH RESPECT TO X,  AND
C    DRHOL IS THE "REALIFICATION" OF DCRHOL, WHERE
C    DCRHOL DENOTES THE (COMPLEX) PARTIAL
C    DERIVATIVE MATRIX OF THE CONTINUATION SYSTEM
C    WITH RESPECT TO LAMBDA. THUS
C      DRHOX(2J-1,2K-1) = DCRHOX(1,J,K)
C      DRHOX(2J  ,2K  ) = DCRHOX(1,J,K)
C      DRHOX(2J-1,2K  ) =-DCRHOX(2,J,K)
C      DRHOX(2J  ,2K-1) = DCRHOX(2,J,K)
C      DRHOL(2J-1,N2P1) = DCRHOL(1,J)
C      DRHOL(2J  ,N2P1) = DCRHOL(2,J)
C       RHO(2J-1)      = CRHO(1,J)
C       RHO(2J  )      = CRHO(2,J)
C    WHERE CRHO DENOTES THE (COMPLEX) CONTINUATION SYSTEM,
C    THE INITIAL "1" OR "2" DENOTES REAL OR IMAGINARY PARTS,
C    RESPECTIVELY, "J" INDEXES THE EQUATION, "K" INDEXES THE PARTIAL
C    DERIVATIVE, AND NEITHER DCRHOX NOR DCRHOL ARE PROGRAM VARIABLES.
C
C  ON INPUT:
C
C    QDG  IS THE "RANDOM" PARAMETER "A".
C
C    LAMBDA  IS THE CONTINUATION PARAMETER.
C
C    X    IS THE INDEPENDENT VARIABLE.
C
C    PDG  IS ONE OF THE PARAMETERS THAT DEFINES G (SEE SUBROUTINE
C         GFUNP).
C
C    CL   IS ONE OF THE PARAMETERS THAT DEFINES F (SEE SUBROUTINE
C         FFUNP).
C
C    COEF  IS ONE OF THE PARAMETERS THAT DEFINES F (SEE SUBROUTINE
C         FFUNP).
C
C  ON OUTPUT:
C
C    RHO    IS THE HOMOTOPY.
C
C    DRHOX  CONTAINS THE PARTIAL DERIVATIVES OF RHO WITH RESPECT
C         TO X.
C
C    DRHOL  CONTAINS THE PARTIAL DERIVATIVES OF RHO WITH RESPECT
C         TO LAMBDA.
C
C  THE FOLLOWING ARE VARIABLES WHOSE WORKSPACE IS PASSED FROM HFUNP:
C    XDGM1
C    XDG
C    G
C    DG
C    PXDGM1
C    PXDG
C    F
C    DF
C    XX
C    TRM
C    DTRM
C    CLX
C    DXNP1
C    N
C    MAXT
C    IDEG
C    NUMT
C    KDEG
C
C  OTHER VARIABLES:
C    ONEML
C
C  SUBROUTINES:  GFUNP, FFUNP.
C
      USE REAL_PRECISION
C DECLARATION OF INPUT, WORKSPACE, AND OUTPUT:
      INTEGER, INTENT(IN):: N,MAXT,IDEG(N),NUMT(N),KDEG(N,N+1,MAXT)
      REAL (KIND=R8), INTENT(IN):: QDG(2,N),LAMBDA,X(2,N),
     &  PDG(2,N),CL(2,N+1),COEF(N,MAXT)
      REAL (KIND=R8), INTENT(OUT):: RHO(2*N),DRHOX(2*N,2*N),DRHOL(2*N)
      REAL (KIND=R8), INTENT(IN OUT):: XDGM1(2,N),XDG(2,N),
     &  G(2,N),DG(2,N),PXDGM1(2,N),PXDG(2,N),
     &  F(2,N), DF(2,N,N+1),XX(2,N,N+1,MAXT),TRM(2,N,MAXT),
     &  DTRM(2,N,N+1,MAXT),CLX(2,N),DXNP1(2,N)
C
C DECLARATION OF LOCAL VARIABLES:
      INTEGER:: J,J2,J2M1,K,K2,K2M1
      REAL (KIND=R8):: ONEML
C
      CALL GFUNP(N,IDEG,PDG,QDG,X,XDGM1,XDG,PXDGM1,PXDG,G,DG)
      CALL FFUNP(N,NUMT,MAXT,KDEG,COEF,CL,X,XX,TRM,DTRM,CLX,DXNP1,F,DF)
      ONEML=1.0 - LAMBDA
      DO J=1,N
          J2=2*J
          J2M1=J2-1
          DO K=1,N
              K2=2*K
              K2M1=K2-1
              DRHOX(J2M1,K2M1)= LAMBDA*DF(1,J,K)
              DRHOX(J2  ,K2  )= DRHOX(J2M1,K2M1)
              DRHOX(J2  ,K2M1)= LAMBDA*DF(2,J,K)
              DRHOX(J2M1,K2  )=-DRHOX(J2  ,K2M1)
          END DO
          DRHOX(J2M1,J2M1)= DRHOX(J2M1,J2M1) + ONEML*DG(1,J)
          DRHOX(J2  ,J2  )= DRHOX(J2M1,J2M1)
          DRHOX(J2  ,J2M1)= DRHOX(J2  ,J2M1) + ONEML*DG(2,J)
          DRHOX(J2M1,J2  )=-DRHOX(J2  ,J2M1)
          DRHOL(J2M1)     =   F(1,J)      -        G(1,J)
          DRHOL(J2)       =   F(2,J)      -        G(2,J)
          RHO(J2M1)      = LAMBDA*F(1,J) + ONEML* G(1,J)
          RHO(J2  )      = LAMBDA*F(2,J) + ONEML* G(2,J)
      END DO
      RETURN
      END SUBROUTINE HFUN1P