123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- *DECK DBVDER
- SUBROUTINE DBVDER (X, Y, YP, G, IPAR)
- C***BEGIN PROLOGUE DBVDER
- C***SUBSIDIARY
- C***PURPOSE Subsidiary to DBVSUP
- C***LIBRARY SLATEC
- C***TYPE DOUBLE PRECISION (BVDER-S, DBVDER-D)
- C***AUTHOR Watts, H. A., (SNLA)
- C***DESCRIPTION
- C
- C **********************************************************************
- C NFC = Number of base solution vectors
- C
- C NCOMP = Number of components per solution vector
- C
- C 1 -- Nonzero particular solution
- C INHOMO =
- C 2 or 3 -- Zero particular solution
- C
- C 0 -- Inhomogeneous vector term G(X) identically zero
- C IGOFX =
- C 1 -- Inhomogeneous vector term G(X) not identically zero
- C
- C G = Inhomogeneous vector term G(X)
- C
- C XSAV = Previous value of X
- C
- C C = Normalization factor for the particular solution
- C
- C 0 ( if NEQIVP = 0 )
- C IVP =
- C Number of differential equations integrated due to
- C the original boundary value problem ( if NEQIVP .GT. 0 )
- C
- C NOFST - For problems with auxiliary initial value equations,
- C NOFST communicates to the routine DFMAT how to access
- C the dependent variables corresponding to this initial
- C value problem. For example, during any call to DFMAT,
- C the first dependent variable for the initial value
- C problem is in position Y(NOFST + 1).
- C See example in SAND77-1328.
- C **********************************************************************
- C
- C***SEE ALSO DBVSUP
- C***ROUTINES CALLED (NONE)
- C***COMMON BLOCKS DML8SZ, DMLIVP
- C***REVISION HISTORY (YYMMDD)
- C 750601 DATE WRITTEN
- C 890831 Modified array declarations. (WRB)
- C 890921 Realigned order of variables in certain COMMON blocks.
- C (WRB)
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C 900328 Added TYPE section. (WRB)
- C 910701 Corrected ROUTINES CALLED section. (WRB)
- C 910722 Updated AUTHOR section. (ALS)
- C 920618 Minor restructuring of code. (RWC, WRB)
- C***END PROLOGUE DBVDER
- INTEGER IGOFX, INHOMO, IPAR, IVP, J, K, L, NA, NCOMP, NFC, NOFST
- DOUBLE PRECISION C, G(*), X, XSAV, Y(*), YP(*)
- C
- C **********************************************************************
- C
- COMMON /DML8SZ/ C,XSAV,IGOFX,INHOMO,IVP,NCOMP,NFC
- C
- C **********************************************************************
- C The COMMON block below is used to communicate with the user
- C supplied subroutine DFMAT. The user should not alter this
- C COMMON block.
- C
- COMMON /DMLIVP/ NOFST
- C **********************************************************************
- C
- C***FIRST EXECUTABLE STATEMENT DBVDER
- IF (IVP .GT. 0) CALL DUIVP(X,Y(IVP+1),YP(IVP+1))
- NOFST = IVP
- NA = 1
- DO 10 K=1,NFC
- CALL DFMAT(X,Y(NA),YP(NA))
- NOFST = NOFST - NCOMP
- NA = NA + NCOMP
- 10 CONTINUE
- C
- IF (INHOMO .NE. 1) RETURN
- CALL DFMAT(X,Y(NA),YP(NA))
- C
- IF (IGOFX .EQ. 0) RETURN
- IF (X .NE. XSAV) THEN
- IF (IVP .EQ. 0) CALL DGVEC(X,G)
- IF (IVP .GT. 0) CALL DUVEC(X,Y(IVP+1),G)
- XSAV = X
- ENDIF
- C
- C If the user has chosen not to normalize the particular
- C solution, then C is defined in DBVPOR to be 1.0
- C
- C The following loop is just
- C CALL DAXPY (NCOMP, 1.0D0/C, G, 1, YP(NA), 1)
- C
- DO 20 J=1,NCOMP
- L = NA + J - 1
- YP(L) = YP(L) + G(J)/C
- 20 CONTINUE
- RETURN
- END
|