Télécharger spon.eso

Retour à la liste

Numérotation des lignes :

spon
  1. C SPON SOURCE BP208322 16/11/18 21:21:18 9177
  2. SUBROUTINE SPON
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. CHARACTER*72 TI
  6. CHARACTER*(4) CMOT
  7. C
  8. C ========================================================
  9. C =
  10. C SPECTRES NON LINEAIRES D' OSCILLATEUR =
  11. C =
  12. C SYNTAXE : EVOL = SPON 'SIGN' EVOL1 'SPEL' EVOL2 MOTENTR=
  13. C =
  14. C 'AMOR' LAMOR 'PROP' LPROP =
  15. C =
  16. C ('COUL' COOL) SORTIE =
  17. C =
  18. C CREATION : 1990/06/15 =
  19. C PROGRAMMEUR : A.PINTO $ P.PEGON (CEC-JRC ISPRA) =
  20. C (BASE : SUBROUTINE SPO) =
  21. C 7/90 =
  22. C ========================================================
  23. C
  24.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC SMEVOLL
  28. -INC SMLREEL
  29. -INC CCGEOME
  30. *-
  31. -INC CCREEL
  32. PARAMETER (LMOT=13)
  33.  
  34. CHARACTER*4 MODOM(13)
  35. CHARACTER*12 ITITY(4)
  36. DATA MODOM/'DEMA','SIGN','SPEL','AMOR',
  37. 1 'TAKE','ISOT','CINE','ELAS',
  38. & 'COUL','DEPL','VITE','ACCE','EPSE'/
  39. DATA ITITY /'DEPL MAXIMAU','PSEUDO VITES','PSEUDO ACCEL',
  40. & 'DEFNL CUMULE'/
  41. IPAMOR=0
  42. IPPROP=0
  43. ICOUL1=IDCOUL
  44. IPOEVO=0
  45. IPSPEV=0
  46. idema = 0
  47. N0=-1
  48. C
  49. C LECTURE DES OBJETS
  50. C ==================
  51. C
  52.  
  53. DO 10 I=1,13
  54. CALL LIRMOT(MODOM,LMOT,IPLAC,0)
  55. IF (IPLAC.EQ.0) GOTO 12
  56. C
  57. 8 GOTO (20,21,22,23,24,24,24,24,
  58. & 25,26,26,26,26),IPLAC
  59. C
  60.  
  61. 20 continue
  62. idema = 1
  63. goto 10
  64. 21 CONTINUE
  65. C
  66. C TEMPS ET ACCELERATION DU SIGNAL (OBJET EVOLUTION)
  67. C
  68. CALL LIROBJ ('EVOLUTIO',IPOEVO,1,IRET)
  69. IF (IRET.EQ.0) RETURN
  70. GOTO 10
  71. C
  72. 22 CONTINUE
  73. C
  74. C SPECTRES LINEAIRES (OBJET EVOLUTION)
  75. C
  76. CALL LIROBJ ('EVOLUTIO',IPSPEV,1,IRET)
  77. IF (IRET.EQ.0) RETURN
  78. C
  79. C TYPE DES SPECTRES LINEAIRES (OBJET MOT)
  80. C ( 'DEPL', 'VITE', 'ACCE' )
  81. C
  82. CALL LIRMOT(MODOM(10),3,ITYP,1)
  83. IF (ITYP.EQ.0) RETURN
  84. NN0=ITYP-1
  85. GOTO 10
  86. C
  87. 23 CONTINUE
  88. C
  89. C AMORTISSEMENT
  90. C
  91. CALL LIROBJ ('LISTREEL',IPAMOR,1,IRET)
  92. IF (IRET.EQ.0) RETURN
  93. GOTO 10
  94. C
  95. 24 CONTINUE
  96. C
  97. C PROPRIETES
  98. C
  99. imod = iplac - 4
  100. CALL LIROBJ ('LISTREEL',IPPROP,1,IRET)
  101. IF (IRET.EQ.0) RETURN
  102. GOTO 10
  103. C
  104. 25 CONTINUE
  105. C
  106. C COULEURS
  107. C
  108. CALL LIRMOT (NCOUL,NBCOUL,ICOUL1,1)
  109. IF (ICOUL1.EQ.0) RETURN
  110. icoul1=icoul1-1
  111. GOTO 10
  112. C
  113. 26 CONTINUE
  114. C
  115. C TYPE DE LA REPONSE (SORTIE)
  116. C
  117. N0=IPLAC-10
  118. GOTO 10
  119. C
  120. 10 CONTINUE
  121. 12 CONTINUE
  122. C
  123. C ON VERIFIE L' EXISTENCE DES DONNES
  124. C ==================================
  125. C
  126. IF (IPOEVO.EQ.0)THEN
  127. CALL ERREUR(588)
  128. RETURN
  129. ENDIF
  130. C
  131. IF (IPSPEV.EQ.0)THEN
  132. CALL ERREUR(589)
  133. RETURN
  134. ENDIF
  135. C
  136. IF (N0.EQ.-1)THEN
  137. CALL ERREUR(590)
  138. RETURN
  139. ENDIF
  140. C
  141. IF (IPAMOR.EQ.0 ) THEN
  142. CALL ERREUR(361)
  143. RETURN
  144. ENDIF
  145. C
  146. IF (IPPROP.EQ.0 ) THEN
  147. CALL ERREUR(591)
  148. RETURN
  149. ENDIF
  150. C
  151. C ON VERIFIE LA CONSISTENCE DES DONNES
  152. C ====================================
  153. C
  154. C AMORTISSEMENT
  155. C
  156. MLREEL=IPAMOR
  157. SEGACT MLREEL
  158. NNBAM=PROG(/1)
  159. DO 11 NBAM=1,NNBAM
  160. IF (PROG(NBAM).LT.0.OR.PROG(NBAM).GE.1) THEN
  161. MOTERR(1:8)='AMORTISS'
  162. REAERR(1)=PROG(NBAM)
  163. REAERR(2)=0.
  164. REAERR(3)=1.
  165. SEGDES MLREEL
  166. CALL ERREUR(42)
  167. RETURN
  168. ENDIF
  169. 11 CONTINUE
  170. SEGDES MLREEL
  171. C
  172. C PROPRIETES
  173. C
  174. MLREEL=IPPROP
  175. SEGACT MLREEL
  176. NNPRO=PROG(/1)
  177. IF (NNPRO.NE.5 .and.imod.eq.1) THEN
  178. INTERR(1)=5
  179. CALL ERREUR(592)
  180. SEGDES MLREEL
  181. RETURN
  182. else if (NNPRO.NE.2 .and.imod.ne.1) then
  183. INTERR(1)=2
  184. CALL ERREUR(592)
  185. SEGDES MLREEL
  186. RETURN
  187. else if (NNPRO.eq.2 .and.imod.ne.1) then
  188. * modele bilineaire elastoplastique ou elastique
  189. * on met n'importe quoi dans les 3 parametres qui servent à rien
  190. alfa = 0.d0
  191. beta = 0.d0
  192. gama = 0.d0
  193. ENDIF
  194. IF (PROG(1).LT.1) THEN
  195. CALL ERREUR(593)
  196. SEGDES MLREEL
  197. RETURN
  198. ENDIF
  199. IF (abs(PROG(2)).GT.1. and. imod.ne.4) THEN
  200. CALL ERREUR(594)
  201. SEGDES MLREEL
  202. RETURN
  203. ENDIF
  204. IF (PROG(2).LT.0D0 .AND. IMOD.EQ.1) THEN
  205. MOTERR='TETA'
  206. CALL ERREUR(595)
  207. SEGDES MLREEL
  208. RETURN
  209. ENDIF
  210. if (imod.eq.1) then
  211. IF (PROG(3).LT.0) THEN
  212. MOTERR='ALFA'
  213. CALL ERREUR(595)
  214. SEGDES MLREEL
  215. RETURN
  216. ENDIF
  217. IF (PROG(4).LT.0) THEN
  218. MOTERR='BETA'
  219. CALL ERREUR(595)
  220. SEGDES MLREEL
  221. RETURN
  222. ENDIF
  223. IF (PROG(5).LT.0) THEN
  224. MOTERR='GAMA'
  225. CALL ERREUR(595)
  226. SEGDES MLREEL
  227. RETURN
  228. ENDIF
  229. endif
  230. C
  231. C PROPRIETES: TOUT EN ORDE
  232. C
  233. DUCT=PROG(1)
  234. if (imod.eq.1) then
  235. ALFA=PROG(3)
  236. BETA=PROG(4)
  237. GAMA=PROG(5)
  238. endif
  239. SEGDES MLREEL
  240. C
  241. C LE SIGNAL
  242. C
  243. MEVOLL=IPOEVO
  244. SEGACT MEVOLL
  245. KEVOLL=IEVOLL(1)
  246. SEGACT KEVOLL
  247. MLREEL=IPROGX
  248. SEGACT MLREEL
  249. ILONT=PROG(/1)
  250. TE=PROG(ILONT)-PROG(1)
  251. DTEMPO=TE/(ILONT-1.)
  252. DT=PROG(2)-PROG(1)
  253. DTT=DTEMPO-DT
  254. IF (ABS(DTT).GT.1.D-6) THEN
  255. CALL ERREUR(568)
  256. SEGDES MLREEL
  257. SEGDES KEVOLL
  258. SEGDES MEVOLL
  259. RETURN
  260. ENDIF
  261. IPT=IPROGX
  262. IPG=IPROGY
  263. SEGDES MLREEL
  264. SEGDES KEVOLL
  265. SEGDES MEVOLL
  266. C
  267. C ON RECOUPERE LE NB. DE SPECTRES
  268. C
  269. MEVOLL=IPSPEV
  270. SEGACT MEVOLL
  271. NBCOUR=IEVOLL(/1)
  272. SEGDES MEVOLL
  273. C
  274. C ON COMPARE LE NB. D'AMORTISSEMENTS AVEC LE NB. DE SPECTRES
  275. C
  276. IF (NBCOUR.NE.NNBAM) THEN
  277. CALL ERREUR(596)
  278. RETURN
  279. ENDIF
  280. C
  281. C ON COMMENCE FINALEMENT !!!
  282. C ==========================
  283. C
  284. MLREEL=IPAMOR
  285. SEGACT MLREEL
  286. N1=PROG(/1)
  287. N=N1
  288. SEGINI MEVOLL
  289. IPEVOF=MEVOLL
  290. C
  291. MLREE3=IPT
  292. SEGACT MLREE3
  293. LONT=MLREE3.PROG(/1)
  294. TPS=MLREE3.PROG(LONT)
  295. SEGDES MLREE3
  296. C
  297. MEVOL1=IPSPEV
  298. SEGACT MEVOL1
  299. C
  300. C BOUCLE SUR LES DIFFERENTS AMORTISSEMENTS
  301. C
  302. DO 100 I=1,N1
  303. C MLREEL=IPAMOR
  304. XSI=PROG(I)
  305. C
  306. KEVOL1=MEVOL1.IEVOLL(I)
  307. SEGACT KEVOL1
  308. MLREE1=KEVOL1.IPROGX
  309. MLREE3=KEVOL1.IPROGY
  310. SEGDES KEVOL1
  311. SEGACT MLREE1
  312. SEGACT MLREE3
  313. C
  314. N2=MLREE1.PROG(/1)
  315. M=0
  316. IAUX=0
  317.  
  318. C
  319. C
  320. C BOUCLE SUR LES FREQUENCES
  321. C
  322. JG=N2
  323. SEGINI MLREE2
  324. IPSPO=MLREE2
  325. C
  326. DO 101 J=1,N2
  327. DFREQ=MLREE1.PROG(J)
  328. AUX=1/(10.*DFREQ)
  329. IF (DT.GT.AUX) THEN
  330. IF (IAUX.EQ.0) THEN
  331. DPERIO=1/DFREQ
  332. IAUX=1
  333. ENDIF
  334. ENDIF
  335. W=2*XPI*DFREQ
  336. W2=W*W
  337. C
  338. SPECTL=MLREE3.PROG(J)
  339.  
  340. C
  341. IF (NN0.EQ.0) DISMAX=SPECTL
  342. IF (NN0.EQ.1) DISMAX=SPECTL/W
  343. IF (NN0.EQ.2) DISMAX=SPECTL/W2
  344. C
  345. C APPEL A LA SUBROUTINE CONTENANT L'ALGORITHME
  346. C
  347. CALL INOSC2(IPT,IPG,DFREQ,XSI,RMAX,TMAX,
  348. 1 DISMAX,DUCT,ALFA,BETA,GAMA,TETA,imod,idema,xepse)
  349.  
  350. C
  351. IF (TMAX.GT.TPS) M=M+1
  352. C MLREE2=IPSPO
  353. IF (N0.EQ.0) MLREE2.PROG(J)=RMAX
  354. IF (N0.EQ.1) MLREE2.PROG(J)=W*RMAX
  355. IF (N0.EQ.2) MLREE2.PROG(J)=W2*RMAX
  356. IF (N0.EQ.3) MLREE2.PROG(J)=XEPSE
  357. 101 CONTINUE
  358. C
  359. SEGINI KEVOLL
  360. IEVOLL(I)=KEVOLL
  361. TYPX='LISTREEL'
  362. TYPY='LISTREEL'
  363. IPROGX=MLREE1
  364. IPROGY=IPSPO
  365. NOMEVX='FREQUENCE'
  366. NOMEVY=ITITY(N0+1)
  367. NUMEVX=ICOUL1
  368. NUMEVY='REEL'
  369. TI(1:72)=TITREE
  370. IEVTEX=TI
  371. ITYEVO='REEL'
  372. c KEVTEX=TI
  373. KEVTEX=NOMEVY
  374. SEGDES KEVOLL
  375. SEGDES MLREE2
  376. SEGDES MLREE1
  377. SEGDES MLREE3
  378. 100 CONTINUE
  379. C
  380. 38 FORMAT(1X,'SPON : POUR L AMORTISSEMENT',E12.5/
  381. >1X,' IL Y A',I5,3X,'DEPLACEMENTS MAXIMAUX'/
  382. >1X,' APRES LA FIN DU SIGNAL')
  383. 300 FORMAT(1X,'SPON : POUR L AMORTISSEMENT',E12.5/
  384. >1X,' POUR LES FREQUENCES ( F ) >',E12.5/
  385. >1X,' ( PERIODES ( T ) ) <',E12.5/
  386. >1X,' LA CONDITION ( DT < 1/(10*F) ) (ACCURACY)'/
  387. >1X,' N EST PAS VERIFIE')
  388. C
  389. SEGDES MEVOLL
  390. SEGDES MLREEL
  391. SEGDES MEVOL1
  392. C
  393. C
  394. CALL ECROBJ ('EVOLUTIO',IPEVOF)
  395. RETURN
  396. END
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  

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