Télécharger kpro.eso

Retour à la liste

Numérotation des lignes :

kpro
  1. C KPRO SOURCE MB234859 26/11/04 21:15:06 12691
  2. SUBROUTINE KPRO
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C*************************************************************************
  6. C
  7. C Operateur KPRO
  8. C
  9. C OBJET : to project CHAMPOINT
  10. C SYNTAXE : CHR = KPRO CHP GEO ;
  11. C
  12. C CHP : CHPOINT
  13. C CHR : CHPOINT
  14. C GEO : MAILLAGE (SEG2 or SEG3)
  15. C
  16. C CHR is the projection of CHP following the connectivities GEO.
  17. C The value of CHP at point 1 of each element of GEO (if exists)
  18. C is projected to the point 2 of the same element of GEO thus to
  19. C constitute CHR.
  20. C
  21. C*************************************************************************
  22. CHARACTER*8 TYPE
  23.  
  24. -INC PPARAM
  25. -INC CCOPTIO
  26. -INC SMCOORD
  27. -INC SMCHPOI
  28. POINTEUR MCHP.MCHPOI,MSPO.MSOUPO,MVAL.MPOVAL
  29. POINTEUR NCHP.MCHPOI,NSPO.MSOUPO,NVAL.MPOVAL
  30. -INC SMELEME
  31. POINTEUR MGEO.MELEME,MSPG.MELEME,NSPG.MELEME
  32.  
  33. SEGMENT LOCSGM
  34. INTEGER ICHP(NPART)
  35. ENDSEGMENT
  36. SEGMENT ICPR(NBPTS)
  37.  
  38. LOGICAL bSEGM,bRACC,bLIAI
  39.  
  40. C Reading the CHPOINT
  41. CALL LIROBJ('CHPOINT',MCHP,1,IRET)
  42. IF (IERR.NE.0) RETURN
  43.  
  44. C Reading the MAILLAGE
  45. CALL LIROBJ('MAILLAGE',MGEO,1,IRET)
  46. IF (IERR.NE.0) RETURN
  47.  
  48. C Veryfing the MAILLAGE
  49. SEGACT,MGEO
  50. ITIPO=MGEO.ITYPEL
  51. bSEGM=(ITIPO.EQ.2 .OR. ITIPO.EQ.3 )
  52. bRACC=(ITIPO.EQ.12.OR. ITIPO.EQ.13)
  53. bLIAI=(ITIPO.GE.18.AND.ITIPO.LE.21)
  54. IF (.NOT.(bSEGM.OR.bRACC.OR.bLIAI)) THEN
  55. CALL ERREUR(16)
  56. RETURN
  57. ENDIF
  58. C
  59. C Correspondance entre noeuds
  60. SEGINI,ICPR
  61. NELGEO=MGEO.NUM(/2)
  62. IF (bSEGM) THEN
  63. INOE=2
  64. IF (ITIPO.EQ.3) INOE=3
  65. DO IELT=1,NELGEO
  66. IPOIN1=MGEO.NUM(1,IELT)
  67. ICPR(IPOIN1)=1
  68. ENDDO
  69. ELSE
  70. NNOGEO=MGEO.NUM(/1)
  71. NNOGE2=NNOGEO/2
  72. DO IELT=1,NELGEO
  73. DO INOE=1,NNOGE2
  74. INOF=NNOGE2+INOE
  75. IF (bRACC) INOF=NNOGEO-INOE+1
  76. IPOIN1=MGEO.NUM(INOE,IELT)
  77. IPOIN2=MGEO.NUM(INOF,IELT)
  78. ICPR(IPOIN1)=IPOIN2
  79. ICPR(IPOIN2)=IPOIN1
  80. ENDDO
  81. ENDDO
  82. ENDIF
  83. C
  84. NBNN =1
  85. NBSOUS=0
  86. NBREF =0
  87.  
  88. SEGACT MCHP
  89.  
  90. NPART=MCHP.IPCHP(/1)
  91. NAT =MCHP.JATTRI(/1)
  92. SEGINI LOCSGM
  93.  
  94. IPART=0
  95. DO I=1,NPART
  96.  
  97. MSPO=MCHP.IPCHP(I)
  98. SEGACT,MSPO
  99.  
  100. MSPG=MSPO.IGEOC
  101. MVAL=MSPO.IPOVAL
  102. SEGACT,MSPG,MVAL
  103.  
  104. NC =MVAL.VPOCHA(/2)
  105. NELSPG=MSPG.NUM(/2)
  106. N =MAX(NELGEO,NELSPG)
  107. NBELEM=MAX(NELGEO,NELSPG)
  108. SEGINI,NSPG,NVAL
  109. NSPG.ITYPEL=1
  110.  
  111. NPUNTO=0
  112. DO K=1,NELSPG
  113. IELSPG=MSPG.NUM(1,K)
  114. IPOIN3=ICPR(IELSPG)
  115. IF (IPOIN3.NE.0) THEN
  116. IF (bSEGM) THEN
  117. DO J=1,NELGEO
  118. IELGEO=MGEO.NUM(1,J)
  119. IF (IELGEO.EQ.IELSPG) THEN
  120. NPUNTO=NPUNTO+1
  121. NSPG.NUM(1,NPUNTO)=MGEO.NUM(INOE,J)
  122. DO L=1,NC
  123. NVAL.VPOCHA(NPUNTO,L)=MVAL.VPOCHA(K,L)
  124. ENDDO
  125. ENDIF
  126. ENDDO
  127. ELSE
  128. NPUNTO=NPUNTO+1
  129. NSPG.NUM(1,NPUNTO)=IPOIN3
  130. DO L=1,NC
  131. NVAL.VPOCHA(NPUNTO,L)=MVAL.VPOCHA(K,L)
  132. ENDDO
  133. ENDIF
  134. ENDIF
  135. ENDDO
  136.  
  137. IF (NPUNTO.EQ.0) THEN
  138. SEGSUP,NSPG,NVAL
  139. GOTO 200
  140. ELSEIF (NPUNTO.NE.NBELEM) THEN
  141. NBELEM=NPUNTO
  142. N =NPUNTO
  143. SEGADJ,NSPG,NVAL
  144. ENDIF
  145.  
  146. SEGINI,NSPO
  147. NSPO.IGEOC =NSPG
  148. NSPO.IPOVAL=NVAL
  149. DO L=1,NC
  150. NSPO.NOCOMP(L)=MSPO.NOCOMP(L)
  151. NSPO.NOHARM(L)=MSPO.NOHARM(L)
  152. ENDDO
  153.  
  154. NSOUPO=1
  155. SEGINI NCHP
  156. NCHP.MTYPOI =MCHP.MTYPOI
  157. NCHP.MOCHDE =MCHP.MOCHDE
  158. NCHP.IFOPOI =MCHP.IFOPOI
  159. NCHP.IPCHP(1)=NSPO
  160. DO L=1,NAT
  161. NCHP.JATTRI(L)=MCHP.JATTRI(L)
  162. ENDDO
  163.  
  164. IPART=IPART+1
  165. ICHP(IPART)=NCHP
  166.  
  167. SEGDES,NSPO,NSPG,NVAL,NCHP
  168. 200 CONTINUE
  169. SEGDES,MSPO,MSPG,MVAL
  170.  
  171. ENDDO
  172.  
  173. SEGDES,MCHP
  174.  
  175. IF (IPART.EQ.0) THEN
  176. CALL ERREUR(26)
  177. GOTO 1
  178. ENDIF
  179.  
  180. NCHP=ICHP(1)
  181. CALL ECROBJ('CHPOINT ',NCHP)
  182.  
  183. IF(IPART.GT.1) THEN
  184. DO I=2,IPART
  185. NCHP=ICHP(I)
  186. CALL ECROBJ('CHPOINT ',NCHP)
  187. CALL PRFUSE
  188. ENDDO
  189. ENDIF
  190. C
  191. 1 CONTINUE
  192. SEGSUP,LOCSGM,ICPR
  193. END
  194.  
  195.  

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