45
46
47
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "scr17_c.inc"
62#include "units_c.inc"
63#include "com04_c.inc"
64#include "param_c.inc"
65#include "r2r_c.inc"
66
67
68
69 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
70 INTEGER,INTENT(IN) :: IXC(NIXC,*),ITABM1(*)
71 INTEGER,INTENT(INOUT) :: LGAUGE(3,*)
72 INTEGER NOM_OPT(LNOPT1,*)
74 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
75
76 LOGICAL IS_AVAILABLE
77
78
79
80 INTEGER USR2SYS
81
82
83
84 INTEGER I, J,ID, NGAU, NOD, ISK, UID, IFLAGUNIT, IG, L,NBGAUGE_SPH,NBGAUGE_POINT
85 INTEGER N,NS,NG,OFFS
86 my_real ff,bid,dist,xgauge,ygauge,zgauge
87 CHARACTER MESS*40
88 CHARACTER(LEN=NCHARTITLE) :: TITR
89 CHARACTER(LEN=NCHARKEY) :: KEY
90 DATA mess/'GAUGE DEFINITION '/
91
92 is_available = .false.
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 ng = 0
142 ff = 0
144
145 IF ( nbgauge_sph > 0)THEN
146
148 DO i=1,nbgauge_sph
149 ng=ng+1
150
151 IF(nsubdom > 0) THEN
153 ENDIF
154
155 key=''
157 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
158
159
160 nom_opt(1,i)=ngau
161
162 lgauge(1,i)=-(numels+1)
163 dist = zero
164 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
165 CALL hm_get_intv (
'shell_ID' ,ns ,is_available,lsubmodel)
166 CALL hm_get_floatv (
'DIST' ,dist ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv (
'Fcut' ,ff ,is_available, lsubmodel, unitab)
168
169 gauge(1,i) =dist
170 gauge(9,i) =ff
171 lgauge(2,i)=ngau
172
173 WRITE (iout,'(///,A)')' SPH GAUGE'
174 WRITE (iout,'(A/)') ' ---------'
175 WRITE (iout,'(A,I10)')' SPH GAUGE NUMBER . . . . . . . . . . .',ngau
176
177 IF(nod /= 0)THEN
178 lgauge(3,i)=
usr2sys(nod,itabm1,mess,ngau)
179 WRITE (iout,'(A,I10)')' NODE NUMBER. . . . . . . . . . . . . .',nod
180 ELSEIF(ns /= 0)THEN
181 DO j=1,numelc
182 IF(ixc(nixc,j)==ns)THEN
183 lgauge(3,i)=-j
184 EXIT
185 ENDIF
186 ENDDO
187 WRITE (iout,'(A,I10)') ' SHELL NUMBER . . . . . . . . . . . . .',ns
188 WRITE (iout,'(A,1PG20.13)')' DISTANCE . . . . . . . . . . . . . . .',dist
189 ENDIF
190 WRITE (iout,'(A,1PG20.13)') ' 4-POLE BUTTERWORTH CORNER FREQUENCY. .',ff
191
192
193 ENDDO
194
195 ENDIF
196
197
198
199
201
202 IF ( nbgauge_point > 0)THEN
204 DO i=1,nbgauge_point
205 key=''
207 nom_opt(1,i)=ngau
208 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
209 ng=ng+1
210
211 IF(nsubdom > 0) THEN
213 ENDIF
214
215 lgauge(1,ng)=0
216 CALL hm_get_floatv (
'Xi' ,xgauge ,is_available, lsubmodel, unitab)
217 CALL hm_get_floatv (
'Yi' ,ygauge ,is_available, lsubmodel, unitab)
218 CALL hm_get_floatv (
'Zi' ,zgauge ,is_available, lsubmodel, unitab)
219 lgauge(2,ng)=ngau
220 lgauge(3,ng)=0
221 gauge(1,ng)=zero
222 gauge(9,ng)=zero
223 gauge(34,ng)=xgauge
224 gauge(35,ng)=ygauge
225 gauge(36,ng)=zgauge
226 WRITE (iout,'(///,A)')' gauge'
227 WRITE (IOUT,'(a/)') ' -----'
228 WRITE (IOUT,'(a,i10)')' gauge number . . . . . . . . . . . . .',NGAU
229 WRITE (IOUT,'(a,i10)')' gauge point coordinate:'
230 WRITE (IOUT,'(a,/1p3g20.13/)')' xg yg zg',Xgauge, Ygauge, Zgauge
231 WRITE (IOUT,'(a,1pg20.13)
')' 4-pole
butterworth corner frequency. .
',FF
232 ENDDO ! DO I=1,NBGAUGE_POINT
233 ENDIF ! IF ( NBGAUGE_POINT > 0)
234
235
236
237 CALL HM_OPTION_START('/gauge')
238
239 DO I=1,NBGAUGE
240 KEY=''
241 CALL HM_OPTION_READ_KEY(LSUBMODEL,OPTION_ID=NGAU,KEYWORD2=KEY,OPTION_TITR=TITR)
242 NOM_OPT(1,I)=NGAU
243 CALL FRETITL(TITR,NOM_OPT(LNOPT1-LTITR+1,I),LTITR)
244
245 IF (KEY == 'sph.OR.' KEY == 'point') CYCLE
246 NG=NG+1
247 !Multidomaines --> on ignore les sections non tagees----
248 IF(NSUBDOM > 0) THEN
249 IF(TAGGAU(NG) == 0) CALL SZ_R2R(TAGGAU,NG)
250 ENDIF
251 !-----------------------------------------------------------------
252 LGAUGE(1,NG)=0
253
254 DIST = ZERO
255 CALL HM_GET_INTV ('node1' ,NOD ,IS_AVAILABLE,LSUBMODEL)
256 CALL HM_GET_INTV ('shell_id' ,NS ,IS_AVAILABLE,LSUBMODEL)
257 CALL HM_GET_FLOATV ('dist' ,DIST ,IS_AVAILABLE, LSUBMODEL, UNITAB)
258
259 GAUGE(1,NG)=DIST
260 GAUGE(9,NG)=ZERO
261 LGAUGE(2,NG)=NGAU
262
263 WRITE (IOUT,'(///,a)')' gauge'
264 WRITE (IOUT,'(a/)') ' -----'
265 WRITE (IOUT,'(a,i10)')' gauge number . . . . . . . . . . . . .',NGAU
266 IF(NOD /= 0)THEN
267 LGAUGE(3,NG)=USR2SYS(NOD,ITABM1,MESS,NGAU)
268 WRITE (IOUT,'(a,i10)')' node number. . . . . . . . . . . . . .',NOD
269 ELSEIF(NS /= 0)THEN
270 DO J=1,NUMELC
271 IF(IXC(NIXC,J)==NS)THEN
272 LGAUGE(3,NG)=-J
273 EXIT
274 ENDIF
275 ENDDO
276 IF (LGAUGE(3,NG) == 0)CALL ANCMSG(MSGID=3013,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=NGAU,C1=TITR,I2=NS)
277 WRITE (IOUT,'(/,a,i10)')' shell number . . . . . . . . . . . . .',NS
278 WRITE (IOUT,'(a,1pg20.13)')' distance . . . . . . . . . . . . . . .',DIST
279 ENDIF
280 WRITE (IOUT,'(a,1pg20.13)
')' 4-pole
butterworth corner frequency. .
',FF
281
282 ENDDO ! NBGAUGE
283
284
285
286
287 CALL VDOUBLE(NOM_OPT,LNOPT1,NBGAUGE,MESS,0,BID)
288
289 RETURN
subroutine butterworth(dt, freq, x2, x1, x, fx2, fx1, fx)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharkey
integer, dimension(:), allocatable taggau
subroutine sz_r2r(tag, val)
integer function usr2sys(iu, itabm1, mess, id)