Download conthe.eso

Back to the list

   1 : C CONTHE    SOURCE    BECC      09/11/18    21:15:01     6542           
   2 :       subroutine conthe(nesp, nordpo, acv, w, h0, runiv,
   3 :      &     tmaxcv, uvec, y,
   4 :      &     tguess,
   5 :      &     acvtot, ux, uy, uz, p, t,
   6 :      &     logipg, lognc, logneg, valer, meserr)
   7 : C
   8 : C     See PRIDE1.ESO
   9 : C
  10 : C     This subroutine creates some thermodynamical variables and 
  11 : C     properties starting from the conservative variables.
  12 : C
  13 : C     INPUT: 
  14 : C     nesp, nordpo,
  15 : C     acv(0:nordpo,nesp)
  16 : C     w
  17 : C     h0
  18 : C     runiv = universal constant of gas
  19 : C     tmaxcv = upper limit for cv expansion
  20 : C     uvec(1,*) = rho
  21 : C     uvec(2,*) = rhou
  22 : C     uvec(3,*) = rhov
  23 : C     uvec(4,*) = rhow
  24 : C     uvec(5,*) = rhoet
  25 : C     y
  26 : C     tguess = guess value for the temperature in the Newton method
  27 : C
  28 : C     OUTPUT:
  29 : C     acvtot   = coefficients such that 
  30 : C                cv = \sum_{i=1,nordpo+1} acvtot(i) T^{i-1}
  31 : C                ether = \sum_{i=1,nordpo+1} acvtot(i) T^{i} / (i)
  32 : C     rho      = density
  33 : C     ux,uy,uz = velocity
  34 : C     p        = pressure
  35 : C     t        = temperature
  36 : C
  37 : C     ERROR
  38 : C     logipg, lognc, logneg, valer, meserr
  39 : C
  40 :       integer nesp, nordpo
  41 :      &     , iesp, icoef
  42 :       real*8 acv(0:nordpo,nesp), w(nesp), h0(nesp), runiv, tmaxcv
  43 :      &     , uvec(1:5), y(1:nesp)
  44 :      &     , tguess, acvtot(1:(nordpo+1))
  45 :      &     , rho, ux, uy, uz, p, t
  46 :      &     , valer(2)
  47 :      &     , hftot, rgas, un2, ether 
  48 :       character*(40) meserr(2)
  49 :       logical lognc, logneg, logipg
  50 : C
  51 : C     Initialisation of some variables
  52 : C
  53 :       hftot = 0.0d0
  54 :       do icoef = 1 ,(nordpo+1), 1
  55 :          acvtot(icoef) = 0.0d0
  56 :       enddo
  57 :       rgas = 0.0d0
  58 : C
  59 : C     Density, velocity, internal energy
  60 : C
  61 :       rho = uvec(1)
  62 :       ux = uvec(2) / rho
  63 :       uy = uvec(3) / rho
  64 :       uz = uvec(4) / rho
  65 :       un2 = (ux * ux) + (uy * uy) + (uz * uz)
  66 : C      do iesp = 1, 5
  67 : C         write(*,*) uvec(iesp)
  68 : C      enddo
  69 : C
  70 : C     rgas, hftot, acvtot
  71 : C     In order to avoid one more loop, this could have be done before
  72 : C
  73 :       do iesp = 1, nesp, 1
  74 : C        Rgas = y(iesp) / W_iesp
  75 :          Rgas = Rgas + (y(iesp)/w(iesp))
  76 : C        hftot = hftot + (y_i * hf0i)
  77 :          hftot = hftot + (y(iesp) * h0(iesp))
  78 :          do icoef = 0, nordpo, 1
  79 :             acvtot(icoef+1) = acvtot(icoef+1) + 
  80 :      &           (y(iesp) * acv(icoef,iesp))
  81 :          enddo
  82 :       enddo
  83 :       rgas = rgas * runiv 
  84 : C     
  85 : C     Computation of temperature T
  86 : C     if (T > Tmax) => cv = cv(Tmax)
  87 : C     if (T < Tmin) => cv = cv(Tmin)
  88 : C
  89 :       ether = (uvec(5) / rho) - (0.5d0 * un2)
  90 :       ether = ether - hftot
  91 : C      write(*,*) hftot, ether
  92 :       if(ether .lt. 0.0D0)then
  93 :          logneg = .true.
  94 :          meserr(1) = 'internal sensible energy               '
  95 :          valer(1) = ether
  96 :          goto 9999
  97 :       endif 
  97 :       call prite1(nordpo,Tmaxcv,acvtot,ether,tguess,T,lognc,logipg)
  98 :       if(logipg)then
  99 :          goto 9999
 100 :       endif
 101 :       if(lognc)then
 102 :          goto 9999
 103 :       endif 
 104 : C      
 105 :       p = rgas * rho * T
 106 :  9999 continue
 107 :       return
 108 :       end
 109 :       
 110 :  

© Cast3M 2003 - All rights reserved.
Disclaimer