Download kctrp1.eso

Back to the list

   1 : C KCTRP1    SOURCE    CHAT      07/10/29    21:21:33     5940           
   2 :       SUBROUTINE KCTRP1(MTABLE,IPOINT,IKAS)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : -INC CCOPTIO
   6 : -INC CCGEOME
   7 : -INC SMTABLE
   8 : -INC SMCOORD
   9 : -INC SMELEME
  10 :       POINTEUR MELEMI.MELEME
  11 :       DIMENSION XA(3,64),XL(3,4),XG(3,4)
  12 :       CHARACTER*8 TYPE,NOME
  13 : 
  14 :       IPOINT=0
  15 :       TYPE=' '
  15 :       CALL ACMO(MTABLE,'MACRO',TYPE,MACRO)
  16 :       TYPE=' '
  16 :       CALL ACMO(MTABLE,'QUADRATI',TYPE,MQ)
  17 :       IF(MACRO.EQ.0.AND.MQ.EQ.0)THEN
  18 : 
  19 :       TYPE=' '
  19 :       CALL ACMO(MTABLE,'CENTRE',TYPE,MELEMC)
  20 :       IF(MELEMC.EQ.0)THEN
  21 :       MOTERR(1: 8) = 'DOMAINE.'
  22 :       MOTERR(9:16) = 'CENTRE  '
  22 :       CALL ERREUR(792)
  23 :       IPOINT=0
  24 :       RETURN
  25 :       ENDIF
  26 : 
  27 :       ELSE
  28 :       IF(MACRO.NE.0)MELEMI=MACRO
  29 :       IF(MQ   .NE.0)MELEMI=MQ
  30 : 
  30 :       CALL ECROBJ('MAILLAGE',MELEMI)
  30 :       CALL NBEL
  30 :       CALL LIRENT(NBELEM,1,IRET)
  31 :       IF(IRET.EQ.0)RETURN
  32 :       NBSOUS=0
  33 :       NBREF=0
  34 :       NBNN=IDIM+1
  35 :       SEGINI MELEME
  36 :       IF(IDIM.EQ.2)ITYPEL=4
  37 :       IF(IDIM.EQ.3)ITYPEL=23
  38 :       NBV0=XCOOR(/1)/(IDIM+1)
  39 :       NBPTS=NBV0+(NBELEM*(IDIM+1))
  40 :       SEGADJ MCOORD
  41 :       K0=NBV0
  42 :       KE=0
  43 : 
  44 : 
  45 :       SEGACT MELEMI
  46 :       NBSOUL=MELEMI.LISOUS(/1)
  47 :       IF(NBSOUL.EQ.0)NBSOUL=1
  48 : 
  49 :       DO 1 L=1,NBSOUL
  50 :       IPT1=MELEMI
  51 :       IF(NBSOUL.NE.1)IPT1=MELEMI.LISOUS(L)
  52 :       SEGACT IPT1
  53 :       NP=IPT1.NUM(/1)
  54 :       NEL=IPT1.NUM(/2)
  55 : 
  56 :       NOME=NOMS(IPT1.ITYPEL)//'    '
  56 :       CALL KXL(NOME,'P1',XL)
  57 : 
  58 :       DO 2 K=1,NEL
  59 :       KE=KE+1
  60 :       DO 3 M=1,IDIM
  61 :       DO 3 I=1,NP
  62 :       NI=IPT1.NUM(I,K)
  63 :       XA(M,I)=XCOOR((NI-1)*(IDIM+1)    +M)
  64 :  3    CONTINUE
  65 : 
  65 :       CALL FFQ(NOME,XA,XL,XG,IDIM,NBNN)
  66 : 
  67 :       DO 5 MI=1,NBNN
  68 :       K0=K0+1
  69 :       DO 4 M=1,IDIM
  70 :       XCOOR((K0-1)*(IDIM+1)    +M)=XG(M,MI)
  71 :  4    CONTINUE
  72 :       NUM(MI,KE)=K0
  73 :  5    CONTINUE
  74 :  2    CONTINUE
  75 :  1    CONTINUE
  76 : 
  76 :       CALL ECMO(MTABLE,'ELTP1NC ','MAILLAGE',MELEME)
  76 :       CALL ECRCHA('POI1')
  76 :       CALL ECROBJ('MAILLAGE',MELEME)
  76 :       CALL PRCHAN
  76 :       CALL LIROBJ('MAILLAGE',MELEM1,1,IRET)
  76 :       CALL ECMO(MTABLE,'CENTREP1','MAILLAGE',MELEM1)
  77 :       ENDIF
  78 : 
  79 :       IF(IKAS.EQ.1)IPOINT=MELEM1
  80 :       IF(IKAS.EQ.2)IPOINT=MELEME
  81 : 
  82 :       RETURN
  83 :  1002 FORMAT(10(1X,1PE11.4))
  84 :       END
  85 :  
  86 :  
  87 :  
  88 :  
  89 :  
  90 :  

© Cast3M 2003 - All rights reserved.
Disclaimer