interpol.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac2d\interpol.f
00002 !
00059                      SUBROUTINE INTERPOL
00060 !                    *******************
00061 !
00062      &(RO,R02,R03,JCOUT1,JCOUT2,JCOUT3)
00063 !
00064 !***********************************************************************
00065 ! TELEMAC2D   V6P1                                   21/08/2010
00066 !***********************************************************************
00067 !
00068 !
00069 !
00070 !
00071 !
00072 !
00073 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00074 !| JCOUT1         |-->| J(RO)
00075 !| JCOUT2         |-->| COST FUNCTION AT R02
00076 !| JCOUT3         |-->| COST FUNCTION AT R03
00077 !| R02            |-->| COEFFICIENT CORRESPONDING TO JCOUT2
00078 !| R03            |-->| COEFFICIENT CORRESPONDING TO JCOUT3
00079 !| RO             |<--| COEFFICIENT OF DESCENT
00080 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00081 !
00082       IMPLICIT NONE
00083       INTEGER LNG,LU
00084       COMMON/INFO/LNG,LU
00085 !
00086 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00087 !
00088       DOUBLE PRECISION , INTENT(IN)    :: R02,R03,JCOUT1,JCOUT2,JCOUT3
00089       DOUBLE PRECISION , INTENT(INOUT) :: RO
00090 !
00091 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00092 !
00093       DOUBLE PRECISION COEFA,COEFB
00094       DOUBLE PRECISION ROMAX
00095 !
00096       INTRINSIC ABS
00097 !
00098 !-----------------------------------------------------------------------
00099 !
00100       COEFA = ((JCOUT1*(R02-R03))+(R03*JCOUT2)-(JCOUT3*R02))/(R02*R03
00101      &     *(R02-R03))
00102 !
00103       COEFB = ((-JCOUT1*((R02*R02)-(R03*R03)))-(JCOUT2*R03*R03)
00104      &     + (JCOUT3*R02*R02))/(R02*R03*(R02-R03))
00105 !
00106       IF(COEFA.LE.0.D0) THEN
00107         WRITE(LU,*) 'INTERPOL : COEFFICIENT A LESS THAN ZERO:',COEFA
00108         CALL PLANTE(1)
00109         STOP
00110       ENDIF
00111 !
00112       RO = - COEFB / (2.D0 * COEFA)
00113 !
00114 !     CAPS THE VALUE OF RO :
00115 !
00116       IF(ABS(R02).GE.ABS(R03)) THEN
00117         ROMAX = 2.D0*R02
00118       ELSEIF(ABS(R03).GE.ABS(R02)) THEN
00119         ROMAX = 2.D0*R03
00120       ENDIF
00121 !
00122       IF(ABS(RO).GT.ABS(ROMAX)) THEN
00123         WRITE(LU,*) 'INTERPOL : LIMIT VALUE OF RHO'
00124         RO = ROMAX
00125       ENDIF
00126 !
00127 !-----------------------------------------------------------------------
00128 !
00129       RETURN
00130       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0