Télécharger prlimi.eso

Retour à la liste

Numérotation des lignes :

prlimi
  1. C PRLIMI SOURCE CB215821 20/11/25 13:37:01 10792
  2. C PRLIMI SOURCE
  3. SUBROUTINE PRLIMI(CALDYN,IG,ITAB,IFIC1,IRIG,NMOD,IMAI,NNO,IFIC2)
  4. C
  5. C=======================================================================
  6. C POUR MISS3D : ECRITURE DES MODES SUR FICHIER .chp
  7. C ET DU MAILLAGE SUR FICHIER .mail
  8. C
  9. C Appelle par l'operateur MISE
  10. C=======================================================================
  11. C
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8(A-H,O-Z)
  14. LOGICAL CALDYN
  15. -INC SMTABLE
  16. -INC SMCOORD
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. -INC SMELEME
  21. -INC SMCHPOI
  22. C
  23. CHARACTER*8 ITYPE
  24. CHARACTER*72 LEMOT
  25. PARAMETER (ZERO=0.D0)
  26. INTEGER ICMP(3)
  27. INTEGER KN(8)
  28. DATA KN /0,0,0,0,0,0,0,0/
  29. C
  30. IF(CALDYN)THEN
  31. C
  32. C Ecriture pour les vrais modes
  33. WRITE(IFIC1,*)'GROUP 2'
  34. WRITE(IFIC1,*)'MODE',NMOD
  35. DO 20 I=1,NMOD
  36. WRITE(IFIC1,*)'TOUS 0 0 0'
  37. WRITE(IFIC1,*)'FIN'
  38. 20 CONTINUE
  39. C
  40. C Ecriture des modes statiques
  41. WRITE(IFIC1,*)'GROUP 1 2'
  42. MTABLE=ABS(ITAB)
  43. SEGACT MTABLE
  44. NB=MLOTAB
  45. WRITE(IFIC1,*)'MODE',NB-1
  46.  
  47. IF(IRIG.EQ.1)THEN
  48. C
  49. C Fondation souple, on n'ecrit que le DDL concerne pour chaque mode
  50. NBP=(NB-1)/3
  51.  
  52. DO 10 IJ=1,NB
  53. ITYPE=MTABTI(IJ)
  54. IF(ITYPE.EQ.'ENTIER')THEN
  55. IRET=MTABII(IJ)
  56. MTAB1=MTABIV(IJ)
  57. CALL ACCTAB(MTAB1,'MOT',0,0.0D0,'POINT_LIAISON',.TRUE.,0,
  58. & 'POINT',IP,RR,LEMOT,.TRUE.,IPOIN)
  59. CALL ACCTAB(MTAB1,'MOT',0,0.0D0,'DDL_LIAISON',.TRUE.,0,
  60. & 'MOT',IP,RR,LEMOT,.TRUE.,IZ)
  61. CALL ACCTAB(MTAB1,'MOT',0,0.0D0,'VALEUR_DDL',.TRUE.,0,
  62. & 'FLOTTANT',IP,VAL,LEMOT,.TRUE.,IZ)
  63. IF (VAL.EQ.00013081984) THEN
  64. CALL ACCTAB(MTAB1,'MOT',0,0.0D0,'DEFORMEE',.TRUE.,0,
  65. & 'CHPOINT',IP,RR,LEMOT,.TRUE.,JCHP1)
  66. MCHPOI=JCHP1
  67. SEGACT MCHPOI
  68. NSOU=IPCHP(/1)
  69. DO 71 ISOU=1,NSOU
  70. MSOUPO=IPCHP(ISOU)
  71. SEGACT MSOUPO
  72. IF(NOCOMP(1).EQ.'LX ')THEN
  73. SEGDES MSOUPO
  74. GOTO 71
  75. ENDIF
  76. IPT1=IGEOC
  77. SEGACT IPT1
  78. NBP=IPT1.NUM(/2)
  79. MPOVAL=IPOVAL
  80. SEGACT MPOVAL
  81. C
  82. C On ordonne les composantes UX, UY et UZ car bizarrement c'est pas toujours dans l'ordre !
  83. NBCOMP=VPOCHA(/2)
  84. DO ICOMP=1,NBCOMP
  85. IF(NOCOMP(ICOMP).EQ.'UX ')THEN
  86. ICMP(1)=ICOMP
  87. ELSEIF(NOCOMP(ICOMP).EQ.'UY ')THEN
  88. ICMP(2)=ICOMP
  89. ELSEIF(NOCOMP(ICOMP).EQ.'UZ ')THEN
  90. ICMP(3)=ICOMP
  91. ENDIF
  92. ENDDO
  93. DO 72 IN=1,NBP
  94. IPOIN=IPT1.NUM(1,IN)
  95. WRITE(IFIC1,110)IPOIN,(VPOCHA(IN,ICMP(IC)),IC=1,3)
  96. 72 CONTINUE
  97. SEGDES MPOVAL
  98. SEGDES MSOUPO
  99. SEGDES IPT1
  100. 71 CONTINUE
  101. WRITE(IFIC1,*)'FIN'
  102. SEGDES MCHPOI
  103. ELSE
  104. C
  105. IF(LEMOT(1:2).EQ.'UX')THEN
  106. WRITE(IFIC1,110)IPOIN,VAL,ZERO,ZERO
  107. ELSEIF(LEMOT(1:2).EQ.'UY')THEN
  108. WRITE(IFIC1,110)IPOIN,ZERO,VAL,ZERO
  109. ELSE
  110. WRITE(IFIC1,110)IPOIN,ZERO,ZERO,VAL
  111. ENDIF
  112. 110 FORMAT(I7,3(1X,E15.6))
  113. WRITE(IFIC1,*)'FIN'
  114. ENDIF
  115. ENDIF
  116. 10 CONTINUE
  117. ELSE
  118. C
  119. C Fondation rigide, on ecrit tous les ddl pour chaque mode
  120. DO 60 IJ=1,NB
  121. ITYPE=MTABTI(IJ)
  122. IF(ITYPE.EQ.'ENTIER')THEN
  123. IRET=MTABII(IJ)
  124. MTAB1=MTABIV(IJ)
  125. CALL ACCTAB(MTAB1,'MOT',0,0.0D0,'DEFORMEE',.TRUE.,0,
  126. & 'CHPOINT',IP,RR,LEMOT,.TRUE.,JCHP1)
  127. MCHPOI=JCHP1
  128. SEGACT MCHPOI
  129. NSOU=IPCHP(/1)
  130. DO 61 ISOU=1,NSOU
  131. MSOUPO=IPCHP(ISOU)
  132. SEGACT MSOUPO
  133. IF(NOCOMP(1).EQ.'LX ')THEN
  134. SEGDES MSOUPO
  135. GOTO 61
  136. ENDIF
  137. IPT1=IGEOC
  138. SEGACT IPT1
  139. NBP=IPT1.NUM(/2)
  140. MPOVAL=IPOVAL
  141. SEGACT MPOVAL
  142. C
  143. C On ordonne les composantes UX, UY et UZ car bizarrement c'est pas toujours dans l'ordre !
  144. NBCOMP=VPOCHA(/2)
  145. DO ICOMP=1,NBCOMP
  146. IF(NOCOMP(ICOMP).EQ.'UX ')THEN
  147. ICMP(1)=ICOMP
  148. ELSEIF(NOCOMP(ICOMP).EQ.'UY ')THEN
  149. ICMP(2)=ICOMP
  150. ELSEIF(NOCOMP(ICOMP).EQ.'UZ ')THEN
  151. ICMP(3)=ICOMP
  152. ENDIF
  153. ENDDO
  154. DO 62 IN=1,NBP
  155. IPOIN=IPT1.NUM(1,IN)
  156. WRITE(IFIC1,110)IPOIN,(VPOCHA(IN,ICMP(IC)),IC=1,3)
  157. 62 CONTINUE
  158. SEGDES MPOVAL
  159. SEGDES MSOUPO
  160. SEGDES IPT1
  161. 61 CONTINUE
  162. WRITE(IFIC1,*)'FIN'
  163. SEGDES MCHPOI
  164. ENDIF
  165. 60 CONTINUE
  166. ENDIF
  167. SEGDES MTABLE
  168. ELSE
  169. ID=(IDIM+1)*(IG-1)
  170. WRITE(IFIC1,*)'GROUP 1'
  171. WRITE(IFIC1,*)'RIGIDE',XCOOR(ID+1),XCOOR(ID+2),XCOOR(ID+3)
  172. ENDIF
  173. C
  174. C Ecriture maillage
  175. MELEME=IMAI
  176. SEGACT MELEME
  177. NBEL=NUM(/2)
  178. NBSOUS=LISOUS(/1)
  179. IF(NBSOUS.NE.0)STOP 'Plusieurs sous maillages'
  180. C
  181. C coordonnees
  182. NNOT=nbpts
  183. C WRITE(IFIC2,310)NNOT,NBEL
  184. WRITE(IFIC2,310)NNO,NBEL
  185. 310 FORMAT('Maillage interface',/,I5,I5,/,'LIBRE')
  186. C DO 40 IP=1,NNOT
  187. DO 40 IP=1,NNO
  188. WRITE(IFIC2,320)(XCOOR((IP-1)*4+K),K=1,3)
  189. 320 FORMAT(3(1X,E15.6))
  190. 40 CONTINUE
  191. C
  192. C connectivite maillage interface
  193. cccc???? SEGACT MCOORD
  194. C
  195. NBN=NUM(/1)
  196. DO 50 IE=1,NBEL
  197. IF(NBN.EQ.4)THEN
  198. KN(1)=NUM(1,IE)
  199. KN(3)=NUM(2,IE)
  200. KN(5)=NUM(3,IE)
  201. KN(7)=NUM(4,IE)
  202. ELSEIF(NBN.EQ.3)THEN
  203. KN(1)=NUM(1,IE)
  204. KN(3)=NUM(2,IE)
  205. KN(5)=NUM(3,IE)
  206. ELSE
  207. WRITE(IOIMP,*) 'Nombre de noeuds par element : ',NBN
  208. STOP 'pas encore fait dans prlimi.eso'
  209. ENDIF
  210. WRITE(IFIC2,330)(KN(K),K=1,8)
  211. 330 FORMAT(8I7,' GR 1')
  212. C
  213. 50 CONTINUE
  214. C
  215. SEGDES MELEME
  216. C
  217. RETURN
  218. END
  219.  
  220.  
  221.  
  222.  

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