1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
c gen_tinyplot3d - generate little Plot3D files
c
c
c Copyright (c) 2006 Francesco Poli <frx@firenze.linux.it>
c
c Permission is hereby granted, free of charge, to any person obtaining
c a copy of this software and associated documentation files (the
c "Software"), to deal in the Software without restriction, including
c without limitation the rights to use, copy, modify, merge, publish,
c distribute, sublicense, and/or sell copies of the Software, and to
c permit persons to whom the Software is furnished to do so, subject to
c the following conditions:
c
c The above copyright notice and this permission notice shall be
c included in all copies or substantial portions of the Software.
c
c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
c EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
c MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
c IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
c CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
c TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
c SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
program main
c constant definitions:
integer imm,jmm,kmm,ngrid
parameter (imm=2,jmm=2,kmm=2,ngrid=5)
c variable declarations:
character*32 filenm
integer i,j,k,nx,igrid
real x(imm,jmm,kmm),y(imm,jmm,kmm),z(imm,jmm,kmm)
real ga,rgas,ro,wx,wy,wz,p,q(5)
real fsmach,alpha,re,time
c generate mesh and solution:
do 10 k = 1, kmm
do 10 j = 1, jmm
do 10 i = 1, imm
x(i,j,k) = real(i)
y(i,j,k) = real(j)
z(i,j,k) = real(k)
10 continue
ga = 1.4
rgas = 1.0
ro = 0.9
wx = 1.3
wy = 1.2
wz = 1.1
p = 2.3
q(1) = ro
q(2) = ro*wx
q(3) = ro*wy
q(4) = ro*wz
q(5) = p/(ga - 1.0) + 0.5*ro*(wx**2 + wy**2 + wz**2)
c write out 3D mesh Plot3D file:
filenm = 'tiny.xyz'
open (unit=1,file=filenm,form='unformatted')
rewind 1
write(1) ngrid
write(1) (imm,jmm,kmm, igrid=1,ngrid)
do 80 igrid = 1, ngrid
write(1)
$ (((x(i,j,k) + (igrid - 1.0),
$ i=1,imm), j=1,jmm), k=1,kmm),
$ (((y(i,j,k),
$ i=1,imm), j=1,jmm), k=1,kmm),
$ (((z(i,j,k),
$ i=1,imm), j=1,jmm), k=1,kmm)
80 continue
close(unit=1)
c write out 3D solution Plot3D file:
filenm = 'tiny.q'
fsmach = 0.5
alpha = 0.0
re = 1.0e5
time = 0.0
open (unit=1,file=filenm,form='unformatted')
rewind 1
write(1) ngrid
write(1) (imm,jmm,kmm, igrid=1,ngrid)
do 90 igrid = 1, ngrid
write(1) fsmach,alpha,re,time
write(1)
$ ((((q(nx),
$ i=1,imm), j=1,jmm), k=1,kmm), nx=1,5)
90 continue
close(unit=1)
stop
end
|