Télécharger prrigi.eso

Retour à la liste

Numérotation des lignes :

prrigi
  1. C PRRIGI SOURCE SP204843 23/09/21 21:15:06 11745
  2. c imprime les matrices de rigidite pointeur de l objet=iret
  3. c
  4. SUBROUTINE PRRIGI(IRET,JENTET)
  5. IMPLICIT INTEGER(I-N)
  6. -INC SMRIGID
  7.  
  8. -INC PPARAM
  9. -INC CCOPTIO
  10. -INC SMELEME
  11. CHARACTER*24 TITI,TOTO,TOTO2
  12. c nombre de matrices elementaires a afficher (anciennement =10 en dur)
  13. PARAMETER(NRESU=2)
  14. c
  15. C eventuellement, on lit le nombre de valeurs de REL a afficher avant de
  16. C revenir a la ligne
  17. NMAX=39
  18. CALL LIRENT(IMAX,0,IRETOU)
  19. if(IRETOU.NE.0) NMAX=IMAX
  20.  
  21. MRIGID=IRET
  22. if (mrigid.le.0) then
  23. call erreur(26)
  24. return
  25. endif
  26. SEGACT MRIGID
  27. NRI=IRIGEL(/1)
  28. NR=IRIGEL(/2)
  29. c ERREUR(-26): Matrice de %m1:8 formée de %i1 matrice(s) élémentaire(s)
  30. MOTERR(1:8)=MTYMAT
  31. INTERR(1)=IRET
  32. INTERR(2)=NR
  33. CALL ERREUR(-26)
  34. write(ioimp,*) 'Option de calcul',IFORIG
  35.  
  36. c --- boucle sur les sous-rigidites ------------------------------------
  37. DO 191 I=1,NR
  38. IGEO=IRIGEL(1,I)
  39. xMATRI=IRIGEL(4,I)
  40. SEGACT xMATRI
  41. NMA=re(/3)
  42. DESCR=IRIGEL(3,I)
  43. NNHA=IRIGEL(5,I)
  44. NEGALI=IRIGEL(6,I)
  45. SEGACT DESCR
  46. NINC=LISINC(/2)
  47. NINCD=LISDUA(/2)
  48.  
  49. c ERREUR(-27): Sous matrice %i1 : %i2 éléments : %i3 x %i4 inconnue(s) par matrice
  50. c Coefficient multiplicateur %r1 : Harmonique %i5
  51. INTERR(1)=I
  52. INTERR(2)=NMA
  53. INTERR(3)=NINC
  54. INTERR(4)=NINCD
  55. REAERR(1)=COERIG(I)
  56. INTERR(5)=NNHA
  57. CALL ERREUR(-27)
  58. IF (NRI.GE.7) THEN
  59. IANTI=IRIGEL(7,I)
  60. IF (IANTI.EQ.0) THEN
  61. CALL ERREUR(-274)
  62. ELSE IF (IANTI.EQ.1) THEN
  63. CALL ERREUR(-275)
  64. ELSE IF (IANTI.EQ.2) THEN
  65. CALL ERREUR(-307)
  66. ELSE IF (IANTI.EQ.3) THEN
  67. CALL ERREUR(-320)
  68. ENDIF
  69. ELSE
  70. CALL ERREUR(-274)
  71. ENDIF
  72.  
  73. c ... désormais inutile ... interr(1)=negali
  74. c ERREUR(-28): Nature des matrices : "%m1:1"
  75. c Noeuds Inconnue : (les %i2 premières sont primales)
  76. IF(NEGALI.EQ.0) THEN
  77. MOTERR(1:1)='='
  78. ELSE IF(NEGALI.EQ.-1) THEN
  79. MOTERR(1:1)='>'
  80. ELSE IF(NEGALI.EQ. 1) THEN
  81. MOTERR(1:1)='<'
  82. ELSE
  83. MOTERR(1:1)='?'
  84. ENDIF
  85. INTERR(2)=NINC
  86. CALL ERREUR(-28)
  87. c ecriture du DESCR
  88. WRITE(IOIMP,194)(NOELEP(J),LISINC(J),J=1,NINC)
  89. WRITE(IOIMP,194)(NOELED(J),LISDUA(J),J=1,NINCD)
  90. 194 FORMAT( I6,9X,A4)
  91. SEGDES DESCR
  92. MELEME=IGEO
  93. SEGACT MELEME
  94. C ERREUR (-29): Liste des points associés aux matrices
  95. CALL ERREUR (-29)
  96. NBNN=NUM(/1)
  97. NBELEM=NUM(/2)
  98. c option 'RESUM' : on n'affiche que les NRESU premiers elements
  99. nbi=nbelem
  100. if(jentet.eq.1) nbi=min (NRESU,nbi)
  101. NBNN2=min(NBNN,NMAX)
  102. WRITE(TITI,FMT='("( A,",I3,"( A,I3))")') NBNN2
  103. WRITE(IOIMP,TITI) ' element :',(' pt',IKK,IKK=1,NBNN)
  104. WRITE(TITI,FMT='("(I8,A,",I3,"(1X,I8))")') NBNN2
  105. DO 1000 INNN=1,NBi
  106. c WRITE(IOIMP,1001)(NUM(IKK,INNN),IKK=1,NBNN)
  107. WRITE(IOIMP,TITI) INNN,' :',(NUM(IKK,INNN),IKK=1,NBNN)
  108. 1000 CONTINUE
  109. c 1001 FORMAT(15I8)
  110.  
  111. IF(ITYPEL.NE.22) GOTO 199
  112. c - Cas des multiplicateurs de Lagrange -
  113. C ERREUR(-30): Maillage %i1 associé à la condition
  114. INTERR(1)=IGEO
  115. CALL ERREUR(-30)
  116. NBPOIN=NUM(/2)
  117. NBNN=NUM(/1)
  118. c option 'RESUM' : on n'affiche que les NRESU premiere elements
  119. nbi=nbpoin
  120. if( jentet.eq.1) nbi=min (NRESU,nbi)
  121. NBNN2=min(NBNN,NMAX)
  122. c WRITE(TITI,FMT='("(27X,",I3,"(1X,I8))")') NBNN2
  123. WRITE(TITI,FMT='("(1X,A,1X,",I3,"(1X,I8))")') NBNN2
  124. DO 198 J=1,nbi
  125. IF (IERR.NE.0) RETURN
  126. c C ERREUR(-31): Noeuds soumis à la condition :
  127. c CALL ERREUR(-31)
  128. c ecriture des noeuds hors LX (suppose etre en position 1)
  129. c WRITE (IOIMP,203) (NUM(K,J),K=2,NBNN)
  130. c WRITE (IOIMP,TITI) (NUM(K,J),K=2,NBNN)
  131. WRITE (IOIMP,TITI) 'Noeuds soumis à la condition :',
  132. & (NUM(K,J),K=2,NBNN)
  133. c 203 FORMAT(30X,10I8)
  134. c ecriture du noeud LX (suppose etre en position 1)
  135. c ERREUR(-32): Multiplicateurs de Lagrange : %i1
  136. INTERR(1)=NUM(1,J)
  137. CALL ERREUR(-32)
  138. 198 CONTINUE
  139. 199 CONTINUE
  140. c - Fin du Cas des multiplicateurs de Lagrange -
  141. SEGDES MELEME
  142.  
  143. c --- boucle sur le matrices elementaires ---
  144. if(jentet.eq.1) nma=min(nma,NRESU)
  145. DO 196 IA=1,NMA
  146. IF (IERR.NE.0) RETURN
  147. * XMATRI=IMATTT(IA)
  148. ** SEGACT XMATRI
  149. NVA=RE(/1)
  150. NVB=RE(/2)
  151. C ERREUR(-33): Matrice élémentaire numéro : %i1 ( ligne1,ligne2,ligne3...)
  152. INTERR(1)= IA
  153. CALL ERREUR(-33)
  154. C ecriture des matrices elementaires REL
  155. c WRITE(IOIMP,195) ((RE(L,K,ia),K=1,NVB),L=1,NVA)
  156. c 195 FORMAT(1X,6E12.5)
  157. c ecriture ligne par ligne
  158. c NMAX= nbre de valeurs max = (nbre caracteres max -1espace -3points)
  159. c = (512)/13 = 39 par exemple
  160. if(NVB.le.NMAX) then
  161. WRITE(TOTO,FMT='("(",I3,"(1X,E12.5),1X,A)")') NVB
  162. do L=1,NVA
  163. if (nvb.ne.0) then
  164. WRITE(IOIMP,FMT=TOTO) (RE(L,jou,IA),jou=1,NVB),';'
  165. endif
  166. enddo
  167. else
  168. nbloc=NVB/NMAX
  169. WRITE(TOTO,FMT='("(",I3,"(1X,E12.5),1X,A)")') NMAX
  170. nrest = NVB-(NMAX*nbloc)
  171. c on s assure que : NMAX >= nrest > 0
  172. if(nrest.eq.0) then
  173. nbloc=nbloc-1
  174. nrest=NMAX
  175. endif
  176. WRITE(TOTO2,FMT='("(",I3,"(1X,E12.5),1X,A)")') nrest
  177. do L=1,NVA
  178. jdeb=1
  179. if(nbloc.gt.0) then
  180. do jbloc=1,nbloc
  181. WRITE(IOIMP,FMT=TOTO) (RE(L,jou,IA),jou=jdeb,(jdeb+NMAX-1)),'...'
  182. jdeb=jdeb+NMAX
  183. enddo
  184. endif
  185. WRITE(IOIMP,FMT=TOTO2) (RE(L,jou,IA),jou=jdeb,NVB),';'
  186. enddo
  187. endif
  188. * SEGDES XMATRI
  189. 196 CONTINUE
  190. c --- fin de boucle sur le matrices elementaires ---
  191. SEGDES MELEME
  192. SEGDES xMATRI
  193.  
  194. 191 CONTINUE
  195. c --- fin de boucle sur les sous-rigidites -----------------------------
  196. SEGDES MRIGID
  197. RETURN
  198. END
  199.  
  200.  
  201.  
  202.  

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