Download kdme.eso

Back to the list

   1 : C KDME      SOURCE    CHAT      05/01/13    00:53:20     5004           
   2 :       SUBROUTINE KDME
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C*************************************************************************
   6 : C
   7 : C     OBJET   : Cree un CHAMPOINT CENTRE contenant le diametre max des
   8 : C               éléments du domaine
   9 : C
  10 : C     SYNTAXE : CHPC = KDME OBJDOM ;
  11 : C
  12 : C                      OBJDOM : TABLE de SOUSTYPE DOMAINE
  13 : C
  14 : C*************************************************************************
  15 : -INC CCREEL
  16 : -INC CCOPTIO
  17 : -INC SMELEME
  18 : -INC SMCOORD
  19 : -INC SMCHPOI
  20 : 
  21 : *      PARAMETER (XPETI2=XPETIT**2)
  22 :       PARAMETER (NTB=1)
  23 :       CHARACTER*8 LTAB(NTB),TYPE,TYPC
  24 :       DIMENSION KTAB(NTB)
  25 :       DATA LTAB/'DOMAINE '/
  26 : C***
  27 :       XPETI2 = XPETIT
  28 :       NTO=NTB
  28 :       CALL LITABS(LTAB,KTAB,NTB,NTO,IRET)
  29 :       IF(IRET.EQ.0)RETURN
  30 :       MTABD=KTAB(1)
  31 : 
  32 :       TYPE=' '
  32 :       CALL ACMO(MTABD,'CENTRE',TYPE,MELEMC)
  33 :       IF(TYPE.NE.'MAILLAGE')GO TO 90
  34 :       NC=1
  35 :       TYPE='CENTRE'
  35 :       CALL CRCHPT(TYPE,MELEMC,NC,MCHPOI)
  36 : C     In LICHT -> SEGACT MPOVAL*MOD
  36 :       CALL LICHT(MCHPOI,MPOVAL,TYPC,IGEOM)
  37 : 
  38 :       TYPE=' '
  38 :       CALL ACMO(MTABD,'MAILLAGE',TYPE,MELEME)
  39 :       IF(TYPE.NE.'MAILLAGE')GO TO 90
  40 :       SEGACT MELEME
  41 : 
  42 :       NBSOUS=LISOUS(/1)
  43 :       IF(NBSOUS.EQ.0)NBSOUS=1
  44 : 
  45 :       NELT=0
  46 :       DO 1 L=1,NBSOUS
  47 :          IF(NBSOUS.EQ.1)THEN
  48 :             IPT1=MELEME
  49 :          ELSE
  50 :             IPT1=LISOUS(L)
  51 :             SEGACT IPT1
  52 :          ENDIF
  53 :          NP=IPT1.NUM(/1)
  54 :          NEL=IPT1.NUM(/2)
  55 : 
  56 :          DO 10 K=1,NEL
  57 :             NELT=NELT+1
  58 : 
  59 : C             CALCUL DU DIAMETRE MAX
  60 : 
  61 :             XMA2=0.D0
  62 :             DO 321 I=1,NP-1
  63 :                IPI=IPT1.NUM(I,K)
  64 :                DO 322 J=I+1,NP
  65 :                   IPJ=IPT1.NUM(J,K)
  66 :                   XM2=0.D0
  67 :                   DO 323 N=1,IDIM
  68 :                      XM2=XM2+(XCOOR((IPI-1)*(IDIM+1)+N)
  69 :      $                       -XCOOR((IPJ-1)*(IDIM+1)+N))**2
  70 :  323              CONTINUE
  71 :                   XMA2=MAX(XMA2,XM2)
  72 :  322           CONTINUE
  73 :  321        CONTINUE
  74 : C
  75 : *            IF(XMA2.LT.XPETI2) WRITE(6,*)
  76 : *     $           'kdme.eso : un element est peut-etre degenere'
  77 : 
  78 :             VPOCHA(NELT,1)=SQRT(XMA2)
  79 :  10      CONTINUE
  80 :          SEGDES IPT1
  81 :  1    CONTINUE
  82 :       IF(NBSOUS.NE.1) SEGDES MELEME
  83 :       SEGDES MPOVAL
  84 : C
  84 :       CALL ECROBJ('CHPOINT ',MCHPOI)
  85 : 
  86 :       RETURN
  87 : 
  88 :  90   CONTINUE
  89 : *      WRITE(6,*)' Interruption anormale dans kdme.eso'
  90 :       RETURN
  91 :  1001 FORMAT(20(1X,I5))
  92 :       END
  93 : 
  94 : 
  95 :  
  96 :  

© Cast3M 2003 - All rights reserved.
Disclaimer