inomid
C INOMID SOURCE MB234859 25/08/04 21:15:29 12339 C---------------------------------------------------------------------- C C Renseigne pour un modele elementaire les noms de composantes utiles C C En entree C - iqmod est un pointeur sur un segment imodel de l'objet modele, C il est suppose actif C - l_vari,l_mato, l_matf et l_paex sont des listmots pour les C variables internes, materiaux, parametres externes, C s'ils ont ete definis (<= 0 sinon). C Ces arguments ne doivent absolument pas a etre modifies ici ! C C Attention : une modele de mecanique ne peut creer de composantes thermiques C ou phases metallurgiques ! C C Remarque : C IFOUR HYPOTHESE DE MODELISATION C C -3 | Bidimensionnel PLAN GENE C -2 | Bidimensionnel PLAN CP C -1 | Bidimensionnel PLAN DP C 0 | Axisymetrique C 1 | Fourier C 2 | Tridimensionnel C 3 a 15 | Unidimensionnel C---------------------------------------------------------------------- C C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC SMMODEL pointeur nomid1.nomid -INC SMLMOTS PARAMETER(NINC=13,NTYP=19) CHARACTER*4 lesinc(ninc),lesdua(ninc) CHARACTER*5 FMT1 EXTERNAL LONG DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR','UT','RT', & 'LX','P','ALFA','BETA'/ DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR','FT','MT', & 'FLX','FP','FALF','FBET'/ C modele metallurgie ajoute par T.L. en mai 2018 C Donnees pour la metallurgie : parameter(NBMET=2) CHARACTER*4 TYPMET(NBMET),LEBLON(3),KOISTI(2) DATA TYPMET/'LEBL', 'KOIS'/ DATA LEBLON/'PEQ ', 'TAU ', 'F '/ DATA KOISTI/'MS ', 'KM '/ * Recopie locale des arguments d'entrees : * On suppose le sous-modele (iqmod) est actif imodel = iqmod luvari = l_vari lumato = l_mato lumatf = l_matf lupaex = l_paex * Petit test normalement inutile : if (imodel.lnomid(/1).ne.ntyp) then write(ioimp,*) 'INOMID : Incoherence lnomid(/1) et ntyp' return endif * Analyse des formulations : NFOR = imodel.formod(/2) if (iimpi.eq.1972) then write(ioimp,*) 'INOMID',NFOR,(FORMOD(i),i=1,NFOR) write(ioimp,*) ' ',matmod(/2),(MATMOD(i),i=1,matmod(/2)) write(ioimp,*) ' ',cmatee,imatee,inatuu endif c* Cas particuliers : IF (INAST.GT.0) THEN IF (IMODEL.CMATEE.NE.'NLIN ') RETURN ENDIF * On passe en *mod pour remplir imodel.lnomid(.) SEGACT,IMODEL*MOD nimcom = 0 NMAT=MATMOD(/2) if (luvari.gt.0) then IF (IIMPE.NE.0) THEN mlmot5 = luvari luvari = 0 mlmot6 = lumato lumato = 0 segact mlmot5,mlmot6 nbrobl = nimcom nbrfac = nimcom segini nomid,nomid1 do inim = 1,nimcom nomid1.lesobl(inim) = lesdua(imot) nomid1.lesfac(inim) = lesdua(imot) enddo endif endif if (ierr.ne.0) return C C Formulation GENERALE MELE=NEFMOD IF (ISTAT.NE.0.OR.IMODA.NE.0) MFR2 = INFELE(13) C c write(6,*) 'inomid formod',(formod(im),im=1,nfor) c write(6,*) ' mele MFR2 ',mele,mfr2,imela c write(6,*) ' ',imeta,luvari,lumato,lumatf,lupaex C---------------------------------------------------------------------* C Boucle sur les differents types de composantes * C---------------------------------------------------------------------* DO ino = 1,ntyp MOCOMP=0 C C AIGUILLAGE SUIVANT MOT CLE GOTO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) ino C =============================================================== C Composantes PRIMALES (DEPLACEMENT en MECANIQUE, etc...) C =============================================================== 1 CONTINUE IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN MOCOMP=NOMID ELSE ENDIF GOTO 120 C =============================================================== C Composantes DUALES (FORCES en MECANIQUE, etc...) C =============================================================== 2 CONTINUE IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN MOCOMP=NOMID1 ELSE ENDIF GOTO 120 C =============================================================== C Composantes GRADIENTS des grandeurs PRIMALES C =============================================================== 3 CONTINUE GOTO 120 C =============================================================== C Composantes des CONTRAINTES C =============================================================== 4 CONTINUE IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN NBROBL = NIMCOM NBRFAC = NFAC NOMID = MOCOMP SEGADJ NOMID ENDIF GOTO 120 C =============================================================== C Composantes des DEFORMATIONS C =============================================================== 5 CONTINUE IF (IIMPE.NE.0.AND.NIMCOM.GT.0) THEN NBROBL = NIMCOM NBRFAC = NFAC NOMID = MOCOMP SEGADJ NOMID ENDIF GOTO 120 C =============================================================== C Composantes MATERIAU C =============================================================== 6 CONTINUE IF (LUMATO.LE.0) THEN ELSE C Cas de la metallurgie if( IMETA .gt. 0 ) then mlmot5 = lumato lumato = 0 segact mlmot5 C On a au plus (Nb_modele*3) vars internes materiaux obl nbrobl = nimcom*3 nbrfac = 0 segini nomid i_obl = 0 if(nimcom .GE. 1 .AND. nimcom .LT. 10 )then FMT1 = '(I1)' else INTERR(1)=nimcom INTERR(2)=10 RETURN endif do inim = 1,nimcom i_obl = i_obl + 1 if (IMOT.eq.0) then RETURN else if( imot .eq. 1) then C la formulation est LEBLOND LESOBL(i_obl) = LEBLON(1) WRITE(LESOBL(i_obl )(4:4), fmt=FMT1) inim LESOBL(i_obl+1) = LEBLON(2) WRITE(LESOBL(i_obl+1)(4:4), fmt=FMT1) inim LESOBL(i_obl+2) = LEBLON(3) WRITE(LESOBL(i_obl+2)(2:2), fmt=FMT1) inim i_obl = i_obl + 2 else if( imot .eq. 2) then C la formulation est KOISTINEN LESOBL(i_obl) = KOISTI(1) WRITE(LESOBL(i_obl )(3:3), fmt=FMT1) inim LESOBL(i_obl+1) = KOISTI(2) WRITE(LESOBL(i_obl+1)(3:3), fmt=FMT1) inim i_obl = i_obl + 1 endif enddo C on ajuste la taille du tableau LESOBL(nbrobl) nbrobl = i_obl segadj nomid segact,nomid*NOMOD mocomp=nomid else if( IMETA .eq. 0 ) then mlmots=lumato segact MLMOTS nbrfac=0 IF (lumatf.GT.0) THEN mlmot1=lumatf segact mlmot1 ENDIF SEGINI,nomid DO im=1,nbrobl enddo if(lumatf.gt.0) then do im=1,nbrfac enddo endif mocomp=nomid endif ENDIF C== FORMULATION HHO == Ajout de composantes specifiques ================ CALL HHOIDC(imodel,mocomp) C== FORMULATION HHO ==================================================== GOTO 120 C =============================================================== C Composantes des CARACTERISTIQUES GEOMETRIQUES C =============================================================== 7 CONTINUE GOTO 120 C =============================================================== C Composantes de TEMPERATURE C =============================================================== 8 CONTINUE GOTO 120 C =============================================================== C Composantes des CONTRAINTES PRINCIPALES C =============================================================== 9 CONTINUE GOTO 120 C =============================================================== C Composantes des VARIABLES INTERNES C =============================================================== 10 CONTINUE IF (LUVARI.NE.0) THEN MLMOTS=LUVARI SEGACT MLMOTS IF (MOCOMP.GT.0) THEN NOMID=MOCOMP SEGACT NOMID*MOD NDEJ=LESOBL(/2) IF(NDEJ.EQ.1) NDEJ=0 NBRFAC=0 ISTA=NDEJ+1 SEGADJ NOMID IAU=1 DO IM=ISTA,NBROBL IAU=IAU+1 ENDDO ELSE NBRFAC=0 SEGINI NOMID DO IM=1,NBROBL ENDDO MOCOMP=NOMID ENDIF ENDIF GOTO 120 C =============================================================== C Composantes des GRADIENTS DE FLEXION C =============================================================== 11 CONTINUE GOTO 120 C =============================================================== C Composantes des PHASES (MELANGE) C =============================================================== 12 CONTINUE GOTO 120 C =============================================================== C Composantes des DEFORMATIONS INELASTIQUES C =============================================================== 13 CONTINUE GOTO 120 C =============================================================== C Composantes des PARAMETRES EXTERNES (LISTMOTS) C =============================================================== 14 CONTINUE IF (LUPAEX.GT.0) THEN MLMOTS=LUPAEX SEGACT MLMOTS NBRFAC=0 SEGINI NOMID DO IM=1,NBROBL ENDDO MOCOMP=NOMID ENDIF GOTO 120 C =============================================================== C Composantes VIDE (pour COMP) C =============================================================== 15 CONTINUE IF (INAST.GT.0) THEN NBROBL = 3 NBRFAC = 0 SEGINI NOMID LESOBL(1) = 'FLX1' LESOBL(2) = 'FLX2' LESOBL(3) = 'FLX3' MOCOMP = NOMID ENDIF GOTO 120 C =============================================================== C Composantes 'SCAL' (pour COMP) C =============================================================== 16 CONTINUE IF (IMECA.GT.0.OR.ILIAI.GT.0.OR.IPORE.GT.0) THEN NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='SCAL' MOCOMP=NOMID ELSEIF (INAST.GT.0) THEN NBROBL = 3 NBRFAC = 0 SEGINI NOMID LESOBL(1) = 'LX1' LESOBL(2) = 'LX2' LESOBL(3) = 'LX3' MOCOMP = NOMID ENDIF GOTO 120 C =============================================================== C Composantes 'TEMP' (pour COMP) C =============================================================== 17 CONTINUE IF (ICNTR.EQ.0.AND.ICHPH.EQ.0) THEN NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='TEMP' MOCOMP=NOMID ENDIF GOTO 120 C =============================================================== C Composantes 'MAHO' (pour COMP) C =============================================================== 18 CONTINUE IF (IMECA.GT.0.AND.IMATEE.LE.3) THEN NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='MAHO' MOCOMP=NOMID ENDIF GOTO 120 C =============================================================== C Composantes 'MAHT' (pour COMP) C =============================================================== 19 CONTINUE IF (IMECA.GT.0.AND.IMATEE.LE.3) THEN NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='MAHT' MOCOMP=NOMID ENDIF GOTO 120 C =============================================================== 120 CONTINUE C NOMID = MOCOMP IMODEL.LNOMID(INO) = MOCOMP ENDDO C---------------------------------------------------------------------* END
© Cast3M 2003 - Tous droits réservés.
Mentions légales