1 : C DFNFR SOURCE GOUNAND 06/01/18 21:15:26 5293
2 : SUBROUTINE DFNFR(DFFPG,JMIJAC,
3 : $ JDFFPG,
4 : $ IMPR,IRET)
5 : IMPLICIT REAL*8 (A-H,O-Z)
6 : IMPLICIT INTEGER (I-N)
7 : C***********************************************************************
8 : C NOM : DFNFR
9 : C DESCRIPTION : Calcul des dérivées premières des fonctions de forme aux
10 : C points de Gauss sur l'élément réel.
11 : C
12 : C \partial_x = [j] \partial_{\xi}
13 : C
14 : C où \partial_x = trans( \frac{\partial}{\partial_x}
15 : C \frac{\partial}{\partial_y}
16 : C \frac{\partial}{\partial_z} )
17 : C
18 : C \partial_{\xi} = trans( \frac{\partial}{\partial_{\xi}}
19 : C \frac{\partial}{\partial_{\eta}}
20 : C \frac{\partial}{\partial_{\zeta}})
21 : C
22 : C [j] est l'inverse de la matrice jacobienne
23 : C
24 : C cf. Dhatt et Touzot p.52
25 : C
26 : C LANGAGE : ESOPE
27 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
28 : C mél : gounand@semt2.smts.cea.fr
29 : C***********************************************************************
30 : C APPELES : PRCHVA (impression d'un segment de type MCHEVA)
31 : C DFNFR1 (calcul des dérivées premières des fonctions
32 : C de forme aux points de Gauss sur l'élément
33 : C réel (fortran 77))
34 : C APPELE PAR : NLAP, NCVN
35 : C***********************************************************************
36 : C ENTREES : * DFFPG (type MCHEVA) : valeurs des dérivées
37 : C premières des fonctions d'interpolation aux
38 : C points de gauss sur l'élément de référence.
39 : C Structure (cf.include SMCHAEL) :
40 : C (1, nb. ddl, 1, dim.esp.réf, nb. poi. gauss, 1)
41 : C * JMIJAC (type MCHEVA) : valeurs de l'inverse de
42 : C la matrice jacobienne aux points de Gauss sur
43 : C le maillage élémentaire.
44 : C Structure (cf.include SMCHAEL) :
45 : C (1, 1, dim. esp. référence, dim. esp. réel,
46 : C nb. poi. gauss, nb. éléments)
47 : C ENTREES/SORTIES : -
48 : C SORTIES : * JDFFPG (type MCHEVA) : valeurs des dérivées
49 : C premières des fonctions d'interpolation
50 : C aux points de gauss sur l'élément réel.
51 : C Structure (cf.include SMCHAEL) :
52 : C (1, nb. ddl, 1, 1, nb. poi. gauss, nb. élém.)
53 : C TRAVAIL : * NDDL (type entier) : nombre de ddl (par
54 : C élément) de la transformation géométrique.
55 : C * IESREF (type entier) : dimension de l'espace de
56 : C référence.
57 : C * IESREL (type entier) : dimension de l'espace
58 : C réel (i.e. géométrique).
59 : C * NDPOGO (type entier) : nombre de points
60 : C d'intégration.
61 : C * NDELEM (type entier) : nombre d'éléments du
62 : C maillage élémentaire courant.
63 : C***********************************************************************
64 : C VERSION : v2, 25/09/03, refonte complète (modif SMPOUET)
65 : C VERSION : v1, 19/05/00, version initiale
66 : C HISTORIQUE : v1, 19/05/00, création
67 : C HISTORIQUE :
68 : C HISTORIQUE :
69 : C***********************************************************************
70 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
71 : C en cas de modification de ce sous-programme afin de faciliter
72 : C la maintenance !
73 : C***********************************************************************
74 : -INC CCOPTIO
75 : CBEGININCLUDE SMCHAEL
76 : SEGMENT MCHAEL
77 : POINTEUR IMACHE(N1).MELEME
78 : POINTEUR ICHEVA(N1).MCHEVA
79 : ENDSEGMENT
80 : SEGMENT MCHEVA
81 : REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
82 : ENDSEGMENT
83 : SEGMENT LCHEVA
84 : POINTEUR LISCHE(NBCHE).MCHEVA
85 : ENDSEGMENT
86 : CENDINCLUDE SMCHAEL
87 : INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
88 : POINTEUR DFFPG.MCHEVA
89 : POINTEUR JMIJAC.MCHEVA
90 : POINTEUR JDFFPG.MCHEVA
91 : *
92 : INTEGER IMPR,IRET
93 : *
94 : INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NDELEM
95 : INTEGER NDDL,IESREF,IESREL,NDPOGO,NBELEM
96 : *
97 : * Executable statements
98 : *
99 : IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfr'
100 : SEGACT DFFPG
101 : NDLIG1=DFFPG.VELCHE(/1)
102 : NDDL =DFFPG.VELCHE(/2)
103 : N2DLI1=DFFPG.VELCHE(/3)
104 : IESREF=DFFPG.VELCHE(/4)
105 : NDPOG1=DFFPG.VELCHE(/5)
106 : NDELEM=DFFPG.VELCHE(/6)
107 : SEGACT JMIJAC
108 : NDLIG =JMIJAC.VELCHE(/1)
109 : NDCOL =JMIJAC.VELCHE(/2)
110 : N2DLIG=JMIJAC.VELCHE(/3)
111 : N2DCOL=JMIJAC.VELCHE(/4)
112 : NDPOG2=JMIJAC.VELCHE(/5)
113 : NBELEM=JMIJAC.VELCHE(/6)
114 : IF (NDLIG.NE.1.OR.NDCOL.NE.1) THEN
115 : WRITE(IOIMP,*) 'Erreur dims JMIJAC'
116 : GOTO 9999
117 : ENDIF
118 : NDPOGO=MAX(NDPOG1,NDPOG2)
119 : * WRITE(IOIMP,*) 'NDPOGO=',NDPOGO
120 : *
121 : IF (NDLIG1.NE.1.OR.N2DLI1.NE.1.OR.NDELEM.NE.1.OR.
122 : $ (NDPOG1.NE.1.AND.NDPOG1.NE.NDPOGO)) THEN
123 : WRITE(IOIMP,*) 'Erreur dims DFFPG'
124 : GOTO 9999
125 : ENDIF
126 : IF (N2DLIG.NE.IESREF.OR.N2DCOL.NE.IDIM.OR.
127 : $ (NDPOG2.NE.1.AND.NDPOG2.NE.NDPOGO)) THEN
128 : WRITE(IOIMP,*) 'Incompatibilité JMIJAC-DFFPG'
129 : GOTO 9999
130 : ENDIF
131 : *
132 : IESREL=N2DCOL
133 : NPFF =NDPOG1
134 : NPJMI=NDPOG2
135 : *
136 : * Initialisations...
137 : *
138 : NBLIG=1
139 : NBCOL=NDDL
140 : N2LIG=1
141 : N2COL=IESREL
142 : NBPOI=NDPOGO
143 : NBELM=NBELEM
144 : SEGINI JDFFPG
145 : *
146 : * On effectue le calcul du coefficient aux points de Gauss
147 : *
147 : CALL DFNFR1(NDDL,IESREF,IESREL,NPFF,NDPOGO,NBELEM,
148 : $ NPJMI,
149 : $ DFFPG.VELCHE,JMIJAC.VELCHE,
150 : $ JDFFPG.VELCHE,
151 : $ IMPR,IRET)
152 : IF (IRET.NE.0) GOTO 9999
153 : SEGDES JDFFPG
154 : SEGDES JMIJAC
155 : SEGDES DFFPG
156 : IF (IMPR.GT.3) THEN
157 : WRITE(IOIMP,*) 'On a créé',
158 : $ ' JDFFPG(élément , poi.gauss ,',
159 : $ 'dim. esp. réel. ,1, ddl ,1)'
159 : CALL PRCHVA(JDFFPG,IMPR,IRET)
160 : IF (IRET.NE.0) GOTO 9999
161 : ENDIF
162 : *
163 : * Normal termination
164 : *
165 : IRET=0
166 : RETURN
167 : *
168 : * Format handling
169 : *
170 : *
171 : * Error handling
172 : *
173 : 9999 CONTINUE
174 : IRET=1
175 : WRITE(IOIMP,*) 'An error was detected in subroutine dfnfr'
176 : RETURN
177 : *
178 : * End of subroutine DFNFR
179 : *
180 : END
181 :
182 :
183 :
© Cast3M 2003 - All rights reserved.
Disclaimer