SUBROUTINE TRMDRT(ID,T,P,HEATCP,DLRDLT,GRDADB,RHO) C ================================================== C C Thermodynamic derivatives - based on statew equation and entropy C tables C C Input: T - temperature C P - gas pressure C C Output: HEATCP - specific heat at constant pressure C DLRDLT - d(ln rho)/d(ln T) C GRDADB - adiabatic gradient d(ln T)/d(ln P)_ad C etdrt C INCLUDE 'IMPLIC.FOR' INCLUDE 'BASICS.FOR' COMMON/CC/DPDR,DPDT,DSDT,DSDR,CV,S,GAMMA COMMON/CONVOUT/CFLX(MDEPTH),VELCON(MDEPTH),GRADAD(MDEPTH), & ENT(MDEPTH) C parameter (RCON=8.31434E7) parameter(wmol0=1.67333E-24/2.3) common/tdedge/redge,pedge(100),sedge(100),cvedge(100), & cpedge(100),gammaedge(100),tedge(100) common/tdflag/JON C C numerical evaluation of thermodynamic derivatives C rho=rhoeos(t,p) drho=0.01*rho dt=0.01*t call prsent(rho,t,p0,s0) call prsent(rho+drho,t,p1,s1) call prsent(rho-drho,t,p2,s2) call prsent(rho,t+dt,p3,s3) call prsent(rho,t-dt,p4,s4) dpdr=(p1-p2)/(2.*drho) dpdt=(p3-p4)/(2.*dt) dsdr=(s1-s2)/(2.*drho)*rcon dsdt=(s3-s4)/(2.*dt)*rcon DEN=DPDR*DSDT-DPDT*DSDR c if(jon .eq. 0) then HEATCV=T*DSDT HEATCP=T*DEN/DPDR DQ=DSDT*P/(DEN*RHO) GAMMA=1.d0/DQ DLRDLT = -RHO*DPDR/(T*DPDT) DLRDLT = 1.D0/DLRDLT GRDADB = -P/(HEATCP*RHO*T)*DLRDLT TDPT=T*DPDT else if(jon .ne. 0) then HEATCV = cvedge(JON) HEATCP = cpedge(JON) DLRDLT = -1.d0 GRDADB = -P/(HEATCP*RHO*T)*DLRDLT ! 0.4d0 GAMMA = gammaedge(JON) endif C grdadb=p/t*(dsdr/(dsdr*dpdt-dsdt*dpdr)) GRADAD(ID) = GRDADB ENT(ID) = S0 C RETURN END