Télécharger pressi.eso

Retour à la liste

Numérotation des lignes :

pressi
  1. C PRESSI SOURCE CB215821 24/04/12 21:16:55 11897
  2. SUBROUTINE PRESSI
  3. C_______________________________________________________________________
  4. C
  5. C OPERATEUR PRESSI
  6. C
  7. C-----------------------------------------------------------------------
  8. C 1ere syntaxe : definition d'un CHPOINT de forces nodales equivalentes
  9. C
  10. C FP = PRESSI I MASS MODEL I P MAIL I (CARA)
  11. C I CHPOT I
  12. C I CHAML I
  13. C I COQU MODEL I P I I VECT I (CARA)
  14. C I CHPOT I I NORM I
  15. C I CHAML I
  16. C I FISS MODEL I P I VECT POIN CARA
  17. C I CHPOT I
  18. C
  19. C FP CHPOINT CONTENANT LES FORCES NODALES EQUIVALENTES
  20. C MODEL OBJET MMODEL ,MASSIF ,COQUE OU FISS SUR LEQUEL
  21. C S APPLIQUE LA PRESSION
  22. C P VALEUR ALGEBRIQUE DE LA PRESSION
  23. C MAIL POUR LES MASSIFS ,OBJET MAILLAGE REPRESENTANT
  24. C LA FACE SUR LAQUELLE S'APPLIQUE LA PRESSION
  25. C CHPOT CHPOINT CONTENANT LES VALEURS ALGEBRIQUES
  26. C DES PRESSIONS AUX NOEUDS
  27. C VECT POUR COQUE ET LINESPRING , VECTEUR INDIQUANT LA
  28. C DIRECTION DANS LAQUELLE S APPLIQUE LA PRESSION
  29. C NORM MOT CLE INDIQUANT QUE LA PRESSION EST POSITIVE
  30. C SI ELLE EST PORTEE PAR LA NORMALE POSITIVE
  31. C A L ELEMENT
  32. C CARA POUR LES MASSIFS EN CONTRAINTES PLANES ET
  33. C POUR LES COQUES EPAISSES, MCHAML CONTENANT
  34. C LES VALEURS DES EPAISSEURS AUX POINTS
  35. C D INTEGRATION
  36. C POIN POUR LE LINESPRING , POINT OU SE RAPPORTE
  37. C LE VECTEUR
  38. C CARA POUR LE LINESPRING ,MCHAML CONTENANT LES VALEURS
  39. C DES CARACTERISTIQUES AUX POINTS D INTEGRATION
  40. C
  41. C
  42. C MODIF EBERSOLT MAI 85 PRESSION SUR LES LEVRES DU LINESPRING
  43. C
  44. C PASSAGE AUX NOUVEAU CHAMALEM PAR JM CAMPENON LE 04 08 90
  45. C
  46. C-----------------------------------------------------------------------
  47. C 2e syntaxe : definition d'un MCHAML de pression
  48. C
  49. C CHEL2 = PRES MOD1 | MOT1 VAL1 (MAIL1) ;
  50. C | CHEL1
  51. C
  52. C MOT1 NOM DE LA COMPOSANTE DE PRESSION
  53. C VAL1 VALEUR DE LA PRESSION
  54. C MAIL1 MAILLAGE DE LA SURFACE OU ON APPLIQUE LA PRESSION
  55. C PAR DEFAUT, TOUTE LA SURFACE DE DEFINITION DU MODELE
  56. C
  57. C CHAM1 MCHAML DE PRESSION DE NOM DE COMPOSANTE QUELCONQUE
  58. C_______________________________________________________________________
  59. IMPLICIT INTEGER(I-N)
  60. IMPLICIT REAL*8 (A-H,O-Z)
  61.  
  62. -INC PPARAM
  63. -INC CCOPTIO
  64. -INC SMCHPOI
  65. -INC SMCHAML
  66. -INC SMMODEL
  67. -INC SMCOORD
  68. C
  69. PARAMETER (NBTYP=5)
  70. CHARACTER*4 MTYPE(NBTYP),MNORM(1)
  71. CHARACTER*(4) MOSCAL,MOPOI1
  72. CHARACTER*(LOCHAI) MOTLU
  73. C
  74. DATA MTYPE/'MASS','COQU','FISS','TUYA','SHB8'/
  75. DATA MNORM/'NORM'/
  76. DATA MOSCAL/'SCAL'/,MOPOI1/'POI1'/
  77.  
  78. MACRO,(MASSE,COQUE,FISSURE,TUYAU,COQUES_SHB8,SYNTAXE_2)
  79. C
  80. segact mcoord
  81. IPMODL = 0
  82. IPCHE1 = 0
  83. IPCHM1 = 0
  84. IPCHE2 = 0
  85. IPCHA1 = 0
  86. ICONV = 0
  87. IRET = 0
  88.  
  89. C ON LIT UN MOT CLE
  90. CALL LIRMOT(MTYPE,NBTYP,IMLU,0)
  91. IF(IERR.NE.0) RETURN
  92. C Si pas de mot-cle de la 1ere syntaxe, alors c'est la 2e
  93. IF(IMLU.EQ.0) THEN
  94. CALL LIRCHA(MOTLU,0,ILONG)
  95. IF(IERR.NE.0) RETURN
  96. IF(ILONG .EQ. 0) MOTLU =' '
  97. IMLU =6
  98. ELSE
  99. MOTLU =MTYPE(IMLU)
  100. ENDIF
  101.  
  102. C ON LIT UN MMODEL
  103. CALL LIROBJ('MMODEL ',IPMODL,1,IRETMO)
  104. IF(IERR.NE.0) RETURN
  105. CALL ACTOBJ('MMODEL ',IPMODL,1)
  106. IF(IERR.NE.0) RETURN
  107.  
  108. C ON LIT UN CHAMP POINT (FACULTATIF)
  109. CALL LIROBJ('CHPOINT ',IPCHE1,0,IRETPO)
  110. IF(IERR.NE.0) RETURN
  111. IF(IRETPO .EQ. 1) CALL ACTOBJ('CHPOINT ',IPCHE1,1)
  112. IF(IERR.NE.0) RETURN
  113.  
  114.  
  115. CASE, IMLU
  116. C----------------------------------------------------------------------
  117. WHEN, MASSE
  118. C----------------------------------------------------------------------
  119. C ON LIT SOIT UN FLOTTANT ET UN MAILLAGE
  120. C SOIT UN CHPOINT (IRETPO.NE.0)
  121. C SOIT UN CHAMELEM (IRETEL.NE.0)
  122. C
  123. IPMAIL=0
  124. P=0.D0
  125. IF(IRETPO.EQ.0) THEN
  126. CALL LIROBJ('MCHAML ',IPCHM1,0,IRETEL)
  127. IF(IERR.NE.0) RETURN
  128. IF(IRETEL.EQ.1) THEN
  129. CALL ACTOBJ('MCHAML ',IPCHM1,1)
  130. ELSE
  131. IPCHM1 = 0
  132. CALL LIRREE(XXX,1,IRETOU)
  133. IF(IERR.NE.0) RETURN
  134. P=XXX
  135. CALL LIROBJ('MAILLAGE',IPMAIL,1,IRETMA)
  136. IF(IERR.NE.0) RETURN
  137. CALL ACTOBJ('MAILLAGE',IPMAIL,1)
  138. IF(IERR.NE.0) RETURN
  139. ENDIF
  140. ENDIF
  141. C
  142. CALL FPMASS(IPCHE1,IPCHM1,IPMODL,IPTFP,IPMAIL,P,IRET)
  143. IF(IRET.EQ.0.OR.IERR.NE.0) RETURN
  144. GOTO 666
  145.  
  146. C----------------------------------------------------------------------
  147. WHEN, COQUE
  148. C----------------------------------------------------------------------
  149. C ON LIT SOIT UN FLOTTANT
  150. C SOIT UN CHPOINT (IRETPO.NE.0)
  151. C SOIT UN CHAMELEM (IRETEL.NE.0)
  152. C
  153. P=0.D0
  154. IF(IRETPO.EQ.0) THEN
  155. CALL LIROBJ('MCHAML ',IPCHM1,0,IRETEL)
  156. IF(IERR.NE.0) RETURN
  157. IF(IRETEL.EQ.1) THEN
  158. CALL ACTOBJ('MCHAML ',IPCHM1,1)
  159. ELSE
  160. IPCHM1 = 0
  161. CALL LIRREE(XXX,1,IRETOU)
  162. IF(IERR.NE.0) RETURN
  163. P=XXX
  164. IPCHE1=0
  165. ENDIF
  166. ENDIF
  167. C
  168. C ON LIT LE MOT CLE NORM SINON ON APPELERA PRORIE QUI
  169. C LIRA SES DONNEES
  170. C
  171. CALL LIRMOT(MNORM,1,JMLU,0)
  172. IF(IERR.NE.0) RETURN
  173. C
  174. ** Comment je fais si je veux donner un vecteur?
  175. ** IF(JMLU.EQ.0) THEN
  176. ** CALL ERREUR(498)
  177. ** IF(IERR.NE.0) RETURN
  178. ** RETURN
  179. ** ENDIF
  180. C
  181. C LA LECTURE D'UN CHAMELEM DE CARACTERISTIQUE (FACULTATIVE
  182. C EST FAITE DANS FPCOQU
  183. C
  184. CALL FPCOQU(P,IPCHE1,IPCHM1,IPMODL,JMLU,IPTFP,IRET,ICONV)
  185. IF(IRET.EQ.0 .OR. IERR.NE.0) RETURN
  186. GOTO 666
  187.  
  188. C----------------------------------------------------------------------
  189. WHEN, FISSURE
  190. C----------------------------------------------------------------------
  191. C ON LIT SOIT UN FLOTTANT ,SOIT UN CHPOINT
  192. C
  193. P=0.D0
  194. IF(IRETPO.EQ.0) THEN
  195. CALL LIRREE(XXX,1,IRETOU)
  196. IF(IERR.NE.0) RETURN
  197. P=XXX
  198. IPCHE1=0
  199. ENDIF
  200. C
  201. C ON LIT UN VECTEUR
  202. C
  203. CALL LIROBJ('POINT ',IPVECT,1,IRETVC)
  204. IF(IERR.NE.0) RETURN
  205. C
  206. C ON LIT UN POINT
  207. C
  208. CALL LIROBJ('POINT ',IPPOIN,1,IRETPT)
  209. IF(IERR.NE.0) RETURN
  210. C
  211. C ON LIT UN CHELEM DE CARACTERISTIQUES
  212. C
  213. CALL LIROBJ('MCHAML ',IPCHE2,1,IRETCH)
  214. IF(IERR.NE.0) RETURN
  215. CALL ACTOBJ('MCHAML ',IPCHE2,1)
  216. IF(IERR.NE.0) RETURN
  217. C
  218. CALL FPFISS(P,IPCHE1,IPMODL,IPVECT,IPPOIN,IPCHE2,IPTFP,IRET)
  219. IF(IRET.EQ.0.OR.IERR.NE.0) RETURN
  220. GOTO 666
  221.  
  222. C----------------------------------------------------------------------
  223. WHEN, TUYAU
  224. C----------------------------------------------------------------------
  225. C ON LIT UN OBJET CHAMELEM (CARACTERISTIQUES)
  226. C
  227. CALL LIROBJ('MCHAML ',IPCHE1,1,IRETC2)
  228. IF(IERR.NE.0) RETURN
  229. CALL ACTOBJ('MCHAML ',IPCHE1,1)
  230. IF(IERR.NE.0) RETURN
  231. C
  232. CALL FPTUYA(IPMODL,IPCHE1,IPTFP,IRET)
  233. IF(IERR.NE.0.OR.IRET.NE.1)THEN
  234. RETURN
  235. ENDIF
  236. GOTO 666
  237.  
  238. C----------------------------------------------------------------------
  239. WHEN, COQUES_SHB8
  240. C----------------------------------------------------------------------
  241. C ON LIT UN OBJET CHAMELEM (CARACTERISTIQUES)
  242. C
  243. IPMAIL=0
  244. P=0.D0
  245. IF(IRETPO.EQ.0) THEN
  246. CALL LIRREE(XXX,1,IRETOU)
  247. IF(IERR.NE.0) RETURN
  248. P = XXX
  249. ENDIF
  250. C
  251. CALL FPSHB8(IPMODL,IPCHE1,P,IPTFP)
  252. IF(IPTFP.EQ.0) RETURN
  253. GOTO 666
  254.  
  255. C----------------------------------------------------------------------
  256. WHEN, SYNTAXE_2
  257. C----------------------------------------------------------------------C
  258. C On extrait du MMODEL la formulation CHARGEMENT PRESSSION
  259. C --------------------------------------------------------
  260. MMODEL = IPMODL
  261. NSOUS = KMODEL(/1)
  262. N1 = NSOUS
  263. SEGINI,MMODE1
  264. IMCGP=0
  265. DO isous = 1, NSOUS
  266. IMODEL = KMODEL(isous)
  267. IF(FORMOD(1).EQ.'CHARGEMENT ') THEN
  268. NMAT = MATMOD(/2)
  269. CALL PLACE(MATMOD,NMAT,ipl,'PRESSION')
  270. IF(ipl.NE.0) THEN
  271. IMCGP = IMCGP + 1
  272. MMODE1.KMODEL(IMCGP) = IMODEL
  273. ENDIF
  274. ENDIF
  275. ENDDO
  276. C
  277. C Si pas de modele chargement pression : erreur !
  278. IF(IMCGP.EQ.0) THEN
  279. MOTERR(1:16)='PRESSION '
  280. CALL ERREUR(719)
  281. RETURN
  282. ELSE
  283. IPMODL=MMODE1
  284. ENDIF
  285. C
  286. C Cas du MCHALM en argument
  287. C -------------------------
  288. IF(MOTLU.EQ.' ') THEN
  289. CALL LIROBJ('MCHAML ',IPCHE1,1,IRET)
  290. IF(IERR.NE.0) RETURN
  291. CALL ACTOBJ('MCHAML ',IPCHE1,1)
  292. IF(IERR.NE.0) RETURN
  293. CALL REDUAF(IPCHE1,IPMODL,IPCHE2,1,IRET,KERRE)
  294. IF(IERR.NE.0) RETURN
  295. C
  296. IF(IRET.EQ.0) THEN
  297. CALL ERREUR(KERRE)
  298. RETURN
  299. ENDIF
  300. IPCHE1=IPCHE2
  301. C
  302. C Y' plus qu'a :
  303. CALL PRCHL1(IPMODL,IPCHE1,IPCHE2)
  304. IF(IERR.NE.0) RETURN
  305. C
  306. IF(IPCHE2.EQ.0) THEN
  307. CALL ERREUR(5)
  308. RETURN
  309. ENDIF
  310.  
  311. ELSE
  312. C Cas avec MOT1, VAL1... en arguments
  313. C -----------------------------------
  314. C
  315. C Lecture optionnelle d'un maillage
  316. CALL LIROBJ('MAILLAGE',IPGEO1,0,IRET)
  317. IF(IERR.NE.0) RETURN
  318. C
  319. C Si un maillage est fourni, on reduit le modele sur le maillage
  320. IF(IRET.EQ.1) THEN
  321. CALL ACTOBJ('MAILLAGE',IPGEO1,1)
  322. CALL REDUMO(IPMODL,IPGEO1,IRET)
  323. IF(IERR.NE.0) RETURN
  324. C
  325. IF(IRET.NE.0) THEN
  326. SEGSUP,MMODE1
  327. IPMODL=IRET
  328. ENDIF
  329. ENDIF
  330. C
  331. C Lecture du FLOTTANT
  332. CALL LIRREE(XP1,1,IRET)
  333. IF(IERR.NE.0) RETURN
  334. C
  335. C Sous-programme PRCHL2 : IPCHE2 contient le MCHAML resultat / 0 si echec
  336. CALL PRCHL2(IPMODL,MOTLU,XP1,IPCHE2)
  337. IF(IERR.NE.0) RETURN
  338. C
  339. IF(IPCHE2.EQ.0) THEN
  340. CALL ERREUR(5)
  341. RETURN
  342. ENDIF
  343. ENDIF
  344.  
  345. CALL ACTOBJ('MCHAML ',IPCHE2,1)
  346. CALL ECROBJ('MCHAML ',IPCHE2)
  347.  
  348. ENDCASE
  349. RETURN
  350.  
  351. 666 CONTINUE
  352. C LE NUMERO DE L HARMONIQUE EST PRIS EGAL A NIFOUR
  353. C POUR TOUTES LES COMPOSANTES DU CHPOINT
  354. C
  355. MCHPOI = IPTFP
  356. NSOUPO = IPCHP(/1)
  357. NAT =JATTRI(/1)
  358. NAT2=MAX(NAT,1)
  359. IF(NAT .NE. NAT2)THEN
  360. C SEGADJ seulement si necessaire (reduit l'acces ESOPE)
  361. NAT=NAT2
  362. SEGADJ MCHPOI
  363. ENDIF
  364.  
  365. C Le champ de force nodale est discret.
  366.  
  367. JATTRI(1) = 2
  368. DO 100 IA=1,NSOUPO
  369. MSOUPO=IPCHP(IA)
  370. segact msoupo*mod
  371. DO 101 NC=1,NOHARM(/1)
  372. NOHARM(NC)=NIFOUR
  373. 101 CONTINUE
  374. 100 CONTINUE
  375.  
  376. CALL ACTOBJ('CHPOINT ',IPTFP,1)
  377. CALL ECROBJ('CHPOINT ',IPTFP)
  378. END
  379.  
  380.  
  381.  
  382.  
  383.  

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