Télécharger ricol1.eso

Retour à la liste

Numérotation des lignes :

ricol1
  1. C RICOL1 SOURCE FANDEUR 22/01/19 21:15:15 11256
  2. C
  3. C
  4. SUBROUTINE RICOL1(MLCHPO,ICLE,MRIGID,IPT1)
  5.  
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. IMPLICIT INTEGER (I-N)
  8.  
  9. C***********************************************************************
  10. C NOM : RICOL1
  11. C DESCRIPTION : Transforme les CHPOINTs d'un LISTCHPO en matrice colonne
  12. c pleine MRIGID avec les inconnues modales ALFA-FALF
  13. C et un maillage de POI1
  14. C LANGAGE : ESOPE
  15. C
  16. C AUTEUR, DATE, MODIF :
  17. C 16/12/2014, Benoit Prabel : creation
  18. C
  19. C ... merci de compléter les evolutions futures ...
  20. C
  21. C***********************************************************************
  22. C ENTREES : MLCHPO, IPT1 (+ autres lectures internes a ricolo)
  23. C ENTREES/SORTIES :
  24. C SORTIES : MRIGID
  25. C***********************************************************************
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMRIGID
  30. -INC SMCHPOI
  31. -INC SMELEME
  32. -INC SMLCHPO
  33. -INC SMCOORD
  34.  
  35. CHARACTER*4 MOMOT(1)
  36. CHARACTER*8 LETYPE
  37. DATA MOMOT(1) /'TYPE'/
  38.  
  39. c***********************************************************************
  40. c Executable statements
  41. c***********************************************************************
  42.  
  43.  
  44. c======================================================================c
  45. c PRELIMINAIRES
  46.  
  47.  
  48. c======================================================================c
  49. c CREATION DE LA RIGIDITE DE SORTIE DEPUIS LE MELEME D ENTREE
  50.  
  51. NRIGEL=1
  52. SEGINI,MRIGID
  53.  
  54. * -- LECTURE DU SOUS-TYPE DE LA "RIGIDITE" A CREER --
  55. ITYP = 0
  56. CALL LIRMOT(MOMOT,1,ITYP,0)
  57. IF(ITYP.EQ.1) THEN
  58. ICODE = 1
  59. CALL LIRCHA (LETYPE,ICODE,IRETOU)
  60. IF (IERR .NE. 0) RETURN
  61. ELSE
  62. C ... Si on n'a rien trouvé, on met un sous type par defaut dedans
  63. LETYPE='MONODROM'
  64. ENDIF
  65. MTYMAT=LETYPE
  66.  
  67. COERIG(1)=1.D0
  68.  
  69. C -- CREATION DES OBJETS DEPUIS IPT1 --
  70. SEGACT,IPT1
  71. c verif qu il s'agit dun maillage de POI1
  72. NBSOUS=IPT1.LISOUS(/1)
  73. IF(NBSOUS.NE.0) THEN
  74. WRITE(IOIMP,*) 'Maillage simple de POI1 attendu en entrée !'
  75. CALL ERREUR(25)
  76. RETURN
  77. ENDIF
  78. NBNN =IPT1.NUM(/1)
  79. NBELEM=IPT1.NUM(/2)
  80. ITYP1 =IPT1.ITYPEL
  81. IF(NBNN.NE.1.OR.ITYP1.NE.1) THEN
  82. WRITE(IOIMP,*) NBNN,NBELEM,' element de type ',ITYP1
  83. WRITE(IOIMP,*) 'Maillage de POI1 attendu en entrée !'
  84. CALL ERREUR(16)
  85. RETURN
  86. ENDIF
  87. c creation des MELEME,DESCR,XMATRI de la mrigid de sortie
  88. NLIGRP=NBELEM
  89. NLIGRD=NBELEM
  90. NELRIG=1
  91. NBNN=NBELEM
  92. NBELEM=1
  93. NBSOUS=0
  94. NBREF=0
  95. SEGINI,MELEME,DESCR,XMATRI
  96. IRIGEL(1,1)=MELEME
  97. IRIGEL(3,1)=DESCR
  98. IRIGEL(4,1)=XMATRI
  99. IRIGEL(7,1)=2
  100. xmatri.symre=2
  101. * on prend le type SUPERELEMENT a defaut d'autre chose...
  102. ITYPEL=28
  103. NBNO=0
  104. DO I=1,NBNN
  105. NUM(I,1)=IPT1.NUM(1,I)
  106. LISINC(I)='ALFA '
  107. LISDUA(I)='FALF '
  108. NOELEP(I)=I
  109. NOELED(I)=I
  110. ENDDO
  111. SEGDES,IPT1,DESCR
  112.  
  113.  
  114. c======================================================================c
  115. C BOUCLE SUR LES CHPOINTS : J=1..NJ
  116.  
  117. SEGACT,MLCHPO
  118. NJ=ICHPOI(/1)
  119. IF(NJ.NE.NBNN) THEN
  120. write(ioimp,*) 'DIMENSION DU LISTCHPO INCOHERENTE AVEC LA ',
  121. & 'DESCRIPTION DES INCONNUES CONTENUE DANS LA RIGIDITE !'
  122. write(ioimp,*) NJ,NBNN
  123. CALL ERREUR(21)
  124. RETURN
  125. ENDIF
  126.  
  127. DO J = 1, NJ
  128. MCHPOI=ICHPOI(J)
  129. SEGACT,MCHPOI
  130.  
  131. if (j.eq.1) then
  132. iforie = mchpoi.ifopoi
  133. MRIGID.IFORIG = iforie
  134. else
  135. if (iforie .NE. mchpoi.ifopoi) then
  136. interr(1)=iforie
  137. interr(2)=mchpoi.ifopoi
  138. interr(3)=IFOUR
  139. c-dbg write(ioimp,*) '1132 RICOL1',iforie,ifopoi
  140. call erreur(1132)
  141. iforie = IFOUR
  142. MRIGID.IFORIG = iforie
  143. end if
  144. end if
  145.  
  146. c on ouvre tout dans ce chpoint
  147. NSOUPO=IPCHP(/1)
  148. IF(NSOUPO.NE.1) THEN
  149. WRITE(IOIMP,*) 'LE CHPOINT DOIT AVOIR 1 SEULE ZONE !'
  150. CALL ERREUR(21)
  151. RETURN
  152. ENDIF
  153. ISOUPO=1
  154. MSOUPO = IPCHP(ISOUPO)
  155. SEGACT,MSOUPO
  156. NC=NOCOMP(/2)
  157. IF(NC.NE.1 .OR. NOCOMP(1).NE.'ALFA') THEN
  158. WRITE(IOIMP,*) 'LE CHPOINT DOIT AVOIR 1 COMPOSANTE : ALFA !'
  159. CALL ERREUR(21)
  160. RETURN
  161. ENDIF
  162. IPT1 = IGEOC
  163. MPOVAL = IPOVAL
  164. SEGACT,IPT1,MPOVAL
  165. c WRITE(*,*) '1>>>>>>>1comp',MPOVAL.VPOCHA(1,1)
  166. IF(J.EQ.1) THEN
  167. c IF(ISOUPO.EQ.1) THEN
  168. IRIGEL(5,1) = NOHARM
  169. c ELSEIF(IRIGEL(5,1).NE.NOHARM) THEN
  170. c WRITE(IOIMP,*) 'CHPOINT AUX HARMONIQUES MULTIPLES NON TRAITES'
  171. c CALL ERREUR(21)
  172. c RETURN
  173. c ENDIF
  174. ENDIF
  175.  
  176. c======================================================================c
  177. C BOUCLE SUR LES points DU CHPOINT : I=1..N
  178.  
  179. N=VPOCHA(/1)
  180. DO 400 I=1,N
  181.  
  182. c recup du noeud
  183. inode = IPT1.NUM(1,i)
  184. c recherche de la position du noeud dans le MELEME de la rigidite
  185. DO ii=1,NBNN
  186. IF(NUM(ii,1).EQ.inode) GOTO 411
  187. ENDDO
  188. WRITE(IOIMP,*) 'Noeud',inode,'absent dans le MAILLAGE d entree'
  189. CALL ERREUR(21)
  190. RETURN
  191.  
  192. 411 CONTINUE
  193. c remplissage de XMATRI.RE
  194. RE(ii,J,1) = VPOCHA(I,1)
  195.  
  196. 400 CONTINUE
  197.  
  198. c on ferme tout dans ce chpoint
  199. DO 290 ISOUPO=1,NSOUPO
  200. MSOUPO = IPCHP(ISOUPO)
  201. IPT1 = IGEOC
  202. MPOVAL = IPOVAL
  203. SEGDES,IPT1,MPOVAL
  204. SEGDES,MSOUPO
  205. 290 CONTINUE
  206. SEGDES,MCHPOI
  207.  
  208.  
  209. ENDDO
  210. C FIN DE BOUCLE SUR LES CHPOINTS
  211. c======================================================================c
  212. SEGDES,MLCHPO
  213.  
  214. c***********************************************************************
  215. C Normal termination
  216. c***********************************************************************
  217. SEGDES,MELEME,XMATRI
  218. SEGDES,MRIGID
  219.  
  220. RETURN
  221.  
  222. c***********************************************************************
  223. c End of subroutine
  224. c***********************************************************************
  225. END
  226.  
  227.  
  228.  

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