Télécharger dfer.eso

Retour à la liste

Numérotation des lignes :

dfer
  1. C DFER SOURCE CB215821 20/11/25 13:25:15 10792
  2. SUBROUTINE DFER
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. -INC SMELEME
  6. -INC CCGEOME
  7.  
  8. -INC PPARAM
  9. -INC CCOPTIO
  10. -INC SMCOORD
  11. -INC TMTRAV
  12. -INC SMCHPOI
  13.  
  14. SEGMENT PAQUET
  15. INTEGER LIGNE(NELEM)
  16. ENDSEGMENT
  17. SEGMENT ICPR(nbpts)
  18. SEGMENT IDCP(ITE)
  19.  
  20. c write(6,*)'ok'
  21. CALL LIROBJ('MAILLAGE',IPT1,1,IRETOU)
  22. IF (IERR.NE.0) RETURN
  23. CALL LIROBJ('MAILLAGE',IPT2,1,IRETOU)
  24. IF (IERR.NE.0) RETURN
  25. CALL LIRREE(XVAL,0,iretou)
  26. Zi=0.3
  27. if(iretou.ne.0) ZI=xval
  28. C
  29. C IPT1 MAILLAGE BETON
  30. C IPT2 MAILLAGE FER
  31. C
  32. C Création des lignes
  33. II=IPT2
  34. JJ=0
  35. * write(6,*) ' appel a paqlis'
  36. CALL PAQLIG(II,KK)
  37. * write(6,*) ' ierr ' ,ierr
  38. if(ierr.ne.0) return
  39. PAQUET=KK
  40. segact paquet
  41. * write(6,4732) ( ligne (io),io=1,ligne(/1))
  42. 4732 format (10i7)
  43. * write(6,*) ' retpur de paqlis'
  44. C
  45. C
  46. ITE=0
  47. SEGACT IPT1
  48. IPT3=IPT1
  49. SEGINI ICPR
  50. DO 1 I=1,MAX(1,IPT1.LISOUS(/1))
  51. IF (IPT1.LISOUS(/1).NE.0) THEN
  52. IPT3=IPT1.LISOUS(I)
  53. SEGACT IPT3
  54. ENDIF
  55. DO 4 L=1,IPT3.NUM(/2)
  56. DO 3 JJ=1,IPT3.num(/1)
  57. IPOIT=IPT3.NUM(JJ,L)
  58. IF (ICPR(IPOIT).NE.0) GOTO 3
  59. ITE=ITE+1
  60. ICPR(IPOIT)=ITE
  61. 3 CONTINUE
  62. 4 CONTINUE
  63. 1 CONTINUE
  64. NBNN=1
  65. NBELEM=ITE
  66. NBSOUS=0
  67. NBREF=0
  68. SEGINI MELEME
  69. ITYPEL=1
  70. ia=1
  71. DO I=1,ICPR(/1)
  72. IF (ICPR(I).NE.0) then
  73. NUM(1,ia)=I
  74. ia=ia+1
  75. endif
  76. END DO
  77. SEGSUP ICPR
  78. SEGACT PAQUET
  79. NC=1
  80. SEGINI MSOUPO
  81. IGEOC=MELEME
  82. N=NBELEM
  83. SEGINI MPOVAL
  84. DO 6 I=1,NUM(/2)
  85. CHB=0.
  86. J=0
  87. IREF=num(1,i)*(IDIM+1)-IDIM
  88. XP=XCOOR(IREF)
  89. YP=XCOOR(IREF+1)
  90. ZP=XCOOR(IREF+2)
  91. IF (IDIM.EQ.2) THEN
  92. ZP=0.
  93. END IF
  94. c write(*,*)'xp',xp,'yp',yp,'zp',zp
  95. DO WHILE (J.NE.LIGNE(/1))
  96. J=J+1
  97. DIST=10E15
  98. na=LIGNE(J)
  99. IREFA=NA*(IDIM+1)-IDIM
  100. XA=XCOOR(IREFA)
  101. YA=XCOOR(IREFA+1)
  102. ZA=XCOOR(IREFA+2)
  103. IF (IDIM.EQ.2) THEN
  104. ZA=0.
  105. END IF
  106. j=j+1
  107. if(i.eq.1) then
  108. * write(6,*) ' point de depart ' , na
  109. endif
  110. DO WHILE (LIGNE(J).NE.0)
  111. c write(6,*)ligne(j)
  112. nb=LIGNE(J)
  113. if(i.eq.1) then
  114. * write(6,*) nb
  115. endif
  116. IREFB=NB*(IDIM+1)-IDIM
  117. XB=XCOOR(IREFB)
  118. YB=XCOOR(IREFB+1)
  119. ZB=XCOOR(IREFB+2)
  120. IF (IDIM.EQ.2) THEN
  121. ZB=0.
  122. END IF
  123.  
  124. CALL DISTAN(XP,XA,XB,YP,YA,YB,ZP,ZA,ZB,
  125. $ DISTINT,MARQ)
  126. c if (marq.eq.0) then
  127. c write(*,*)'xa',xa,'ya',ya,'za',za
  128. c write(*,*)'xb',xb,'yb',yb,'zb',zb
  129. c end if
  130. IF (MARQ.NE.0) THEN
  131. xl1=((XB-XP)**2+(YB-YP)**2+(ZB-ZP)**2)**0.5
  132. xl2=((XA-XP)**2+(YA-YP)**2+(ZA-ZP)**2)**0.5
  133. DISTINT=MIN(xl1,xl2)
  134. ENDIF
  135. IF (DISTINT.LE.DIST) THEN
  136. DIST=DISTINT
  137. ENDIF
  138. J=J+1
  139. xa=xb
  140. ya=yb
  141. za=zb
  142. END DO
  143. CHB=CHB+XINFLU(DIST,ZI)
  144. c write(6,*)'dist',dist,'influen',XINFLU(DIST,ZI)
  145. c write(6,*)'idcp',idcp(i),'chp',chb
  146. c if (XINFLU(DIST,ZI).ne.0) then
  147. c write(*,*)'xp',xp,'yp',yp,'zp',zp
  148. c write(*,*)'xa',xa,'ya',ya,'za',za
  149. c write(*,*)'xb',xb,'yb',yb,'zb',zb
  150. c write(6,*)jjelem,'chp',chb
  151. c write(6,*)'dist',dist,'influen',XINFLU(DIST,ZI)
  152. c endif
  153. END DO
  154. VPOCHA(I,1)=CHB
  155.  
  156. 6 CONTINUE
  157. IPOVAL=MPOVAL
  158. NOCOMP(1)='DFER'
  159. NSOUPO=1
  160. NAT=1
  161. SEGINI MCHPOI
  162. JATTRI(1)=2
  163. IPCHP(1)=MSOUPO
  164. MOCHDE='MANUEL'
  165. CALL ACTOBJ('CHPOINT ',MCHPOI,1)
  166. CALL ECROBJ('CHPOINT ',MCHPOI)
  167. RETURN
  168. END
  169.  
  170.  

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