Télécharger vechpo.eso

Retour à la liste

Numérotation des lignes :

vechpo
  1. C VECHPO SOURCE PV 21/11/15 21:15:00 11188
  2.  
  3. SUBROUTINE vechpo(ipchp1,ipchp2,ipchp4,ipchp3,ipt8,isouci)
  4. c====================================================================
  5. c Pour appel par resour
  6. c verif que ipchp3 est petit devant ipchp1 et ipchp2 et ipchp4
  7. C erreur:
  8. C il reste un residu non converti en multiplicateur
  9. C
  10. c====================================================================
  11.  
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8(A-H,O-Z)
  14.  
  15. -INC SMCHPOI
  16. -INC SMELEME
  17. -INC PPARAM
  18. -INC CCOPTIO
  19. -INC CCHAMP
  20. -INC CCREEL
  21. -INC SMCOORD
  22.  
  23. SEGMENT TEST
  24. INTEGER IBIN(NBNO,NBCOMP)
  25. END SEGMENT
  26. SEGMENT LSCOMP
  27. CHARACTER*(LOCOMP) LACOMP(NBCOMP)
  28. ENDSEGMENT
  29.  
  30. CHARACTER*(LOCOMP) nom2
  31.  
  32.  
  33. ** write(6,*) ' vechpo ipchp1 '
  34. ** call ecchpo(ipchp1,0)
  35. ** write(6,*) ' vechpo ipchp2 '
  36. ** call ecchpo(ipchp2,0)
  37. ** write(6,*) ' vechpo ipchp3 '
  38. ** call ecchpo(ipchp3,0)
  39. **
  40.  
  41. * preparation ibin qui indique les ddl de ipchp1
  42. * on ne teste ipchp3 que sur ces ddl
  43. nbcompo=nbcomp
  44. segini lscomp
  45. mchpoi=ipchp1
  46. segact mchpoi
  47. do icp=1,ipchp(/1)
  48. msoupo=ipchp(icp)
  49. segact msoupo
  50. nbcomp=nbcompo+nocomp(/2)
  51. segadj lscomp
  52. do icomp=1,nocomp(/2)
  53. do ils=1,ncompo
  54. if (lacomp(ils).eq.nocomp(icomp)) goto 10
  55. enddo
  56. nbcompo=nbcompo+1
  57. lacomp(nbcompo)=nocomp(icomp)
  58. 10 continue
  59. enddo
  60. enddo
  61. nbcomp=nbcompo+1
  62. segadj lscomp
  63. ** write(6,*) ' composantes ',(lacomp(i),i=1,lacomp(/2))
  64. nbno=nbpts
  65. segini test
  66. do icp=1,ipchp(/1)
  67. msoupo=ipchp(icp)
  68. segact msoupo
  69. meleme=igeoc
  70. segact meleme
  71. do icomp=1,nocomp(/2)
  72. do ils=1,nbcomp
  73. if (lacomp(ils).eq.nocomp(icomp)) goto 20
  74. enddo
  75. 20 continue
  76. do iel=1,num(/2)
  77. ibin(num(1,iel),ils)=1
  78. enddo
  79. enddo
  80. enddo
  81.  
  82.  
  83.  
  84. nbsous=0
  85. nbref=0
  86. nbnn=1
  87. * on multiplie par 1d4 parce qu'on divisera plus trard
  88. xcrit=xpetit*1d4
  89. xcritLX=xpetit*1d4
  90. mchpoi=ipchp1
  91. segact mchpoi
  92. do icp=1,ipchp(/1)
  93. msoupo=ipchp(icp)
  94. segact msoupo
  95. mpoval=ipoval
  96. segact mpoval
  97. ** write(6,*) ' vechpo 1 nocomp ',nocomp(/2),nocomp(1)
  98. if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then
  99. do i=1,vpocha(/1)
  100. xcritlx=max(abs(vpocha(i,1)),xcritlx)
  101. enddo
  102. else
  103. do ic=1,vpocha(/2)
  104. do i=1,vpocha(/1)
  105. xcrit=max(abs(vpocha(i,ic)),xcrit)
  106. enddo
  107. enddo
  108. endif
  109. enddo
  110. mchpoi=ipchp2
  111. segact mchpoi
  112. do icp=1,ipchp(/1)
  113. msoupo=ipchp(icp)
  114. segact msoupo
  115. mpoval=ipoval
  116. segact mpoval
  117. ** write(6,*) ' vechpo 2 nocomp ',nocomp(/2),nocomp(1)
  118. if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then
  119. do i=1,vpocha(/1)
  120. xcritlx=max(abs(vpocha(i,1)),xcritlx)
  121. enddo
  122. else
  123. do ic=1,vpocha(/2)
  124. do i=1,vpocha(/1)
  125. xcrit=max(abs(vpocha(i,ic)),xcrit)
  126. enddo
  127. enddo
  128. endif
  129. enddo
  130. mchpoi=ipchp4
  131. segact mchpoi
  132. do icp=1,ipchp(/1)
  133. msoupo=ipchp(icp)
  134. segact msoupo
  135. mpoval=ipoval
  136. segact mpoval
  137. ** write(6,*) ' vechpo 2 nocomp ',nocomp(/2),nocomp(1)
  138. if (nocomp(/2).eq.1.and.nocomp(1).eq.'FLX') then
  139. do i=1,vpocha(/1)
  140. xcritlx=max(abs(vpocha(i,1)),xcritlx)
  141. enddo
  142. else
  143. do ic=1,vpocha(/2)
  144. do i=1,vpocha(/1)
  145. xcrit=max(abs(vpocha(i,ic)),xcrit)
  146. enddo
  147. enddo
  148. endif
  149. enddo
  150. xcritlx=xcritlx*1d-4 +xpetit/xzprec
  151. xcrit=xcrit*1d-4 +xpetit/xzprec
  152. ** write(6,*) ' vechpo xcritlx xcrit ',xcritlx,xcrit
  153. xcrit=max(xcrit,xcritlx)
  154. *
  155. * test avec ipchp3
  156. mchpoi=ipchp3
  157. segact mchpoi
  158. iwr=0
  159. do icp=1,ipchp(/1)
  160. msoupo=ipchp(icp)
  161. segact msoupo
  162. mpoval=ipoval
  163. segact mpoval
  164. meleme = igeoc
  165. segact meleme
  166. do icomp=1,vpocha(/2)
  167. nom2=nocomp(icomp)
  168. do j=1,vpocha(/1)
  169. * pas de test sur le moment car probleme d'ordre de grandeur avec les forces
  170. if(nom2(1:1).ne.'M') then
  171. if(nom2.ne.'FLX '.and.abs(vpocha(j,icomp)).gt.xcrit) then
  172. interr(1)=num(1,j)
  173. moterr(1:4)=nom2
  174. do ils=1,ncompo
  175. if (nom2.eq.lacomp(ils)) goto 30
  176. enddo
  177. 30 continue
  178. if (ipt8.eq.0) then
  179. if (isouci.eq.0) then
  180. iwr=iwr+1
  181. if (iwr.lt.2) write(6,*) ' vpocha ',vpocha(j,icomp),nom2,xcrit
  182. call erreur(149)
  183. else
  184. call soucis(149)
  185. endif
  186. else
  187. if (ibin(num(1,j),ils).eq.1) then
  188. nbelem=ipt8.num(/2)+1
  189. segadj ipt8
  190. ipt8.num(1,nbelem)=num(1,j)
  191. endif
  192. endif
  193. endif
  194. endif
  195. enddo
  196. enddo
  197. enddo
  198. segsup test,lscomp
  199. return
  200. end
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  

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