C COMOU2 SOURCE FANDEUR 12/07/18 21:15:28 7435 SUBROUTINE COMOU2(iqmod,INDESO,ipil,iwrk52,wrk53,iwr522) * * creation des segments de noms de composantes des MCHAML * CREES PAR LE MODELE ELEMENTAIRE * attention : une modele de mecanique ne peut creer de composantes thermiques * ou phases metallurgiques ! * creation des segments de rangement des deche associes aux precedents * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC CCOPTIO * -INC SMMODEL pointeur nomid1.nomid -INC DECHE * imodel = iqmod * MELE1 = MELE NPINT3 = NPINT MFR2 = MFR iiluc = 25 C*? iiluc = NMOT (=25) SEGINI,liluc DO ijluc = 1, iiluc * * AIGUILLAGE SUIVANT MOT CLE * GOTO ( 1, 2, 99, 99, 99, 6, 7,99,99,10,11,12,13,14,15,16,17,18, 1 99,20,21,99,23,24,25) ijluc * 99 CONTINUE c pas de composantes pour ce champ NBROBL=0 NBRFAC=0 SEGINI NOMID MOCOMP=NOMID GOTO 120 * 1 NBROBL=1 NBRFAC=0 SEGINI NOMID MOCOMP=NOMID LESOBL(1)='SCAL' nsca = 1 GOTO 120 * 2 NBROBL=1 NBRFAC=0 SEGINI NOMID MOCOMP=NOMID LESOBL(1)='TEMP' ntem = 1 GOTO 120 * 6 if(lnomid(1).ne.0) then nomid1=lnomid(1) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDDEPL(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ndep = nbrobl + nbrfac GOTO 120 * 7 if(lnomid(2).ne.0) then nomid1=lnomid(2) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDFORC(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif nfor = nbrobl + nbrfac GOTO 120 * 10 if(lnomid(3).ne.0) then nomid1=lnomid(3) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDGRAD(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ngra = nbrobl + nbrfac GOTO 120 * 11 if(lnomid(4).ne.0) then nomid1=lnomid(4) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDCONT(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif nstrs = nbrobl + nbrfac GOTO 120 * 12 if(lnomid(5).ne.0) then nomid1=lnomid(5) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDDEFO(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ndefo = nbrobl + nbrfac GOTO 120 * 13 if(lnomid(6).ne.0) then nomid1=lnomid(6) segact,nomid1 nbrobl=nomid1.lesobl(/2) nbrfac=nomid1.lesfac(/2) if (nbrobl+nbrfac.eq.0) then CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC) nomid=mocomp segact nomid else segini,nomid=nomid1 mocomp=nomid endif segdes,nomid1 else CALL IDMATR(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ncara = nbrobl + nbrfac NMATR = nbrobl if(inplas.eq.3) ncara=ncara+7 GOTO 120 * 14 inat = inplas if(lnomid(7).ne.0) then nomid1=lnomid(7) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDCARB(MELE1,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ncarb = nbrobl + nbrfac NCARR = ncarb IF(MFR.EQ.15) ncarb=ncarb*2 IF(MFR.EQ.7.OR.MFR.EQ.13)ncarb=ncarb+IDIM NUCAR = ncarb NCARF = nbrfac GOTO 120 * 15 if(lnomid(8).ne.0) then nomid1=lnomid(8) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDTEMP(MFR2,IFOUR,NPINT3,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ntur = nbrobl + nbrfac GOTO 120 * 16 if(lnomid(9).ne.0) then nomid1=lnomid(9) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDPRIN(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif npri = nbrobl + nbrfac GOTO 120 * 17 NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='MAHO' MOCOMP=NOMID nmah = 1 GOTO 120 * 18 NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='MAHT' MOCOMP=NOMID nhot = 1 GOTO 120 * 20 if(lnomid(10).ne.0) then nomid1=lnomid(10) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDVARI(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif nvari = nbrobl + nbrfac C Dans le cas ou il n'existe pas de variables internes, on C declare artificiellement une variable bidon afin de creer C des objets de travail permettant de respecter les interfaces C des routines auxquelles les variables internes peuvent etre C transmises C L'absence de variables internes est possible en particulier C pour une loi 'NON_LINEAIRE' 'UTILISATEUR', il faut alors C respecter l'interface de la routine UMAT C IF (NVARI.EQ.0) THEN NBROBL=1 NBRFAC=0 SEGADJ,NOMID LESOBL(1)='VARI' MOCOMP=NOMID nvari = 1 ENDIF GOTO 120 * 21 if(lnomid(11).ne.0) then nomid1=lnomid(11) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDGRAF(MFR2,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ngrf = nbrobl + nbrfac GOTO 120 * 23 if(lnomid(12).ne.0) then nomid1=lnomid(12) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDPHAS(MFR2,iqmod,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif nrhi = nbrobl + nbrfac GOTO 120 * 24 if(lnomid(13).ne.0) then nomid1=lnomid(13) segini,nomid=nomid1 nbrobl=lesobl(/2) nbrfac=lesfac(/2) mocomp=nomid else CALL IDDEIN(iqmod,IFOUR,MOCOMP,NBROBL,NBRFAC) nomid = mocomp segact nomid endif ndein = nbrobl + nbrfac GOTO 120 * 25 CALL IDPAEX(iqmod,MOCOMP,NBROBL,NBRFAC) nomid=mocomp segact,nomid nparex = nbrobl + nbrfac C C Dans le cas ou il n'existe de pas de parametres externes du C modele, on declare artificiellement un parametre bidon afin C de creer des objets de travail permettant de respecter les C interfaces des routines auxquelles de tels parametres peuvent C etre transmis (en particulier la routine UMAT) C IF (NPAREX.EQ.0) THEN NBROBL=1 NBRFAC=0 SEGADJ,NOMID LESOBL(1)='PAEX' nparex = 1 ENDIF GOTO 120 * 120 CONTINUE mran = INDESO mobl = nbrobl mfac = nbrfac segini pilnec segini domdec jilnec = pilnec jnomid = mocomp * liluc(ijluc) = domdec *** write(6,*) 'comou2 ' , ijluc, nbrobl, nbrfac, pilnec,mocomp,domdec *** segdes domdec*mod *** segdes pilnec*mod enddo ipil = liluc c* nexo = 0 segini WRK52,wrk522 iwrk52 = wrk52 iwr522 = wrk522 c RETURN END