Télécharger prrigi.eso

Retour à la liste

Numérotation des lignes :

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

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