GFUNP Subroutine

subroutine GFUNP(N, IDEG, PDG, QDG, X, XDGM1, XDG, PXDGM1, PXDG, G, DG)

Uses

  • proc~~gfunp~~UsesGraph proc~gfunp GFUNP module~real_precision REAL_PRECISION proc~gfunp->module~real_precision

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: N
integer, intent(in) :: IDEG(N)
real(kind=R8), intent(in) :: PDG(2,N)
real(kind=R8), intent(in) :: QDG(2,N)
real(kind=R8), intent(in) :: X(2,N)
real(kind=R8), intent(inout) :: XDGM1(2,N)
real(kind=R8), intent(inout) :: XDG(2,N)
real(kind=R8), intent(inout) :: PXDGM1(2,N)
real(kind=R8), intent(inout) :: PXDG(2,N)
real(kind=R8), intent(out) :: G(2,N)
real(kind=R8), intent(out) :: DG(2,N)

Calls

proc~~gfunp~~CallsGraph proc~gfunp GFUNP none~mulp~2 MULP proc~gfunp->none~mulp~2 none~powp~2 POWP proc~gfunp->none~powp~2

Variables

Type Visibility Attributes Name Initial
integer, public :: I
integer, public :: J

Interfaces

interface

  • subroutine DIVP(XXXX, YYYY, ZZZZ, IERR)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=R8), intent(in), DIMENSION(2) :: XXXX
    real(kind=R8), intent(in), DIMENSION(2) :: YYYY
    real(kind=R8), intent(out), DIMENSION(2) :: ZZZZ
    integer, intent(out) :: IERR

interface

  • subroutine MULP(XXXX, YYYY, ZZZZ)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=R8), intent(in), DIMENSION(2) :: XXXX
    real(kind=R8), intent(in), DIMENSION(2) :: YYYY
    real(kind=R8), intent(out), DIMENSION(2) :: ZZZZ

interface

  • subroutine POWP(NNNN, XXXX, YYYY)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: NNNN
    real(kind=R8), intent(in), DIMENSION(2) :: XXXX
    real(kind=R8), intent(inout), DIMENSION(2) :: YYYY

Source Code

      SUBROUTINE GFUNP(N,IDEG,PDG,QDG,X,XDGM1,XDG,PXDGM1,PXDG,G,DG)
C
C GFUNP  EVALUATES THE START EQUATION "G".
C
C ON INPUT:
C
C N  IS THE NUMBER OF VARIABLES.
C
C IDEG(J)  IS THE DEGREE OF THE J-TH EQUATION.
C
C PDG(1,J), PDG(2,J)  ARE THE REAL AND IMAGINARY PARTS
C   OF THE POWERS OF P USED TO DEFINE G.
C
C QDG(1,J), QDG(2,J)  ARE THE REAL AND IMAGINARY PARTS
C   OF THE POWERS OF Q USED TO DEFINE G.
C
C X(1,J), X(2,J)  ARE THE REAL AND IMAGINARY PARTS OF THE
C   J-TH INDEPENDENT VARIABLE.
C
C XDGM1,XDG,PXDGM1,PXDG ARE WORKSPACE ARRAYS.
C
C ON OUTPUT:
C
C N,IDEG,PDG,QDG, AND X  ARE UNCHANGED. 
C
C G(1,J),G(2,J)  ARE THE REAL AND IMAGINARY PARTS OF THE
C   J-TH START EQUATION.
C
C DG(1,J),DG(2,J)  ARE THE REAL AND IMAGINARY PARTS OF THE
C   PARTIAL DERIVATIVES OF THE J-TH START EQUATION WITH RESPECT TO THE
C   J-TH INDEPENDENT VARIABLE.
C
C SUBROUTINES:  MULP, POWP.
C
      USE REAL_PRECISION
C
      INTERFACE
        SUBROUTINE DIVP(XXXX,YYYY,ZZZZ,IERR)
        USE REAL_PRECISION
        REAL (KIND=R8), DIMENSION(2), INTENT(IN):: XXXX,YYYY
        INTEGER, INTENT(OUT):: IERR
        REAL (KIND=R8), DIMENSION(2), INTENT(OUT):: ZZZZ
        END SUBROUTINE DIVP
        SUBROUTINE MULP(XXXX,YYYY,ZZZZ)
        USE REAL_PRECISION
        REAL (KIND=R8), DIMENSION(2), INTENT(IN):: XXXX,YYYY
        REAL (KIND=R8), DIMENSION(2), INTENT(OUT):: ZZZZ
        END SUBROUTINE MULP
        SUBROUTINE POWP(NNNN,XXXX,YYYY)
        USE REAL_PRECISION
        INTEGER, INTENT(IN):: NNNN
        REAL (KIND=R8), DIMENSION(2), INTENT(IN):: XXXX
        REAL (KIND=R8), DIMENSION(2), INTENT(IN OUT):: YYYY
        END SUBROUTINE POWP
      END INTERFACE
C
C DECLARATION OF INPUT AND OUTPUT:
      INTEGER, INTENT(IN):: N,IDEG(N)
      REAL (KIND=R8), INTENT(IN):: PDG(2,N),QDG(2,N),X(2,N)
      REAL (KIND=R8), INTENT(IN OUT):: XDGM1(2,N),XDG(2,N),PXDGM1(2,N),
     &  PXDG(2,N)
      REAL (KIND=R8), INTENT(OUT):: G(2,N),DG(2,N)
C
C DECLARATION LOCAL OF VARIABLES
      INTEGER:: I,J
C
C COMPUTE THE (IDEG-1)-TH AND IDEG-TH POWER OF X
      DO J=1,N
        CALL POWP(IDEG(J)-1,X(1,J), XDGM1(1,J))
        CALL MULP(X(1,J),XDGM1(1,J), XDG(1,J))
      END DO
C
C COMPUTE THE PRODUCT OF PDG AND XDGM1
      DO J=1,N
          CALL MULP( PDG(1,J), XDGM1(1,J), PXDGM1(1,J) )
      END DO
C
C COMPUTE THE PRODUCT OF PDG AND XDG
      DO J=1,N
          CALL MULP( PDG(1,J), XDG(1,J), PXDG(1,J) )
      END DO
      G = PXDG - QDG
      DO J=1,N
        DG(1:2,J)= IDEG(J)*PXDGM1(1:2,J)
      END DO
      RETURN
      END SUBROUTINE GFUNP