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