FORTRAN code for the Kolafa and Nezbeda equation of state
Jump to navigation
Jump to search
The following are the FORTRAN source code functions (without a "main" program) for the Kolafa and Nezbeda equation of state for the Lennard-Jones model
c===================================================================
C Package supplying the thermodynamic properties of the
C LENNARD-JONES fluid
c
c J. Kolafa, I. Nezbeda, Fluid Phase Equil. 100 (1994), 1
c
c ALJ(T,rho)...Helmholtz free energy (including the ideal term)
c PLJ(T,rho)...Pressure
c ULJ(T,rho)...Internal energy
c===================================================================
DOUBLE PRECISION FUNCTION ALJ(T,rho)
C Helmholtz free energy (including the ideal term)
c
implicit double precision (a-h,o-z)
data pi /3.141592654d0/
eta = PI/6.*rho * (dC(T))**3
ALJ = (dlog(rho)+betaAHS(eta)
+ +rho*BC(T)/exp(gammaBH(T)*rho**2))*T
+ +DALJ(T,rho)
RETURN
END
C/* Helmholtz free energy (without ideal term) */
DOUBLE PRECISION FUNCTION ALJres(T,rho)
implicit double precision (a-h,o-z)
data pi /3.141592654d0/
eta = PI/6. *rho*(dC(T))**3
ALJres = (betaAHS(eta)
+ +rho*BC(T)/exp(gammaBH(T)*rho**2))*T
+ +DALJ(T,rho)
RETURN
END
C/* pressure */
DOUBLE PRECISION FUNCTION PLJ(T,rho)
implicit double precision (a-h,o-z)
data pi /3.141592654d0/
eta=PI/6. *rho*(dC(T))**3
sum=((2.01546797*2+rho*(
+ (-28.17881636)*3+rho*(
+ 28.28313847*4+rho*
+ (-10.42402873)*5)))
+ +((-19.58371655)*2+rho*(
+ +75.62340289*3+rho*(
+ (-120.70586598)*4+rho*(
+ +93.92740328*5+rho*
+ (-27.37737354)*6))))/dsqrt(T)
+ + ((29.34470520*2+rho*(
+ (-112.35356937)*3+rho*(
+ +170.64908980*4+rho*(
+ (-123.06669187)*5+rho*
+ 34.42288969*6))))+
+ ((-13.37031968)*2+rho*(
+ 65.38059570*3+rho*(
+ (-115.09233113)*4+rho*(
+ 88.91973082*5+rho*
+ (-25.62099890)*6))))/T)/T)*rho**2
PLJ = ((zHS(eta)
+ + BC(T)/exp(gammaBH(T)*rho**2)
+ *rho*(1-2*gammaBH(T)*rho**2))*T
+ +sum )*rho
RETURN
END
C/* internal energy */
DOUBLE PRECISION FUNCTION ULJ( T, rho)
implicit double precision (a-h,o-z)
data pi /3.141592654d0/
dBHdT=dCdT(T)
dB2BHdT=BCdT(T)
d=dC(T)
eta=PI/6. *rho*d**3
sum= ((2.01546797+rho*(
+ (-28.17881636)+rho*(
+ +28.28313847+rho*
+ (-10.42402873))))
+ + (-19.58371655*1.5+rho*(
+ 75.62340289*1.5+rho*(
+ (-120.70586598)*1.5+rho*(
+ 93.92740328*1.5+rho*
+ (-27.37737354)*1.5))))/dsqrt(T)
+ + ((29.34470520*2+rho*(
+ -112.35356937*2+rho*(
+ 170.64908980*2+rho*(
+ -123.06669187*2+rho*
+ 34.42288969*2)))) +
+ (-13.37031968*3+rho*(
+ 65.38059570*3+rho*(
+ -115.09233113*3+rho*(
+ 88.91973082*3+rho*
+ (-25.62099890)*3))))/T)/T) *rho*rho
ULJ = 3*(zHS(eta)-1)*dBHdT/d
+ +rho*dB2BHdT/exp(gammaBH(T)*rho**2) +sum
RETURN
END
DOUBLE PRECISION FUNCTION zHS(eta)
implicit double precision (a-h,o-z)
zHS = (1+eta*(1+eta*(1-eta/1.5*(1+eta)))) / (1-eta)**3
RETURN
END
DOUBLE PRECISION FUNCTION betaAHS( eta )
implicit double precision (a-h,o-z)
betaAHS = dlog(1-eta)/0.6
+ + eta*( (4.0/6*eta-33.0/6)*eta+34.0/6 ) /(1.-eta)**2
RETURN
END
C /* hBH diameter */
DOUBLE PRECISION FUNCTION dLJ(T)
implicit double precision (a-h,o-z)
DOUBLE PRECISION IST
isT=1/dsqrt(T)
dLJ = ((( 0.011117524191338 *isT-0.076383859168060)
+ *isT)*isT+0.000693129033539)/isT+1.080142247540047
+ +0.127841935018828*dlog(isT)
RETURN
END
DOUBLE PRECISION FUNCTION dC(T)
implicit double precision (a-h,o-z)
sT=dsqrt(T)
dC = -0.063920968*dlog(T)+0.011117524/T
+ -0.076383859/sT+1.080142248+0.000693129*sT
RETURN
END
DOUBLE PRECISION FUNCTION dCdT( T)
implicit double precision (a-h,o-z)
sT=dsqrt(T)
dCdT = 0.063920968*T+0.011117524+(-0.5*0.076383859
+ -0.5*0.000693129*T)*sT
RETURN
END
DOUBLE PRECISION FUNCTION BC( T)
implicit double precision (a-h,o-z)
DOUBLE PRECISION isT
isT=1/dsqrt(T)
BC = (((((-0.58544978*isT+0.43102052)*isT
+ +.87361369)*isT-4.13749995)*isT+2.90616279)*isT
+ -7.02181962)/T+0.02459877
RETURN
END
DOUBLE PRECISION FUNCTION BCdT( T)
implicit double precision (a-h,o-z)
DOUBLE PRECISION iST
isT=1/dsqrt(T)
BCdT = ((((-0.58544978*3.5*isT+0.43102052*3)*isT
+ +0.87361369*2.5)*isT-4.13749995*2)*isT
+ +2.90616279*1.5)*isT-7.02181962
RETURN
END
DOUBLE PRECISION FUNCTION gammaBH(X)
implicit double precision (a-h,o-z)
gammaBH=1.92907278
RETURN
END
DOUBLE PRECISION FUNCTION DALJ(T,rho)
implicit double precision (a-h,o-z)
DALJ = ((+2.01546797+rho*(-28.17881636
+ +rho*(+28.28313847+rho*(-10.42402873))))
+ +(-19.58371655+rho*(75.62340289+rho*((-120.70586598)
+ +rho*(93.92740328+rho*(-27.37737354)))))/dsqrt(T)
+ + ( (29.34470520+rho*((-112.35356937)
+ +rho*(+170.64908980+rho*((-123.06669187)
+ +rho*34.42288969))))
+ +(-13.37031968+rho*(65.38059570+
+ rho*((-115.09233113)+rho*(88.91973082
+ +rho* (-25.62099890)))))/T)/T) *rho*rho
RETURN
END
Reference[edit]
| This page contains computer source code. If you intend to compile and use this code you must check for yourself the validity of the code. Please read the SklogWiki disclaimer. |