Download kbor.eso

Back to the list

   1 : C KBOR      SOURCE    CHAT      05/01/13    00:52:05     5004           
   2 :       SUBROUTINE KBOR(MCHPO1,MCHPO2)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C----------------------------------------------------------------------
   6 : C Surcharge du second membre par certaines valeurs en vue de traiter
   7 : C les conditions aux limites de type Dirichlet en mecanique des fluides
   8 : C----------------------------------------------------------------------
   9 : C
  10 : C     SYNTAXE : CHP3 = KOPS CHP1 'CLIM' CHP2 ENTI1 ;
  11 : C
  12 : C 'CLIM'  : Mot désignant l'option ad'hoc pour passer ici
  13 : C  CHP1   : Champoint contenant le second membre
  14 : C  CHP2   : Champoint de conditions aux limites
  15 : C  ENTI1  : Entier indiquant le type de surcharge
  16 : C              0 -> 0  1 -> 1.E30  2 -> 1.E30*CHP2  3 -> CHP2
  17 : C             -1,-2,-3 -> on teste sur le nom des composantes et non sur
  18 : C                         ux,uy,uz (meme specif que |ENTI1|)
  19 : C  CHP3   : Contient CHP1 surchargé suivant CHP2 et ENTI1
  20 : C
  21 : C----------------------------------------------------------------------
  22 : C
  23 : C--------------
  24 : C Entree/Sortie
  25 : C--------------
  26 : C
  27 : C E/S MCHPO1 : Pointeur de CHP1 en Entrée et de CHPO3 en sortie
  28 : C E/  MCHPO2 : Pointeur de CHP2
  29 : C
  30 : C----------------------------------------------------------------------
  31 : C Le pointeur de CHP3 écrase subtilement celui de CHP1 (!?)
  32 : C----------------------------------------------------------------------
  33 : -INC CCREEL
  34 : -INC SMELEME
  35 :       POINTEUR MELEM1.MELEME,MELEM2.MELEME
  36 : -INC SMCHPOI
  37 : -INC SMLENTI
  38 :       CHARACTER*4 NMC1,NMC2,NMC3
  39 : C
  40 :       IF (MCHPO1.EQ.0.OR.MCHPO2.EQ.0) THEN
  41 : C 5 3    Erreur anormale.contactez votre support
  41 :          CALL ERREUR(5)
  42 :          RETURN
  43 :       ENDIF
  43 :       CALL LIRENT(IKAS,1,IRET)
  44 :       IF (IRET.EQ.0) RETURN
  45 :       IKA1=IKAS
  46 :       IKAS=ABS(IKAS)
  47 :       IF (IKAS.GE.4) THEN
  48 : C 26 2   Tache impossible. Probablement données erronées
  48 :          CALL ERREUR(26)
  49 :          RETURN
  50 :       ENDIF
  50 :       CALL ECROBJ('CHPOINT',MCHPO1)
  50 :       CALL COPIER
  50 :       CALL LIROBJ('CHPOINT',MCHPO1,1,IRET)
  51 :       IF(IRET.EQ.0)RETURN
  52 : 
  53 : C     write(6,*)' MCHPO1,MCHPO2=',MCHPO1,MCHPO2
  54 :       SEGACT MCHPO1,MCHPO2
  55 :       NSOUP1=MCHPO1.IPCHP(/1)
  56 : 
  57 :       NSOUP2=MCHPO2.IPCHP(/1)
  58 : C     write(6,*)' NSOUP1,NSOUP2=',NSOUP1,NSOUP2
  59 :       DO 21 L2=1,NSOUP2
  60 :       MSOUP2=MCHPO2.IPCHP(L2)
  61 :       SEGACT MSOUP2
  62 :       MELEM2=MSOUP2.IGEOC
  63 :       SEGACT MELEM2
  64 :       NPT2=MELEM2.NUM(/2)
  65 :       NC2=MSOUP2.NOHARM(/1)
  66 :       MPOVA2=MSOUP2.IPOVAL
  67 :       SEGACT MPOVA2
  68 : C     write(6,*)' NC2,NPT2=',nc2,npt2
  69 :       DO 21 N2=1,NC2
  70 :       NMC2=MSOUP2.NOCOMP(N2)
  71 : 
  72 :       DO 11 L1=1,NSOUP1
  73 : C     write(6,*)' L1=',L1
  74 :       MSOUP1=MCHPO1.IPCHP(L1)
  75 :       SEGACT MSOUP1
  76 :       MELEM1=MSOUP1.IGEOC
  77 :       SEGACT MELEM1
  78 :       NPT1=MELEM1.NUM(/2)
  79 :       NC1=MSOUP1.NOHARM(/1)
  80 :       MPOVA1=MSOUP1.IPOVAL
  81 :       SEGACT MPOVA1*MOD
  82 : C     write(6,*)' NC1,NPT1=',nc1,npt1
  83 :       DO 11 N1=1,NC1
  84 :       NMC1=MSOUP1.NOCOMP(N1)
  85 : Correction ttmf3, le 18/08/99 : NMC3 non initialisée
  86 :       NMC3=NMC2
  87 : C     write(6,*)' NC1,NC2,NSOUP1,NSOUP2=',
  88 : C    &NC1,NC2,NSOUP1,NSOUP2
  89 :       IF(NMC2(1:1).EQ.'1')NMC3='UX  '
  90 :       IF(NMC2(1:1).EQ.'2')NMC3='UY  '
  91 :       IF(NMC2(1:1).EQ.'3')NMC3='UZ  '
  92 :       IF(IKA1.LE.0)NMC3=NMC2
  93 :       IF(NMC1.NE.NMC3)GO TO 11
  93 :       CALL KRIPAD(MELEM1,MLENTI)
  94 :       DO 2 I2=1,NPT2
  95 :       I1=LECT(MELEM2.NUM(1,I2))
  96 :       IF(I1.EQ.0)GO TO 2
  97 :       IF(IKAS.EQ.0)THEN
  98 : C     MPOVA1.VPOCHA(I1,N1)=XPETIT
  99 :       MPOVA1.VPOCHA(I1,N1)=1.D-30
 100 :       ELSEIF(IKAS.EQ.1)THEN
 101 : C     MPOVA1.VPOCHA(I1,N1)=XGRAND
 102 :       MPOVA1.VPOCHA(I1,N1)=1.D30
 103 :       ELSEIF(IKAS.EQ.2)THEN
 104 : C     MPOVA1.VPOCHA(I1,N1)=MPOVA2.VPOCHA(I2,N2)*XGRAND
 105 :       MPOVA1.VPOCHA(I1,N1)=MPOVA2.VPOCHA(I2,N2)*1.D30
 106 :       ELSEIF(IKAS.EQ.3)THEN
 107 :       MPOVA1.VPOCHA(I1,N1)=MPOVA2.VPOCHA(I2,N2)
 108 :       ELSE
 109 : *      WRITE(6,*)' KOPS : CLIM IKAS=',IKAS,' NON PREVU '
 110 :       RETURN
 111 :       ENDIF
 112 : 
 113 :  2    CONTINUE
 114 : 
 115 :  11   CONTINUE
 116 :  21   CONTINUE
 117 : 
 117 :       CALL ECROBJ('CHPOINT ',MCHPO1)
 118 : 
 119 :       RETURN
 120 :  1001 FORMAT(20(1X,I5))
 121 :  1008 FORMAT(10(1X,A8))
 122 :  1002 FORMAT(10(1X,1PE11.4))
 123 :       END
 124 : 
 125 : 
 126 : 
 127 : 
 128 : 
 129 :  
 130 :  
 131 :  
 132 :  
 133 :  

© Cast3M 2003 - All rights reserved.
Disclaimer