Télécharger dtrigz.eso

Retour à la liste

Numérotation des lignes :

dtrigz
  1. C DTRIGZ SOURCE PV090527 25/06/24 10:57:51 12300
  2. SUBROUTINE DTRIGz(IRET,ktrace,msorse)
  3. C **** DESTRUCTION DE LA MATRICE SI ELLE EXISTE,DESTRUCTION DU CHAPEAU
  4. C **** MATRICE: ON DETRUIT TOUT
  5. IMPLICIT INTEGER(I-N)
  6. CHARACTER*4 MOMOT(1)
  7. character*6 msorse
  8. integer i,ico,idet,ipile,inc,iret,ktrace
  9.  
  10. LOGICAL ooovp1
  11.  
  12. -INC PPARAM
  13. -INC CCOPTIO
  14. -INC COCOLL
  15. -INC SMRIGID
  16. -INC SMMATRI
  17. -INC SMELEME
  18. -INC TMCOLAC
  19. pointeur piles.LISPIL
  20. pointeur jcolac.ICOLAC
  21. pointeur jlisse.ILISSE
  22. pointeur jtlacc.ITLACC
  23. segment ladet(0)
  24. DATA MOMOT(1)/'ELEM'/
  25. iun=1
  26. CALL LIRMOT(MOMOT,1,IDET,0)
  27. MRIGID=IRET
  28. segini ladet
  29. * fabrication de la liste des matrices a detruire
  30. 1010 continue
  31. segact mrigid
  32. ladet(**)=mrigid
  33. if(jrdepp.ne.0) ladet(**)=jrdepp
  34. if(jrdepd.ne.0) ladet(**)=jrdepd
  35. if(jrelim.ne.0) ladet(**)=jrelim
  36. if(jrtot.ne.0) ladet(**)=jrtot
  37. if(jrgard.ne.0) ladet(**)=jrgard
  38. if (jrcond.ne.0) then
  39. mrigid=jrcond
  40. goto 1010
  41. endif
  42. ** write(6,*) ' nb matrice a detruire ',ladet(/1)
  43. do 1000 ir=1,ladet(/1)
  44. mrigid=ladet(ir)
  45. SEGACT MRIGID*mod
  46. IF(IIMPI.ne.0) WRITE(IOIMP,10) ICHOLE
  47. 10 FORMAT(' ON DETRUIT UNE RIGIDITE CHOLEVSKISE SI ICHOLE = 1',
  48. 1 I5)
  49. IF(ICHOLE.EQ.0) GOTO 2
  50. C
  51. C **** DESTRUCTION DE LA MATRICE
  52. MMATRI=ICHOLE
  53. SEGACT MMATRI
  54. MDIAG=IDIAG
  55. if(ktrace.eq.mdiag) then
  56. ktrace=-ktrace
  57. msorse='MDIAG'
  58. endif
  59. SEGSUP MDIAG
  60. MELEME=IGEOMA
  61. IF(IPSAUV.NE.0) THEN
  62. ICOLAC = IPSAUV
  63. SEGACT ICOLAC
  64. ILISSE=ILISSG
  65. SEGACT ILISSE*MOD
  66. CALL TYPFIL('MAILLAGE',ICO)
  67. ITLACC = KCOLA(ICO)
  68. SEGACT ITLACC*MOD
  69. CALL AJOUN0(ITLACC,MELEME,ILISSE,iun)
  70. * SEGDES ITLACC,ILISSE
  71. * SEGDES ICOLAC
  72. ENDIF
  73. C Suppression du meleme des piles d'objets communiques
  74. if(piComm.gt.0) then
  75. piles=piComm
  76. segact piles
  77. call typfil('MAILLAGE',ico)
  78. do ipile=1,piles.proc(/1)
  79. jcolac= piles.proc(ipile)
  80. if(jcolac.ne.0) then
  81. segact jcolac
  82. jlisse=jcolac.ilissg
  83. segact jlisse*mod
  84. jtlacc=jcolac.kcola(ico)
  85. segact jtlacc*mod
  86. call ajoun0(jtlacc,MELEME,jlisse,iun)
  87. segdes jtlacc
  88. segdes jlisse
  89. segdes jcolac
  90. endif
  91. enddo
  92. segdes piles
  93. endif
  94. *** SEGSUP MELEME
  95. MINCPO=IINCPO
  96. if(ktrace.eq.mincpo) then
  97. ktrace=-ktrace
  98. msorse='MINCPO'
  99. endif
  100. SEGSUP MINCPO
  101. MIDUA=IIDUA
  102. if(ktrace.eq.midua) then
  103. ktrace=-ktrace
  104. msorse='MIDUA'
  105. endif
  106. SEGSUP MIDUA
  107. MHARK=IHARK
  108. if(ktrace.eq.mhark) then
  109. ktrace=-ktrace
  110. msorse='MHARK'
  111. endif
  112. SEGSUP MHARK
  113. MIMIK=IIMIK
  114. if(ktrace.eq.mimik) then
  115. ktrace=-ktrace
  116. msorse='MIMIK'
  117. endif
  118. SEGSUP MIMIK
  119. MDNOR=IDNORM
  120. if(ktrace.eq.mdnor) then
  121. ktrace=-ktrace
  122. msorse='MDNOR'
  123. endif
  124. SEGSUP MDNOR
  125. MILIGN=IILIGN
  126. SEGACT MILIGN
  127. INC=ILIGN(/1)
  128. DO 1 I=1,INC
  129. LIGN=ILIGN(I)
  130. if(ktrace.eq.lign) then
  131. ktrace=-ktrace
  132. msorse='LIGN'
  133. endif
  134. SEGSUP LIGN
  135. 1 CONTINUE
  136. if(ktrace.eq.milign) then
  137. ktrace=-ktrace
  138. msorse='MILIGN'
  139. endif
  140. SEGSUP MILIGN
  141. * la partie non symetrique eventuellement
  142. MILIGN=IILIGS
  143. *** write(6,*) 'iiligs dans dtrigz ',iiligs
  144. IF(milign.ne.0) then
  145. SEGACT MILIGN
  146. INC=ILIGN(/1)
  147. DO 6 I=1,INC
  148. LIGN=ILIGN(I)
  149. if(ktrace.eq.lign) then
  150. ktrace=-ktrace
  151. msorse='LIGN'
  152. endif
  153. SEGSUP LIGN
  154. 6 CONTINUE
  155. if(ktrace.eq.milign) then
  156. ktrace=-ktrace
  157. msorse='MILIGN'
  158. endif
  159. SEGSUP MILIGN
  160. endif
  161. if(ktrace.eq.mmatri) then
  162. ktrace=-ktrace
  163. msorse='MMATRI'
  164. endif
  165. SEGSUP MMATRI
  166. C
  167. C **** DESTRUCTION DU CHAPEAU
  168. 2 CONTINUE
  169. C
  170. CCCCCCCCCCCCC SI ON MIS DETRUIRE ELEM ON DETRUIT AUSSI LES RIGI
  171. C ELEMENTAIRES
  172. IF(IMGEO1.NE.0) THEN
  173. IMGEOD=IMGEO1
  174. SEGSUP IMGEOD
  175. IMGEO1 = 0
  176. if(ktrace.eq.imgeo1) then
  177. ktrace=-ktrace
  178. msorse='IMGEOD'
  179. endif
  180. ENDIF
  181. IF(ivecri.ne.0) then
  182. mvecri=ivecri
  183. segsup mvecri
  184. ivecri=0
  185. if(ktrace.eq.ivecri) then
  186. ktrace=-ktrace
  187. msorse='IVECRI'
  188. endif
  189. ENDIF
  190. IF(IDET.EQ.1) CALL DERIGI(IRET,KTRACE,MSORSE)
  191. * si type temporaire, destruction du xmatri du descr et du meleme
  192. if (mtymat.eq.'TEMPORAI') then
  193. do iri=1,irigel(/2)
  194. ** meleme=irigel(1,iri)
  195. ** call ooove1(lret,meleme)
  196. ** if (lret.eq.2) segsup meleme
  197. ** descr=irigel(3,iri)
  198. ** call ooove1(lret,descr)
  199. ** if (lret.eq.2) segsup descr
  200. ** xmatri=irigel(4,iri)
  201. ** call ooove1(lret,xmatri)
  202. *** if (lret.eq.2) segsup xmatri
  203. enddo
  204. endif
  205. * if(imlag.ne.0) then
  206. * meleme=imlag
  207. * probleme avec imlag, mais de toute facon ce n'est normalement pas gros
  208. *** segsup meleme
  209. * endif
  210. IF(ooovp1(mrigid)) THEN
  211. if(ktrace.eq.mrigid) then
  212. ktrace=-ktrace
  213. msorse='MRIGID'
  214. endif
  215. nrigel=irigel(/2)
  216. segadj mrigid
  217. ichole=0
  218. IMGEO1 = 0
  219. ivecri=0
  220. ENDIF
  221.  
  222. 1000 continue
  223. segsup ladet
  224. IRET=0
  225. RETURN
  226. END
  227.  
  228.  
  229.  

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