crepg
C CREPG SOURCE GOUNAND 21/06/02 21:15:33 11022 $ JXCOPG,JXPOPG, $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : CREPG C DESCRIPTION : Création des points de Gauss C pour des faces de l'élément de référence. C C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELES (E/S) : C APPELES (BLAS) : C APPELES (CALCUL) : C APPELE PAR : C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : C ENTREES/SORTIES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 20/12/2002, version initiale C HISTORIQUE : v1, 20/12/2002, 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 SFAVOL.MELEME * -INC TNLIN *-INC SMCHAEL POINTEUR JCOOR.MCHEVA POINTEUR FFFAC.MCHEVA POINTEUR DFFFAC.MCHEVA POINTEUR JXCOPG.MCHEVA POINTEUR JXPOPG.MCHEVA INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM *-INC SELREF POINTEUR LRFFAC.ELREF *-INC SFALRF POINTEUR MYFALS.FALRFS *-INC SPOGAU POINTEUR PGFAC.POGAU *-INC SFAPG POINTEUR MYFPGS.FAPGS *-INC SIQUAF POINTEUR IQUVOL.IQUAF * INTEGER IMPR,IRET * INTEGER IBELFV,IBNOQR,IDDLFA,IDIMQR,IPGFAC,ITYFAC INTEGER NBELFV, NDDLFA,NDIMQR,NPGFAC REAL*8 VAL CHARACTER*4 METING,MYDIS2 * * Executable statements * IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans crepg.eso' * * 1ere étape : on crée les degrés de liberté de la transformation * géométrique (cf. mkcoor.eso) * * On suppose que les transformations géométriques sur les * éléments de référence sont LINEAIRES. On suppose également que * le déterminant de la matrice jacobienne de la tranformation * face de référence -> face d'un élément volumique de référence * est CONSTANT => règle d'intégration numérique à 1 point de Gauss MYDIS2='LINE' * SEGACT IQUVOL NDIMQR=IQUVOL.XCONQR(/1) SEGACT SFAVOL ITYFAC=SFAVOL.ITYPEL $ MYFALS, $ LRFFAC, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 SEGACT LRFFAC NDDLFA=LRFFAC.NPQUAF(/1) NBELFV=SFAVOL.NUM(/2) NBLIG=1 NBCOL=NDDLFA N2LIG=1 N2COL=NDIMQR NBPOI=1 NBELM=NBELFV SEGINI JCOOR DO IBELFV=1,NBELFV DO IDDLFA=1,NDDLFA IBNOQR=SFAVOL.NUM(LRFFAC.NPQUAF(IDDLFA),IBELFV) DO IDIMQR=1,NDIMQR JCOOR.WELCHE(1,IDDLFA,1,IDIMQR,1,IBELFV)= $ IQUVOL.XCONQR(IDIMQR,IBNOQR) * write(ioimp,*) 'face=',IBELFV * write(ioimp,*) 'coord espace=',IDIMQR * write(ioimp,*) 'ddlfa=',IDDLFA * write(ioimp,*) * $ 'VALEUR=',JCOOR.WELCHE(1,IDDLFA,1,IDIMQR,1,IBELFV) * write(ioimp,*) ' ' ENDDO ENDDO ENDDO SEGDES SFAVOL SEGDES IQUVOL * * 2ème étape : - on crée les fonctions de forme et leurs dérivées * pour la transformation géométrie face -> volume * - on récupère coordonnées et poids des points de * Gauss pour la méthode METING sur la face de * référence * - pour chaque face de l'élément de référence volumique * on construit les coordonnées des points de Gauss * attenant à l'aide de la transformation géométrique * $ MYFPGS, $ PGFAC, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 * * In KFNREF : SEGINI FFFAC * In KFNREF : SEGINI DFFFAC * $ FFFAC,DFFFAC, $ IMPR,IRET) IF (IRET.NE.0) GOTO 9999 SEGDES LRFFAC C write(ioimp,*) 'Fonctions de formes sur la face' C CALL PRCHVA(FFFAC,6,IRET) IF (IRET.NE.0) GOTO 9999 SEGACT FFFAC NPGFAC=FFFAC.WELCHE(/5) NBLIG=1 NBCOL=1 N2LIG=1 N2COL=NDIMQR NBPOI=NPGFAC NBELM=NBELFV SEGINI JXCOPG DO IBELFV=1,NBELFV DO IPGFAC=1,NPGFAC DO IDIMQR=1,NDIMQR DO IDDLFA=1,NDDLFA VAL=JCOOR.WELCHE(1,IDDLFA,1,IDIMQR,1,IBELFV)* $ FFFAC.WELCHE(1,IDDLFA,1,1,IPGFAC,1) JXCOPG.WELCHE(1,1,1,IDIMQR,IPGFAC,IBELFV)= $ JXCOPG.WELCHE(1,1,1,IDIMQR,IPGFAC,IBELFV)+ $ VAL ENDDO * write(ioimp,*) 'face=',IBELFV * write(ioimp,*) 'no point gauss=',IPGFAC * write(ioimp,*) 'coord espace=',IDIMQR * write(ioimp,*) * $ 'VALEUR=',JXCOPG.WELCHE(1,1,1,IDIMQR,IPGFAC,IBELFV) * write(ioimp,*) ' ' ENDDO ENDDO ENDDO SEGSUP JCOOR SEGDES JXCOPG * SEGDES FFFAC SEGSUP FFFAC SEGSUP DFFFAC * * 3ème étape : Poids * SEGACT PGFAC NBLIG=1 NBCOL=1 N2LIG=1 N2COL=1 NBPOI=NPGFAC NBELM=1 SEGINI JXPOPG DO IPGFAC=1,NPGFAC JXPOPG.WELCHE(1,1,1,1,IPGFAC,1)= $ PGFAC.XPOPG(IPGFAC) *! $ JDTJAF.WELCHE(1,1,1,1,IPGFAC,IBELFV)* *! $ PGFAC.XPOPG(IPGFAC) ENDDO SEGDES JXPOPG SEGDES PGFAC * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine crepg' RETURN * * End of subroutine CREPG * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales