1 : C CHAME4 SOURCE FANDEUR 10/08/31 21:15:52 6734
2 : SUBROUTINE CHAME4(IPCHAM,IPMINT,MELEME)
3 : *____________________________________________________________________*
4 : * *
5 : * Transformation d'un MCHAML en T TINF TSUP en un MCHAML *
6 : * uniquement en T mais dont la répartition est parabolique dans *
7 : * l'épaisseur . Ce sous-programme n'est utilisé que pour les *
8 : * éléments coques avec intégration dans l'épaisseur *
9 : * *
10 : * Entr{es: *
11 : * ________ *
12 : * *
13 : * IPCHAM Pointeur sur le MCHAML *
14 : * *
15 : * Sorties: *
16 : * ________ *
17 : * *
18 : * IPCHAM Pointeur sur le MCHAML r{sultat *
19 : * *
20 : *____________________________________________________________________*
21 : *
22 : IMPLICIT INTEGER(I-N)
23 : IMPLICIT REAL*8(A-H,O-Z)
24 : *
25 : -INC CCOPTIO
26 : *
27 : -INC SMCHAML
28 : -INC SMELEME
29 : -INC SMINTE
30 : *
31 : CHARACTER*8 NOMC
32 : CHARACTER*16 TYPC
33 : *
34 : *----- mise en ordre des composantes : TINF et TSUP en dernier -----
35 : *
36 : * write(6,*) '2 ipcham,ipmint,meleme',ipcham,ipmint,meleme
37 : MCHAML = IPCHAM
38 : * segdes mchaml
39 : segact mchaml*mod
40 : NCOMP = NOMCHE(/2)
41 : ITINF=0
42 : ITSUP=0
43 : IT=0
44 : DO 10 I1=1,NCOMP
45 : IF(NOMCHE(I1).EQ.'TINF ') ITINF = I1
46 : IF(NOMCHE(I1).EQ.'TSUP ') ITSUP = I1
47 : IF(NOMCHE(I1).EQ.'T ') IT = I1
48 : 10 CONTINUE
49 : IF(ITINF*ITSUP*IT.EQ.0) THEN
50 : moterr(1:8)='CHAME4-2'
50 : call erreur(359)
51 : return
52 : endif
53 : NLIMIT = NCOMP - 2
54 : *
55 : *------------------ On s'occupe de la composante TINF --------------
56 : *
57 : IF(ITINF.LE.NLIMIT) THEN
58 : IF(NOMCHE(NLIMIT + 1).NE.'TSUP ') THEN
59 : INTER = IELVAL(ITINF)
60 : NOMC = NOMCHE(ITINF)
61 : TYPC = TYPCHE(ITINF)
62 : IELVAL(ITINF) = IELVAL(NLIMIT + 1)
63 : NOMCHE(ITINF) = NOMCHE(NLIMIT + 1)
64 : TYPCHE(ITINF) = TYPCHE(NLIMIT + 1)
65 : ITINF = NLIMIT + 1
66 : IELVAL(ITINF) = INTER
67 : NOMCHE(ITINF) = NOMC
68 : TYPCHE(ITINF) = TYPC
69 : ELSEIF (NOMCHE(NLIMIT + 2).NE.'TSUP ') THEN
70 : INTER = IELVAL(ITINF)
71 : NOMC = NOMCHE(ITINF)
72 : TYPC = TYPCHE(ITINF)
73 : IELVAL(ITINF) = IELVAL(NLIMIT + 2)
74 : NOMCHE(ITINF) = NOMCHE(NLIMIT + 2)
75 : TYPCHE(ITINF) = TYPCHE(NLIMIT + 2)
76 : ITINF = NLIMIT + 2
77 : IELVAL(ITINF) = INTER
78 : NOMCHE(ITINF) = NOMC
79 : TYPCHE(ITINF) = TYPC
80 : ENDIF
81 : ENDIF
82 : *
83 : *------------------ On s'occupe de la composante TSUP --------------
84 : *
85 : IF(ITSUP.LE.NLIMIT) THEN
86 : IF(NOMCHE(NLIMIT + 1).NE.'TINF ') THEN
87 : INTER = IELVAL(ITSUP)
88 : NOMC = NOMCHE(ITSUP)
89 : TYPC = TYPCHE(ITSUP)
90 : IELVAL(ITSUP) = IELVAL(NLIMIT + 1)
91 : NOMCHE(ITSUP) = NOMCHE(NLIMIT + 1)
92 : TYPCHE(ITSUP) = TYPCHE(NLIMIT + 1)
93 : ITSUP = NLIMIT + 1
94 : IELVAL(ITSUP) = INTER
95 : NOMCHE(ITSUP) = NOMC
96 : TYPCHE(ITSUP) = TYPC
97 : ELSEIF (NOMCHE(NLIMIT + 2).NE.'TSUP ') THEN
98 : INTER = IELVAL(ITSUP)
99 : NOMC = NOMCHE(ITSUP)
100 : TYPC = TYPCHE(ITSUP)
101 : IELVAL(ITSUP) = IELVAL(NLIMIT + 2)
102 : NOMCHE(ITSUP) = NOMCHE(NLIMIT + 2)
103 : TYPCHE(ITSUP) = TYPCHE(NLIMIT + 2)
104 : ITSUP = NLIMIT + 2
105 : IELVAL(ITSUP) = INTER
106 : NOMCHE(ITSUP) = NOMC
107 : TYPCHE(ITSUP) = TYPC
108 : ENDIF
109 : ENDIF
110 : DO 11 I1=1,NCOMP
111 : IF(NOMCHE(I1).EQ.'TINF ') ITINF = I1
112 : IF(NOMCHE(I1).EQ.'TSUP ') ITSUP = I1
113 : IF(NOMCHE(I1).EQ.'T ') IT = I1
114 : 11 CONTINUE
115 : IF( ITINF+ITSUP.NE.NCOMP*2-1) then
116 : moterr(1:8)='CHAME4-1'
116 : call erreur (349)
117 : return
118 : endif
119 : *
120 : SEGACT MELEME
121 : NBELEM = NUM(/2)
122 : SEGDES MELEME
123 : MINTE = IPMINT
124 : C* SEGACT MINTE <- Actif en (E/S)
125 : NBGAUS = POIGAU(/1)
126 : N1EL = NBELEM
127 : N1PTEL = NBGAUS
128 : N2EL = 0
129 : N2PTEL = 0
130 : SEGINI MELVA3
131 : *
132 : *-------------- Calcul de T a partir de T TINF et TSUP -------------
133 : *
134 : * write(6,*) ' it , itinf, itsup',it , itinf, itsup
135 : MELVAL = IELVAL(IT)
136 : MELVA1 = IELVAL(ITINF)
137 : MELVA2 = IELVAL(ITSUP)
138 : * write(6,*) '1 melval,melva1,melva2',melval,melva1,melva2
139 : SEGACT MELVAL
140 : SEGACT MELVA1
141 : SEGACT MELVA2
142 : NPT = VELCHE(/1)
143 : NEL = VELCHE(/2)
144 : N1PT = MELVA1.VELCHE(/1)
145 : N1EL = MELVA1.VELCHE(/2)
146 : N2PT = MELVA2.VELCHE(/1)
147 : N2EL = MELVA2.VELCHE(/2)
148 : C write(6,*) 'NPT ',NPT
149 : C write(6,*) 'N1PT ',N1PT
150 : C write(6,*) 'N2PT ',N2PT
151 : C write(6,*) 'NEL ',NEL
152 : C write(6,*) 'N1EL ',N1EL
153 : C write(6,*) 'N2EL ',N2EL
154 : *
155 : *------------------------ boucle sur les elements -----------------
156 : *-------------------- boucle sur les points de gauss --------------
157 : *
158 : DO 20 I2=1,NBELEM
159 : C write(6,*) ' '
160 : C write(6,*) '------------------------------'
161 : C write(6,*) 'Element numero :',I2
162 : DO 30 I3=1,NBGAUS
163 : C write(6,*) 'Point numero :',I3
164 : IF(NPT.EQ.1.AND.NEL.EQ.1) THEN
165 : T = VELCHE(1,1)
166 : ELSEIF(NPT.EQ.1) THEN
167 : T = VELCHE(1,I2)
168 : ELSE
169 : T = VELCHE(I3,I2)
170 : ENDIF
171 : IF(N1PT.EQ.1.AND.N1EL.EQ.1) THEN
172 : TINF = MELVA1.VELCHE(1,1)
173 : ELSEIF(N1PT.EQ.1) THEN
174 : TINF = MELVA1.VELCHE(1,I2)
175 : ELSE
176 : TINF = MELVA1.VELCHE(I3,I2)
177 : ENDIF
178 : IF(N2PT.EQ.1.AND.N2EL.EQ.1) THEN
179 : TSUP = MELVA2.VELCHE(1,1)
180 : ELSEIF(N2PT.EQ.1) THEN
181 : TSUP = MELVA2.VELCHE(1,I2)
182 : ELSE
183 : TSUP = MELVA2.VELCHE(I3,I2)
184 : ENDIF
185 : ZZ = DZEGAU(I3)
186 : C write(6,*) 'ZZ ',ZZ
187 : C write(6,*) 'T : ',T
188 : C write(6,*) 'TINF : ',TINF
189 : C write(6,*) 'TSUP : ',TSUP
190 : TT = (0.5D0 * (TINF + TSUP - (2.D0 * T)) * (ZZ*ZZ))
191 : 1 + (0.5D0*(TSUP - TINF) * ZZ) + T
192 : C write(6,*) 'Temperature calculee : ',TT
193 : MELVA3.VELCHE(I3,I2) = TT
194 : 30 CONTINUE
195 : 20 CONTINUE
196 :
197 : *
198 : *--------- desactivation et suppression des segments ---------------
199 : *
200 : N2 = NLIMIT
201 : SEGADJ MCHAML
202 : * write(6,*) ' melval,melva1,melva2',melval,melva1,melva2
203 : SEGSUP MELVAL
204 : IELVAL(IT) = MELVA3
205 : SEGSUP MELVA1,MELVA2
206 : C* SEGDES MINTE <- Actif en (E/S)
207 : SEGDES MELVA3
208 : RETURN
209 : END
210 :
211 :
© Cast3M 2003 - All rights reserved.
Disclaimer