1 |
guez |
3 |
module inigrads_m |
2 |
|
|
|
3 |
|
|
! This module is clean: no C preprocessor directive, no include line. |
4 |
|
|
|
5 |
|
|
implicit none |
6 |
|
|
|
7 |
|
|
contains |
8 |
|
|
|
9 |
|
|
subroutine inigrads(i_f, x, fx, xmin, xmax, y, ymin, ymax, fy, z, fz, dt, & |
10 |
|
|
file, titlel) |
11 |
|
|
|
12 |
|
|
! From dyn3d/inigrads.F, v 1.1.1.1 2004/05/19 12:53:07 |
13 |
|
|
|
14 |
|
|
use gradsdef, only: unit, title, ivar, fichier, firsttime, dtime, iid, & |
15 |
|
|
ifd, imd, xd, iid, jid, jfd, jmd, yd, lmd, zd, irec |
16 |
|
|
|
17 |
|
|
integer, intent(in):: i_f |
18 |
|
|
real, intent(in):: x(:), y(:), z(:), fx, fy, fz, dt |
19 |
|
|
real, intent(in):: xmin, xmax, ymin, ymax |
20 |
|
|
character(len=*), intent(in):: file, titlel |
21 |
|
|
|
22 |
|
|
! Variables local to the procedure: |
23 |
|
|
integer im, jm, lm |
24 |
|
|
integer i, j, l |
25 |
|
|
integer:: nf = 0 |
26 |
|
|
|
27 |
|
|
!------------------------------------- |
28 |
|
|
|
29 |
|
|
print *, 'Call sequence information: inigrads' |
30 |
|
|
|
31 |
|
|
im = size(x) |
32 |
|
|
jm = size(y) |
33 |
|
|
lm = size(z) |
34 |
|
|
|
35 |
|
|
unit(1)=66 |
36 |
|
|
unit(2)=32 |
37 |
|
|
unit(3)=34 |
38 |
|
|
unit(4)=36 |
39 |
|
|
unit(5)=38 |
40 |
|
|
unit(6)=40 |
41 |
|
|
unit(7)=42 |
42 |
|
|
unit(8)=44 |
43 |
|
|
unit(9)=46 |
44 |
|
|
|
45 |
|
|
if (i_f.le.nf) stop'verifier les appels a inigrads' |
46 |
|
|
|
47 |
|
|
nf=i_f |
48 |
|
|
title(i_f)=titlel |
49 |
|
|
ivar(i_f)=0 |
50 |
|
|
|
51 |
|
|
fichier(i_f)=trim(file) |
52 |
|
|
|
53 |
|
|
firsttime(i_f)=.true. |
54 |
|
|
dtime(i_f)=dt |
55 |
|
|
|
56 |
|
|
iid(i_f)=1 |
57 |
|
|
ifd(i_f)=im |
58 |
|
|
imd(i_f)=im |
59 |
|
|
do i=1, im |
60 |
|
|
xd(i, i_f)=x(i)*fx |
61 |
|
|
if(xd(i, i_f).lt.xmin) iid(i_f)=i+1 |
62 |
|
|
if(xd(i, i_f).le.xmax) ifd(i_f)=i |
63 |
|
|
enddo |
64 |
|
|
print *, 'On stoke du point ', iid(i_f), ' à ', ifd(i_f), ' en x' |
65 |
|
|
|
66 |
|
|
jid(i_f)=1 |
67 |
|
|
jfd(i_f)=jm |
68 |
|
|
jmd(i_f)=jm |
69 |
|
|
do j=1, jm |
70 |
|
|
yd(j, i_f)=y(j)*fy |
71 |
|
|
if(yd(j, i_f).gt.ymax) jid(i_f)=j+1 |
72 |
|
|
if(yd(j, i_f).ge.ymin) jfd(i_f)=j |
73 |
|
|
enddo |
74 |
|
|
print *, 'On stoke du point ', jid(i_f), ' à ', jfd(i_f), ' en y' |
75 |
|
|
|
76 |
|
|
print *, 'fichier(i_f)=', fichier(i_f) |
77 |
|
|
print *, 4 * (ifd(i_f) - iid(i_f)) * (jfd(i_f) - jid(i_f)) |
78 |
|
|
print *, 'Opening "' // trim(file) // '.dat"...' |
79 |
|
|
|
80 |
|
|
OPEN(unit=unit(i_f)+1, FILE=trim(file)//'.dat', FORM='unformatted', & |
81 |
|
|
ACCESS='direct', RECL=4*(ifd(i_f)-iid(i_f)+1)*(jfd(i_f)-jid(i_f)+1)) |
82 |
|
|
|
83 |
|
|
lmd(i_f)=lm |
84 |
|
|
do l=1, lm |
85 |
|
|
zd(l, i_f)=z(l)*fz |
86 |
|
|
enddo |
87 |
|
|
|
88 |
|
|
irec(i_f)=0 |
89 |
|
|
print *, "i_f = ", i_f |
90 |
|
|
print *, "imd(i_f) = ", imd(i_f) |
91 |
|
|
print *, "jmd(i_f) = ", jmd(i_f) |
92 |
|
|
print *, "lmd(i_f) = ", lmd(i_f) |
93 |
|
|
|
94 |
|
|
end subroutine inigrads |
95 |
|
|
|
96 |
|
|
end module inigrads_m |