brd.f 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. PROGRAM BORDEAUX
  2. C-----------------------------------------------------------
  3. IMPLICIT NONE
  4. REAL*8 AA(21), P(21), T(21), T0(21), Q(21), S(21), Y(21), VAR(21)
  5. REAL*8 COU(21),DIS(21),VIT(21)
  6. REAL*8 CES2, PCES2,ALPHA,A,BPR
  7. REAL*8 VAL,VOL,DELTAVOL,DELTAP,CAP(8)
  8. REAL*8 POL(8),CONG(8), OCC(8),TOTPOL,TOTCONG,TOTPOL0,TOTCONG0
  9. REAL*8 BPRK(8),BPRA(8),BPRB(8),BPRT0(8),BPRT(8),BPRCOEF(8)
  10. REAL*8 ZERO,ONE,TWO, EPS
  11. REAL*8 VOLTC0,VOLTC1,VARTC,VOLVP0,VOLVP1,VARVP
  12. INTEGER CALIB,I, IARGC, ITER, ITERMAX
  13. CHARACTER(LEN=20) LINE
  14. CHARACTER(LEN=50) FICHIER
  15. CHARACTER(LEN=36) SCENARIO
  16. CHARACTER(LEN=12) MODES (8)
  17. ZERO=0.0D0
  18. ONE=1.D0
  19. TWO=2.D0
  20. CALIB=1
  21. ITERMAX=50
  22. EPS=0.1D-9
  23. P = ZERO
  24. T = ZERO
  25. C =============== LES DONNEES
  26. A=ONE
  27. DATA MODES/ 'VP(CBD->CBD)', 'TC(CBD->CBD)',
  28. 1 'VP(CBD->SUB)', 'TC(CBD->SUB)',
  29. 1 'VP(SUB->CBD)', 'TC(SUB->CBD)',
  30. 1 'VP(SUB->SUB)', 'TC(SUB->SUB)'/
  31. C LES DONNEES SONT DANS UN FICHIER TEXTE EXTERNE
  32. IF(IARGC().NE.1) THEN
  33. PRINT*, 'Un fichier de données doit être fournie'
  34. STOP
  35. ENDIF
  36. CALL GETARG(1, FICHIER)
  37. C PRINT*, FICHIER
  38. OPEN(UNIT=1,FILE=FICHIER)
  39. PRINT*, "Reading file: ", FICHIER
  40. 6 READ(1,*,END=7) LINE
  41. IF(LINE(1:4).EQ.':vol') THEN
  42. READ(1,*) T(1:8)
  43. ELSEIF(LINE(1:4).EQ.':hou') THEN
  44. READ(1,*) T(13), T(15)
  45. ELSEIF(LINE(1:4).EQ.':ren') THEN
  46. READ(1,*) P(13), P(15)
  47. ELSEIF(LINE(1:4).EQ.':alp') THEN
  48. READ(1,*) ALPHA
  49. ELSEIF(LINE(1:4).EQ.':cou') THEN
  50. READ(1,*) COU(1:8)
  51. ELSEIF(LINE(1:4).EQ.':dis') THEN
  52. READ(1,*) DIS(1:8)
  53. ELSEIF(LINE(1:4).EQ.':vit') THEN
  54. READ(1,*) VIT(1:8)
  55. ELSEIF(LINE(1:4).EQ.':pri') THEN
  56. READ(1,*) P(20)
  57. ELSEIF(LINE(1:4).EQ.':val') THEN
  58. READ(1,*) VAL
  59. ELSEIF(LINE(1:4).EQ.':ela') THEN
  60. READ(1,*) S(09:12),S(14),S(16),S(17:19),S(21)
  61. ELSEIF(LINE(1:4).EQ.':pol') THEN
  62. READ(1,*) POL
  63. ELSEIF(LINE(1:4).EQ.':con') THEN
  64. READ(1,*) CONG
  65. ELSEIF(LINE(1:4).EQ.':occ') THEN
  66. READ(1,*) OCC
  67. ELSEIF(LINE(1:4).EQ.':abp') THEN
  68. READ(1,*) BPRA
  69. ELSEIF(LINE(1:4).EQ.':bbp') THEN
  70. READ(1,*) BPRB
  71. ELSEIF(LINE(1:4).EQ.':tbp') THEN
  72. READ(1,*) BPRCOEF
  73. ELSEIF(LINE(1:4).EQ.':sce') THEN
  74. READ(1,*) SCENARIO
  75. ENDIF
  76. GOTO 6
  77. 7 CLOSE(1)
  78. C LE VOLUME DE TRANSPORT AVEC LES FLUX INITIAUX
  79. VOL=ZERO
  80. DO 230, I=1,8
  81. VOL=VOL+T(I)/OCC(I)*CONG(I)
  82. 230 CONTINUE
  83. C PRINT*, VOL
  84. C CALIBRER LA VALEUR DE K POUR CHAQUE MODE
  85. C
  86. C The BPR function is
  87. C
  88. C T = T_0 ( 1 + a (V/K)^b )
  89. C
  90. C So:
  91. C
  92. C K = V ( ( T/T_0 - 1 ) * (1/a) ) ^ (-1/b)
  93. C
  94. DO 22, I=1,8
  95. BPRT(I)=DIS(I)/VIT(I)
  96. BPRT0(I)=BPRT(I)/BPRCOEF(I)
  97. BPRK(I)=VOL*((ONE/BPRA(I)*(BPRT(I)/BPRT0(I)-ONE)))
  98. 2 **(-ONE/BPRB(I))
  99. C PRINT '(I5,7F7.2)',I,BPRA(I),BPRB(I),BPRT0(I),BPRT(I),
  100. C 2 BPRCOEF(I), BPRK(I)
  101. 22 CONTINUE
  102. C DO 28, I=1,9
  103. C P(I)=COU(I)*DIS(I)+
  104. C 2 BPR(VOL,BPRT0(I),BPRA(I),BPRB(I),BPRK(I))*VAL
  105. C PRINT '(I5,F7.3)', I, P(I)
  106. C28 CONTINUE
  107. C CALCUL DES COUTS GENERALISES
  108. DO 19, I=1,8
  109. P(I)=COU(I)*DIS(I)+DIS(I)/VIT(I)*VAL
  110. C PRINT '(I5,6F9.3)', I,VIT(I),DIS(I),COU(I),VAL,P(I),
  111. C + COU(I)*DIS(I)/P(I)
  112. 19 CONTINUE
  113. ITER=0
  114. C ============= LA CALIBRATION DES PARAMETRES (SI CALIB = 1)
  115. C ============= CALCUL DES PRIX, DES VOLUMES
  116. 100 CONTINUE
  117. C DEBUT DE LA BOUCLE PRINCIPALE. CETTE BOUCLE CONTIENT QUATRE NIVEAUX
  118. C (CORRESPONDANT A L ARBORESCENCE DU MODELE). ELLE EST PASSEE DEUX FOIS,
  119. C LA PREMIERE POUR LA CALIBRATION (CALIB=1), ET LA DEUXIEME POUR LA
  120. C SIMULATION (CALIB=0) DES CHANGEMENTS DANS LES PARAMETRES PRIX OU
  121. C ELASTICITES
  122. C == NIVEAU 1
  123. IF (CALIB.EQ.1) THEN
  124. CALL CAL2(P(01),P(02),T(01),T(02),S(09),AA(01),AA(02))
  125. CALL CAL2(P(03),P(04),T(03),T(04),S(10),AA(03),AA(04))
  126. CALL CAL2(P(05),P(06),T(05),T(06),S(11),AA(05),AA(06))
  127. CALL CAL2(P(07),P(08),T(07),T(08),S(12),AA(07),AA(08))
  128. Y(09)=P(1)*T(1)+P(2)*T(2)
  129. Y(10)=P(3)*T(3)+P(4)*T(4)
  130. Y(11)=P(5)*T(5)+P(6)*T(6)
  131. Y(12)=P(7)*T(7)+P(8)*T(8)
  132. ENDIF
  133. P(09)=PCES2(P(01),P(02),A,AA(01),AA(02),S(09))
  134. P(10)=PCES2(P(03),P(04),A,AA(03),AA(04),S(10))
  135. P(11)=PCES2(P(05),P(06),A,AA(05),AA(06),S(11))
  136. P(12)=PCES2(P(07),P(08),A,AA(07),AA(08),S(12))
  137. T(09)= CES2(T(01),T(02),A,AA(01),AA(02),S(09))
  138. T(10)= CES2(T(03),T(04),A,AA(03),AA(04),S(10))
  139. T(11)= CES2(T(05),T(06),A,AA(05),AA(06),S(11))
  140. T(12)= CES2(T(07),T(08),A,AA(07),AA(08),S(12))
  141. C == NIVEAU 2
  142. IF (CALIB.EQ.1) THEN
  143. CALL CAL2(P(09),P(10),T(09),T(10),S(14),AA(09),AA(10))
  144. CALL CAL2(P(11),P(12),T(11),T(12),S(16),AA(11),AA(12))
  145. Y(14)=Y(09)+Y(10)
  146. Y(16)=Y(11)+Y(12)
  147. ENDIF
  148. P(14)=PCES2(P(09),P(10),A,AA(09),AA(10),S(14))
  149. P(16)=PCES2(P(11),P(12),A,AA(11),AA(12),S(16))
  150. T(14)= CES2(T(09),T(10),A,AA(09),AA(10),S(14))
  151. T(16)= CES2(T(11),T(12),A,AA(11),AA(12),S(16))
  152. C == NIVEAU 3
  153. IF (CALIB.EQ.1) THEN
  154. CALL CAL2(P(13),P(14),T(13),T(14),S(17),AA(13),AA(14))
  155. CALL CAL2(P(15),P(16),T(15),T(16),S(18),AA(15),AA(16))
  156. Y(17)=P(13)*T(13)+Y(14)
  157. Y(18)=P(15)*T(15)+Y(16)
  158. ENDIF
  159. P(17)=PCES2(P(13),P(14),A,AA(13),AA(14),S(17))
  160. P(18)=PCES2(P(15),P(16),A,AA(15),AA(16),S(18))
  161. T(17)= CES2(T(13),T(14),A,AA(13),AA(14),S(17))
  162. T(18)= CES2(T(15),T(16),A,AA(15),AA(16),S(18))
  163. C == NIVEAU 4
  164. IF (CALIB.EQ.1) THEN
  165. CALL CAL2(P(17),P(18),T(17),T(18),S(19),AA(17),AA(18))
  166. Y(19)=Y(17)+Y(18)
  167. T(20)=(ONE-ALPHA)/ALPHA*Y(19)
  168. ENDIF
  169. P(19)=PCES2(P(17),P(18),A,AA(17),AA(18),S(19))
  170. T(19)= CES2(T(17),T(18),A,AA(17),AA(18),S(19))
  171. C == NIVEAU 5
  172. IF (CALIB.EQ.1) THEN
  173. CALL CAL2(P(19),P(20),T(19),T(20),S(21),AA(19),AA(20))
  174. Y(21)=Y(19)+P(20)*T(20)
  175. C SAVEGARDER LES FLUX DE TRANSPORT INITIAUX DANS UN TABLEAU
  176. DO I=1, 8
  177. T0(I)=T(I)
  178. ENDDO
  179. T0(13)=T(13)
  180. T0(15)=T(15)
  181. T0(20)=T(20)
  182. T0(21)=CES2(T(19),T(20),A,AA(19),AA(20),S(21))
  183. ENDIF
  184. P(21)=PCES2(P(19),P(20),A,AA(19),AA(20),S(21))
  185. T(21)= CES2(T(19),T(20),A,AA(19),AA(20),S(21))
  186. C -----------------------------------------------------------
  187. C ============ VERIFICATION DU CALCUL ET VOLUMES DE TRANSPORT
  188. C -----------------------------------------------------------
  189. C CALCUL DES UTILITES (INDICES QUANTITES) A TOUS LES NIVEAUX
  190. CALL QUANTITIES(AA,P,S,Y,A,POL,CONG,OCC,Q,TOTPOL,TOTCONG)
  191. IF(CALIB.EQ.1) THEN
  192. CALIB=0
  193. C ON REPREND LE FICHIER DES DONNEES POUR LIRE LES CHANGEMENTS DE PRIX
  194. C OU D ELASTICITE ET ON EXECUTE UNE DEUXIEME FOIS LA BOUCLE
  195. OPEN(UNIT=1,FILE=FICHIER)
  196. 16 READ(1,*,END=17) LINE
  197. IF(LINE(1:4).EQ.':2di') THEN
  198. READ(1,*) DIS(1:8)
  199. ELSEIF(LINE(1:4).EQ.':2el') THEN
  200. READ(1,*) S(09:12),S(14),S(16),S(17:19),S(21)
  201. ELSEIF(LINE(1:4).EQ.':2vi') THEN
  202. READ(1,*) VIT(1:8)
  203. ELSEIF(LINE(1:4).EQ.':2re') THEN
  204. READ(1,*) P(13), P(15)
  205. ELSEIF(LINE(1:4).EQ.':2pr') THEN
  206. READ(1,*) P(20)
  207. ELSEIF(LINE(1:4).EQ.':2co') THEN
  208. READ(1,*) COU(1:8)
  209. ELSEIF(LINE(1:4).EQ.':2va') THEN
  210. READ(1,*) VAL
  211. ELSEIF(LINE(1:4).EQ.':2oc') THEN
  212. READ(1,*) OCC(1:8)
  213. ENDIF
  214. GOTO 16
  215. 17 CLOSE(1)
  216. DO 18, I=1,8
  217. P(I)=COU(I)*DIS(I)+DIS(I)/VIT(I)*VAL
  218. 18 CONTINUE
  219. TOTCONG0=TOTCONG
  220. TOTPOL0=TOTPOL
  221. GOTO 100
  222. ENDIF
  223. DO 14, I=1,8
  224. VAR(I) =(Q( I)-T0( I))/T0( I)*100.D0
  225. 14 CONTINUE
  226. VAR(13)=(Q(13)-T0(13))/T0(13)*100.D0
  227. VAR(15)=(Q(15)-T0(15))/T0(15)*100.D0
  228. VAR(20)=(Q(20)-T0(20))/T0(20)*100.D0
  229. VAR(21)=(Q(21)-T0(21))/T0(21)*100.D0
  230. C FIN DE LA BOUCLE PRINCIPALE
  231. C VOLUME TOTAL DE TRANSPORT AVEC LES NOUVEAUX FLUX
  232. VOL=ZERO
  233. DO 23, I=1,8
  234. VOL=VOL+Q(I)/OCC(I)*CONG(I)
  235. 23 CONTINUE
  236. DO 28, I=1,8
  237. P(I)=COU(I)*DIS(I)+
  238. 2 BPR(VOL,BPRT0(I),BPRA(I),BPRB(I),BPRK(I))*VAL
  239. C PRINT '(I5,3F9.3)', I, BPRT0(I), BPRK(I), P(I)
  240. 28 CONTINUE
  241. VOLVP0=T0(1)+T0(3)+T0(5)+T0(7)
  242. VOLVP1=Q(1)+Q(3)+Q(5)+Q(7)
  243. VOLTC0=T0(2)+T0(4)+T0(6)+T0(8)
  244. VOLTC1=Q(2)+Q(4)+Q(6)+Q(8)
  245. VARTC = ( VOLTC1 - VOLTC0 ) / VOLTC0
  246. VARVP = ( VOLVP1 - VOLVP0 ) / VOLVP0
  247. ITER=ITER+1
  248. DELTAP=ZERO
  249. DO 60, I=1,8
  250. DELTAP=DELTAP+(Q(I)-T(I))*(Q(I)-T(I))
  251. 60 CONTINUE
  252. PRINT '(9X,A11,I4,A6,E10.2)', ' Itération', ITER,'---> ', DELTAP
  253. IF((DELTAP.GT.EPS).AND.(ITER.LT.ITERMAX)) THEN
  254. DO 61, I=1,8
  255. T(I)=Q(I)
  256. 61 CONTINUE
  257. T(20)=Q(20)
  258. GOTO 100
  259. ENDIF
  260. IF(ITER.EQ.1) GOTO 100
  261. VOLVP0 = T0(1) + T0(3) + T0(5) + T0(7)
  262. VOLTC0 = T0(2) + T0(4) + T0(6) + T0(8)
  263. VOLVP1 = Q(1) + Q(3) + Q(5) + Q(7)
  264. VOLTC1 = Q(2) + Q(4) + Q(6) + Q(8)
  265. VARTC = ( VOLTC1 - VOLTC0 ) / VOLTC0 * 100.0D0
  266. VARVP = ( VOLVP1 - VOLVP0 ) / VOLVP0 * 100.0D0
  267. C AFFICHE LE RESULTAT
  268. PRINT*
  269. PRINT '(10X,"===========================================")'
  270. PRINT '(10X,A36)', SCENARIO
  271. PRINT '(10X,"*******************************************")'
  272. PRINT '(12X,A9,3X,3A9)', 'Modes', 'Base', 'New','%'
  273. PRINT '(10X,"-------------------------------------------")'
  274. DO I=1,8,2
  275. PRINT '(12X,A12,3F9.2)', MODES(I), T0(I), Q(I), VAR(I)
  276. ENDDO
  277. PRINT '(10X,"-----")'
  278. PRINT '(12X,A12,3F9.2)','Total VP ',VOLVP0,VOLVP1,VARVP
  279. PRINT '(12X,A12,3F9.2)','Congestion ',
  280. & TOTCONG0,TOTCONG,(TOTCONG-TOTCONG0)/TOTCONG0*100
  281. PRINT '(12X,A12,3F9.2)','Pollution ',
  282. & TOTPOL0,TOTPOL,(TOTPOL-TOTPOL0)/TOTPOL0*100
  283. PRINT '(10X,"...........................................")'
  284. DO I=2,8,2
  285. PRINT '(12X,A12,3F9.2)', MODES(I), T0(I), Q(I), VAR(I)
  286. ENDDO
  287. PRINT '(10X,"-----")'
  288. PRINT '(12X,A12,3F9.2)','Total TC ',VOLTC0,VOLTC1,VARTC
  289. PRINT '(10X,"-------------------------------------------")'
  290. PRINT '(12X,A12,3A9)', 'Housing ', 'Base', 'New','% '
  291. PRINT '(10X,"-------------------------------------------")'
  292. I=13
  293. PRINT '(12X,A12,3F9.2)', ' H_CBD ', T0(I), Q(I), VAR(I)
  294. I=15
  295. PRINT '(12X,A12,3F9.2)', ' H_SUB ', T0(I), Q(I), VAR(I)
  296. PRINT '(10X,"===========================================")'
  297. PRINT*
  298. C FIN DU PROGRAMME
  299. END
  300. C ----------------------------------------
  301. C LES FONCTIONS ET SOUS-ROUTINES UTILISEES
  302. C DANS LE PROGRAMME
  303. C ----------------------------------------
  304. FUNCTION CES2(X,Y,A,A1,A2,S)
  305. IMPLICIT NONE
  306. REAL*8 CES2
  307. REAL*8 X,Y,A,A1,A2,S
  308. REAL*8 R,ONE
  309. ONE=1.D0
  310. R=(S-ONE)/S
  311. CES2= A * ( A1**(ONE-R) * X**R +
  312. 1 A2**(ONE-R) * Y**R )**(ONE/R)
  313. RETURN
  314. END
  315. FUNCTION PCES2(P1,P2,A,A1,A2,S)
  316. IMPLICIT NONE
  317. REAL*8 PCES2
  318. REAL*8 P1,P2,A,A1,A2,S
  319. REAL*8 R,RP
  320. REAL*8 ONE
  321. ONE=1.D0
  322. R=ONE-S
  323. PCES2= A * ( A1 * P1**R +
  324. 1 A2 * P2**R )**(ONE/R)
  325. RETURN
  326. END
  327. SUBROUTINE CAL2(P1,P2,T1,T2,S,A1,A2)
  328. IMPLICIT NONE
  329. REAL*8 P1,P2,T1,T2,S,A1,A2
  330. REAL*8 R
  331. R=1.D0/S
  332. A1=(P1*T1**R/(P1*T1**R+P2*T2**R))**S
  333. A2=(P2*T2**R/(P1*T1**R+P2*T2**R))**S
  334. RETURN
  335. END
  336. SUBROUTINE QUANTITIES(AA,P,S,Y,A,POL,CONG,OCC,Q,TOTPOL,TOTCONG)
  337. IMPLICIT NONE
  338. REAL*8 AA(21), P(21), S(21), Y(21), A, POL(8), CONG(8), OCC(8)
  339. REAL*8 Q(21), TOTPOL, TOTCONG
  340. REAL*8 CES2
  341. REAL*8 ZERO
  342. INTEGER I
  343. ZERO=0.D0
  344. Q(1)=Y(21)/P(21)*
  345. 1 AA(19)*(P(21)/P(19))**S(21)*
  346. 1 AA(17)*(P(19)/P(17))**S(19)*
  347. 2 AA(14)*(P(17)/P(14))**S(17)*
  348. 3 AA(09)*(P(14)/P(09))**S(14)*
  349. 4 AA(01)*(P(09)/P(01))**S(09)
  350. Q(2)=Y(21)/P(21)*
  351. 1 AA(19)*(P(21)/P(19))**S(21)*
  352. 1 AA(17)*(P(19)/P(17))**S(19)*
  353. 2 AA(14)*(P(17)/P(14))**S(17)*
  354. 3 AA(09)*(P(14)/P(09))**S(14)*
  355. 4 AA(02)*(P(09)/P(02))**S(09)
  356. Q(3)=Y(21)/P(21)*
  357. 1 AA(19)*(P(21)/P(19))**S(21)*
  358. 1 AA(17)*(P(19)/P(17))**S(19)*
  359. 2 AA(14)*(P(17)/P(14))**S(17)*
  360. 3 AA(10)*(P(14)/P(10))**S(14)*
  361. 4 AA(03)*(P(10)/P(03))**S(10)
  362. Q(4)=Y(21)/P(21)*
  363. 1 AA(19)*(P(21)/P(19))**S(21)*
  364. 1 AA(17)*(P(19)/P(17))**S(19)*
  365. 2 AA(14)*(P(17)/P(14))**S(17)*
  366. 3 AA(10)*(P(14)/P(10))**S(14)*
  367. 4 AA(04)*(P(10)/P(04))**S(10)
  368. Q(5)=Y(21)/P(21)*
  369. 1 AA(19)*(P(21)/P(19))**S(21)*
  370. 1 AA(18)*(P(19)/P(18))**S(19)*
  371. 2 AA(16)*(P(18)/P(16))**S(18)*
  372. 3 AA(11)*(P(16)/P(11))**S(16)*
  373. 4 AA(05)*(P(11)/P(05))**S(11)
  374. Q(6)=Y(21)/P(21)*
  375. 1 AA(19)*(P(21)/P(19))**S(21)*
  376. 1 AA(18)*(P(19)/P(18))**S(19)*
  377. 2 AA(16)*(P(18)/P(16))**S(18)*
  378. 3 AA(11)*(P(16)/P(11))**S(16)*
  379. 4 AA(06)*(P(11)/P(06))**S(11)
  380. Q(7)=Y(21)/P(21)*
  381. 1 AA(19)*(P(21)/P(19))**S(21)*
  382. 1 AA(18)*(P(19)/P(18))**S(19)*
  383. 2 AA(16)*(P(18)/P(16))**S(18)*
  384. 3 AA(12)*(P(16)/P(12))**S(16)*
  385. 4 AA(07)*(P(12)/P(07))**S(12)
  386. Q(8)=Y(21)/P(21)*
  387. 1 AA(19)*(P(21)/P(19))**S(21)*
  388. 1 AA(18)*(P(19)/P(18))**S(19)*
  389. 2 AA(16)*(P(18)/P(16))**S(18)*
  390. 3 AA(12)*(P(16)/P(12))**S(16)*
  391. 4 AA(08)*(P(12)/P(08))**S(12)
  392. Q(13)=Y(21)/P(21)*
  393. 1 AA(19)*(P(21)/P(19))**S(21)*
  394. 1 AA(17)*(P(19)/P(17))**S(19)*
  395. 2 AA(13)*(P(17)/P(13))**S(17)
  396. Q(15)=Y(21)/P(21)*
  397. 1 AA(19)*(P(21)/P(19))**S(21)*
  398. 1 AA(18)*(P(19)/P(18))**S(19)*
  399. 2 AA(15)*(P(18)/P(15))**S(18)
  400. Q(20)=Y(21)/P(21)*AA(20)*(P(21)/P(20))**S(21)
  401. Q(09)=CES2(Q(01),Q(02),A,AA(01),AA(02),S(09))
  402. Q(10)=CES2(Q(03),Q(04),A,AA(03),AA(04),S(10))
  403. Q(11)=CES2(Q(05),Q(06),A,AA(05),AA(06),S(11))
  404. Q(12)=CES2(Q(07),Q(08),A,AA(07),AA(08),S(12))
  405. Q(14)=CES2(Q(09),Q(10),A,AA(09),AA(10),S(14))
  406. Q(16)=CES2(Q(11),Q(12),A,AA(11),AA(12),S(16))
  407. Q(17)=CES2(Q(13),Q(14),A,AA(13),AA(14),S(17))
  408. Q(18)=CES2(Q(15),Q(16),A,AA(15),AA(16),S(18))
  409. Q(19)=CES2(Q(17),Q(18),A,AA(17),AA(18),S(19))
  410. Q(21)=CES2(Q(19),Q(20),A,AA(19),AA(20),S(21))
  411. C CALCUL DES EMISSIONS ET DU VOLUME EQUIVALENT VOITURE (CONGESTION)
  412. TOTPOL=ZERO
  413. TOTCONG=ZERO
  414. DO 10, I=1, 8
  415. TOTPOL=TOTPOL+POL(I)*Q(I)/OCC(I)
  416. TOTCONG=TOTCONG+CONG(I)*Q(I)/OCC(I)
  417. 10 CONTINUE
  418. RETURN
  419. END
  420. FUNCTION BPR(V,T0,A,B,K)
  421. IMPLICIT NONE
  422. REAL*8 BPR, V, T0, A, B, K
  423. BPR=T0*(1.D0+A*(V/K)**B)
  424. RETURN
  425. END