source: CIVL/examples/fortran/flash/eos_getData_min/Eos_getData_loop1.F90

main
Last change on this file was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 3.3 KB
Line 
1subroutine Eos_getData_loop1(vecLen, eosData, solnData, i,j,k,n, pres_map,dens_map,gamc_map,&
2 game_map,temp_map,entr_map,eint_map,ener_map, velx_map, vely_map, velz_map, &
3 sumy_map, ye_map, pres,dens,gamc,temp,abar,zbar,eint,ekin,entr)
4
5implicit none
6
7#include "Eos.h"
8#include "Eos_map.h"
9#include "constants.h"
10#include "Flash.h"
11
12 integer :: vecLen
13 real, dimension(EOS_NUM*vecLen) :: eosData
14 real, dimension(:,:,:,:) :: solnData
15 integer :: i,j,k
16 integer :: n
17 integer :: pres,dens,gamc,temp,abar,zbar,eint,ekin,entr
18 integer :: pres_map,dens_map,gamc_map,game_map,temp_map,entr_map
19 integer :: eint_map,ener_map, velx_map, vely_map, velz_map, sumy_map, ye_map
20
21 real :: kineticEnergy, internalEnergy
22
23 real :: eos_eintSwitch, eos_smalle
24
25 if (velx_map > 0 .AND. vely_map > 0 .AND. velz_map > 0) then
26 kineticEnergy = 0.5*(solnData(velx_map,i,j,k)**2 + &
27 solnData(vely_map,i,j,k)**2 + &
28 solnData(velz_map,i,j,k)**2)
29 else
30 kineticEnergy = 0.0
31 end if
32
33 n=n+1
34 eosData(ekin+n) = kineticEnergy
35 !! kineticEnergy holds velocity vector information -- 1/2 * Vmag**2
36 !! internalEnergy holds eint (directly) or energyTotal - ekinetic (calculated),
37 !! depending upon eintSwitch
38 if(eint_map /= NONEXISTENT) then
39 internalEnergy = solnData(eint_map,i,j,k)
40 if(ener_map /= NONEXISTENT) then
41 if ( solnData(ener_map,i,j,k) - kineticEnergy > max(eos_smalle, eos_eintSwitch*kineticEnergy)) then
42 internalEnergy = solnData(ener_map,i,j,k) - kineticEnergy
43 end if
44 end if
45 else if(game_map /= NONEXISTENT) then ! This case should be usable for R(elativistic)HD - KW
46 internalEnergy = solnData(pres_map,i,j,k) / solnData(dens_map,i,j,k) / (solnData(game_map,i,j,k) - 1.0)
47 if(ener_map /= NONEXISTENT) then
48 if ( solnData(ener_map,i,j,k) - kineticEnergy > max(eos_smalle, eos_eintSwitch*kineticEnergy)) then
49 internalEnergy = solnData(ener_map,i,j,k) - kineticEnergy
50 end if
51 end if
52 else if(ener_map /= NONEXISTENT) then
53 internalEnergy = solnData(ener_map,i,j,k)-kineticEnergy
54 else
55 internalEnergy = eos_smalle
56 endif
57
58 internalEnergy = max(internalEnergy, eos_smalle)
59 eosData(eint+n) = internalEnergy
60
61 eosData(pres+n) = solnData(pres_map,i,j,k)
62 eosData(dens+n) = solnData(dens_map,i,j,k)
63 eosData(temp+n) = solnData(temp_map,i,j,k)
64 eosData(gamc+n) = solnData(gamc_map,i,j,k)
65 if((ye_map /= NONEXISTENT).and.(sumy_map /= NONEXISTENT)) then
66 !! cal says abar=1/sumy
67 !! cal says zbar=ye / sumy and he claims sumy are never zero
68 eosData(abar+n) = 1.0 / solnData(sumy_map,i,j,k)
69 eosData(zbar+n) = solnData(ye_map,i,j,k) / solnData(sumy_map,i,j,k)
70 endif
71 if(entr_map /= NONEXISTENT) eosData(entr+n) = solnData(entr_map,i,j,k)
72
73end subroutine Eos_getData_loop1
Note: See TracBrowser for help on using the repository browser.