5 subroutine enthalpy_ig_qspr ( cpig, hig, sig )
12 real,
dimension(np),
intent(out) :: cpig
13 real,
dimension(np),
intent(out) :: hig
14 real,
dimension(np),
intent(out) ::
sig 20 real,
dimension(nc) :: cp_ig, h_ig, s_ig
21 real :: m_par, sig_par, eps_par
22 real :: dip_par, quad_par, eps_ab_par, kap_ab_par
23 real :: p1, p2, p3, p4, p5, p6
24 real :: c1a, c2a, c3a, c4a, c5a, c6a
25 real :: c1b, c2b, c3b, c4b, c5b, c6b
26 real :: a_coeff, b_coeff
27 real :: icpc300, icpc400
36 sig_par = parame(i, 2)
37 eps_par = parame(i, 3)
39 eps_ab_par = parame(i,14)
40 kap_ab_par = parame(i,13)
41 dip_par = parame(i, 6)
42 quad_par = parame(i, 7)
44 p1 = m_par * eps_par / t
45 p2 = m_par * sig_par**3
46 p3 = m_par * sig_par**3 * eps_par / t
47 p4 = m_par * sig_par**6 * kap_ab_par *( exp( eps_ab_par/t ) - 1.0 )
48 p5 = m_par * sig_par**3 * quad_par
69 c1b = -8171.26676935062
70 c2b = 1498.01217504596
71 c3b = -315.515836223387
74 c6b = -19389.5468655708
117 icpc300 = c1a*p1/300.0 + c2a*p2 + c3a*p3/300.0 + c4a*p4/300.0 + c5a*p5 + c6a*p6
119 icpc300 = icpc300 /1000.0
121 icpc400 = c1b*p1/400.0 + c2b*p2 + c3b*p3/400.0 + c4b*p4/400.0 + c5b*p5 + c6b*p6
123 icpc400 = icpc400 / 1000.0
129 b_coeff = ( icpc400 - icpc300 ) / ( t2 - t1 )
130 a_coeff = icpc300 - b_coeff * t1
135 cp_ig(i)= a_coeff + b_coeff * t
136 h_ig(i) = a_coeff * (t-t0) + 0.5 * b_coeff * ( t**2 - t0**2 )
137 s_ig(i) = a_coeff * log( t/t0 ) + b_coeff * (t-t0) - rgas * log( p/p0 )
146 hig(ph) = sum( xi( ph, 1:ncomp ) * h_ig( 1:ncomp ) )
147 cpig(ph) = sum( xi( ph, 1:ncomp ) *cp_ig( 1:ncomp ) )
151 if ( xi(ph,i) > 0.0 )
sig(ph) =
sig(ph) + xi(ph,i) * ( s_ig(i) - rgas * log( xi(ph,i) ) )
156 end subroutine enthalpy_ig_qspr
164 subroutine enthalpy_ig ( coef_ig, cpig, hig, sig )
171 real,
dimension(nc,5),
intent(in) :: coef_ig
172 real,
dimension(np),
intent(out) :: cpig
173 real,
dimension(np),
intent(out) :: hig
174 real,
dimension(np),
intent(out) ::
sig 178 real :: p0, t0, t02, t03, t04
179 real,
dimension(nc) :: cp_ig, h_ig, s_ig
190 cp_ig(i)= coef_ig(i,1) + coef_ig(i,2)*t + coef_ig(i,3)*t*t + coef_ig(i,4)*t**3
191 h_ig(i) = coef_ig(i,1)*(t-t0) + coef_ig(i,2)/2.0*(t*t-t02) &
192 + coef_ig(i,3)/3.0*(t**3-t03) + coef_ig(i,4)/4.0*(t**4 - t04)
193 s_ig(i) = coef_ig(i,1) * log( t/t0 ) + coef_ig(i,2) * (t-t0) &
194 + coef_ig(i,3)/2.0*(t*t-t02) + coef_ig(i,4)/3.0*(t**3-t03) - rgas * log( p/p0 )
200 hig(ph) = sum( xi( ph, 1:ncomp ) * h_ig( 1:ncomp ) )
201 cpig(ph) = sum( xi( ph, 1:ncomp ) *cp_ig( 1:ncomp ) )
204 if ( xi(ph,i) > 0.0 )
sig(ph) =
sig(ph) + xi(ph,i) * ( s_ig(i) - rgas * log( xi(ph,i) ) )
209 END SUBROUTINE enthalpy_ig
225 REAL :: zges, df_dt, dfdr, ddfdrdr
226 REAL :: cv_res, df_dt2, df_drdt
227 REAL :: fact, dist, t_tmp, rho_0
228 REAL :: fdr1, fdr2, fdr3, fdr4
233 REAL :: dhsdt(nc), dhsdt2(nc)
234 REAL :: z0, z1, z2, z3, z1tdt, z2tdt, z3tdt
235 REAL :: z1dt, z2dt, z3dt, zms, gii
236 REAL :: fhsdt, fhsdt2
237 REAL :: fchdt, fchdt2
238 REAL :: fdspdt, fdspdt2
239 REAL :: fhbdt, fhbdt2
240 REAL :: sumseg, i1, i2, i1dt, i2dt, i1dt2, i2dt2
241 REAL :: c1_con, c2_con, c3_con, c1_dt, c1_dt2
242 REAL :: z1tdt2, z2tdt2, z3tdt2
243 REAL :: z1dt2, z2dt2, z3dt2
245 INTEGER :: j, k, l, no, ass_cnt, max_eval
247 REAL :: dij, dijdt, dijdt2
248 REAL :: gij1dt, gij2dt, gij3dt
249 REAL :: gij1dt2, gij2dt2, gij3dt2
250 REAL,
DIMENSION(nc,nc) :: gijdt, gijdt2, kap_hb
251 REAL,
DIMENSION(nc,nc,nsite,nsite) :: ass_d_dt, ass_d_dt2, eps_hb, delta, deltadt, deltadt2
252 REAL,
DIMENSION(nc,nsite) :: mxdt, mxdt2, mx_itr, mx_itrdt, mx_itrdt2
253 REAL :: attenu, tol, suma, sumdt, sumdt2, err_sum
256 REAL :: fdddt, fdddt2
257 REAL,
DIMENSION(nc) :: my2dd, my0
258 REAL,
DIMENSION(nc,nc) :: idd2, idd2dt, idd2dt2, idd4, idd4dt, idd4dt2
259 REAL,
DIMENSION(nc,nc,nc) :: idd3, idd3dt, idd3dt2
260 REAL :: factor2, factor3
261 REAL :: fdd2, fdd3, fdd2dt, fdd3dt, fdd2dt2, fdd3dt2
262 REAL :: eij, xijmt, xijkmt
265 REAL :: fqqdt, fqqdt2
266 REAL,
DIMENSION(nc) :: qq2
267 REAL,
DIMENSION(nc,nc) :: iqq2, iqq2dt, iqq2dt2, iqq4, iqq4dt, iqq4dt2
268 REAL,
DIMENSION(nc,nc,nc) :: iqq3, iqq3dt, iqq3dt2
269 REAL :: fqq2, fqq2dt, fqq2dt2, fqq3, fqq3dt, fqq3dt2
272 REAL :: fdqdt, fdqdt2
273 REAL,
DIMENSION(nc) :: myfac, q_fac
274 REAL,
DIMENSION(nc,nc) :: idq2, idq2dt, idq2dt2, idq4, idq4dt, idq4dt2
275 REAL,
DIMENSION(nc,nc,nc) :: idq3, idq3dt, idq3dt2
276 REAL :: fdq2, fdq2dt, fdq2dt2, fdq3, fdq3dt, fdq3dt2
284 CALL perturbation_parameter
292 sumseg = z0t / (pi/6.0)
302 zges = (pges * 1.e-30)/(kbol*t*rho)
304 dfdr = pges/(eta*rho*(kbol*t)/1.e-30)
305 ddfdrdr = pgesdz/(eta*rho*(kbol*t)/1.e-30) - dfdr*2.0/eta - 1.0/eta**2
320 dhsdt(i)=parame(i,2) *(-3.0*parame(i,3)/t/t)*0.12*exp(-3.0*parame(i,3)/t)
321 dhsdt2(i) = dhsdt(i)*3.0*parame(i,3)/t/t &
322 + 6.0*parame(i,2)*parame(i,3)/t**3 *0.12*exp(-3.0*parame(i,3)/t)
329 z1tdt = z1tdt + x(i) * mseg(i) * dhsdt(i)
330 z2tdt = z2tdt + x(i) * mseg(i) * 2.0*dhs(i)*dhsdt(i)
331 z3tdt = z3tdt + x(i) * mseg(i) * 3.0*dhs(i)*dhs(i)*dhsdt(i)
333 z1dt = pi / 6.0*z1tdt *rho
334 z2dt = pi / 6.0*z2tdt *rho
335 z3dt = pi / 6.0*z3tdt *rho
342 z1tdt2 = z1tdt2 + x(i)*mseg(i)*dhsdt2(i)
343 z2tdt2 = z2tdt2 + x(i)*mseg(i)*2.0 *( dhsdt(i)*dhsdt(i) +dhs(i)*dhsdt2(i) )
344 z3tdt2 = z3tdt2 + x(i)*mseg(i)*3.0 *( 2.0*dhs(i)*dhsdt(i)* &
345 dhsdt(i) +dhs(i)*dhs(i)*dhsdt2(i) )
347 z1dt2 = pi / 6.0*z1tdt2 *rho
348 z2dt2 = pi / 6.0*z2tdt2 *rho
349 z3dt2 = pi / 6.0*z3tdt2 *rho
356 fhsdt = 6.0/pi/rho*( 3.0*(z1dt*z2+z1*z2dt)/zms + 3.0*z1*z2*z3dt/zms/zms &
357 + 3.0*z2*z2*z2dt/z3/zms/zms &
358 + z2**3 *(2.0*z3*z3dt-z3dt*zms)/(z3*z3*zms**3 ) &
359 + (3.0*z2*z2*z2dt*z3-2.0*z2**3 *z3dt)/z3**3 *log(zms) &
360 + (z0-z2**3 /z3/z3)*z3dt/zms )
362 fhsdt2= 6.0/pi/rho*( 3.0*(z1dt2*z2+2.0*z1dt*z2dt+z1*z2dt2)/zms &
363 + 6.0*(z1dt*z2+z1*z2dt)*z3dt/zms/zms &
364 + 3.0*z1*z2*z3dt2/zms/zms + 6.0*z1*z2*z3dt*z3dt/zms**3 &
365 + 3.0*z2*(2.0*z2dt*z2dt+z2*z2dt2)/z3/zms/zms &
366 - z2*z2*(6.0*z2dt*z3dt+z2*z3dt2)/(z3*z3*zms*zms) &
367 + 2.0*z2**3 *z3dt*z3dt/(z3**3 *zms*zms) &
368 - 4.0*z2**3 *z3dt*z3dt/(z3*z3 *zms**3 ) &
369 + (12.0*z2*z2*z2dt*z3dt+2.0*z2**3 *z3dt2)/(z3*zms**3 ) &
370 + 6.0*z2**3 *z3dt*z3dt/(z3*zms**4 ) &
371 - 2.0*(3.0*z2*z2*z2dt/z3/z3-2.0*z2**3 *z3dt/z3**3 ) *z3dt/zms &
372 -(z2**3 /z3/z3-z0)*(z3dt2/zms+z3dt*z3dt/zms/zms) &
373 + ( (6.0*z2*z2dt*z2dt+3.0*z2*z2*z2dt2)/z3/z3 &
374 - (12.0*z2*z2*z2dt*z3dt+2.0*z2**3 *z3dt2)/z3**3 &
375 + 6.0*z2**3 *z3dt*z3dt/z3**4 )* log(zms) )
386 dij=dhs(i)*dhs(j)/(dhs(i)+dhs(j))
387 dijdt =(dhsdt(i)*dhs(j) + dhs(i)*dhsdt(j)) / (dhs(i)+dhs(j)) &
388 - dhs(i)*dhs(j)/(dhs(i)+dhs(j))**2 *(dhsdt(i)+dhsdt(j))
389 dijdt2=(dhsdt2(i)*dhs(j) + 2.0*dhsdt(i)*dhsdt(j) &
390 + dhs(i)*dhsdt2(j)) / (dhs(i)+dhs(j)) &
391 - 2.0*(dhsdt(i)*dhs(j) + dhs(i)*dhsdt(j)) &
392 / (dhs(i)+dhs(j))**2 *(dhsdt(i)+dhsdt(j)) &
393 + 2.0* dhs(i)*dhs(j) / (dhs(i)+dhs(j))**3 &
394 * (dhsdt(i)+dhsdt(j))**2 &
395 - dhs(i)*dhs(j)/(dhs(i)+dhs(j))**2 *(dhsdt2(i)+dhsdt2(j))
396 gij1dt = z3dt/zms/zms
397 gij2dt = 3.0*( z2dt*dij+z2*dijdt )/zms/zms +6.0*z2*dij*z3dt/zms**3
398 gij3dt = 4.0*(dij*z2)* (dijdt*z2 + dij*z2dt) /zms**3 &
399 + 6.0*(dij*z2)**2 * z3dt /zms**4
400 gij1dt2 = z3dt2/zms/zms +2.0*z3dt*z3dt/zms**3
401 gij2dt2 = 3.0*( z2dt2*dij+2.0*z2dt*dijdt+z2*dijdt2 )/zms/zms &
402 + 6.0*( z2dt*dij+z2*dijdt )/zms**3 * z3dt &
403 + 6.0*(z2dt*dij*z3dt+z2*dijdt*z3dt+z2*dij*z3dt2) /zms**3 &
404 + 18.0*z2*dij*z3dt*z3dt/zms**4
405 gij3dt2 = 4.0*(dijdt*z2+dij*z2dt)**2 /zms**3 &
406 + 4.0*(dij*z2)* (dijdt2*z2+2.0*dijdt*z2dt+dij*z2dt2) /zms**3 &
407 + 24.0*(dij*z2) *(dijdt*z2+dij*z2dt)/zms**4 *z3dt &
408 + 6.0*(dij*z2)**2 * z3dt2 /zms**4 &
409 + 24.0*(dij*z2)**2 * z3dt*z3dt /zms**5
410 gijdt(i,j) = gij1dt + gij2dt + gij3dt
411 gijdt2(i,j) = gij1dt2 + gij2dt2 + gij3dt2
416 gii = 1.0/zms + 3.0*dhs(i)/2.0*z2/zms/zms + 2.0*dhs(i)*dhs(i)/4.0*z2*z2/zms**3
417 fchdt = fchdt + x(i) * (1.0-mseg(i)) * gijdt(i,i) / gii
418 fchdt2= fchdt2+ x(i) * (1.0-mseg(i)) &
419 * (gijdt2(i,i) / gii - (gijdt(i,i)/gii)**2 )
434 i1 = i1 + apar(m)*z3**m
435 i2 = i2 + bpar(m)*z3**m
436 i1dt = i1dt + apar(m)*z3dt*
REAL(m)*z3**(m-1)
437 i2dt = i2dt + bpar(m)*z3dt*
REAL(m)*z3**(m-1)
438 i1dt2= i1dt2+ apar(m)*z3dt2*
REAL(m)*z3**(m-1) &
439 + apar(m)*z3dt*z3dt *
REAL(m)*
REAL(m-1)*z3**(m-2)
440 i2dt2= i2dt2+ bpar(m)*z3dt2*
REAL(m)*z3**(m-1) &
441 + bpar(m)*z3dt*z3dt *
REAL(m)*
REAL(m-1)*z3**(m-2)
444 c1_con= 1.0/ ( 1.0 + sumseg*(8.0*z3-2.0*z3**2 )/zms**4 &
445 + (1.0 - sumseg)*(20.0*z3-27.0*z3**2 +12.0*z3**3 -2.0*z3**4 ) &
447 c2_con= - c1_con*c1_con *(sumseg*(-4.0*z3**2 +20.0*z3+8.0)/zms**5 &
448 + (1.0 - sumseg) *(2.0*z3**3 +12.0*z3**2 -48.0*z3+40.0) &
450 c3_con= 2.0 * c2_con*c2_con/c1_con - c1_con*c1_con &
451 *( sumseg*(-12.0*z3**2 +72.0*z3+60.0)/zms**6 + (1.0 - sumseg) &
452 *(-6.0*z3**4 -48.0*z3**3 +288.0*z3**2 -480.0*z3+264.0) &
455 c1_dt2 = c3_con*z3dt*z3dt + c2_con*z3dt2
457 fdspdt = - 2.0*pi*rho*(i1dt-i1/t)*order1 &
458 - pi*rho*sumseg*(c1_dt*i2+c1_con*i2dt-2.0*c1_con*i2/t)*order2
460 fdspdt2 = - 2.0*pi*rho*(i1dt2-2.0*i1dt/t+2.0*i1/t/t)*order1 &
461 - pi*rho*sumseg*order2*( c1_dt2*i2 +2.0*c1_dt*i2dt -4.0*c1_dt*i2/t &
462 + 6.0*c1_con*i2/t/t -4.0*c1_con*i2dt/t +c1_con*i2dt2)
473 IF ( nhb_typ(i) /= 0 ) assoc = .true.
478 IF ( nhb_typ(i) /= 0 )
THEN 479 kap_hb(i,i) = parame(i,13)
483 eps_hb(i,i,j,k) = parame(i,(14+no))
494 eps_hb(i,i,k,l) = 0.0
502 IF ( i /= j .AND. (nhb_typ(i) /= 0 .AND. nhb_typ(j) /= 0) )
THEN 503 kap_hb(i,j)= (kap_hb(i,i)*kap_hb(j,j))**0.5 &
504 *((parame(i,2)*parame(j,2))**3 )**0.5 &
505 /(0.5*(parame(i,2)+parame(j,2)))**3
510 eps_hb(i,j,k,l)=(eps_hb(i,i,k,l)+eps_hb(j,j,l,k))/2.0
518 IF (nhb_typ(1) == 3)
THEN 519 eps_hb(1,2,3,1)=0.5*(eps_hb(1,1,3,1)+eps_hb(2,2,1,2))
520 eps_hb(2,1,1,3) = eps_hb(1,2,3,1)
522 IF (nhb_typ(2) == 3)
THEN 523 eps_hb(2,1,3,1)=0.5*(eps_hb(2,2,3,1)+eps_hb(1,1,1,2))
524 eps_hb(1,2,1,3) = eps_hb(2,1,3,1)
532 ass_d_dt(i,j,k,l)= - kap_hb(i,j) *sig_ij(i,j)**3 * &
533 eps_hb(i,j,k,l)/t/t*exp(eps_hb(i,j,k,l)/t)
534 ass_d_dt2(i,j,k,l)= - kap_hb(i,j) *sig_ij(i,j)**3 &
535 * eps_hb(i,j,k,l)/t/t*exp(eps_hb(i,j,k,l)/t) &
536 * (-2.0/t - eps_hb(i,j,k,l)/t/t)
546 delta(i,j,k,l)=gij(i,j)*ass_d(i,j,k,l)
547 deltadt(i,j,k,l) = gijdt(i,j)*ass_d(i,j,k,l) + gij(i,j)*ass_d_dt(i,j,k,l)
548 deltadt2(i,j,k,l)= gijdt2(i,j)*ass_d(i,j,k,l) &
549 + 2.0*gijdt(i,j)*ass_d_dt(i,j,k,l) +gij(i,j)*ass_d_dt2(i,j,k,l)
559 IF (eta < 0.2) tol = 1.e-11
560 IF (eta < 0.01) tol = 1.e-12
573 DO ass_cnt = 1, max_eval
582 suma = suma + x(j)*nhb_no(j,l)* mx(j,l) *delta(i,j,k,l)
583 sumdt = sumdt + x(j)*nhb_no(j,l)*( mx(j,l) *deltadt(i,j,k,l) &
584 + mxdt(j,l)*delta(i,j,k,l) )
585 sumdt2 = sumdt2 + x(j)*nhb_no(j,l)*( mx(j,l)*deltadt2(i,j,k,l) &
586 + 2.0*mxdt(j,l)*deltadt(i,j,k,l) + mxdt2(j,l)*delta(i,j,k,l) )
589 mx_itr(i,k) = 1.0 / (1.0 + suma * rho)
590 mx_itrdt(i,k)= - mx_itr(i,k)**2 * sumdt*rho
591 mx_itrdt2(i,k)= +2.0*mx_itr(i,k)**3 * (sumdt*rho)**2 - mx_itr(i,k)**2 *sumdt2*rho
598 err_sum = err_sum + abs(mx_itr(i,k) - mx(i,k)) &
599 + abs(mx_itrdt(i,k) - mxdt(i,k)) + abs(mx_itrdt2(i,k) - mxdt2(i,k))
600 mx(i,k) = mx_itr(i,k) * attenu + mx(i,k) * (1.0 - attenu)
601 mxdt(i,k)=mx_itrdt(i,k)*attenu +mxdt(i,k)* (1.0 - attenu)
602 mxdt2(i,k)=mx_itrdt2(i,k)*attenu +mxdt2(i,k)* (1.0 - attenu)
605 IF(err_sum <= tol)
GO TO 10
608 WRITE(6,*)
'CAL_PCSAFT: max_eval violated err_sum = ',err_sum,tol
615 fhbdt = fhbdt + x(i)*nhb_no(i,k) *mxdt(i,k)*(1.0/mx(i,k)-0.5)
616 fhbdt2= fhbdt2 + x(i)*nhb_no(i,k) *(mxdt2(i,k)*(1.0/mx(i,k)-0.5) &
617 -(mxdt(i,k)/mx(i,k))**2 )
633 IF ( parame(i,6) /= 0.0 .AND. uij(i,i) /= 0.0 )
THEN 635 my2dd(i) = (parame(i,6))**2 *1.e-49 / (uij(i,i)*kbol*mseg(i)*sig_ij(i,i)**3 *1.e-30)
640 IF ( dipole == 1 )
THEN 650 idd2(i,j) = idd2(i,j) +ddp2(i,j,m)*z3**m
651 idd4(i,j) = idd4(i,j) +ddp4(i,j,m)*z3**m
652 idd2dt(i,j)= idd2dt(i,j) +ddp2(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
653 idd4dt(i,j)= idd4dt(i,j) +ddp4(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
654 idd2dt2(i,j)=idd2dt2(i,j)+ddp2(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
655 + ddp2(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
656 idd4dt2(i,j)=idd4dt2(i,j)+ddp4(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
657 + ddp4(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
664 idd3(i,j,k) = idd3(i,j,k) +ddp3(i,j,k,m)*z3**m
665 idd3dt(i,j,k) = idd3dt(i,j,k)+ddp3(i,j,k,m)*z3dt*
REAL(m) *z3**(m-1)
666 idd3dt2(i,j,k)= idd3dt2(i,j,k)+ddp3(i,j,k,m)*z3dt2*
REAL(m) &
667 *z3**(m-1) +ddp3(i,j,k,m)*z3dt**2 *
REAL(m)*
REAL(m-1) *z3**(m-2)
675 factor3= - 4.0 / 3.0 * pi**2 * rho**2
685 xijmt = x(i)*parame(i,3)*parame(i,2)**3 *x(j)*parame(j,3)*parame(j,2)**3 &
686 / ((parame(i,2)+parame(j,2))/2.0)**3 *my2dd(i)*my2dd(j)
687 eij = (parame(i,3)*parame(j,3))**0.5
688 fdd2 = fdd2 +factor2* xijmt/t/t*(idd2(i,j)+eij/t*idd4(i,j))
689 fdd2dt= fdd2dt+ factor2* xijmt/t/t*(idd2dt(i,j)-2.0*idd2(i,j)/t &
690 +eij/t*idd4dt(i,j)-3.0*eij/t/t*idd4(i,j))
691 fdd2dt2=fdd2dt2+factor2*xijmt/t/t*(idd2dt2(i,j)-4.0*idd2dt(i,j)/t &
692 +6.0*idd2(i,j)/t/t+eij/t*idd4dt2(i,j) &
693 -6.0*eij/t/t*idd4dt(i,j)+12.0*eij/t**3 *idd4(i,j))
695 xijkmt=x(i)*parame(i,3)*parame(i,2)**3 &
696 *x(j)*parame(j,3)*parame(j,2)**3 &
697 *x(k)*parame(k,3)*parame(k,2)**3 &
698 /((parame(i,2)+parame(j,2))/2.0) /((parame(i,2)+parame(k,2))/2.0) &
699 /((parame(j,2)+parame(k,2))/2.0) *my2dd(i)*my2dd(j)*my2dd(k)
700 fdd3 =fdd3 +factor3*xijkmt/t**3 *idd3(i,j,k)
701 fdd3dt =fdd3dt +factor3*xijkmt/t**3 * (idd3dt(i,j,k)-3.0*idd3(i,j,k)/t)
702 fdd3dt2=fdd3dt2+factor3*xijkmt/t**3 &
703 *( idd3dt2(i,j,k)-6.0*idd3dt(i,j,k)/t+12.0*idd3(i,j,k)/t/t )
708 IF ( fdd2 < -1.e-100 .AND. fdd3 /= 0.0 )
THEN 709 fdddt = fdd2* (fdd2*fdd2dt - 2.0*fdd3*fdd2dt+fdd2*fdd3dt) / (fdd2-fdd3)**2
710 fdddt2 = ( 2.0*fdd2*fdd2dt*fdd2dt +fdd2*fdd2*fdd2dt2 &
711 -2.0*fdd2dt**2 *fdd3 -2.0*fdd2*fdd2dt2*fdd3 +fdd2*fdd2*fdd3dt2 ) &
712 /(fdd2-fdd3)**2 + fdddt * 2.0*(fdd3dt-fdd2dt)/(fdd2-fdd3)
725 qq2(i) = (parame(i,7))**2 *1.e-69 / (uij(i,i)*kbol*mseg(i)*sig_ij(i,i)**5 *1.e-50)
726 IF (qq2(i) /= 0.0) qudpole = 1
729 IF (qudpole == 1)
THEN 740 iqq2(i,j) = iqq2(i,j) + qqp2(i,j,m)*z3**m
741 iqq4(i,j) = iqq4(i,j) + qqp4(i,j,m)*z3**m
742 iqq2dt(i,j) = iqq2dt(i,j)+ qqp2(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
743 iqq4dt(i,j) = iqq4dt(i,j)+ qqp4(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
744 iqq2dt2(i,j)= iqq2dt2(i,j)+qqp2(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
745 + qqp2(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
746 iqq4dt2(i,j)= iqq4dt2(i,j)+qqp4(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
747 + qqp4(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
754 iqq3(i,j,k) = iqq3(i,j,k) + qqp3(i,j,k,m)*z3**m
755 iqq3dt(i,j,k) = iqq3dt(i,j,k)+ qqp3(i,j,k,m)*z3dt*
REAL(m) * z3**(m-1)
756 iqq3dt2(i,j,k)= iqq3dt2(i,j,k)+qqp3(i,j,k,m)*z3dt2*
REAL(m) * z3**(m-1) &
757 + qqp3(i,j,k,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
763 factor2 = -9.0/16.0 * pi *rho
764 factor3 = 9.0/16.0 * pi**2 * rho**2
774 xijmt = x(i)*uij(i,i)*qq2(i)*sig_ij(i,i)**5 &
775 * x(j)*uij(j,j)*qq2(j)*sig_ij(j,j)**5 /sig_ij(i,j)**7.0
776 eij = (parame(i,3)*parame(j,3))**0.5
777 fqq2 = fqq2 +factor2* xijmt/t/t*(iqq2(i,j)+eij/t*iqq4(i,j))
778 fqq2dt= fqq2dt +factor2* xijmt/t/t*(iqq2dt(i,j)-2.0*iqq2(i,j)/t &
779 + eij/t*iqq4dt(i,j)-3.0*eij/t/t*iqq4(i,j))
780 fqq2dt2=fqq2dt2+factor2*xijmt/t/t*(iqq2dt2(i,j)-4.0*iqq2dt(i,j)/t &
781 + 6.0*iqq2(i,j)/t/t+eij/t*iqq4dt2(i,j) &
782 - 6.0*eij/t/t*iqq4dt(i,j)+12.0*eij/t**3 *iqq4(i,j))
784 xijkmt = x(i)*uij(i,i)*qq2(i)*sig_ij(i,i)**5 /sig_ij(i,j)**3 &
785 * x(j)*uij(j,j)*qq2(j)*sig_ij(j,j)**5 /sig_ij(i,k)**3 &
786 * x(k)*uij(k,k)*qq2(k)*sig_ij(k,k)**5 /sig_ij(j,k)**3
787 fqq3 = fqq3 +factor3*xijkmt/t**3 *iqq3(i,j,k)
788 fqq3dt = fqq3dt +factor3*xijkmt/t**3 *(iqq3dt(i,j,k)-3.0*iqq3(i,j,k)/t)
789 fqq3dt2= fqq3dt2+factor3*xijkmt/t**3 &
790 * ( iqq3dt2(i,j,k)-6.0*iqq3dt(i,j,k)/t+12.0*iqq3(i,j,k)/t/t )
795 IF ( fqq2 /= 0.0 .AND. fqq3 /= 0.0 )
THEN 796 fqqdt = fqq2* (fqq2*fqq2dt - 2.0*fqq3*fqq2dt+fqq2*fqq3dt) / (fqq2-fqq3)**2
797 fqqdt2 = ( 2.0*fqq2*fqq2dt*fqq2dt +fqq2*fqq2*fqq2dt2 &
798 - 2.0*fqq2dt**2 *fqq3 -2.0*fqq2*fqq2dt2*fqq3 +fqq2*fqq2*fqq3dt2 ) &
799 / (fqq2-fqq3)**2 + fqqdt * 2.0*(fqq3dt-fqq2dt)/(fqq2-fqq3)
814 IF (parame(i,6) /= 0.0 .AND. parame(j,7) /= 0.0) dip_quad = 1
816 myfac(i) = parame(i,3) * parame(i,2)**4 * my0(i)
817 q_fac(i) = parame(i,3) * parame(i,2)**4 * qq2(i)
820 IF (dip_quad == 1)
THEN 830 IF ( myfac(i) /= 0.0 .AND. q_fac(j) /= 0.0 )
THEN 832 idq2(i,j) = idq2(i,j) + dqp2(i,j,m)*z3**m
833 idq4(i,j) = idq4(i,j) + dqp4(i,j,m)*z3**m
834 idq2dt(i,j) = idq2dt(i,j)+ dqp2(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
835 idq4dt(i,j) = idq4dt(i,j)+ dqp4(i,j,m)*z3dt*
REAL(m)*z3**(m-1)
836 idq2dt2(i,j)= idq2dt2(i,j)+dqp2(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
837 + dqp2(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
838 idq4dt2(i,j)= idq4dt2(i,j)+dqp4(i,j,m)*z3dt2*
REAL(m)*z3**(m-1) &
839 + dqp4(i,j,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
846 IF ( myfac(k) /= 0.0 .OR. q_fac(k) /= 0.0 )
THEN 848 idq3(i,j,k) = idq3(i,j,k) + dqp3(i,j,k,m)*z3**m
849 idq3dt(i,j,k)= idq3dt(i,j,k)+ dqp3(i,j,k,m)*z3dt*
REAL(m) *z3**(m-1)
850 idq3dt2(i,j,k)= idq3dt2(i,j,k)+dqp3(i,j,k,m)*z3dt2*
REAL(m) *z3**(m-1) &
851 + dqp3(i,j,k,m)*z3dt**2 *
REAL(m)*
REAL(m-1)*z3**(m-2)
859 factor2= -9.0/4.0 * pi * rho
860 factor3= pi**2 * rho**2
870 IF ( myfac(i) /= 0.0 .AND. q_fac(j) /= 0.0 )
THEN 871 xijmt = x(i)*myfac(i) * x(j)*q_fac(j) /sig_ij(i,j)**5
872 eij = (parame(i,3)*parame(j,3))**0.5
873 fdq2 = fdq2 + factor2* xijmt/t/t*(idq2(i,j)+eij/t*idq4(i,j))
874 fdq2dt= fdq2dt+ factor2* xijmt/t/t*(idq2dt(i,j)-2.0*idq2(i,j)/t &
875 + eij/t*idq4dt(i,j)-3.0*eij/t/t*idq4(i,j))
876 fdq2dt2 = fdq2dt2+factor2*xijmt/t/t*(idq2dt2(i,j)-4.0*idq2dt(i,j)/t &
877 + 6.0*idq2(i,j)/t/t+eij/t*idq4dt2(i,j) &
878 - 6.0*eij/t/t*idq4dt(i,j)+12.0*eij/t**3 *idq4(i,j))
880 IF ( myfac(k) /= 0.0 .OR. q_fac(k) /= 0.0 )
THEN 881 xijkmt= x(i)*x(j)*x(k)/(sig_ij(i,j)*sig_ij(i,k)*sig_ij(j,k))**2 &
882 * ( myfac(i)*q_fac(j)*myfac(k) &
883 + myfac(i)*q_fac(j)*q_fac(k)*1.193735 )
885 fdq3 =fdq3 + factor3*xijkmt/t**3 *idq3(i,j,k)
886 fdq3dt=fdq3dt+ factor3*xijkmt/t**3 * (idq3dt(i,j,k)-3.0*idq3(i,j,k)/t)
887 fdq3dt2=fdq3dt2+factor3*xijkmt/t**3 &
888 *( idq3dt2(i,j,k)-6.0*idq3dt(i,j,k)/t+12.0*idq3(i,j,k)/t/t )
895 IF (fdq2 /= 0.0 .AND. fdq3 /= 0.0)
THEN 896 fdqdt = fdq2* (fdq2*fdq2dt - 2.0*fdq3*fdq2dt+fdq2*fdq3dt) / (fdq2-fdq3)**2
897 fdqdt2 = ( 2.0*fdq2*fdq2dt*fdq2dt +fdq2*fdq2*fdq2dt2 &
898 - 2.0*fdq2dt**2 *fdq3 -2.0*fdq2*fdq2dt2*fdq3 +fdq2*fdq2*fdq3dt2 ) &
899 / (fdq2-fdq3)**2 + fdqdt * 2.0*(fdq3dt-fdq2dt)/(fdq2-fdq3)
912 df_dt = fhsdt + fchdt + fdspdt + fhbdt + fdddt + fqqdt + fdqdt
920 df_dt2 = fhsdt2 +fchdt2 +fdspdt2 +fhbdt2 +fdddt2 +fqqdt2 +fdqdt2
934 dist = t * 100.e-5 * fact
940 CALL perturbation_parameter
943 fdr1 = pges / (eta*rho_0*(kbol*t)/1.e-30)
945 CALL perturbation_parameter
948 fdr2 = pges / (eta*rho_0*(kbol*t)/1.e-30)
951 CALL perturbation_parameter
954 fdr3 = pges / (eta*rho_0*(kbol*t)/1.e-30)
957 CALL perturbation_parameter
960 fdr4 = pges / (eta*rho_0*(kbol*t)/1.e-30)
963 CALL perturbation_parameter
968 df_drdt = (-fdr4+8.0*fdr3-8.0*fdr2+fdr1)/(12.0*dist)
977 s_res = ( - df_dt *t - fres )*rgas + rgas * log(zges)
978 h_res = ( - t*df_dt + zges-1.0 ) * rgas *t
979 cv_res = - ( t*df_dt2 + 2.0*df_dt ) * rgas*t
980 cp_res = cv_res - rgas + rgas*(zges +eta*t*df_drdt)**2 &
981 / (1.0 + 2.0*eta*dfdr +eta**2 *ddfdrdr)
1002 END SUBROUTINE h_eos
1013 SUBROUTINE h_eos_num
1020 REAL :: dist, fact, rho_0
1021 REAL :: fres1, fres2, fres3, fres4, fres5
1022 REAL :: f_1, f_2, f_3, f_4
1023 REAL :: cv_res, t_tmp, zges
1024 REAL :: df_dt, df_dtdt, df_drdt, dfdr, ddfdrdr
1028 CALL perturbation_parameter
1033 dist = t * 100.e-5 * fact
1037 t = t_tmp - 2.0*dist
1038 CALL perturbation_parameter
1043 CALL perturbation_parameter
1048 CALL perturbation_parameter
1052 t = t_tmp + 2.0*dist
1053 CALL perturbation_parameter
1058 CALL perturbation_parameter
1064 zges = (p * 1.e-30)/(kbol*t*rho_0)
1067 df_dt = (-fres4+8.0*fres3-8.0*fres2+fres1)/(12.0*dist)
1068 df_dtdt = (-fres4+16.0*fres3-3.d1*fres5+16.0*fres2-fres1) &
1072 s_res = (- df_dt -fres/t)*rgas*t + rgas * log(zges)
1073 h_res = ( - t*df_dt + zges-1.0 ) * rgas*t
1074 cv_res = -( t*df_dtdt + 2.0*df_dt ) * rgas*t
1078 t = t_tmp - 2.0*dist
1079 CALL perturbation_parameter
1082 f_1 = pges/(eta*rho_0*(kbol*t)/1.e-30)
1085 CALL perturbation_parameter
1088 f_2 = pges/(eta*rho_0*(kbol*t)/1.e-30)
1091 CALL perturbation_parameter
1094 f_3 = pges/(eta*rho_0*(kbol*t)/1.e-30)
1096 t = t_tmp + 2.0*dist
1097 CALL perturbation_parameter
1100 f_4 = pges/(eta*rho_0*(kbol*t)/1.e-30)
1103 CALL perturbation_parameter
1107 dfdr = pges / ( eta * rho_0 * (kbol*t) / 1.e-30 )
1108 ddfdrdr = pgesdz / ( eta * rho_0*(kbol*t)/1.e-30 ) - dfdr * 2.0 / eta - 1.0 / eta**2
1110 df_drdt = ( -f_4 + 8.0*f_3 - 8.0*f_2 + f_1) / ( 12.0 * dist )
1112 cp_res = cv_res - rgas + rgas *(zges + eta*t*df_drdt)**2 / (1.0 +2.0*eta*dfdr +eta**2 *ddfdrdr)
1121 END SUBROUTINE h_eos_num
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains constant...
double sig
correlated to variance of initial distribution
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...