Download initpa.eso

Back to the list

   1 : C INITPA    SOURCE    CHAT      05/01/13    00:38:17     5004           
   2 :       SUBROUTINE INITPA(EPSILO,IPART,IZPART,TMIN,NSAUV,MLREE6
   3 :      $     ,MELEME,IPT9,NDIM,NPOS,ITER,IPARPO,IVPT,IEL1,XDEP2,TDEP
   4 :      $     ,JFACE,JREBO,XIREB,XNREB,ICHGZ,Z,KSAUV,DTSTOC,DTCUMU,IZSH,
   5 :      $      IELTFA)
   6 : ****************************************************************************
   7 : *** SP 'INITPA' : met en place les conditions initiales liées à la particule
   8 : *** considérée lors de son avancée dans le domaine. 
   9 : ***
  10 : *** APPELES 1 = 'MELNEL', 'DOXE' 
  11 : *** APPELES 2 = 'REFREE', 'TRJSTO', 'TRJDTS', 'TESTFA'
  12 : *** 
  13 : *** E = 'EPSILO' marge relative acceptée position pt % face de l'element
  14 : ***     'IPART' n° de la particule concernée par l'avancée
  15 : ***     'IZPART' segment content coords référence des différentes particules
  16 : ***     'TMIN' instant de départ de la particule concernée
  17 : ***     'NSAUV' taille de la liste des tps de sauvegarde
  18 : ***     'MLREE6' liste des tps de sauvegarde
  19 : ***     'MELEME' pteur sur maillage du domaine etudié
  20 : ***     'IPT9' pteur sur maillage faces impermeables
  21 : ***     'IELTFA' pointeur du maillage contenant les numeros de
  22 : ***               faces par elements
  23 : ***
  24 : *** S = 'NDIM' dimension de l'espace
  25 : ***     'NPOS' nbre de traversées d'éléments fixé arbitrairement
  26 : ***     'ITER' n° de traversée considérée pour le stockage position particule
  27 : ***     'IPARPO' segment ou sont sauvegardés resultats trajectoire
  28 : ***     'IVPT' entier valant 1 en régime permanent
  29 : ***     'IEL1' n° global d'élément contenant la particule
  30 : ***     'XDEP2' coords reelles de départ particule
  31 : ***     'TDEP' tps ecoulé jusqu'au pt de départ
  32 : ***     'JFACE' n° local face de l'element considéré depart particule
  33 : ***     'JREBO' n° local face impermeable depart particule
  34 : ***     'XIREB' pt d'impact sur la face impermeable
  35 : ***     'XNREB' vecteur normal à la face impermeable
  36 : ***     'ICHGZ' vaut 1 si saut précédent effectif, 0 sinon
  37 : ***     'Z' vecteur aleatoire entre -1 et 1 pour le saut diffusif
  38 : ***     'KSAUV' indice considéré dans la liste des tps de sauvegarde
  39 : ***     'DTSTOC' pas de tps de sauvegarde considéré
  40 : ***     'DTCUMU' cumul des pas de tps entre deux sauvegardes
  41 : ***     'IZSH' segment content coords reelles noeuds element initial
  42 : ***
  43 : *** Rq : 'IZPART' et 'IPARPO' sont activés en sortie de module
  44 : ******************************************************************************
  45 : *** ORIGINE = PATRICK MEYNIEL modifie par CYRIL NOU
  46 : ******************************************************************************
  47 : C
  48 :       IMPLICIT INTEGER(I-N)
  49 :       IMPLICIT REAL*8 (A-H,O-Z)              
  50 : -INC CCOPTIO
  51 : -INC SMCOORD
  52 : -INC SMELEME
  53 : -INC SMLREEL
  54 :       POINTEUR MLREE6.MLREEL
  55 :       POINTEUR IELTFA.MELEME
  56 :       SEGMENT IZSH
  57 :           REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9)
  58 :       ENDSEGMENT
  59 :       SEGMENT IZPART 
  60 :          INTEGER NLEPA(NPART),NUMPA(NPART)
  61 :          REAL*8  COORPA(NDIM,NPART)
  62 :       ENDSEGMENT
  63 :       SEGMENT  IPARPO
  64 :          INTEGER NAPAR(NPOS),NUMP(NPOS)
  65 :          REAL*8 CREF(NDIM,NPOS),TPAR(NPOS)
  66 :       ENDSEGMENT
  67 :       DIMENSION XDEP(3),XDEP2(3),Z(3),XIREB(3),XNREB(3)
  68 :       DIMENSION PT1(3),PT2(3),PT3(3),PT4(3)
  69 : 
  70 : **************************************
  71 : *** INITIALISATION VARIABLES DU PB ***
  72 : **************************************
  73 : 
  74 : ***   dimension de l'espace
  75 :       NDIM=IDIM
  76 : ***   taille max et indice des tableaux du segment 'IPARPO'
  77 :       NPOS=50
  78 :       ITER=0
  79 : ***   'IVPT' vaut 1 en regime permanent
  80 :       IVPT=1
  81 : ***   affectation du n° global d'elemt de départ contenant particule 'IPART'
  82 :       IEL1=NLEPA(IPART)
  83 : ***   variable test valant 1 si saut précédent effectif, 0 sinon
  84 :       ICHGZ=1
  85 : ***   'Z' vecteur aleatoire entre -1 et 1 pour la diffusion
  86 :       DO 10 I=1,3
  87 :          Z(I)=0.D0
  88 :  10   CONTINUE
  89 : ***   initialisation à 0 indice liste des tps de sauvegarde
  90 :       KSAUV=0
  91 : ***   initialisation à 0 des variables liées au rebond
  92 :       JREBO=-1
  93 :       DO 20 I=1,3
  94 :          XIREB(I)=0.D0
  95 :          XNREB(I)=0.D0
  96 :  20   CONTINUE
  97 : 
  98 : ****************************************************
  99 : *** SAUVEGARDE DE LA POSITION INITIALE PARTICULE ***
 100 : ****************************************************
 101 : 
 102 : ***   initialisation ou activation des segments liés à particule
 103 : C     SEGACT IZPART
 104 :       SEGINI IPARPO
 105 : ***   affectation des coord référence de depart de la particule 'IPART'
 106 :       DO 30 I=1,NDIM                                                          
 107 :          XDEP(I)=COORPA(I,IPART)
 108 :  30   CONTINUE
 109 : ***   affectation du tps réel de départ de la particule 'IPART'
 110 :       TDEP=TMIN
 111 : ***   recuperation des propriétés de 'IEL1' pour sp 'DOXE' et sauvegarde
 111 :       CALL MELNEL(IEL1,MELEME,IPT1,NEL0,1)
 112 :       SEGACT IPT1
 113 :       NOEL1=IPT1.NUM(/1)
 114 :       IELL=IEL1-NEL0
 115 :       ITY1=IPT1.ITYPEL
 116 :       ITYG=NUMGEO(ITY1)
 117 : ***   recuperation des positions reelles des noeuds de 'IEL1'
 117 :       CALL DOXE(XCOOR,NDIM,NOEL1,IPT1.NUM,IELL,XYZL)
 118 : ***   initialisation sauvegarde initiale % position lacher particule
 118 :       CALL REFREE(NDIM,ITY1,NOEL1,IZSH,XDEP,XDEP2)
 118 :       CALL TRJSTO(NDIM,IEL1,NPOS,ITER,IPARPO,TDEP,XDEP2)
 118 :       CALL TRJDTS(NSAUV,MLREE6,TMIN,KSAUV,DTSTOC,DTCUMU)
 119 : 
 120 : ***********************************************
 121 : *** PARTICULE APPARTIENT À FACE DE 'IEL1' ? ***
 122 : ***********************************************
 123 : 
 124 : ***   sp renvoie n° local appartenance face de 'IEL1'
 124 :       CALL TESTFA(EPSILO,NDIM,ITYG,XDEP2,IZSH,JFACE,PT1,PT2,PT3,PT4)
 125 : ***   sp renvoie n° local appartenance face impermeable
 126 :       IF (JFACE.GT.0) THEN
 126 :          CALL LOCIMP(NDIM,JFACE,XDEP2
 127 :      $     ,PT1,PT2,PT3,PT4,IPT9,JREBO,XIREB,XNREB,IEL1,IELTFA)
 128 :       ENDIF
 129 :       
 130 :       RETURN
 131 :       END
 132 : 
 133 : 
 134 : 
 135 : 
 136 : 
 137 : 
 138 :  
 139 :  

© Cast3M 2003 - All rights reserved.
Disclaimer