Download comou2.eso

Back to the list

   1 : C COMOU2    SOURCE    FANDEUR   12/07/18    21:15:28     7435           
   2 :       SUBROUTINE COMOU2(iqmod,INDESO,ipil,iwrk52,wrk53,iwr522)
   3 : *     
   4 : *  creation des segments de noms de composantes des MCHAML
   5 : *   CREES PAR LE MODELE ELEMENTAIRE
   6 : *   attention : une modele de mecanique ne peut creer de composantes thermiques
   7 : *  ou phases metallurgiques ! 
   8 : *  creation des segments de rangement des deche associes aux precedents
   9 : *
  10 :       IMPLICIT INTEGER(I-N)
  11 :       IMPLICIT REAL*8(A-H,O-Z)
  12 : *
  13 : -INC CCOPTIO
  14 : *
  15 : -INC SMMODEL
  16 :       pointeur nomid1.nomid
  17 : -INC DECHE
  18 : *
  19 :       imodel = iqmod
  20 : *
  21 :       MELE1  = MELE
  22 :       NPINT3 = NPINT
  23 :       MFR2   = MFR
  24 : 
  25 :       iiluc = 25
  26 : C*?      iiluc = NMOT (=25)
  27 :       SEGINI,liluc
  28 : 
  29 :       DO ijluc = 1, iiluc
  30 : *
  31 : *       AIGUILLAGE SUIVANT MOT CLE
  32 : *
  33 :         GOTO ( 1, 2, 99, 99, 99, 6, 7,99,99,10,11,12,13,14,15,16,17,18,
  34 :      1        99,20,21,99,23,24,25) ijluc
  35 : *
  36 :   99    CONTINUE
  37 : c        pas de composantes pour ce champ
  38 :         NBROBL=0
  39 :         NBRFAC=0
  40 :         SEGINI NOMID
  41 :         MOCOMP=NOMID
  42 :         GOTO 120
  43 : *
  44 :    1    NBROBL=1
  45 :         NBRFAC=0
  46 :         SEGINI NOMID 
  47 :         MOCOMP=NOMID
  48 :         LESOBL(1)='SCAL'
  49 :         nsca = 1
  50 :         GOTO 120
  51 : *
  52 :    2    NBROBL=1
  53 :         NBRFAC=0
  54 :         SEGINI NOMID
  55 :         MOCOMP=NOMID
  56 :         LESOBL(1)='TEMP'
  57 :         ntem = 1
  58 :         GOTO 120
  59 : *
  60 :    6    if(lnomid(1).ne.0) then
  61 :           nomid1=lnomid(1)
  62 :           segini,nomid=nomid1
  63 :           nbrobl=lesobl(/2)
  64 :           nbrfac=lesfac(/2)
  65 :           mocomp=nomid
  66 :         else 
  66 :           CALL IDDEPL(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  67 :           nomid = mocomp
  68 :           segact nomid
  69 :         endif
  70 :         ndep = nbrobl + nbrfac
  71 :         GOTO 120
  72 : *
  73 :    7    if(lnomid(2).ne.0) then
  74 :           nomid1=lnomid(2)
  75 :           segini,nomid=nomid1
  76 :           nbrobl=lesobl(/2)
  77 :           nbrfac=lesfac(/2)
  78 :           mocomp=nomid
  79 :         else 
  79 :           CALL IDFORC(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  80 :           nomid = mocomp
  81 :           segact nomid
  82 :         endif
  83 :         nfor = nbrobl + nbrfac
  84 :         GOTO 120
  85 : *
  86 :   10    if(lnomid(3).ne.0) then
  87 :           nomid1=lnomid(3)
  88 :           segini,nomid=nomid1
  89 :           nbrobl=lesobl(/2)
  90 :           nbrfac=lesfac(/2)
  91 :           mocomp=nomid
  92 :         else
  92 :           CALL IDGRAD(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
  93 :           nomid = mocomp
  94 :           segact nomid
  95 :         endif
  96 :         ngra = nbrobl + nbrfac
  97 :         GOTO 120
  98 : *
  99 :   11    if(lnomid(4).ne.0) then
 100 :           nomid1=lnomid(4)
 101 :           segini,nomid=nomid1
 102 :           nbrobl=lesobl(/2)
 103 :           nbrfac=lesfac(/2)
 104 :           mocomp=nomid
 105 :         else
 105 :           CALL IDCONT(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
 106 :           nomid = mocomp
 107 :           segact nomid
 108 :         endif
 109 :         nstrs = nbrobl + nbrfac
 110 :         GOTO 120
 111 : *
 112 :   12    if(lnomid(5).ne.0) then
 113 :           nomid1=lnomid(5)
 114 :           segini,nomid=nomid1
 115 :           nbrobl=lesobl(/2)
 116 :           nbrfac=lesfac(/2)
 117 :           mocomp=nomid
 118 :         else
 118 :           CALL IDDEFO(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
 119 :           nomid = mocomp
 120 :           segact nomid
 121 :         endif
 122 :         ndefo = nbrobl + nbrfac
 123 :         GOTO 120
 124 : *
 125 :   13    if(lnomid(6).ne.0) then
 126 :           nomid1=lnomid(6)
 127 :           segact,nomid1
 128 :           nbrobl=nomid1.lesobl(/2)
 129 :           nbrfac=nomid1.lesfac(/2)
 130 :           if (nbrobl+nbrfac.eq.0) then
 130 :             CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
 131 :             nomid=mocomp
 132 :             segact nomid
 133 :           else
 134 :             segini,nomid=nomid1
 135 :             mocomp=nomid
 136 :           endif
 137 :           segdes,nomid1
 138 :         else
 138 :           CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
 139 :           nomid = mocomp
 140 :           segact nomid
 141 :         endif
 142 :         ncara = nbrobl + nbrfac
 143 :         NMATR = nbrobl  
 144 :         if(inplas.eq.3) ncara=ncara+7
 145 :         GOTO 120
 146 : *
 147 :   14    inat = inplas 
 148 :         if(lnomid(7).ne.0) then
 149 :           nomid1=lnomid(7)
 150 :           segini,nomid=nomid1
 151 :           nbrobl=lesobl(/2)
 152 :           nbrfac=lesfac(/2)
 153 :           mocomp=nomid
 154 :         else
 154 :           CALL IDCARB(MELE1,IFOUR,MOCOMP,NBROBL,NBRFAC)
 155 :           nomid = mocomp
 156 :           segact nomid
 157 :         endif
 158 :         ncarb = nbrobl + nbrfac 
 159 :         NCARR = ncarb
 160 :         IF(MFR.EQ.15) ncarb=ncarb*2
 161 :         IF(MFR.EQ.7.OR.MFR.EQ.13)ncarb=ncarb+IDIM
 162 :         NUCAR = ncarb
 163 :         NCARF = nbrfac
 164 :         GOTO 120
 165 : *
 166 :   15    if(lnomid(8).ne.0) then
 167 :           nomid1=lnomid(8)
 168 :           segini,nomid=nomid1
 169 :           nbrobl=lesobl(/2)
 170 :           nbrfac=lesfac(/2)
 171 :           mocomp=nomid
 172 :         else 
 172 :           CALL IDTEMP(MFR2,IFOUR,NPINT3,MOCOMP,NBROBL,NBRFAC)
 173 :           nomid = mocomp
 174 :           segact nomid
 175 :         endif
 176 :         ntur = nbrobl + nbrfac
 177 :         GOTO 120
 178 : *
 179 :   16    if(lnomid(9).ne.0) then
 180 :           nomid1=lnomid(9)
 181 :           segini,nomid=nomid1
 182 :           nbrobl=lesobl(/2)
 183 :           nbrfac=lesfac(/2)
 184 :           mocomp=nomid
 185 :         else
 185 :           CALL IDPRIN(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
 186 :           nomid = mocomp
 187 :           segact nomid
 188 :         endif
 189 :         npri = nbrobl + nbrfac
 190 :         GOTO 120
 191 : *
 192 :   17    NBROBL=1
 193 :         NBRFAC=0
 194 :         SEGINI NOMID
 195 :         LESOBL(1)='MAHO'
 196 :         MOCOMP=NOMID
 197 :         nmah = 1
 198 :         GOTO 120
 199 : *
 200 :   18    NBROBL=1
 201 :         NBRFAC=0
 202 :         SEGINI NOMID
 203 :         LESOBL(1)='MAHT'
 204 :         MOCOMP=NOMID
 205 :         nhot = 1
 206 :         GOTO 120
 207 : *
 208 :   20    if(lnomid(10).ne.0) then
 209 :           nomid1=lnomid(10)
 210 :           segini,nomid=nomid1
 211 :           nbrobl=lesobl(/2)
 212 :           nbrfac=lesfac(/2)
 213 :           mocomp=nomid
 214 :         else 
 214 :           CALL IDVARI(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
 215 :           nomid = mocomp
 216 :           segact nomid
 217 :         endif
 218 :         nvari = nbrobl + nbrfac
 219 : 
 220 : C        Dans le cas ou il n'existe pas de variables internes, on
 221 : C        declare artificiellement une variable bidon afin de creer
 222 : C        des objets de travail permettant de respecter les interfaces
 223 : C        des routines auxquelles les variables internes peuvent etre
 224 : C        transmises
 225 : C        L'absence de variables internes est possible en particulier
 226 : C        pour une loi 'NON_LINEAIRE' 'UTILISATEUR', il faut alors
 227 : C        respecter l'interface de la routine UMAT
 228 : C
 229 :         IF (NVARI.EQ.0) THEN
 230 :           NBROBL=1
 231 :           NBRFAC=0
 232 :           SEGADJ,NOMID
 233 :           LESOBL(1)='VARI'
 234 :           MOCOMP=NOMID
 235 :           nvari = 1
 236 :         ENDIF
 237 :         GOTO 120
 238 : *
 239 :   21    if(lnomid(11).ne.0) then
 240 :           nomid1=lnomid(11)
 241 :           segini,nomid=nomid1
 242 :           nbrobl=lesobl(/2)
 243 :           nbrfac=lesfac(/2)
 244 :           mocomp=nomid
 245 :         else
 245 :           CALL IDGRAF(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC)
 246 :           nomid = mocomp
 247 :           segact nomid
 248 :         endif
 249 :         ngrf = nbrobl + nbrfac
 250 :         GOTO 120
 251 : *
 252 :   23    if(lnomid(12).ne.0) then
 253 :           nomid1=lnomid(12)
 254 :           segini,nomid=nomid1
 255 :           nbrobl=lesobl(/2)
 256 :           nbrfac=lesfac(/2)
 257 :           mocomp=nomid
 258 :         else
 258 :           CALL IDPHAS(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC)
 259 :           nomid = mocomp
 260 :           segact nomid
 261 :         endif
 262 :         nrhi = nbrobl + nbrfac
 263 :         GOTO 120
 264 : *
 265 :   24    if(lnomid(13).ne.0) then
 266 :           nomid1=lnomid(13)
 267 :           segini,nomid=nomid1
 268 :           nbrobl=lesobl(/2)
 269 :           nbrfac=lesfac(/2)
 270 :           mocomp=nomid
 271 :         else 
 271 :           CALL IDDEIN(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC)
 272 :           nomid = mocomp
 273 :           segact nomid
 274 :         endif
 275 :         ndein = nbrobl + nbrfac
 276 :         GOTO 120
 277 : *
 277 :   25    CALL IDPAEX(iqmod,MOCOMP,NBROBL,NBRFAC)
 278 :         nomid=mocomp
 279 :         segact,nomid
 280 :         nparex = nbrobl + nbrfac
 281 : C
 282 : C        Dans le cas ou il n'existe de pas de parametres externes du
 283 : C        modele, on declare artificiellement un parametre bidon afin
 284 : C        de creer des objets de travail permettant de respecter les
 285 : C        interfaces des routines auxquelles de tels parametres peuvent
 286 : C        etre transmis (en particulier la routine UMAT)
 287 : C
 288 :         IF (NPAREX.EQ.0) THEN
 289 :           NBROBL=1
 290 :           NBRFAC=0
 291 :           SEGADJ,NOMID
 292 :           LESOBL(1)='PAEX'
 293 :           nparex = 1
 294 :         ENDIF
 295 :         GOTO 120
 296 : *
 297 :  120    CONTINUE
 298 :         mran = INDESO 
 299 :         mobl = nbrobl 
 300 :         mfac = nbrfac
 301 :         segini pilnec
 302 :         segini domdec
 303 :         jilnec = pilnec 
 304 :         jnomid = mocomp
 305 : *
 306 :         liluc(ijluc) = domdec
 307 : 
 308 : ***        write(6,*) 'comou2 ' , ijluc, nbrobl, nbrfac, pilnec,mocomp,domdec
 309 : ***        segdes domdec*mod
 310 : ***        segdes pilnec*mod
 311 :       enddo
 312 : 
 313 :       ipil = liluc
 314 : c*
 315 :       nexo = 0
 316 :       segini WRK52,wrk522
 317 :       iwrk52 = wrk52
 318 :       iwr522 = wrk522
 319 : c
 320 :       RETURN
 321 :       END
 322 : 
 323 :  

© Cast3M 2003 - All rights reserved.
Disclaimer