dfnfrf
C DFNFRF SOURCE GOUNAND 21/06/02 21:15:49 11022
$ JDFFPG,
$ IMPR,IRET)
IMPLICIT REAL*8 (A-H,O-Z)
IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM : DFNFRF
C DESCRIPTION : Calcul des dérivées premières des fonctions de forme aux
C points de Gauss sur l'élément réel.
C
C \partial_x = [j] \partial_{\xi}
C
C où \partial_x = trans( \frac{\partial}{\partial_x}
C \frac{\partial}{\partial_y}
C \frac{\partial}{\partial_z} )
C
C \partial_{\xi} = trans( \frac{\partial}{\partial_{\xi}}
C \frac{\partial}{\partial_{\eta}}
C \frac{\partial}{\partial_{\zeta}})
C
C [j] est l'inverse de la matrice jacobienne
C
C cf. Dhatt et Touzot p.52
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 : RSET8 (copie de tableaux de CHARACTER*8)
C PRCHVA (impression d'un segment de type MCHEVA)
C DFNFRF1 (calcul des dérivées premières des fonctions
C de forme aux points de Gauss sur l'élément
C réel (fortran 77))
C APPELE PAR : NLAP, NCVN
C***********************************************************************
C ENTREES : * DFFPG (type MCHEVA) : valeurs des dérivées
C premières des fonctions d'interpolation aux
C points de gauss sur l'élément de référence.
C Structure (cf.include SMCHAEL) :
C (1, nb. ddl, 1, dim.esp.réf, nb. poi. gauss, 1)
C * JMIJAC (type MCHEVA) : valeurs de l'inverse de
C la matrice jacobienne aux points de Gauss sur
C le maillage élémentaire.
C Structure (cf.include SMCHAEL) :
C (1, 1, dim. esp. référence, dim. esp. réel,
C nb. poi. gauss, nb. éléments)
C ENTREES/SORTIES : -
C SORTIES : * JDFFPG (type MCHEVA) : valeurs des dérivées
C premières des fonctions d'interpolation
C aux points de gauss sur l'élément réel.
C Structure (cf.include SMCHAEL) :
C (1, nb. ddl, 1, 1, nb. poi. gauss, nb. élém.)
C TRAVAIL : * NDDL (type entier) : nombre de ddl (par
C élément) de la transformation géométrique.
C * IESREF (type entier) : dimension de l'espace de
C référence.
C * IESREL (type entier) : dimension de l'espace
C réel (i.e. géométrique).
C * NBPOGO (type entier) : nombre de points
C d'intégration.
C * NDELEM (type entier) : nombre d'éléments du
C maillage élémentaire courant.
C***********************************************************************
C VERSION : v2, 03/10/03, refonte complète (modif SMTNLIN)
C VERSION : v1, 19/05/00, version initiale
C HISTORIQUE : v1, 19/05/00, 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 TNLIN
*-INC SFACTIV
*-INC SMCHAEL
INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
POINTEUR DFFPG.MCHEVA
POINTEUR JMIJAC.MCHEVA
POINTEUR JDFFPG.MCHEVA
*
INTEGER NBELEF
INTEGER IMPR,IRET
*
INTEGER NDLIG,NDCOL,N2DLIG,NDNOEU,NBELEV,NBELFV
INTEGER NDDL,IESREF,IESREL,NBPOGO,NBELEM
*
* Executable statements
*
IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfrf'
SEGACT SSFACT
NBELFV=SSFACT.LFACTI(/1)
NBELEV=SSFACT.LFACTI(/2)
IESREL=IDIM
*
SEGACT DFFPG
NDLIG =DFFPG.WELCHE(/1)
NDDL =DFFPG.WELCHE(/2)
N2DLIG=DFFPG.WELCHE(/3)
IESREF=DFFPG.WELCHE(/4)
NBPOGO=DFFPG.WELCHE(/5)
NDELEM=DFFPG.WELCHE(/6)
IF (NDLIG.NE.1.OR.N2DLIG.NE.1
$ .OR.(NDELEM.NE.NBELFV)) THEN
WRITE(IOIMP,*) 'Erreur dims DFFPG'
GOTO 9999
ENDIF
*
SEGACT JMIJAC
NDLIG =JMIJAC.WELCHE(/1)
NDCOL =JMIJAC.WELCHE(/2)
N2DLIG=JMIJAC.WELCHE(/3)
N2DCOL=JMIJAC.WELCHE(/4)
NDNOEU=JMIJAC.WELCHE(/5)
NBELEM=JMIJAC.WELCHE(/6)
IF (NDLIG.NE.1.OR.NDCOL.NE.1.OR.N2DLIG.NE.IESREF
$ .OR.N2DCOL.NE.IESREL
$ .OR.(NDNOEU.NE.1.AND.NDNOEU.NE.NBPOGO)
$ .OR.NBELEM.NE.NBELEF) THEN
WRITE(IOIMP,*) 'Erreur dims JMIJAC'
GOTO 9999
ENDIF
NPJMI=NDNOEU
*
* Initialisations...
*
NBLIG=1
NBCOL=NDDL
N2LIG=1
N2COL=IESREL
NBPOI=NBPOGO
NBELM=NBELEF
SEGINI JDFFPG
*
* On effectue le calcul du coefficient aux points de Gauss
*
$ NPJMI,
$ DFFPG.WELCHE,JMIJAC.WELCHE,SSFACT.LFACTI,
$ JDFFPG.WELCHE,
$ IMPR,IRET)
IF (IRET.NE.0) GOTO 9999
SEGDES JDFFPG
SEGDES DFFPG
SEGDES JMIJAC
SEGDES SSFACT
*
* Normal termination
*
IRET=0
RETURN
*
* Format handling
*
*
* Error handling
*
9999 CONTINUE
IRET=1
WRITE(IOIMP,*) 'An error was detected in subroutine dfnfrf'
RETURN
*
* End of subroutine DFNFRF
*
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales