33 SUBROUTINE dft_nmft_mix
37 USE eos_variables, ONLY: fres, eta, dhs, mseg, uij, sig_ij, rho, x
41 use eos_polar
, only: f_polar, phi_polar
49 INTEGER :: kk, converg, read_file
50 INTEGER :: discret, fa(nc), outpt, irc(nc), irc_j, maxiter, ih
52 REAL,
DIMENSION(-NDFT:NDFT) :: zp
53 REAL,
DIMENSION(-NDFT:NDFT,2) :: rhop, rhop_o, r_corr
54 REAL,
DIMENSION(-NDFT:NDFT) :: f_tot, f_corr
57 REAL,
DIMENSION(-NDFT:NDFT,2) :: df_drho_tot
58 REAL,
DIMENSION(2) :: df_drho_att
59 REAL,
DIMENSION(2,0:nc) :: rhob
60 REAL,
DIMENSION(nc) :: dhs_star
62 REAL :: f_disp_1pt, f_disp_pcsaft
63 REAL,
DIMENSION(2) :: mu_disp_1pt, mu_disp_pcsaft
64 REAL :: zges(np), pbulk
65 REAL :: delta_st, tanhfac
67 REAL :: f_int_r, mu_int1_r, mu_int2_r
72 REAL :: surftens(0:240), st_macro(240)
79 CHARACTER*100 :: dum_text
81 REAL :: density(np), w(np,nc), lnphi(np,nc)
84 REAL,
DIMENSION(-NDFT:NDFT, 2) ::
lambda, rhobar
85 REAL,
DIMENSION(-NDFT:NDFT) :: phi_dn0, phi_dn1, phi_dn2
86 REAL,
DIMENSION(-NDFT:NDFT) :: phi_dn3, phi_dn4, phi_dn5
87 REAL,
DIMENSION(0:5,-NDFT:NDFT) :: ni
89 REAL :: term1(nc), term2, i2_up(nc,nc), last_z = 0.0
90 REAL :: f_ch, df_drho_ch(nc)
91 REAL :: f_fmt, df_drho_fmt(nc)
92 REAL :: tc_l, tc_v, xi_save(np,nc), m_average
93 REAL :: f_assoc, mu_assoc(nc)
94 CHARACTER (LEN=4) :: char_len
96 REAL :: fres_polar, fdd, fqq, fdq
97 REAL :: mu_polar(nc), fdd_rk, fqq_rk, fdq_rk, z3_rk
106 CALL set_default_eos_numerical
116 dhs(1:ncomp) = parame(1:ncomp,2) * ( 1.0 - 0.12*exp( -3.0*parame(1:ncomp,3)/t ) )
117 dhs_star(1:ncomp) = dhs(1:ncomp)/parame(1:ncomp,2)
120 IF ( ncomp > 2 )
THEN 121 write (*,*)
'SPECIFY ONLY ONE OR TWO COMPONENTS IN THE INPUT-FILE:' 122 write (*,*)
' ./input_file/INPUT.INP' 125 OPEN (68,file =
'./output_file/DFT_profiles.xlo')
126 OPEN (69,file =
'./output_file/DFT_sigma.xlo')
127 OPEN (71,file =
'./output_file/DFT_iteration.xlo')
128 OPEN (72,file =
'./output_file/DFT_h.xlo')
143 box_l_no_unit = 250.0
145 dzp = box_l_no_unit /
REAL(discret) 146 fa(1:ncomp) = nint( parame(1:ncomp,2) / dzp + 1 )
189 IF ( converg /= 1 )
THEN 190 WRITE (*,*)
'no VLE found' 207 rhob(1,0) = dense(1) / ( pi/6.0* sum( xi(1,1:ncomp) * parame(1:ncomp,1) * dhs(1:ncomp)**3 ) )
208 rhob(2,0) = dense(2) / ( pi/6.0* sum( xi(2,1:ncomp) * parame(1:ncomp,1) * dhs(1:ncomp)**3 ) )
210 rhob(1,1:ncomp) = rhob(1,0)*xi(1,1:ncomp)
211 rhob(2,1:ncomp) = rhob(2,0)*xi(2,1:ncomp)
213 WRITE (*,*)
'temperature ',t,
'K, and p=', p/1.e5,
' bar' 214 WRITE (*,*)
'x1_liquid ',xi(1,1),
' x1_vapor', xi(2,1)
215 WRITE (*,*)
'densities ',rhob(1,0), rhob(2,0)
216 WRITE (*,*)
'dense ',dense(1), dense(2)
222 CALL si_dens ( density, w )
231 CALL fugacity (lnphi)
232 my0(1:ncomp) = lnphi(1,1:ncomp)
235 zges(1) = ( p * 1.e-30 ) / ( kbol*t* rhob(1,0) )
236 zges(2) = ( p * 1.e-30 ) / ( kbol*t* rhob(2,0) )
238 pbulk = zges(1) * rhob(1,0)
240 WRITE (*,*)
'chem. potentials comp. 1', lnphi(1,1) + log( rhob(1,1) ), &
241 lnphi(2,1) + log( rhob(2,1) )
242 WRITE (*,*)
'chem. potentials comp. 2', lnphi(1,2) + log( rhob(1,2) ), &
243 lnphi(2,2) + log( rhob(2,2) )
252 xi_save(:,:) = xi(:,:)
254 WRITE (*,*)
'provide an estimate of the crit. Temp. of the mixture' 257 xif(1:ncomp) = xi_save(1,1:ncomp)
258 CALL heidemann_khalil
260 WRITE (*,*)
'critical temperature to xi_liquid',tc_l
262 xif(1:ncomp) = xi_save(2,1:ncomp)
266 CALL heidemann_khalil
268 WRITE (*,*)
'critical temperature to xi_vapor ',tc_v
278 xi(:,:) = xi_save(:,:)
279 densta(1:nphas) = val_conv(1:nphas)
280 dense(1:nphas) = val_conv(1:nphas)
282 WRITE (*,*)
'estimate of critical temperature:',tc,
'K' 294 CALL perturbation_parameter
307 irc(1:ncomp) = nint(rc*parame(1:ncomp,2)/dzp) + 1
308 tanhfac = -2.3625*t/tc + 2.4728
311 irc_j = maxval( irc(1:ncomp) )
313 DO i = -irc_j, (discret+irc_j)
314 zp(i) =
REAL(i) * dzp
316 DO i = -irc_j, (discret+irc_j)
319 rhop(i,j) = ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) + 1.0 ) * rhob(1,j)/2.0 &
320 - ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) - 1.0 ) * rhob(2,j)/2.0
329 write (*,*)
' read starting profile of rho(z) from file: DFT_profile.xlo? (0: no, 1: yes)' 331 IF (read_file == 1 )
THEN 337 READ(68,*) dum_i, dum_r, rhop(i,1), rhop(i,2)
359 dft_convergence_loop:
DO 365 CALL aux_chain_mix ( discret, fa, dzp, zp, rhop, rhobar,
lambda )
367 CALL fmt_dens_mix ( discret, fa, dzp, zp, rhop, ni, &
368 phi_dn0, phi_dn1, phi_dn2, phi_dn3, phi_dn4, phi_dn5 )
383 f_fmt = - ni(0,i)*log(zs) + ni(1,i)*ni(2,i)/zs - ni(4,i)*ni(5,i)/zs &
384 + (ni(2,i)**3 -3.0*ni(2,i)*ni(5,i)*ni(5,i)) *(ni(3,i)+zs*zs*log(zs)) &
385 /36.0/pi/zs/zs/ni(3,i)**2
387 CALL df_fmt_drho_mix ( i, fa, dzp, zp, phi_dn0, &
388 phi_dn1, phi_dn2, phi_dn3, phi_dn4, phi_dn5, df_drho_fmt )
421 CALL df_chain_drho_mix ( i, fa, dzp, zp, rhop,
lambda, rhobar, f_ch, df_drho_ch )
479 dij = ( dhs(l) + dhs(m) ) / 2.0
480 irc_j = ( irc(l) + irc(m) + 1 ) / 2
481 DO j = (i-irc_j), (i+irc_j)
482 zz1 = abs( zp(j) - zp(i) )
484 IF ( zz1 < rc*sigij )
THEN 485 IF ( -( zp(j) - zp(i) ) >= rc*sigij - dzp ) dz_local = rc*sigij - zz1
486 CALL dft_rad_int_mix ( i, j, l, m, ih, zz1, rhop, sigij, dij, f_int_r, mu_int1_r, mu_int2_r )
488 f_att = f_att + pi*mseg(l)*mseg(m) *uij(l,m)/t * rhop(i,l) * &
489 dz_local * ( rhop(j,m)* f_int_r + f01 ) / 2.0
490 term1(l)= term1(l) + 2.0*pi*mseg(l)*mseg(m) *uij(l,m)/t * &
491 dz_local * ( rhop(j,m)*mu_int1_r + f02 ) / 2.0
494 i2_up(l,m) = i2_up(l,m) + dz_local * ( rhop(j,m)* mu_int2_r + f03 ) / 2.0
495 f01 = rhop(j,m)* f_int_r
496 f02 = rhop(j,m)* mu_int1_r
497 f03 = rhop(j,m)* mu_int2_r
500 f01 = rc * sig_ij(l,m) * 4.0 * ( rc**-12 - rc**-6 ) * rhop(j,m)
501 f02 = rc * sig_ij(l,m) * 4.0 * ( rc**-12 - rc**-6 ) * rhop(j,m)
506 dz_local = rc*sigij - last_z
507 f_att = f_att + pi*mseg(l)*mseg(m) *uij(l,m)/t * rhop(i,l) * dz_local * f01
508 term1(l) = term1(l) + 2.0*pi*mseg(l)*mseg(m) *uij(l,m)/t * dz_local * f02
516 term2 = term2 + pi * rhop(i,l) * mseg(l)*mseg(m) * uij(l,m)/t *i2_up(l,m)
522 df_drho_att(l) = term1(l) + term2 * pi / 6.0 * mseg(l) * dhs(l)**3
574 dense(1) = pi / 6.0 * sum( rhop(i,1:ncomp) * mseg(1:ncomp) * dhs(1:ncomp)**3 )
576 xi(1,1:ncomp) = rhop(i,1:ncomp) / sum( rhop(i,1:ncomp) )
580 call only_one_term_eos_numerical (
'disp_term',
'PT_MIX ' )
581 call fugacity ( lnphi )
582 call restore_previous_eos_numerical
583 f_disp_1pt = fres * sum( rhop(i,1:ncomp) )
584 mu_disp_1pt(1:ncomp) = lnphi(1,1:ncomp)
586 call only_one_term_eos_numerical (
'disp_term',
'PC-SAFT ' )
587 call fugacity ( lnphi )
588 call restore_previous_eos_numerical
589 f_disp_pcsaft = fres * sum( rhop(i,1:ncomp) )
590 mu_disp_pcsaft(1:ncomp) = lnphi(1,1:ncomp)
594 IF ( sum( parame(1:ncomp,6) ) > 1.e-10 .OR. sum( parame(1:ncomp,7) ) > 1.e-10 )
THEN 596 rho = sum(rhop(i,1:ncomp))
597 x(1:ncomp) = xi(1,1:ncomp)
598 call f_polar ( fdd, fqq, fdq )
599 fres_polar = ( fdd + fqq + fdq ) * sum( rhop(i,1:ncomp) )
601 z3_rk = pi/6.0 * mseg(ik) * dhs(ik)**3
602 call phi_polar ( ik, z3_rk, fdd_rk, fqq_rk, fdq_rk )
603 mu_polar(ik) = fdd_rk + fqq_rk + fdq_rk
609 IF ( sum( nint(parame(1:ncomp,12)) ) > 0)
THEN 610 call only_one_term_eos_numerical (
'hb_term ',
'TPT1_Chap' )
611 call fugacity ( lnphi )
612 call restore_previous_eos_numerical
613 f_assoc = fres * sum( rhop(i,1:ncomp) )
614 mu_assoc(1:ncomp) = lnphi(1,1:ncomp)
629 df_drho_att(1:ncomp)= df_drho_att(1:ncomp) + ( mu_disp_pcsaft(1:ncomp) - mu_disp_1pt(1:ncomp) ) &
630 + mu_assoc(1:ncomp) + mu_polar(1:ncomp)
631 f_att = f_att + ( f_disp_pcsaft - f_disp_1pt ) + f_assoc + fres_polar
642 df_drho_tot(i,1:ncomp) = df_drho_fmt(1:ncomp) + df_drho_ch(1:ncomp) + df_drho_att(1:ncomp)
643 f_tot(i) = f_fmt + f_ch + f_att
649 IF ( mod(i, outpt) == 0 )
write(*,
'(i5,4(G15.6))') i, rhop(i,1), rhop(i,2), &
650 my0(1)-df_drho_tot(i,1)+log( rhob(1,1)/rhop(i,1) ), &
651 my0(2)-df_drho_tot(i,2)+log( rhob(1,2)/rhop(i,2) )
662 f_l = exp( my0(j) - df_drho_tot(10,j) +log( rhob(1,j)/rhop(10,j) ) )
663 f_r = exp( my0(j) - df_drho_tot(discret-10,j) +log( rhob(1,j)/rhop(discret-10,j) ))
665 r_corr(i,j) = ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) + 1.0 ) * f_l/2.0 &
666 - ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) - 1.0 ) * f_r/2.0
678 rhop_o(i,j) = rhop(i,j)
679 rhop(i,j) = rhob(1,j) * exp( my0(j) - df_drho_tot(i,j) ) /r_corr(i,j)
680 rhop(i,j) = rhop_o(i,j) + ( rhop(i,j) - rhop_o(i,j) )*damppic(j)
681 dev = dev + ( ( rhop(i,j) - rhop_o(i,j) )*parame(j,2)**3 / damppic(j) )**2
685 if ( kk == 8 ) damppic(:) = damppic(:) * 10.0
686 if ( kk == 16 ) damppic(:) = damppic(:) * 5.0
687 dev = dev /
real(discret)
694 f_l = f_tot(10) + sum( rhop(10,1:ncomp)*( log(rhop(10,1:ncomp)/rhob(1,1:ncomp))-1.0 ) ) &
695 - ( sum(rhop(10,1:ncomp)*my0(1:ncomp)) - pbulk)
696 f_r = f_tot(discret-10) + sum( rhop(discret-10,1:ncomp)*( log(rhop(discret-10,1:ncomp)/rhob(1,1:ncomp))-1.0 ) ) &
697 - ( sum(rhop(discret-10,1:ncomp)*my0(1:ncomp)) - pbulk)
700 f_corr(i) = ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) + 1.0 ) * f_l/2.0 &
701 - ( tanh(-(zp(i)-zp(int(discret/2))) / parame(j,2) *tanhfac) - 1.0 ) * f_r/2.0
713 f_tot(i) = f_tot(i) + sum( rhop(i,1:ncomp)*( log(rhop(i,1:ncomp)/rhob(1,1:ncomp))-1.0 ) )
715 delta_f = f_tot(i) - ( sum(rhop(i,1:ncomp)*my0(1:ncomp)) - pbulk) - f_corr(i)
716 free = free + delta_f*dzp
719 surftens(kk) = kbol * t *1.e20*1000.0 *free
725 m_average = sum( rhob(1,1:ncomp)*parame(1:ncomp,1) ) / rhob(1,0)
728 st_macro(kk) = surftens(kk) / ( 1.0 + 3.0/8.0/pi *t/tc &
729 * (1.0/2.55)**2 / (0.0674*m_average+0.0045) )
735 WRITE (*,*)
'-----------------------------------------------------------' 736 WRITE (*,*)
' # error-sum intrinsic ST total ST' 737 WRITE (*,
'(i3,3F15.6)') kk, dev, surftens(kk), st_macro(kk)
738 WRITE (*,*)
'-----------------------------------------------------------' 739 WRITE (71,
'(i3,3G18.8)') kk, dev, surftens(kk), st_macro(kk)
746 IF ( dev < maxdev .OR. delta_st < 1.e-8 )
THEN 747 EXIT dft_convergence_loop
749 IF ( kk > maxiter )
THEN 750 WRITE(*,*)
' no convergence in ',maxiter,
' steps' 751 EXIT dft_convergence_loop
755 ENDDO dft_convergence_loop
760 WRITE(68,
'(a,4(G18.8))')
't,p,x11,x21',t, val_conv(4)/1.e5, rhob(1,1)/sum(rhob(1,1:ncomp)), &
761 rhob(2,1)/sum(rhob(2,1:ncomp))
762 WRITE(68,
'(a,2G18.8)')
'rho1,rho2',density(1), density(2)
763 WRITE(68,
'(a,2G18.8)')
'gamma',surftens(kk-1), st_macro(kk-1)
766 WRITE (char_len,
'(I3)') 2*ncomp+1
767 WRITE (68,
'(i6,'//char_len//
'(G18.10))') i,zp(i)-zp(int(discret/2)), &
768 rhop(i,1:ncomp), -( df_drho_tot(i,1:ncomp)-my0(1:ncomp) )
825 END SUBROUTINE dft_nmft_mix
834 SUBROUTINE aux_chain_mix ( discret, fa, dzp, zp, rhop, rhobar, lambda )
842 INTEGER,
INTENT(IN) :: discret
843 INTEGER,
INTENT(IN) :: fa(nc)
844 REAL,
INTENT(IN) :: dzp
845 REAL,
INTENT(IN) :: zp(-ndft:ndft)
846 REAL,
INTENT(IN) :: rhop(-ndft:ndft,2)
848 REAL,
INTENT(OUT) :: rhobar(-ndft:ndft,2)
849 REAL,
INTENT(OUT) ::
lambda(-ndft:ndft,2)
852 INTEGER :: i, j, k, nn
853 REAL :: int1, int2, zz1, xl, xh, dz = 0.0
854 REAL,
DIMENSION(100) :: y2, rx, ry1, ry2
880 DO i = (-fa(k)), (discret+fa(k))
882 DO j = (i-fa(k)), (i+fa(k))
883 IF ( zp(j+1) > (zp(i)-dhs(k)) .AND. (zp(i)-dhs(k)) >= zp(j) )
THEN 884 dz = zp(j+1) - (zp(i)-dhs(k))
887 ry2(1) = 0.5/dhs(k)*rhop(j,k) + ((zp(i)-dhs(k))-zp(j))/dzp &
888 *( 0.5/dhs(k)*rhop(j+1,k) - 0.5/dhs(k)*rhop(j,k) )
889 ELSE IF ( zp(j) > (zp(i)-dhs(k)) .AND. zp(j) <= (zp(i)+dhs(k)) )
THEN 890 zz1 = abs( zp(j)-zp(i) )
892 ry1(nn) = 0.75/dhs(k)**3 * rhop(j,k) * (dhs(k)**2 -zz1*zz1)
893 ry2(nn) = 0.5/dhs(k) * rhop(j,k)
894 rx(nn) = rx(nn-1) + dz
896 IF ( (zp(i)+dhs(k)) < zp(j+1) )
THEN 897 dz = (zp(i)+dhs(k)) - zp(j)
899 rx(nn) = rx(nn-1) + dz
901 ry2(nn) = 0.5/dhs(k)*rhop(j,k) + ((zp(i)+dhs(k))-zp(j))/dzp &
902 *( 0.5/dhs(k)*rhop(j+1,k) - 0.5/dhs(k)*rhop(j,k) )
908 CALL spline ( rx(1:nn), ry1(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
909 CALL splint_integral ( rx(1:nn), ry1(1:nn), y2(1:nn), nn, xl, xh, int1 )
911 if ( rhobar(i,k) < 0.0 )
then 914 rhobar(i,k) = rhobar(i,k) + (ry1(j)+ry1(j-1))/2.0 *(rx(j)-rx(j-1))
917 if ( rhobar(i,k) < 0.0 ) rhobar(i,k) = rhop(i,k)
918 CALL spline ( rx(1:nn), ry2(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
919 CALL splint_integral ( rx(1:nn), ry2(1:nn), y2(1:nn), nn, xl, xh, int2 )
921 if (
lambda(i,k) < 0.0 )
then 924 lambda(i,k) =
lambda(i,k) + (ry2(j)+ry2(j-1))/2.0 *(rx(j)-rx(j-1))
936 END SUBROUTINE aux_chain_mix
944 SUBROUTINE fmt_dens_mix ( discret, fa, dzp, zp, rhop, ni, &
945 phi_dn0, phi_dn1, phi_dn2, phi_dn3, phi_dn4, phi_dn5 )
954 INTEGER,
INTENT(IN) :: discret
955 INTEGER,
INTENT(IN) :: fa(nc)
956 REAL,
INTENT(IN) :: dzp
957 REAL,
INTENT(IN) :: zp(-ndft:ndft)
958 REAL,
INTENT(IN) :: rhop(-ndft:ndft,2)
959 REAL,
INTENT(OUT) :: ni(0:5,-ndft:ndft)
960 REAL,
INTENT(OUT) :: phi_dn0(-ndft:ndft)
961 REAL,
INTENT(OUT) :: phi_dn1(-ndft:ndft)
962 REAL,
INTENT(OUT) :: phi_dn2(-ndft:ndft)
963 REAL,
INTENT(OUT) :: phi_dn3(-ndft:ndft)
964 REAL,
INTENT(OUT) :: phi_dn4(-ndft:ndft)
965 REAL,
INTENT(OUT) :: phi_dn5(-ndft:ndft)
968 INTEGER :: i, j, k, nn, fa2
969 REAL :: int2, int3, int5
970 REAL :: zz1, zs, d2, xl, xh, dz = 0.0
971 REAL,
DIMENSION(100) :: y2, hx, hy2, hy3, hy5
986 DO i = (-fa(k)), (discret+fa(k))
989 fa2= ( fa(k) + 1 ) / 2
992 DO j = (i-fa2), (i+fa2)
993 IF ( zp(j+1) > (zp(i)-d2) .AND. (zp(i)-d2) >= zp(j) )
THEN 994 dz = zp(j+1) - (zp(i)-d2)
996 hy2(1) = rhop(j,k) *parame(k,1) + ((zp(i)-d2)-zp(j))/dzp &
997 * ( rhop(j+1,k)*parame(k,1) - rhop(j,k)*parame(k,1) )
999 hy5(1) = rhop(j,k)*parame(k,1)*(zp(j)-zp(i)) +((zp(i)-d2)-zp(j))/dzp &
1000 * ( rhop(j+1,k)*parame(k,1)*(zp(j+1)-zp(i)) - rhop(j,k) *parame(k,1)*(zp(j)-zp(i)) )
1001 ELSE IF ( zp(j) > (zp(i)-d2) .AND. zp(j) <= (zp(i)+d2) )
THEN 1004 hy2(nn) = rhop(j,k)*parame(k,1)
1005 hy3(nn) = rhop(j,k)*parame(k,1) * ( d2**2 - zz1**2 )
1006 hy5(nn) = rhop(j,k)*parame(k,1) * zz1
1007 hx(nn) = hx(nn-1) + dz
1009 IF ( (zp(i)+d2) < zp(j+1) )
THEN 1010 dz = (zp(i)+d2) - zp(j)
1012 hy2(nn) = rhop(j,k)*parame(k,1) + ((zp(i)+d2)-zp(j))/dzp &
1013 * ( rhop(j+1,k)*parame(k,1) - rhop(j,k)*parame(k,1) )
1015 hy5(nn) = rhop(j,k)*parame(k,1)*(zp(j)-zp(i)) +((zp(i)+d2)-zp(j))/dzp &
1016 * ( rhop(j+1,k)*parame(k,1)*(zp(j+1)-zp(i)) - rhop(j,k)*parame(k,1)*(zp(j) -zp(i)) )
1017 hx(nn) = hx(nn-1) + dz
1023 CALL spline ( hx(1:nn), hy2(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1024 CALL splint_integral ( hx(1:nn), hy2(1:nn), y2(1:nn), nn, xl, xh, int2 )
1025 CALL spline ( hx(1:nn), hy3(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1026 CALL splint_integral ( hx(1:nn), hy3(1:nn), y2(1:nn), nn, xl, xh, int3 )
1027 CALL spline ( hx(1:nn), hy5(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1028 CALL splint_integral ( hx(1:nn), hy5(1:nn), y2(1:nn), nn, xl, xh, int5 )
1029 ni(2,i) = ni(2,i) + pi * dhs(k) *int2
1030 ni(3,i) = ni(3,i) + pi * int3
1031 ni(5,i) = ni(5,i) + 2.0* pi *int5
1032 ni(0,i) = ni(0,i) + (pi * dhs(k) *int2) / (pi*dhs(k)**2 )
1033 ni(1,i) = ni(1,i) + (pi * dhs(k) *int2) / (2.0*pi*dhs(k))
1034 ni(4,i) = ni(4,i) + (2.0* pi *int5) / (2.0*pi*dhs(k))
1039 DO i = (-maxval(fa(1:ncomp))), (discret+maxval(fa(1:ncomp)))
1041 phi_dn0(i) = - log(zs)
1042 phi_dn1(i) = ni(2,i)/zs
1043 phi_dn2(i) = ni(1,i)/zs + 3.0*(ni(2,i)*ni(2,i) - ni(5,i)*ni(5,i)) &
1044 * (ni(3,i)+zs*zs*log(zs))/(36.0*pi*ni(3,i)*ni(3,i)*zs*zs)
1045 phi_dn3(i) = ni(0,i)/zs + (ni(1,i)*ni(2,i)-ni(4,i)*ni(5,i))/zs/zs &
1046 - (ni(2,i)**3 - 3.0*ni(2,i)*ni(5,i)*ni(5,i)) &
1047 *( ni(3,i)*(ni(3,i)*ni(3,i)-5.0*ni(3,i)+2.0) &
1048 + 2.0*zs**3 *log(zs) ) / ( 36.0*pi*(ni(3,i)*zs)**3 )
1049 phi_dn4(i) = - ni(5,i)/zs
1050 phi_dn5(i) = - ni(4,i)/zs - 6.0*ni(2,i)*ni(5,i) &
1051 * (ni(3,i)+zs*zs*log(zs))/(36.0*pi*ni(3,i)*ni(3,i)*zs*zs)
1054 END SUBROUTINE fmt_dens_mix
1074 SUBROUTINE dft_rad_int_mix ( i, j, l, m, ih, zz_1, rhop, sigij, dij, f_int_r, my_int1_r, my_int2_r )
1081 INTEGER,
INTENT(IN) :: i
1082 INTEGER,
INTENT(IN) :: j
1083 INTEGER,
INTENT(IN) :: l
1084 INTEGER,
INTENT(IN) :: m
1085 INTEGER,
INTENT(IN OUT) :: ih
1086 REAL,
INTENT(IN) :: zz_1
1087 REAL,
INTENT(IN) :: rhop(-ndft:ndft,2)
1088 REAL,
INTENT(IN) :: sigij
1089 REAL,
INTENT(IN) :: dij
1090 REAL,
INTENT(OUT) :: f_int_r
1091 REAL,
INTENT(OUT) :: my_int1_r
1092 REAL,
INTENT(OUT) :: my_int2_r
1099 REAL :: fint0, fint1
1100 REAL :: myint1_0, myint1_1
1101 REAL :: myint2_0, myint2_1
1102 REAL :: dg_dz3, dg_dr
1103 REAL :: rad, xg, rdf, z3_bar, ua, rs
1104 REAL :: analytic1, tau_rs
1109 fint0 = rc * tau_cut
1110 myint1_0 = rc * tau_cut
1127 IF ( shortcut )
THEN 1129 IF ( rs > rc )
WRITE (*,*)
'error !!!!' 1130 analytic1 = 0.4*rs**-10 - 0.4*rc**-10 - rs**-4 + rc**-4
1131 f_int_r = f_int_r + analytic1
1132 my_int1_r = my_int1_r + analytic1
1133 IF ( rs == zz1 )
GO TO 10
1134 tau_rs = 4.0 * ( rs**-12 - rs**-6 )
1136 myint1_0 = rs * tau_rs
1138 k = 0 + nint( (rc-rs)/dzr )
1150 DO WHILE ( rad /= max( 1.0, zz1 ) )
1154 IF ( rad - dzr_local <= max( 1.0, zz1 ) )
THEN 1155 dzr_local = rad - max( 1.0, zz1 )
1156 rad = max( 1.0, zz1 )
1158 rad = rad - dzr_local
1162 ua = 4.0 * ( rad**-12 -rad**-6 )
1163 xg = rad / dij * sigij
1165 z3_bar = pi / 6.0 * sum( 0.5*( rhop(i,1:ncomp) + rhop(j,1:ncomp) ) * mseg(1:ncomp) * dhs(1:ncomp)**3 )
1168 IF ( rad <= rg )
THEN 1169 IF ( l == 1 .AND. m == 1 )
CALL bi_cub_spline (z3_bar,xg,ya_11,x1a_11,x2a_11,y1a_11,y2a_11,y12a_11, &
1170 c_bicub_11,rdf,dg_dz3,dg_dr,den_step,ih,k)
1171 IF ( l /= m )
CALL bi_cub_spline (z3_bar,xg,ya_12,x1a_12,x2a_12,y1a_12,y2a_12,y12a_12, &
1172 c_bicub_12,rdf,dg_dz3,dg_dr,den_step,ih,k)
1173 IF ( l == 2 .AND. m == 2 )
CALL bi_cub_spline (z3_bar,xg,ya_22,x1a_22,x2a_22,y1a_22,y2a_22,y12a_22, &
1174 c_bicub_22,rdf,dg_dz3,dg_dr,den_step,ih,k)
1177 fint1 = rdf * rad * ua
1178 myint1_1 = rdf * rad * ua
1179 myint2_1 = dg_dz3 * rad * ua
1181 f_int_r = f_int_r + dzr_local * ( fint1 + fint0 ) / 2.0
1182 my_int1_r = my_int1_r + dzr_local * ( myint1_1 + myint1_0) / 2.0
1183 my_int2_r = my_int2_r + dzr_local * ( myint2_1 + myint2_0) / 2.0
1198 f_int_r = f_int_r * sigij*sigij
1199 my_int1_r = my_int1_r * sigij*sigij
1200 my_int2_r = my_int2_r * sigij*sigij
1202 END SUBROUTINE dft_rad_int_mix
1209 SUBROUTINE f_pert_theory_mix ( fdsp )
1211 USE eos_variables, ONLY: nc, pi, ncomp, t, rho, eta, x, mseg, dhs, sig_ij, uij
1216 REAL,
INTENT(IN OUT) :: fdsp
1222 REAL :: ua, ua_c, rm
1223 REAL,
DIMENSION(nc,nc) :: i1
1224 REAL :: int10, int11
1225 REAL :: d_ij, dzr_local
1226 REAL :: rad, xg, rdf
1227 REAL :: dg_dz3, dg_dr
1234 ua_c = 4.0 * ( rc**-12 - rc**-6 )
1244 int10 = rc * rc * ua_c
1250 DO WHILE ( rad /= 1.0 )
1253 IF ( rad - dzr_local <= 1.0 ) dzr_local = rad - 1.0
1255 rad = rad - dzr_local
1259 d_ij = 0.5*(dhs(l)+dhs(m)) / sig_ij(l,m)
1264 IF ( rad <= rg )
THEN 1265 IF ( l == 1 .AND. m == 1 )
CALL bi_cub_spline (z3,xg,ya_11,x1a_11,x2a_11,y1a_11,y2a_11,y12a_11, &
1266 c_bicub_11,rdf,dg_dz3,dg_dr,den_step,ih,k)
1267 IF ( l /= m )
CALL bi_cub_spline (z3,xg,ya_12,x1a_12,x2a_12,y1a_12,y2a_12,y12a_12, &
1268 c_bicub_12,rdf,dg_dz3,dg_dr,den_step,ih,k)
1269 IF ( l == 2 .AND. m == 2 )
CALL bi_cub_spline (z3,xg,ya_22,x1a_22,x2a_22,y1a_22,y2a_22,y12a_22, &
1270 c_bicub_22,rdf,dg_dz3,dg_dr,den_step,ih,k)
1273 ua = 4.0 * ( rad**-12 - rad**-6 )
1275 int11 = rdf * rad * rad * ua
1276 i1(l,m) = i1(l,m) + dzr_local * ( int11 + int10 ) / 2.0
1302 fdsp = fdsp + 2.0*pi*rho*x(l)*x(m)* mseg(l)*mseg(m)*sig_ij(l,m)**3 * uij(l,m)/t *i1(l,m)
1322 END SUBROUTINE f_pert_theory_mix
1329 SUBROUTINE mu_pert_theory_mix ( mu_dsp )
1331 USE eos_variables, ONLY: nc, pi, ncomp, t, rho, eta, x, mseg, dhs, sig_ij, uij
1336 REAL,
INTENT(IN OUT) :: mu_dsp(nc)
1342 REAL :: ua, ua_c, rm
1343 REAL,
DIMENSION(nc,nc) :: i1, i2
1344 REAL :: int1_0, int1_1, int2_0, int2_1
1345 REAL :: d_ij, dzr_local
1346 REAL :: rad, xg, rdf
1347 REAL :: dg_dz3, dg_dr
1348 REAL :: term1(nc), term2
1355 ua_c = 4.0 * ( rc**-12 - rc**-6 )
1369 int1_0 = rc * rc * ua_c
1375 DO WHILE ( rad /= 1.0 )
1378 IF ( rad - dzr_local <= 1.0 ) dzr_local = rad - 1.0
1380 rad = rad - dzr_local
1383 d_ij = 0.5*(dhs(l)+dhs(m)) / sig_ij(l,m)
1388 IF ( rad <= rg )
THEN 1389 IF ( l == 1 .AND. m == 1 )
CALL bi_cub_spline (z3,xg,ya_11,x1a_11,x2a_11,y1a_11,y2a_11,y12a_11, &
1390 c_bicub_11,rdf,dg_dz3,dg_dr,den_step,ih,k)
1391 IF ( l /= m )
CALL bi_cub_spline (z3,xg,ya_12,x1a_12,x2a_12,y1a_12,y2a_12,y12a_12, &
1392 c_bicub_12,rdf,dg_dz3,dg_dr,den_step,ih,k)
1393 IF ( l == 2 .AND. m == 2 )
CALL bi_cub_spline (z3,xg,ya_22,x1a_22,x2a_22,y1a_22,y2a_22,y12a_22, &
1394 c_bicub_22,rdf,dg_dz3,dg_dr,den_step,ih,k)
1397 ua = 4.0 * ( rad**-12 - rad**-6 )
1399 int1_1 = rdf * rad * rad * ua
1400 int2_1 = dg_dz3 * rad * rad * ua
1401 i1(l,m) = i1(l,m) + dzr_local * ( int1_1 + int1_0 ) / 2.0
1402 i2(l,m) = i2(l,m) + dzr_local * ( int2_1 + int2_0 ) / 2.0
1407 term1(l) = term1(l) +4.0*pi*rho*x(m)* mseg(l)*mseg(m) *sig_ij(l,m)**3 *uij(l,m)/t* dzr_local*(int1_1+int1_0)/2.0
1425 term2 = term2 + 2.0*pi*rho*x(l) * rho*x(m)* mseg(l)*mseg(m) * sig_ij(l,m)**3 * uij(l,m)/t *i2(l,m)
1430 mu_dsp(l) = term1(l) + term2 * pi/ 6.0 * mseg(l)*dhs(l)**3
1433 END SUBROUTINE mu_pert_theory_mix
1440 SUBROUTINE rdf_matrix_mix
1448 INTEGER :: i, j, k = 0
1449 REAL :: rdf, rad, xg, rho_rdf, z3, mseg_ij, d_ij = 0.0
1455 IF( j == 1) mseg_ij = 0.5 * ( parame(1,1) + parame(1,1) )
1456 IF( j == 2) mseg_ij = 0.5 * ( parame(1,1) + parame(2,1) )
1457 IF( j == 3) mseg_ij = 0.5 * ( parame(2,1) + parame(2,1) )
1461 rho_rdf = 1.e-5 + (1.0)*
REAL(i-1)/
REAL(den_step-1) 1465 DO WHILE ( rad - 1.e-8 > 0.95 )
1468 IF( j == 1) d_ij = dhs(1) / parame(1,2)
1469 IF( j == 2) d_ij = 0.5*(dhs(1)+dhs(2)) / ( 0.5*(parame(1,2)+parame(2,2)) )
1470 IF( j == 3) d_ij = dhs(2) / parame(2,2)
1473 z3 = rho_rdf * pi/6.0 * d_ij**3
1475 IF ( j == 1) ya_11(i,k) = 1.0
1476 IF ( j == 2) ya_12(i,k) = 1.0
1477 IF ( j == 3) ya_22(i,k) = 1.0
1479 IF ( xg <= rg .AND. z3 > 0.0 )
CALL rdf_int ( z3, mseg_ij, xg, rdf )
1481 IF ( xg <= rg .AND. z3 > 0.0 .AND. j == 1 ) ya_11(i,k) = rdf
1482 IF ( xg <= rg .AND. z3 > 0.0 .AND. j == 2 ) ya_12(i,k) = rdf
1483 IF ( xg <= rg .AND. z3 > 0.0 .AND. j == 3 ) ya_22(i,k) = rdf
1485 IF ( j == 1) x1a_11(i) = z3
1486 IF ( j == 1) x2a_11(k) = xg
1487 IF ( j == 2) x1a_12(i) = z3
1488 IF ( j == 2) x2a_12(k) = xg
1489 IF ( j == 3) x1a_22(i) = z3
1490 IF ( j == 3) x2a_22(k) = xg
1494 if ( xg > 1.0 ) stop
'rdf_matrix_mix: 0.95*sigma is too high for lower bound' 1496 WRITE (*,*)
' done with calculating g(r)',dhs_st
1499 IF( j == 1)
CALL bicub_derivative ( ya_11, x1a_11, x2a_11, y1a_11, y2a_11, y12a_11, den_step, kmax )
1500 IF( j == 1)
CALL bicub_c ( ya_11, x1a_11, x2a_11, y1a_11, y2a_11, y12a_11, c_bicub_11, den_step, kmax )
1501 IF( j == 2)
CALL bicub_derivative ( ya_12, x1a_12, x2a_12, y1a_12, y2a_12, y12a_12, den_step, kmax )
1502 IF( j == 2)
CALL bicub_c ( ya_12, x1a_12, x2a_12, y1a_12, y2a_12, y12a_12, c_bicub_12, den_step, kmax )
1503 IF( j == 3)
CALL bicub_derivative ( ya_22, x1a_22, x2a_22, y1a_22, y2a_22, y12a_22, den_step, kmax )
1504 IF( j == 3)
CALL bicub_c ( ya_22, x1a_22, x2a_22, y1a_22, y2a_22, y12a_22, c_bicub_22, den_step, kmax )
1508 END SUBROUTINE rdf_matrix_mix
1515 SUBROUTINE df_fmt_drho_mix ( i, fa, dzp, zp, phi_dn0, &
1516 phi_dn1, phi_dn2, phi_dn3, phi_dn4, phi_dn5, dF_drho_fmt )
1525 INTEGER,
INTENT(IN) :: i
1526 INTEGER,
INTENT(IN) :: fa(nc)
1527 REAL,
INTENT(IN) :: dzp
1528 REAL,
INTENT(IN) :: zp(-ndft:ndft)
1529 REAL,
INTENT(IN) :: phi_dn0(-ndft:ndft)
1530 REAL,
INTENT(IN) :: phi_dn1(-ndft:ndft)
1531 REAL,
INTENT(IN) :: phi_dn2(-ndft:ndft)
1532 REAL,
INTENT(IN) :: phi_dn3(-ndft:ndft)
1533 REAL,
INTENT(IN) :: phi_dn4(-ndft:ndft)
1534 REAL,
INTENT(IN) :: phi_dn5(-ndft:ndft)
1535 REAL,
INTENT(OUT) :: df_drho_fmt(nc)
1540 REAL :: int0, int1, int2, int3, int4, int5
1541 REAL :: zz1, d2, xl, xh, dz = 0.0
1542 REAL,
DIMENSION(100) :: y2, hx, hy0, hy1, hy2, hy3, hy4, hy5
1559 fa2 = ( fa(k) + 1 ) / 2
1560 DO j = (i-fa2), (i+fa2)
1561 IF ( zp(j+1) > (zp(i)-d2) .AND. (zp(i)-d2) >= zp(j) )
THEN 1563 hy0(1) = phi_dn0(j) + ((zp(i)-d2)-zp(j))/dzp *( phi_dn0(j+1) - phi_dn0(j) )
1564 hy1(1) = phi_dn1(j) + ((zp(i)-d2)-zp(j))/dzp *( phi_dn1(j+1) - phi_dn1(j) )
1565 hy2(1) = phi_dn2(j) + ((zp(i)-d2)-zp(j))/dzp *( phi_dn2(j+1) - phi_dn2(j) )
1567 hy4(1) = phi_dn4(j)*(zp(j)-zp(i)) +((zp(i)-d2)-zp(j))/dzp &
1568 * ( phi_dn4(j+1)*(zp(j+1)-zp(i)) - phi_dn4(j)*(zp(j)-zp(i)) )
1569 hy5(1) = phi_dn5(j)*(zp(j)-zp(i)) +((zp(i)-d2)-zp(j))/dzp &
1570 * ( phi_dn5(j+1)*(zp(j+1)-zp(i)) - phi_dn5(j)*(zp(j)-zp(i)) )
1571 dz = zp(j+1) - (zp(i)-d2)
1572 ELSE IF ( zp(j) > (zp(i)-d2).AND.zp(j) <= (zp(i)+d2) )
THEN 1575 hy0(nn) = phi_dn0(j)
1576 hy1(nn) = phi_dn1(j)
1577 hy2(nn) = phi_dn2(j)
1578 hy3(nn) = phi_dn3(j) * ( d2**2 - zz1**2 )
1579 hy4(nn) = phi_dn4(j) * zz1
1580 hy5(nn) = phi_dn5(j) * zz1
1581 hx(nn) = hx(nn-1) + dz
1583 IF ( (zp(i)+d2) < zp(j+1) )
THEN 1584 dz = (zp(i)+d2) - zp(j)
1586 hx(nn) = hx(nn-1) + dz
1587 hy0(nn) = phi_dn0(j) + ( (zp(i)+d2) - zp(j) ) / dzp * ( phi_dn0(j+1) - phi_dn0(j) )
1588 hy1(nn) = phi_dn1(j) + ( (zp(i)+d2) - zp(j) ) / dzp * ( phi_dn1(j+1) - phi_dn1(j) )
1589 hy2(nn) = phi_dn2(j) + ( (zp(i)+d2) - zp(j) ) / dzp * ( phi_dn2(j+1) - phi_dn2(j) )
1591 hy4(nn) = phi_dn4(j) * (zp(j)-zp(i)) + ((zp(i)+d2)-zp(j)) / dzp &
1592 * ( phi_dn4(j+1)*(zp(j+1)-zp(i)) -phi_dn4(j)*(zp(j)-zp(i)) )
1593 hy5(nn) = phi_dn5(j) * (zp(j)-zp(i)) + ((zp(i)+d2)-zp(j))/dzp &
1594 * ( phi_dn5(j+1)*(zp(j+1)-zp(i)) -phi_dn5(j)*(zp(j)-zp(i)) )
1600 CALL spline ( hx(1:nn), hy0(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1601 CALL splint_integral( hx(1:nn), hy0(1:nn), y2(1:nn), nn, xl, xh, int0 )
1602 CALL spline ( hx(1:nn), hy1(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1603 CALL splint_integral( hx(1:nn), hy1(1:nn), y2(1:nn), nn, xl, xh, int1 )
1604 CALL spline ( hx(1:nn), hy2(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1605 CALL splint_integral( hx(1:nn), hy2(1:nn), y2(1:nn), nn ,xl, xh, int2 )
1606 CALL spline ( hx(1:nn), hy3(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1607 CALL splint_integral( hx(1:nn), hy3(1:nn), y2(1:nn), nn, xl, xh, int3 )
1608 CALL spline ( hx(1:nn), hy4(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1609 CALL splint_integral( hx(1:nn), hy4(1:nn), y2(1:nn), nn, xl, xh, int4 )
1610 CALL spline ( hx(1:nn), hy5(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1611 CALL splint_integral( hx(1:nn), hy5(1:nn), y2(1:nn), nn, xl, xh, int5 )
1620 int0 = int0 / dhs(k)
1622 int2 = pi * dhs(k) * int2
1624 int4 = int4 / dhs(k)
1625 int5 = 2.0 * pi * int5
1627 df_drho_fmt(k) = (int0+int1+int2+int3+int4+int5)*parame(k,1)
1630 END SUBROUTINE df_fmt_drho_mix
1645 SUBROUTINE df_chain_drho_mix ( i, fa, dzp, zp, rhop, lambda, rhobar, f_ch, dF_drho_ch )
1654 INTEGER,
INTENT(IN) :: i
1656 REAL,
INTENT(IN) :: dzp
1657 REAL,
INTENT(IN) :: zp(-ndft:ndft)
1658 REAL,
INTENT(IN) :: rhop(-ndft:ndft,2)
1659 REAL,
INTENT(IN) ::
lambda(-ndft:ndft,2)
1660 REAL,
INTENT(IN) :: rhobar(-ndft:ndft,2)
1661 REAL,
INTENT(OUT) :: f_ch
1662 REAL,
INTENT(OUT) :: df_drho_ch(nc)
1666 REAL :: zz1, xl, xh, dz = 0.0
1667 REAL,
DIMENSION(100) :: y2, hx, hy0, hy1
1668 REAL,
DIMENSION(2) :: ycorr
1669 REAL,
DIMENSION(2,2) :: dlnydr
1670 REAL :: i_ch1, i_ch2
1673 CALL cavity_mix ( rhobar(i,:), ycorr, dlnydr )
1682 DO j = (i-fa(k)), (i+fa(k))
1683 IF ( zp(j+1) > (zp(i)-dhs(k)) .AND. zp(j)-1e-11 <= (zp(i)-dhs(k)) )
THEN 1684 dz = zp(j+1) - (zp(i)-dhs(k))
1687 hy1(1) = 0.5/dhs(k)*rhop(j,k)/
lambda(j,k) + ((zp(i)-dhs(k))-zp(j))/dzp &
1688 * ( 0.5/dhs(k)*rhop(j+1,k)/
lambda(j+1,k) - 0.5/dhs(k)*rhop(j,k)/
lambda(j,k) )
1689 ELSE IF ( zp(j) > (zp(i)-dhs(k)) .AND. zp(j)+1.e-11 < (zp(i)+dhs(k)) )
THEN 1693 hy0(nn) = - sum( ( mseg(1:ncomp)-1.0 ) * rhop(j,1:ncomp)*dlnydr(1:ncomp,k) ) &
1694 * 0.75/dhs(k)**3 * (dhs(k)*dhs(k)-zz1*zz1)
1695 hy1(nn) = 0.5/dhs(k)*rhop(j,k)/
lambda(j,k)
1696 hx(nn) = hx(nn-1) + dz
1698 IF ( zp(j+1)+1.e-11 >= (zp(i)+dhs(k)) )
THEN 1699 dz = (zp(i)+dhs(k)) - zp(j)
1702 hy1(nn) = 0.5/dhs(k)*rhop(j,k)/
lambda(j,k) +((zp(i)+dhs(k))-zp(j))/dzp &
1703 * ( 0.5/dhs(k)*rhop(j+1,k)/
lambda(j+1,k)-0.5/dhs(k)*rhop(j,k)/
lambda(j,k) )
1704 hx(nn) = hx(nn-1) + dz
1710 CALL spline ( hx(1:nn), hy0(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1711 CALL splint_integral( hx(1:nn), hy0(1:nn), y2(1:nn), nn, xl, xh, i_ch1 )
1712 CALL spline ( hx(1:nn), hy1(1:nn), nn, 1.e30, 1.e30, y2(1:nn) )
1713 CALL splint_integral( hx(1:nn), hy1(1:nn), y2(1:nn), nn, xl, xh, i_ch2 )
1715 f_ch = f_ch + ( parame(k,1) - 1.0 ) * rhop(i,k) * ( log(rhop(i,k)) - 1.0 ) &
1716 - ( parame(k,1) - 1.0 ) * rhop(i,k) * ( log(ycorr(k)*
lambda(i,k)) - 1.0 )
1717 df_drho_ch(k) = + ( parame(k,1) - 1.0 ) * log(rhop(i,k)) &
1718 - ( parame(k,1) - 1.0 ) * ( log( ycorr(k)*
lambda(i,k) ) - 1.0 + i_ch2 ) &
1722 END SUBROUTINE df_chain_drho_mix
1729 SUBROUTINE cavity_mix ( rhoi, ycorr, dlnydr )
1737 REAL,
INTENT(IN) :: rhoi(2)
1738 REAL,
INTENT(OUT) :: ycorr(2)
1739 REAL,
INTENT(OUT) :: dlnydr(2,2)
1743 REAL :: z0, z1, z2, z3, zms, z1_rk, z2_rk, z3_rk
1744 REAL,
DIMENSION(nc,nc) :: dij_ab, gij, gij_rk
1747 z0 = pi / 6.0 * sum( rhoi(1:ncomp) * mseg(1:ncomp) )
1748 z1 = pi / 6.0 * sum( rhoi(1:ncomp) * mseg(1:ncomp) * dhs(1:ncomp) )
1749 z2 = pi / 6.0 * sum( rhoi(1:ncomp) * mseg(1:ncomp) * dhs(1:ncomp)**2 )
1750 z3 = pi / 6.0 * sum( rhoi(1:ncomp) * mseg(1:ncomp) * dhs(1:ncomp)**3 )
1756 dij_ab(i,j)=dhs(i)*dhs(j)/(dhs(i)+dhs(j))
1762 z1_rk = pi/6.0 * mseg(k) * dhs(k)
1763 z2_rk = pi/6.0 * mseg(k) * dhs(k)*dhs(k)
1764 z3_rk = pi/6.0 * mseg(k) * dhs(k)**3
1767 gij(i,j) = 1.0/zms + 3.0*dij_ab(i,j)*z2/zms/zms &
1768 + 2.0*(dij_ab(i,j)*z2)**2 /zms**3
1771 gij_rk(i,j) = z3_rk/zms/zms &
1772 + 3.0*dij_ab(i,j)*(z2_rk+2.0*z2*z3_rk/zms)/zms/zms &
1773 + dij_ab(i,j)**2 *z2/zms**3 *(4.0*z2_rk+6.0*z2*z3_rk/zms)
1777 dlnydr(i,k) = gij_rk(i,i) / gij(i,i)
1782 END SUBROUTINE cavity_mix
1789 SUBROUTINE cutoff_corrections_mix ( i, irc, rhop, rhob, f_att, dF_drho_att )
1791 USE eos_variables, ONLY: nc, ncomp, pi, mseg, sig_ij, uij, t
1796 INTEGER,
INTENT(IN) :: i
1797 INTEGER,
INTENT(IN) :: irc(nc)
1798 REAL,
DIMENSION(-NDFT:NDFT,2),
INTENT(IN) :: rhop
1799 REAL,
DIMENSION(2,0:nc),
INTENT(IN) :: rhob
1800 REAL,
INTENT(IN OUT) :: f_att
1801 REAL,
DIMENSION(2),
INTENT(IN OUT) :: df_drho_att
1806 REAL :: cutoffz, rho_l, rho_m
1809 cutoffz = 4.0/90.0 * rc**-9 - 1.0/3.0 * rc**-3
1816 irc_j = ( irc(l) + irc(m) + 1 ) / 2
1819 IF ( ( abs(rhop(i-irc_j,l)-rhob(1,l))/rhob(1,l) ) > 1.e-3 ) rho_l = rhop(i-irc_j,l)
1820 IF ( ( abs(rhop(i-irc_j,m)-rhob(1,m))/rhob(1,m) ) > 1.e-3 ) rho_m = rhop(i-irc_j,m)
1821 write (*,*)
'le',i, rho_l,rhop(i,l)
1822 write (*,*)
'le',i, rho_m,rhop(i,m)
1824 f_att = f_att + pi*mseg(l)*mseg(m) *rho_l* rho_m *sig_ij(l,m) *uij(l,m)/t *cutoffz
1825 write(*,*)
'AAA', l,m,f_att,pi*mseg(l)*mseg(m) *rho_l* rho_m *sig_ij(l,m) *uij(l,m)/t *cutoffz
1826 df_drho_att(l) = df_drho_att(l) + 2.0*pi*mseg(l)*mseg(m) *rho_m *sig_ij(l,m) *uij(l,m)/t *cutoffz
1835 irc_j = ( irc(l) + irc(m) + 1 ) / 2
1838 IF ( ( abs(rhop(i+irc_j,l)-rhob(2,l))/rhob(2,l) ) > 1.e-3 ) rho_l = rhop(i+irc_j,l)
1839 IF ( ( abs(rhop(i+irc_j,m)-rhob(2,m))/rhob(2,m) ) > 1.e-3 ) rho_m = rhop(i+irc_j,m)
1841 f_att = f_att + pi*mseg(l)*mseg(m) *rho_l* rho_m *sig_ij(l,m)**3 *uij(l,m)/t *cutoffz
1842 df_drho_att(l) = df_drho_att(l) + 2.0*pi*mseg(l)*mseg(m) *rho_m *sig_ij(l,m)**3 *uij(l,m)/t *cutoffz
1843 write(*,*)
'BBB', l,m,f_att,pi*mseg(l)*mseg(m) *rho_l* rho_m *sig_ij(l,m) *uij(l,m)/t *cutoffz
1847 END SUBROUTINE cutoff_corrections_mix
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains constant...
double lambda
Latent heat of blowing agent, J/kg.
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Module DFT_MODULE This module...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Module STARTING_VALUES This m...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW This module contains paramete...
subroutine, public start_var(converg)
subroutine start_var