1 | SUBROUTINE genere_kgaz(cas_genere_kg,ep_genere_kg)
2 | IMPLICIT NONE
3 | c
4 | c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
5 | c generation de "kg" pour chaque gaz pour "cecile.f"
6 | c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7 | c
8 | c.......................................................................
9 | c
10 | INCLUDE 'cecile.inc'
11 |
12 | c ngaz_mx est defini dans propradia
13 | c et utilise dans radiatif
14 | include 'propradia.inc'
15 | include 'radiatif.inc'
16 | c
17 | c.......................................................................
18 | c
19 | c cas : si cas=1 c'est une emission de paroi
20 | c si cas=2 c'est une emission de volume
21 | c ep : epaisseur de la maille d'emission (seulement pour cas=2)
22 | c
23 | c.......................................................................
24 | c
25 | INTEGER cas_genere_kg, min
26 | DOUBLE PRECISION ep_genere_kg
27 | DOUBLE PRECISION kgc_genere_kg
28 | double precision somme, tau
29 | dimension tau(ngaz_mx)
30 | c
31 | c.......................................................................
32 | c
33 | DOUBLE PRECISION tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8,tmp9
34 | INTEGER itmp1,itmp2,itmp3,itmp4,itmp5
35 | c
36 | c.......................................................................
37 | c
38 | c&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
39 | c PRE-CALCUL
40 | c----------------------------------------------------------------------
41 | ccccc print *, 'pre-calcul'
42 | ccccc print *, cas_genere_kg,ep_genere_kg, ngaz_mx
43 | do igaz = 1, 3
44 | cc print *,'debut genere_kgaz'
45 | cc print *, igaz, in,kgbar(igaz, in),kgbar(igaz, in)*ep_genere_kg
46 | cc read *
47 | if ((kgbar(igaz, in)*ep_genere_kg) .le. 1.d-6) then
48 | ! precaution debug
49 | kg(igaz) = 0.d+0
50 | tau(igaz)= 1.d+0
51 |
52 | else
53 | ! pre-calcul normal
54 | !epaisseur jamais nulle meme pour paroi
55 | CALL trss(phig(igaz,in),kgbar(igaz,in),ep_genere_kg,tau(igaz))
56 | !kg(igaz)= -log(tau(igaz)/ep_genere_kg)
57 | !correction du bug trouve par Patrice: version novembre 2002
58 | kg(igaz)= -log(tau(igaz))/ep_genere_kg
59 | endif
60 | ccccc print *, 'tau(',igaz,'): ', tau(igaz)
61 | enddo
62 |
63 | c----------------------------------------------------------------------
64 | c SELECTION DU PREMIER GAZ
65 | c----------------------------------------------------------------------
66 | tmp9 = tau(1)
67 | min = 1
68 | do igaz= 2, 3
69 | if (tau(igaz) .le.tmp9 ) then
70 | tmp9 = tau(igaz)
71 | min = igaz
72 | endif
73 | enddo
74 | c----------------------------------------------------------------------
75 | c Tirage des kg des gaz
76 | c----------------------------------------------------------------------
77 |
78 | c remplacer tout ce qui suit par modulo etc.... A FAIRE
79 | if (min.eq.1)then
80 | somme = kg(2)+kg(3)+ 1.d+0 * ksbar(in)
81 | c if (kgbar(1,in).eq. 0.d+0) then
82 | if ((kgbar(1, in)*ep_genere_kg) .le. 1.d-6) then
83 | kg(1)=0.d+0
84 | kgskgbar(1)=1.d+0
85 | else
86 | call genere_kg(cas_genere_kg,ep_genere_kg,1,somme)
87 | endif
88 |
89 | somme = kg(1)+kg(3)+ 1.d+0 * ksbar(in)
90 | c if (kgbar(2,in).eq. 0.d+0) then
91 | if ((kgbar(2, in)*ep_genere_kg) .le. 1.d-6) then
92 | kg(2)=0.d+0
93 | kgskgbar(2)=1.d+0
94 | else
95 | call genere_kg(cas_genere_kg,ep_genere_kg,2,somme)
96 | endif
97 |
98 | somme = kg(1)+kg(2)+ 1.d+0 * ksbar(in)
99 | c if (kgbar(3,in).eq. 0.d+0) then
100 | if ((kgbar(3, in)*ep_genere_kg) .le. 1.d-6) then
101 | kg(3)=0.d+0
102 | kgskgbar(3)=1.d+0
103 | else
104 | call genere_kg(cas_genere_kg,ep_genere_kg,3,somme)
105 | endif
106 |
107 | elseif (min.eq.2) then
108 | somme = kg(1)+kg(3)+ 1.d+0 * ksbar(in)
109 | c if (kgbar(2,in).eq. 0.d+0) then
110 | if ((kgbar(2, in)*ep_genere_kg) .le. 1.d-6) then
111 | kg(2)=0.d+0
112 | kgskgbar(2)=1.d+0
113 | else
114 | call genere_kg(cas_genere_kg,ep_genere_kg,2,somme)
115 | endif
116 |
117 | somme = kg(2)+kg(3)+ 1.d+0 * ksbar(in)
118 | c if (kgbar(1,in).eq. 0.d+0) then
119 | if ((kgbar(1, in)*ep_genere_kg) .le. 1.d-6) then
120 | kg(1)=0.d+0
121 | kgskgbar(1)=1.d+0
122 | else
123 | call genere_kg(cas_genere_kg,ep_genere_kg,1,somme)
124 | endif
125 |
126 | somme = kg(1)+kg(2)+ 1.d+0 * ksbar(in)
127 | c if (kgbar(3,in).eq. 0.d+0) then
128 | if ((kgbar(3, in)*ep_genere_kg) .le. 1.d-6) then
129 | kg(3)=0.d+0
130 | kgskgbar(3)=1.d+0
131 | else
132 | call genere_kg(cas_genere_kg,ep_genere_kg,3,somme)
133 | endif
134 |
135 | elseif (min.eq.3) then
136 | somme = kg(1)+kg(2)+ 1.d+0 * ksbar(in)
137 | cccc print *, kg(1),kg(2), ksbar(in)
138 | cccc read *
139 | ccc somme = 0.d+0
140 | c if (kgbar(3,in).eq. 0.d+0) then
141 | if ((kgbar(3, in)*ep_genere_kg) .le. 1.d-6) then
142 | kg(3)=0.d+0
143 | kgskgbar(3)=1.d+0
144 | else
145 | call genere_kg(cas_genere_kg,ep_genere_kg,3,somme)
146 | endif
147 |
148 | somme = kg(2)+kg(3)+ 1.d+0 * ksbar(in)
149 | c if (kgbar(1,in).eq. 0.d+0) then
150 | if ((kgbar(1, in)*ep_genere_kg) .le. 1.d-6) then
151 | kg(1)=0.d+0
152 | kgskgbar(1)=1.d+0
153 | else
154 | call genere_kg(cas_genere_kg,ep_genere_kg,1,somme)
155 | endif
156 |
157 | somme = kg(1)+kg(3)+ 1.d+0 * ksbar(in)
158 | c if (kgbar(2,in).eq. 0.d+0) then
159 | if ((kgbar(2, in)*ep_genere_kg) .le. 1.d-6) then
160 | kg(2)=0.d+0
161 | kgskgbar(2)=1.d+0
162 | else
163 | call genere_kg(cas_genere_kg,ep_genere_kg,2,somme)
164 | endif
165 | endif
166 |
167 |
168 | c 6000 call genere_kg(cas_genere_kg,ep_genere_kg,3,0.d+0)
169 | c.......................................................................
170 | c
171 | RETURN
172 | END
173 |
174 |
175 |
176 |
177 |
genere_kgaz.f could be called by:
mcecile.f | [archivage/code2000X_testCG] | - 731 - 830 - 932 - 1058 - 1185 |
mcecile.f | [resultats/pt1_complet] | - 689 - 783 - 877 - 998 - 1118 |
mcecile.f | [src] | - 978 - 1096 - 1230 - 1374 - 1534 |