C/********************************************************************* C* bwrm98.for * C* Interface program between my bwrm-libraly and PROPATH. #2 * C* May, 1997 S.MOMOKI * C*********************************************************************/ C C/******************************************************************** C IPHASE( ZPHASE) C The Combination of MSC-7 and MS-Fortran5.1 dose not work properly C for integer function written in C. Therefore ZPHASE which return C samevalue as IPHASE in real type, is written in C. C IPHASE calls ZPHASE and return 'phase' in propery data-type integer. C********************************************************************/ integer function IPHASE(T,P,Z) real ZPHASE phase = ZPHASE(T, P, Z) if (phase .eq. 1.0) IPHASE = 1 if (phase .eq. 2.0) IPHASE = 2 if (phase .eq. 3.0) IPHASE = 1 if (phase .eq. 4.0) IPHASE = 1 if (phase .le. -1e+10) IPHASE = -1 if (phase .le. -1e+20) IPHASE = -2 end C C/******************************************************************** C identm C********************************************************************/ character*40 function IDENTM(I,A) character*1 A if (A .eq. 'C') then IDENTM = 'UNKNOWN(USER DEFINED SUBSTANCE)' endif if (A .eq. 'S') then IDENTM = 'USER DEFINED SUBSTANCE' endif if (A .eq. 'V') then IDENTM = '12.1' endif end C/******************************************************************** C f77prt01 and f77prt02 C These subroutines output error message onto standard output device. C Why are they written in FORTRAN ? C Because it is impossible to use printf() in C-program under the C MSC-7 and MS-Fortran5.1 environment. C********************************************************************/ subroutine f77prt01(CF, CV, V) character*10 CF character*10 CV real V write(*,1000) CF, CV, V 1000 format('*** OUT OF RANGE AT ', A10, '(', A5, '=', E10.2, ') ***') end C subroutine f77prt02(CV) character*10 CV write(*,1001) CV 1001 format('*** NO CONVERGENCE AT ', A10, ' ****') end C/************************************************************** C CRPM and FCM C It is too difficult for me to call VC++ function with C charater-array-arguments from MS-Fortran PWB. C**************************************************************/ real function CRPM(I, A) character*1 A character*10 CF character*10 CV integer I, IA IA = 0 if (A .eq. 'T') IA = 1 if (A .eq. 'P') IA = 2 if (A .eq. 'V') IA = 3 if (A .eq. 'H') IA = 4 if (A .eq. 'S') IA = 5 if ((1 .le. IA) .and. (IA .le. 5)) then CRPM = CRPM999(I,IA) else CF='CRPM' CV='A' call f77prt01(CF, CV, -1.0) CRPM = -1e+10 endif end C real function FCM(I, A) character*1 A integer I, IA character*10 CF character*10 CV IA = 0 if (A .eq. 'T') IA = 1 if (A .eq. 'P') IA = 2 if (A .eq. 'V') IA = 3 if (A .eq. 'R') IA = 4 if (A .eq. 'M') IA = 5 if (A .eq. 'E') IA = 6 if (1 .le. IA .and. IA .le. 6) then FCM = FCM999(I, IA) else CF='FCM' CV='A' call f77prt01(CF, CV, -1.0) FCM = -1e+10 endif end