kecom6
C KECOM6 SOURCE GOUNAND 24/11/06 21:15:11 12073 $ MYFALS) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : KECOM6 C PROJET : Noyau linéaire NLIN C DESCRIPTION : C * On teste les noms des ddls des variables et des coefficients * On verifie egalement qu'il n'y a pas de noeuds à numéro nul dans CGEOMQ * qui pourrait etre utilises. Ces noeuds nuls sont eventuellement * cree par TRQUAF (cf. PRLIN2) pour permettre l'utilisation d'un * maillage non QUAF en entree de NLIN. C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : KEEF (recherche de l'élément fini) C APPELE PAR : C*********************************************************************** C ENTREES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 26/09/02, version initiale C HISTORIQUE : v1, 26/09/02, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMELEME POINTEUR CGEOMQ.MELEME POINTEUR SOUGEO.MELEME -INC SMLMOTS POINTEUR MYLMOT.MLMOTS * Mes includes persos -INC TNLIN *-INC SFALRF POINTEUR MYFALS.FALRFS *-INC SELREF POINTEUR MYLRF.ELREF * CHARACTER*8 TYPCHA CHARACTER*4 MYDISC INTEGER IMPR,IRET * * Fonctions appelées * INTEGER IMAX * INTEGER ICOMP ,ISOUS ,MAXISO INTEGER NSOUS,NDDL,ITQUAF,MAXCMP * * Executable statements * IMPR=0 SEGACT CGEOMQ NSOUS=CGEOMQ.LISOUS(/1) MAXCMP=0 DO 3 ISOUS=1,NSOUS SOUGEO=CGEOMQ.LISOUS(ISOUS) SEGACT SOUGEO * On cherche l'élément fini correspondant au QUAF ITQUAF=SOUGEO.ITYPEL $ MYFALS, $ MYLRF, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 SEGACT MYLRF NDDL=MYLRF.NPQUAF(/1) MAXCMP=MAX(MAXCMP,MAXISO) * Si le maillage donné à NLIN n'était pas QUAF au départ, il faut * vérifier que tous les ddls peuvent s'appuyer sur les points du * maillage donné IF (CGEOMQ.LISREF(ISOUS).NE.0) THEN * Cas particulier : si l'espace élément fini est 'CSTE' : * on autorise les FLOTTANT en entrée * on n'autorise pas les CHAMELEM constant par élément en entrée : ça * n'a pas de sens, le CHAMELEM porte sur des éléments * on autorise les CHAMELEM constant par élément en sortie IF (MYDISC.EQ.'CSTE') THEN IF (ICHAM.LT.0) GOTO 33 * IF (ICHAM.GT.0.AND.TYPCHA.EQ.'MCHAML ') GOTO 33 IF (ICHAM.EQ.0.AND.LCHAM.EQ.1) GOTO 33 ENDIF * Le test uniquement sur le 1er element doit etre suffisant DO IDDL=1,NDDL NNQUA=MYLRF.NPQUAF(IDDL) NNGLO=SOUGEO.NUM(NNQUA,1) IF (NNGLO.EQ.0) THEN WRITE(IOIMP,*) 'A discretization space ',MYDISC, $ ' is incompatible with the given mesh' WRITE(IOIMP,*) 'Check its element type please' GOTO 9999 ENDIF ENDDO 33 CONTINUE ENDIF SEGDES MYLRF SEGDES SOUGEO 3 CONTINUE SEGACT MYLMOT SEGDES MYLMOT SEGDES CGEOMQ IF (ICOMP.NE.MAXCMP) THEN WRITE(IOIMP,*) 'Une variable de ddls :' 2019 FORMAT (10(2X,A8) ) * SEGPRT,MYLMOT WRITE(IOIMP,*) $ 'n''est pas compatible avec la discrétisation : ', $ MYDISC GOTO 9999 ENDIF * * Normal termination * RETURN * * Format handling * * * Error handling * 9999 CONTINUE MOTERR(1:8)='kecom6 ' RETURN * * End of subroutine KECOM6 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales