Télécharger prns.eso

Retour à la liste

Numérotation des lignes :

prns
  1. C PRNS SOURCE PV 21/04/26 21:15:20 10978
  2. C PRNS SOURCE ISPRA 90/05/03
  3. SUBROUTINE PRNS
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6. C=======================================================================
  7. C = CALCUL DU "RESPONSE SPECTRUM" A PARTIR DU "POWER SPECTRUM" =
  8. C = DANS LE CAS NON STATIONNAIRE =
  9. C = =
  10. C = SYNTAXE : =
  11. C = =
  12. C = RSNS*EVOL = PRNS PSNS*EVOL =
  13. C = M *EVOL FREQ*LISTREEL =
  14. C = (TT*LISTREEL AMOR*FLOTTANT =
  15. C = MCL1*MOT MCL2*MOT MCL3*MOT =
  16. C = COUL*MOT =
  17. C = MCL4*MOT NUM*ENTIER =
  18. C = MCL5*MOT DTBASE*FLOTTANT ) =
  19. C = =
  20. C = =
  21. C = RSNS : OBJET DE TYPE EVOLUTIO CONTENANT LES =
  22. C = "RESPONSE SPECTRA" (1 COURBE) =
  23. C = =
  24. C = PSPE : OBJET DE TYPE EVOLUTIO CONTENANT LE "POWER SPECTRUM"=
  25. C = ( UNE COURBE SEULEMENT ) =
  26. C = =
  27. C = M : OBJET DE TYPE EVOLUTIO CONTENANT N COURBES =
  28. C = D'EVOLUTIONS TEMPORELLE (LES TEMPS FINALS DOIVENT =
  29. C = ETRE IDENTIQUES) =
  30. C = =
  31. C = FREQ : OBJET DE TYPE LISTREEL CONTENANT N+1 FREQUENCES =
  32. C = (FREQ"(I)" ET FREQ"(I+1)" DEFINISSENT LA BANDE DE =
  33. C = VALIDITE DE M"(I)") =
  34. C = =
  35. C = TT : OBJET DE TYPE LISTREEL CONTENANT LES PERIODES =
  36. C = AMOR : OBJET DE TYPE FLOTTANT CONTENANT L'AMORTISSEMENT =
  37. C = MCL1 : GRANDEUR DE REPONSE: 'DEPL(ACEMENT)', 'VITE(SSE)' =
  38. C = OU 'ACCE(LERATION)' (DEFAUT) =
  39. C = MCL2 : CHOIX DE L'ABSISSE DU "RESPONSE SPECTRUM" =
  40. C = 'FREQ(UENCE)' OU 'PERI(ODE)' (DEFAUT) =
  41. C = DANS LES 2 CAS LES VALEURS SONT RANGEES PAR VALEURS =
  42. C = CROISSANTES DES ABSCISSES (UTILATION DE IPOL!) =
  43. C = MCL3 : CHOIX DE LA DISTRIBUTION: 'NEG1' =
  44. C = OU 'NEG2' (DEFAUT) =
  45. C = COUL : COULEUR ATTRIBUEE A L'OBJET CREE (FACULTATIF) =
  46. C = ( DEFAUT = COULEUR DE PSNL) =
  47. C = MCL4 : INTEGRATION NEWMARK: =
  48. C = 'NBPR(OCESSUS)' + NUM = NB PROCESSUS STATIONAIRES =
  49. C = 'NBIN(TEGRATION)'+ NUM = NB PTS D'INTEGRATION EN T =
  50. C = 'PREC(ISION)'+ ERR = ERREUR PROC. ITERATIFS =
  51. C = 'TPLU(S)' + TPL = TEMPS EN PLUS =
  52. C = 'NBDE(FAUT)' = VALEURS PAR DEFAUT =
  53. C = MCL5 : CALCUL PAR ONDELETTE =
  54. C = 'ONDE' AVEC FCT DE MODULATION CLASSIQUE =
  55. C = OU AVEC COEFF EN ONDELETTE =
  56. C = =
  57. C = CREATION : creation 3/5/90 =
  58. C = MODIF ONDEL : 24/9/90 =
  59. C = DPI NON EGAL A 8*TAN(1.) !!!!: 24/1/91 =
  60. C = AJOUT DE 20 S A LA DUREE : 29/1/91 =
  61. C = MESSAGE D'ERREUR : 15/9/91 =
  62. C = PROGRAMMEUR : P.P. =
  63. C=======================================================================
  64. C
  65. CHARACTER *72 TI
  66. CHARACTER*12 MOTX,MOTY
  67. C
  68. PARAMETER (NMOCLE=13)
  69. CHARACTER*4 MOTCLE(NMOCLE)
  70. LOGICAL LPERIO,LUSER
  71. LOGICAL LONDEL
  72. C
  73. -INC CCGEOME
  74.  
  75. -INC PPARAM
  76. -INC CCOPTIO
  77. -INC SMEVOLL
  78. -INC SMLREEL
  79. POINTEUR MLREK2.MLREEL
  80. C
  81. DIMENSION XLTI(3)
  82. SEGMENT MTRAV
  83. INTEGER IFREQ(2,NBFREQ)
  84. REAL*8 F(NSPTOM),S(NSPTOM), T(NT), RES(NT)
  85. REAL*8 XLSTAT(3,NBFREQ)
  86. REAL*8 XMTK2(NBFREQ,IPROC)
  87. C REAL*8 XLTIME(NTIME,3)
  88. ENDSEGMENT
  89. C======+++++++++++ bon fontionnement erreur PSRS/PRNS +++++++++++ ======
  90. SEGMENT,MMTRA
  91. REAL*8 XLTIME(NNT,3)
  92. ENDSEGMENT
  93. C======+++++++++++ bon fontionnement erreur PSRS/PRNS +++++++++++ ======
  94. SEGMENT MONDE
  95. REAL*8 XPAS(NBFREQ)
  96. c* POINTEUR IMTK2(NBFREQ).MLREEL
  97. INTEGER IMTK2(NBFREQ)
  98. ENDSEGMENT
  99. C
  100. C 1) LECTURE DES DONNEES GIBIANE
  101. C
  102. C 1.1) LISTE DES MOTS CLEF
  103. C
  104. DATA MOTCLE/'PERI','FREQ','ACCE','VITE','DEPL',
  105. > 'NBDE','NBPR','NBIN','PREC','NEG1','NEG2',
  106. > 'ONDE','TPLU'/
  107. C
  108. C 1.2) DEFAUTS
  109. C (MCLE: "'PERI'->LPERIO, 'ACCE'->KGRAND, 'NEWG'->IDISTR)
  110. C
  111. LPERIO=.TRUE.
  112. KGRAND=1
  113. IDISTR=2
  114. C
  115. IPROC=0
  116. IINT=0
  117. AMOR=0.05D0
  118. XRREUR=1.D-3
  119. TPL=20.D0
  120. C
  121. LONDEL=.FALSE.
  122. C
  123. C 1.3) LECTURE DE L'OBJET EVOLUTIO CONTENANT LE "POWER SPECTRUM"
  124. C
  125. CALL LIROBJ('EVOLUTIO',IPPS,1,IRET)
  126. IF(IRET.EQ.0) GOTO 666
  127. C
  128. C 1.4) LECTURE DE L'OBJET EVOLUTIO CONTENANT LES FONCTIONS DE MODULATIONS
  129. C
  130. CALL LIROBJ('EVOLUTIO',IPMOD,1,IRET)
  131. IF(IRET.EQ.0) GOTO 666
  132. C
  133. C 1.5) LECTURE DE L'OBJET LISTREEL CONTENANT LES FREQUENCES
  134. C
  135. CALL LIROBJ('LISTREEL',IPFRE,1,IRET)
  136. IF(IRET.EQ.0) GOTO 666
  137. C
  138. C 1.6) LECTURE DE L'OBJET LISTREEL DONNANT LE TABLEAU DES PERIODES
  139. C DEFINI PAR L'UTILISATEUR (OPTIONEL)
  140. C
  141. CALL LIROBJ('LISTREEL',IPREET,0,IRET)
  142. IF(IRET.EQ.0)THEN
  143. LUSER=.FALSE.
  144. ELSE
  145. LUSER=.TRUE.
  146. ENDIF
  147. C
  148. C 1.7) LECTURE DU REEL DONNANT L'AMORTISSEMENT (OPTIONEL)
  149. C
  150. CALL LIRREE(AMOR1,0,IRET)
  151. IF(IRET.NE.0)THEN
  152. ENDIF
  153. C
  154. C 1.8) LECTURE DES MOTS MCL1, MCL2, MCL3, MCL4 ...ET DE LA COULEUR
  155. C (OPTIONEL)
  156. C
  157. * 1 CALL LIRMO2(MOTCLE,NMOCLE,IVAL,
  158. * > NCOUL ,NBCOUL,ICOUL,0)
  159. C
  160. 1 CALL LIRMOT(MOTCLE,NMOCLE,IVAL,0)
  161. CALL LIRMOT(NCOUL,NBCOUL,ICOUL,0)
  162. if (icoul.eq.0) icoul=idcoul+1
  163. icoul=icoul-1
  164. C
  165. IF(IVAL.EQ.0)GOTO 9
  166. GOTO(2,3,4,4,4,1,5,6,7,8,8,881,882),IVAL
  167. C ---> "MCL2"
  168. 2 LPERIO=.TRUE.
  169. GOTO 1
  170. 3 LPERIO=.FALSE.
  171. GOTO 1
  172. C ---> "MCL1" 1->ACCE, 2->VITE, 3->DEPL
  173. 4 KGRAND=IVAL-2
  174. GOTO 1
  175. C ---> "MCL4" 1->NBDE, 2->NBPR, 3->NBIN
  176. 5 CALL LIRENT(IPROC,1,IRET)
  177. IF(IRET.EQ.0) GOTO 666
  178. GOTO 1
  179. 6 CALL LIRENT(IINT,1,IRET)
  180. IF(IRET.EQ.0) GOTO 666
  181. GOTO 1
  182. 7 CALL LIRREE(XRREUR,1,IRET)
  183. IF(IRET.EQ.0) GOTO 666
  184. GOTO 1
  185. C ---> "MCL3" 1->NEG1, 2->NEG2
  186. 8 IDISTR=IVAL-9
  187. GOTO 1
  188. C ---> "MCL5" ONDELETTE...
  189. 881 LONDEL=.TRUE.
  190. CALL LIRREE(DTBASE,1,IRET)
  191. IF(IRET.EQ.0) GOTO 666
  192. GOTO 1
  193. C ---> "MCL4" 4->TPL
  194. 882 CALL LIRREE(TPL,1,IRET)
  195. IF(IRET.EQ.0) GOTO 666
  196. GOTO 1
  197. C
  198. C 1.9) "LECTURE" DE LA COULEUR
  199. C
  200. 9 IF(ICOUL.NE.0)GOTO 1
  201. C
  202. IF(IERR.NE.0) GOTO 666
  203. C WRITE(IOIMP,*)'FIN LECTURE'
  204. C
  205. C 2) VERIFICATION DE LA COHERENCE DES DONNEES M, FREQ ET PSNS
  206. C
  207. C 2.1) NB DE COURBE/NB D'INTERVALLE DE FREQUENCE
  208. C
  209. MEVOL2=IPMOD
  210. SEGACT MEVOL2
  211. NBFREQ=MEVOL2.IEVOLL(/1)
  212.  
  213. MLREE3=IPFRE
  214. SEGACT MLREE3
  215. NBFRE1=MLREE3.PROG(/1) -1
  216.  
  217. IF(NBFREQ.NE.NBFRE1)THEN
  218. CALL ERREUR(578)
  219. GOTO 665
  220. ENDIF
  221. C
  222. C 2.2) DEBUT ET FIN DES FONCTIONS DE MODULATION
  223. C
  224. KEVOLL=MEVOL2.IEVOLL(1)
  225. SEGACT KEVOLL
  226. MLREEL=IPROGX
  227. SEGACT MLREEL
  228. TINI=PROG(1)
  229. TFIN=PROG(PROG(/1))
  230. SEGDES MLREEL
  231. SEGDES KEVOLL
  232.  
  233. IF (NBFREQ.GT.1)THEN
  234. DO 10 IE1=2,NBFREQ
  235. KEVOLL=MEVOL2.IEVOLL(IE1)
  236. SEGACT KEVOLL
  237. MLREEL=IPROGX
  238. SEGACT MLREEL
  239. TINI1=PROG(1)
  240. TFIN1=PROG(PROG(/1))
  241. SEGDES MLREEL
  242. SEGDES KEVOLL
  243. IF((ABS(TINI-TINI1)+ABS(TFIN-TFIN1)).GT.1.D-5)THEN
  244. CALL ERREUR(579)
  245. GOTO 665
  246. ENDIF
  247. 10 CONTINUE
  248. ENDIF
  249. TE=TFIN-TINI
  250. C
  251. C 2.3) INTERVALLE DE FREQUENCE DU SPECTRE DE PUISSANCE
  252. C
  253. FRMI=MLREE3.PROG(1)
  254. FRMA=MLREE3.PROG(NBFREQ+1)
  255.  
  256. MEVOL1=IPPS
  257. SEGACT MEVOL1
  258. KEVOL1=MEVOL1.IEVOLL(1)
  259. SEGACT KEVOL1
  260. C
  261. IF(ICOUL.EQ.0) ICOUL=KEVOL1.NUMEVX
  262. C
  263. MLREE1=KEVOL1.IPROGX
  264. MLREE2=KEVOL1.IPROGY
  265. SEGACT MLREE1
  266. FRMI1=MLREE1.PROG(1)
  267. NBSPEC=MLREE1.PROG(/1)
  268. FRMA1=MLREE1.PROG(NBSPEC)
  269. IF(.NOT.LONDEL)THEN
  270. IF ((ABS(FRMI-FRMI1)+ABS(FRMA-FRMA1)).GT.1.D-5)THEN
  271. CALL ERREUR(580)
  272. GOTO 664
  273. ENDIF
  274. ENDIF
  275. C
  276. C 2.4) VERIFICATION SPECIFIQUE DU CALCUL EN ONDELETTE
  277. C -NB DE BANDE DE FREQUENCE
  278. C -REPARTITION DES BANDES PAR OCTAVE
  279. C -DETERMINATION DU PAS DE TEMPS D'IDENTIFICATION
  280. C
  281. IF(LONDEL)THEN
  282. C
  283. IF(NBSPEC.NE.NBFREQ)THEN
  284. CALL ERREUR(581)
  285. GOTO 664
  286. ENDIF
  287. C
  288. FREQBA=MLREE3.PROG(2)
  289. FREQB=FREQBA
  290. DO 800 IE1=2,NBFREQ
  291. FFREQ=MLREE3.PROG(IE1+1)-MLREE3.PROG(IE1)
  292. IF (ABS(FFREQ-FREQB)/FREQB.GT.1.D-5)THEN
  293. CALL ERREUR(582)
  294. GOTO 664
  295. ENDIF
  296. FREQC=3*FREQB/2
  297. IF(ABS(MLREE1.PROG(IE1)-FREQC)/FREQC.GT.1.D-5)THEN
  298. CALL ERREUR(583)
  299. GOTO 664
  300. ENDIF
  301. FREQB=FREQB*2
  302. 800 CONTINUE
  303. C
  304. SEGINI, MONDE
  305. DDXMXP=0.D0
  306. DO 805 IE1=1,NBFREQ
  307. KEVOLL=MEVOL2.IEVOLL(IE1)
  308. SEGACT KEVOLL
  309. MLREEL=IPROGX
  310. SEGACT MLREEL
  311. DDXMAX=0.D0
  312. DO 801 IE2=2,PROG(/1)
  313. DDMMA=PROG(IE2)-PROG(IE2-1)
  314. IF(DDMMA.GT.DDXMAX)DDXMAX=DDMMA
  315. 801 CONTINUE
  316. ITE=INT(TE/DDXMAX+1.D-5)
  317. TTEST=TE-ITE*DDXMAX
  318. ITE=INT(DDXMXP/DDXMAX+1.D-5)
  319. TTEST=TTEST+DDXMXP-ITE*DDXMAX
  320. IF((ABS(TTEST).GT.2.D-5).OR.(ITE.GT.2))THEN
  321. INTERR(1)=IE1
  322. CALL ERREUR(584)
  323. DDXMAX=0.D0
  324. DO 802 IE2=2,PROG(/1)
  325. DDXMAX=DDXMAX+(PROG(IE2)-PROG(IE2-1))
  326. ITE=INT(TE/DDXMAX+1.D-5)
  327. TTEST=TE-ITE*DDXMAX
  328. ITE=INT(DDXMXP/DDXMAX+1.D-5)
  329. TTEST=TTEST+DDXMXP-ITE*DDXMAX
  330. IF((ABS(TTEST).LE.2.D-5).AND.(ITE.LE.2))GOTO 803
  331. 802 CONTINUE
  332. CALL ERREUR(485)
  333. GOTO 663
  334. 803 CONTINUE
  335. ENDIF
  336. XPAS(IE1)=DDXMAX
  337. DDXMXP=DDXMAX
  338. SEGDES MLREEL
  339. SEGDES KEVOLL
  340. 805 CONTINUE
  341. C
  342. ENDIF
  343. C WRITE(IOIMP,*)'FIN VERIFICATION DES DONNEES'
  344. C
  345. C 3) CALCUL DES BORNES DE LA ZONE DE TRAVAIL
  346. C
  347. C SPECTRE DE PUISSANCE + BORNE DE FREQUENCE
  348. C NOMBRE D'OSCILLATEUR POUR LA REPONSE
  349. C NOMBRE DE POINT D'EVALUATION EN TEMPS
  350. C
  351. NSPT=MLREE1.PROG(/1)
  352. NSPTOM=NSPT+NBFREQ-1
  353. C
  354. IF(LONDEL)NSPTOM=NSPTOM+1
  355. C
  356. IF (LUSER)THEN
  357. MLREEL=IPREET
  358. SEGACT MLREEL
  359. NT=PROG(/1)
  360. SEGDES MLREEL
  361. ELSE
  362. NT=75
  363. ENDIF
  364. C
  365. IF (IPROC.EQ.0)THEN
  366. IPROC=INT((TE-1.D-5)/2)+1
  367. ENDIF
  368. IF (IINT.EQ.0)THEN
  369. IINT=10
  370. ENDIF
  371. NTIME=IPROC*IINT+1
  372. IF(LONDEL)THEN
  373. NNTIME=INT(TE/XPAS(NBFREQ)+1.D-5)+1
  374. IF(NNTIME.LT.NTIME)THEN
  375. MMULT=INT(LOG(DBLE((NTIME-1)/(NNTIME-1)))/LOG(2.D0)+1.D-5)
  376. MMULT=2**MMULT
  377. NTIME=MMULT*(NNTIME-1)+1
  378. IPROC=1
  379. ELSE
  380. NTIME=NNTIME
  381. ENDIF
  382. ENDIF
  383. DTIME=TE/(NTIME-1)
  384. C
  385. NTIMEP=INT(TPL/DTIME +1.D-5)
  386. NTIME=NTIME+NTIMEP
  387. C WRITE(IOIMP,*)'FIN CALCUL DES BORNES DE LA ZONE DE TRAVAIL'
  388. C
  389. C 4) REMPLISSAGE DES TABLEAUX DE TRAVAIL
  390. C
  391. NNT=NTIME
  392. SEGINI,MTRAV,MMTRA
  393. C
  394. C 4.1) INDICE MIN/MAX DES BANDES DE FREQUENCE (ON PREVOIT D'INTERCALER
  395. C DES POINTS)
  396. C CALCUL DU NOMBRE DE POINT POUR F ET S
  397. C CHARGEMENT DES POINTS POUR F ET S
  398. C
  399. SEGACT MLREE2
  400. C
  401. IF(LONDEL)THEN
  402. C
  403. DO 810 IE1=1,NBFREQ
  404. IFREQ(1,IE1)=2*IE1-1
  405. IFREQ(2,IE1)=2*IE1
  406. F(2*IE1-1) =MLREE3.PROG(IE1)
  407. F(2*IE1 ) =MLREE3.PROG(IE1+1)
  408. S(2*IE1-1) =MLREE2.PROG(IE1)
  409. S(2*IE1 ) =MLREE2.PROG(IE1)
  410. 810 CONTINUE
  411. C
  412. ELSE
  413. C
  414. IFREQ(1,1)=1
  415. IF(NBFREQ.EQ.1)THEN
  416. IFREQ(2,1)=NSPT
  417. NSPTOT=NSPT
  418. DO 101 IE1=1,NSPTOT
  419. F(IE1)=MLREE1.PROG(IE1)
  420. S(IE1)=MLREE2.PROG(IE1)
  421. 101 CONTINUE
  422. ELSE
  423. IESP=2
  424. IPTSUP=0
  425. F(1)=MLREE1.PROG(1)
  426. S(1)=MLREE2.PROG(1)
  427. DO 13 IE1=2,NBFREQ
  428. FRM =MLREE3.PROG(IE1)
  429. DO 11 IE3=1,NSPT
  430. FRPS=MLREE1.PROG(IESP)
  431. IF(FRPS.GT.(FRM-1.D-5)) GOTO 12
  432. F(IESP+IPTSUP)=FRPS
  433. S(IESP+IPTSUP)=MLREE2.PROG(IESP)
  434. IESP=IESP+1
  435. 11 CONTINUE
  436. 12 IF(FRPS.GT.(FRM+1.D-5))THEN
  437. F(IESP+IPTSUP)=FRM
  438. S(IESP+IPTSUP)=MLREE2.PROG(IESP)
  439. > - (FRPS-FRM)/(FRPS-MLREE1.PROG(IESP-1))
  440. > *(MLREE2.PROG(IESP)-MLREE2.PROG(IESP-1))
  441. IFREQ(2,IE1-1)=IESP+IPTSUP
  442. IFREQ(1,IE1 )=IESP+IPTSUP
  443. IPTSUP=IPTSUP+1
  444. ELSE
  445. F(IESP+IPTSUP)=FRPS
  446. S(IESP+IPTSUP)=MLREE2.PROG(IESP)
  447. IFREQ(2,IE1-1)=IESP+IPTSUP
  448. IFREQ(1,IE1 )=IESP+IPTSUP
  449. IESP=IESP+1
  450. ENDIF
  451. 13 CONTINUE
  452. NSPTOT=NSPT+IPTSUP
  453. IFREQ(2,NBFREQ)=NSPTOT
  454. DO 14 IE1=IESP,NSPT
  455. F(IE1+IPTSUP)=MLREE1.PROG(IE1)
  456. S(IE1+IPTSUP)=MLREE2.PROG(IE1)
  457. 14 CONTINUE
  458. ENDIF
  459. C
  460. ENDIF
  461. C
  462. SEGDES MLREE1
  463. SEGDES MLREE2
  464. SEGDES MEVOL1
  465. SEGDES MLREE3
  466. C
  467. C 4.1-BIS) INDICE MIN, LARGEUR DE BANDE DANS IFREQ
  468. C
  469. DO 15 IE1=1,NBFREQ
  470. IFREQ(2,IE1)=IFREQ(2,IE1)-IFREQ(1,IE1) + 1
  471. 15 CONTINUE
  472. C
  473. C 4.2) ON REMPLIT LE TABLEAU DES PERIODES
  474. C
  475. IF (LUSER)THEN
  476. MLREEL=IPREET
  477. SEGACT MLREEL
  478. DO 20 I=1,NT
  479. T(I)=PROG(I)
  480. 20 CONTINUE
  481. SEGDES MLREEL
  482. ELSE
  483. TINF=.04D0
  484. UNPXI=EXP((LOG(TE)-LOG(TINF))/(NT-1))
  485. T(1)=TINF
  486. DO I=2,NT
  487. T(I)=T(I-1)*UNPXI
  488. ENDDO
  489. T(NT)=TE
  490. ENDIF
  491. C
  492. C 4.3) ON REMPLIT XLTIME (INTERPOLATION DES MK A TR)
  493. C
  494. IF(LONDEL)THEN
  495. C
  496. DDT=DTBASE
  497. DO 817 IE1=1,NBFREQ
  498. KEVOLL=MEVOL2.IEVOLL(IE1)
  499. SEGACT, KEVOLL
  500. MLREE1=IPROGX
  501. MLREE2=IPROGY
  502. SEGACT, MLREE1,MLREE2
  503. DDXMAX=XPAS(IE1)
  504. NNNI=INT(DDXMAX/DDT+1.D-5)
  505. JG=INT(TE/DDXMAX+1.D-5)
  506. C** SEGINI, IMTK2(IE1)
  507. SEGINI,MLREK2
  508. IMTK2(IE1) = MLREK2
  509. TR=TINI
  510. INDICE=2
  511. XTIN=MLREE1.PROG(INDICE-1)
  512. XTOU=MLREE1.PROG(INDICE)
  513. XMIN=MLREE2.PROG(INDICE-1)
  514. RATE=(MLREE2.PROG(INDICE)-XMIN)/(XTOU-XTIN)
  515. DO 816 IE2=1,JG
  516. VMTK2=0.D0
  517. DO 815 IE3=1,NNNI
  518. TR=TR+DDT
  519. IF (TR.GT.(XTOU+1.E-5))THEN
  520. INDICE=INDICE+1
  521. XTOU=MLREE1.PROG(INDICE)
  522. XTIN=MLREE1.PROG(INDICE-1)
  523. XMIN=MLREE2.PROG(INDICE-1)
  524. RATE=(MLREE2.PROG(INDICE)-XMIN)/(XTOU-XTIN)
  525. ENDIF
  526. VMTK2=VMTK2+(XMIN + RATE *(TR-XTIN))**2
  527. 815 CONTINUE
  528. C** IMTK2(IE1).PROG(IE2)=VMTK2/NNNI
  529. MLREK2.PROG(IE2)=VMTK2/NNNI
  530. 816 CONTINUE
  531. IF(IE1.GT.1)DDT=DDT/2
  532. SEGDES MLREE1
  533. SEGDES MLREE2
  534. SEGDES KEVOLL
  535. 817 CONTINUE
  536. C
  537. ELSE
  538. C
  539. DPROC=TE/IPROC
  540. DO 26 IE1=1,NBFREQ
  541. KEVOLL=MEVOL2.IEVOLL(IE1)
  542. SEGACT KEVOLL
  543. MLREE1=IPROGX
  544. MLREE2=IPROGY
  545. SEGACT MLREE1
  546. SEGACT MLREE2
  547. INDICE=2
  548. XTIN=MLREE1.PROG(INDICE-1)
  549. XTOU=MLREE1.PROG(INDICE)
  550. XMIN=MLREE2.PROG(INDICE-1)
  551. RATE=(MLREE2.PROG(INDICE)-XMIN)/(XTOU-XTIN)
  552. DO 25 IE2=1,IPROC
  553. TR=TINI+(IE2-0.5D0)*DPROC
  554. IF (TR.GT.(XTOU+1.E-5))THEN
  555. DO 251 IE3=INDICE,MLREE1.PROG(/1)
  556. INDICE=INDICE+1
  557. XTOU=MLREE1.PROG(INDICE)
  558. IF (TR.LE.(XTOU+1.E-5))GOTO 252
  559. 251 CONTINUE
  560. 252 XTIN=MLREE1.PROG(INDICE-1)
  561. XMIN=MLREE2.PROG(INDICE-1)
  562. RATE=(MLREE2.PROG(INDICE)-XMIN)/(XTOU-XTIN)
  563. ENDIF
  564. XMTK2(IE1,IE2)=(XMIN + RATE *(TR-XTIN))**2
  565. 25 CONTINUE
  566. SEGDES MLREE1
  567. SEGDES MLREE2
  568. SEGDES KEVOLL
  569. 26 CONTINUE
  570. C
  571. ENDIF
  572. C
  573. SEGDES MEVOL2
  574. C
  575. C 5) CALCUL
  576. C
  577. C 5.1) BOUCLE SUR LES PERIODES
  578. C
  579. INEWT=0
  580. C
  581. DPI=8.D0*ATAN(1.D0)
  582. DO 50 IE1=1,NT
  583. FRQ=1/T(IE1)
  584. WN=FRQ*DPI
  585. C WRITE(IOIMP,*)'BOUCLE PERIODE IT ',IE1
  586. C
  587. C 5.2) CALCUL DES MOMENTS STATIQUES
  588. C
  589. DO 30 IE2=1,NBFREQ
  590. CALL MOMENT(FRQ,AMOR,TE,
  591. > IFREQ(2,IE2),F(IFREQ(1,IE2)),S(IFREQ(1,IE2)) ,KGRAND,
  592. > XLSTAT(1,IE2),XLSTAT(2,IE2),XLSTAT(3,IE2) )
  593. 30 CONTINUE
  594. C WRITE(IOIMP,*)'BOUCLE PERIODE CALCUL DES MOMENTS STATIQUES'
  595. C
  596. C 5.3) CALCUL DES MOMENT AU COURS DU TEMPS
  597. C PAR CONTRIBUTION DES PROCESSUS ELEMENTAIRES
  598. C
  599. C 5.3.1) MISE A ZERO
  600. C
  601. DO IE2=1,3
  602. DO IE3=1,NTIME
  603. XLTIME(IE3,IE2)=0.D0
  604. enddo
  605. enddo
  606. C
  607. IF(.NOT.LONDEL)THEN
  608. C
  609. C 5.3.2) BOUCLE SUR LES PROCESSUS
  610. C
  611. ROTMA=1-EXP(-2*WN*AMOR*DPROC)
  612. DO 40 IE2=1,IPROC
  613. TPROCD=TINI + (IE2-1)*DPROC
  614. TPROCF=TPROCD+DPROC
  615. C
  616. C 5.3.3) SOMME M(TK)*S*H
  617. DO IE3=1,3
  618. XLTI(IE3)=0.D0
  619. DO IE4=1,NBFREQ
  620. XLTI(IE3)=XLTI(IE3) + XMTK2(IE4,IE2)*XLSTAT(IE3,IE4)
  621. enddo
  622. enddo
  623. C
  624. C 5.3.4) FONCTION DE PONDERATION DE H...
  625. C
  626. INDOC=(IE2-1)*IINT + 1
  627. INDOCM=INDOC+IINT
  628. DO IE3=INDOC,NTIME
  629. TTDT=(IE3-1)*DTIME
  630. INDT=IE3
  631. IF (INDT.LE.INDOCM)THEN
  632. ROT=1-EXP(-2*WN*AMOR*(TTDT-TPROCD))
  633. ELSE
  634. ROT=EXP(-2*WN*AMOR*(TTDT-TPROCF))
  635. > -EXP(-2*WN*AMOR*(TTDT-TPROCD))
  636. C
  637. IF((ROT/ROTMA).LT.1.D-3)GOTO 40
  638. C
  639. ENDIF
  640. C 5.3.5) ... ET CONTRIBUTION LAMBDA(T)
  641. C
  642. DO IE4=1,3
  643. XLTIME(INDT,IE4)=XLTIME(INDT,IE4)+
  644. > ROT*XLTI(IE4)
  645. enddo
  646. enddo
  647. 40 CONTINUE
  648. C
  649. ELSE
  650. C
  651. C
  652. C 5.3.2.o) BOUCLE SUR LES FREQUENCE
  653. C
  654. DO 823 IE2=1,NBFREQ
  655. C* IPROC=IMTK2(IE2).PROG(/1)
  656. MLREK2 = IMTK2(IE2)
  657. IPROC = MLREK2.PROG(/1)
  658. DPROC=XPAS(IE2)
  659. IINT=INT(DPROC/DTIME+1.D-5)
  660. ROTMA=1-EXP(-2*WN*AMOR*DPROC)
  661. C
  662. C 5.3.2.o) BOUCLE SUR LES PROCESSUS
  663. C
  664. DO 822 IE3=1,IPROC
  665. TPROCD=TINI + (IE3-1)*DPROC
  666. TPROCF=TPROCD+DPROC
  667. C
  668. C 5.3.3.o) PRODUIT M(TK)*S*H
  669. C
  670. SI2I3 = MLREK2.PROG(IE3)
  671. DO 820 IE4=1,3
  672. C** XLTI(IE4)=IMTK2(IE2).PROG(IE3)*XLSTAT(IE4,IE2)
  673. XLTI(IE4) = SI2I3 * XLSTAT(IE4,IE2)
  674. 820 CONTINUE
  675. C
  676. C 5.3.4.o) FONCTION DE PONDERATION DE H...
  677. C
  678. INDOC=(IE3-1)*IINT + 1
  679. INDOCM=INDOC+IINT
  680. DO IE4=INDOC,NTIME
  681. TTDT=(IE4-1)*DTIME
  682. INDT=IE4
  683. IF (INDT.LE.INDOCM)THEN
  684. ROT=1-EXP(-2*WN*AMOR*(TTDT-TPROCD))
  685. ELSE
  686. ROT=EXP(-2*WN*AMOR*(TTDT-TPROCF))
  687. > -EXP(-2*WN*AMOR*(TTDT-TPROCD))
  688. C
  689. IF((ROT/ROTMA).LT.1.D-3)GOTO 822
  690. C
  691. ENDIF
  692. C 5.3.5.o) ... ET CONTRIBUTION LAMBDA(T)
  693. C
  694. DO IE5=1,3
  695. XLTIME(INDT,IE5)=XLTIME(INDT,IE5)+
  696. > ROT*XLTI(IE5)
  697. ENDDO
  698. ENDDO
  699. 822 CONTINUE
  700. 823 CONTINUE
  701. C
  702. ENDIF
  703. C WRITE(IOIMP,*)'BOUCLE PERIODE CALCUL DES MOMENTS EN TEMPS'
  704. C
  705. C 5.4) CALCUL DU RESPONSE SPECTRA
  706. C
  707. CALL DISTRT(MMTRA, NTIME, DTIME, DPI,
  708. > TE, IDISTR,XRREUR, VALMAX ,IOK ,INEW)
  709. RES(IE1)=VALMAX
  710. IF(IOK.NE.0)THEN
  711. IF(IOK.LT.100)THEN
  712. SEGSUP MTRAV,MMTRA
  713. GOTO 666
  714. ENDIF
  715. ENDIF
  716. C
  717. INEWT=INEWT+INEW
  718. 50 CONTINUE
  719. C WRITE(IOIMP,*)'FIN CALCUL DES RESULTATS'
  720. C
  721. IF(IIMPI.EQ.1)WRITE(IOIMP,*)'NB DE CALCUL DE LA DISTRIBUTION='
  722. > ,INEWT
  723. C
  724. C 6) STOCKAGE DES RESULTAT
  725. C
  726. C 6.1) ABSISSE EN PERIODE OU EN FREQUENCE
  727. C
  728. IF(LPERIO.AND.LUSER)THEN
  729. MLREE1=IPREET
  730. MOTX='PERIODE'
  731. ELSE
  732. JG=NT
  733. SEGINI MLREE1
  734. IF(LPERIO)THEN
  735. DO 60 I=1,NT
  736. MLREE1.PROG(I)=T(I)
  737. 60 CONTINUE
  738. MOTX='PERIODE'
  739. ELSE
  740. DO 61 I=1,NT
  741. MLREE1.PROG(NT-I+1)=1/T(I)
  742. 61 CONTINUE
  743. MOTX='FREQUENCE'
  744. ENDIF
  745. SEGDES MLREE1
  746. ENDIF
  747. C
  748. C 6.2) LEGENDE (PARTIELLE) DES ORDONNEES
  749. C
  750. MOTY(1:10)='RSPE-'//MOTCLE(2+KGRAND)//' '
  751. C
  752. C 6.3) CREATION DE L'OBJET EVOLUTIO RSNS
  753. C
  754. N=1
  755. SEGINI MEVOLL
  756. IPVO=MEVOLL
  757. TI(1:72)=TITREE
  758. IEVTEX=TI
  759. WRITE(TI(64:72),'(A5,I4)')INEWT
  760. ITYEVO='REEL'
  761. C
  762. SEGINI KEVOLL
  763. C
  764. WRITE(TI,100)AMOR
  765. 100 FORMAT(1X,'AMORTISSEMENT DE ',1PD12.5)
  766. KEVTEX=TI
  767. C
  768. IEVOLL(1)=KEVOLL
  769. TYPX='LISTREEL'
  770. TYPY='LISTREEL'
  771. C
  772. IPROGX=MLREE1
  773. NOMEVX=MOTX(1:12)
  774. C
  775. JG=NT
  776. SEGINI MLREE2
  777. IF(LPERIO)THEN
  778. DO 62 I=1,NT
  779. MLREE2.PROG(I)=RES(I)
  780. 62 CONTINUE
  781. ELSE
  782. DO 63 I=1,NT
  783. MLREE2.PROG(NT-I+1)=RES(I)
  784. 63 CONTINUE
  785. ENDIF
  786. SEGDES MLREE2
  787. IPROGY=MLREE2
  788. MOTY(11:12)=' 1'
  789. NOMEVY=MOTY(1:12)
  790. C
  791. NUMEVX=ICOUL
  792. NUMEVY='REEL'
  793. C
  794. SEGDES KEVOLL
  795. SEGDES MEVOLL
  796. C
  797. C 7) DESTRUCTION DE LA ZONE DE TRAVAIL ET RETOUR A GIBIANE
  798. C
  799. SEGSUP MTRAV,MMTRA
  800. IF(LONDEL)THEN
  801. DO 890 IE1=1,NBFREQ
  802. C** SEGSUP, IMTK2(IE1)
  803. MLREK2 = IMTK2(IE1)
  804. SEGSUP,MLREK2
  805. 890 CONTINUE
  806. SEGSUP, MONDE
  807. ENDIF
  808. C
  809. CALL ECROBJ('EVOLUTIO',IPVO)
  810. C
  811. RETURN
  812. C
  813. 663 SEGSUP MONDE
  814. SEGDES MLREEL
  815. SEGDES KEVOLL
  816. 664 SEGDES MLREE1
  817. SEGDES KEVOL1
  818. SEGDES MEVOL1
  819. 665 SEGDES MEVOL2
  820. SEGDES MLREE3
  821. 666 CONTINUE
  822. RETURN
  823. END
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales