45
46
47
54 use element_mod , only : nixc
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "scr17_c.inc"
63#include "units_c.inc"
64#include "com04_c.inc"
65#include "param_c.inc"
66#include "r2r_c.inc"
67
68
69
70 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
71 INTEGER,INTENT(IN) :: IXC(NIXC,*),ITABM1(*)
72 INTEGER,INTENT(INOUT) :: LGAUGE(3,*)
73 INTEGER NOM_OPT(LNOPT1,*)
75 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
76
77 LOGICAL IS_AVAILABLE
78
79
80
81 INTEGER USR2SYS
82
83
84
85 INTEGER I, J, NGAU, NOD, NBGAUGE_SPH, NBGAUGE_POINT
86 INTEGER NS, NG
87 my_real ff,bid,dist,xgauge,ygauge,zgauge
88 CHARACTER MESS*40
89 CHARACTER(LEN=NCHARTITLE) :: TITR
90 CHARACTER(LEN=NCHARKEY) :: KEY
91 DATA mess/'GAUGE DEFINITION '/
92
93 is_available = .false.
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
142 ng = 0
143 ff = 0
145
146 IF ( nbgauge_sph > 0)THEN
147
149 DO i=1,nbgauge_sph
150 ng=ng+1
151
152 IF(nsubdom > 0) THEN
154 ENDIF
155
156 key=''
158 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
159
160
161 nom_opt(1,i)=ngau
162
163 lgauge(1,i)=-(numels+1)
164 dist = zero
165 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
166 CALL hm_get_intv (
'shell_ID' ,ns ,is_available,lsubmodel)
167 CALL hm_get_floatv (
'DIST' ,dist ,is_available, lsubmodel, unitab)
168 CALL hm_get_floatv (
'Fcut' ,ff ,is_available, lsubmodel, unitab)
169
170 gauge(1,i) =dist
171 gauge(9,i) =ff
172 lgauge(2,i)=ngau
173
174 WRITE (iout,'(///,A)')' SPH GAUGE'
175 WRITE (iout,'(A/)') ' ---------'
176 WRITE (iout,'(A,I10)')' SPH GAUGE NUMBER . . . . . . . . . . .',ngau
177
178 IF(nod /= 0)THEN
179 lgauge(3,i)=
usr2sys(nod,itabm1,mess,ngau)
180 WRITE (iout,'(A,I10)')' NODE NUMBER. . . . . . . . . . . . . .',nod
181 ELSEIF(ns /= 0)THEN
182 DO j=1,numelc
183 IF(ixc(nixc,j)==ns)THEN
184 lgauge(3,i)=-j
185 EXIT
186 ENDIF
187 ENDDO
188 WRITE (iout,'(A,I10)') ' SHELL NUMBER . . . . . . . . . . . . .',ns
189 WRITE (iout,'(A,1PG20.13)')' DISTANCE . . . . . . . . . . . . . . .',dist
190 ENDIF
191 WRITE (iout,'(A,1PG20.13)') ' 4-POLE BUTTERWORTH CORNER FREQUENCY. .',ff
192
193
194 ENDDO
195
196 ENDIF
197
198
199
200
202
203 IF ( nbgauge_point > 0)THEN
205 DO i=1,nbgauge_point
206 key=''
208 nom_opt(1,i)=ngau
209 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
210 ng=ng+1
211
212 IF(nsubdom > 0) THEN
214 ENDIF
215
216 lgauge(1,ng)=0
217 CALL hm_get_floatv (
'Xi' ,xgauge ,is_available, lsubmodel, unitab)
218 CALL hm_get_floatv (
'Yi' ,ygauge ,is_available, lsubmodel, unitab)
219 CALL hm_get_floatv (
'Zi' ,zgauge ,is_available, lsubmodel, unitab)
220 lgauge(2,ng)=ngau
221 lgauge(3,ng)=0
222 gauge(1,ng)=zero
223 gauge(9,ng)=zero
224 gauge(34,ng)=xgauge
225 gauge(35,ng)=ygauge
226 gauge(36,ng)=zgauge
227 WRITE (iout,'(///,A)')' GAUGE'
228 WRITE (iout,'(A/)') ' -----'
229 WRITE (iout,'(A,I10)')' GAUGE NUMBER . . . . . . . . . . . . .',ngau
230 WRITE (iout,'(A,I10)')' GAUGE POINT coordinate:'
231 WRITE (iout,'(A,/1P3G20.13/)')' Xg Yg Zg',xgauge, ygauge, zgauge
232 WRITE (iout,'(A,1PG20.13)')' 4-POLE BUTTERWORTH CORNER FREQUENCY. .',ff
233 ENDDO
234 ENDIF
235
236
237
239
240 DO i=1,nbgauge
241 key=''
243 nom_opt(1,i)=ngau
244 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
245
246 IF (key == 'SPH' .OR. key == 'POINT') cycle
247 ng=ng+1
248
249 IF(nsubdom > 0) THEN
251 ENDIF
252
253 lgauge(1,ng)=0
254
255 dist = zero
256 CALL hm_get_intv (
'NODE1' ,nod ,is_available,lsubmodel)
257 CALL hm_get_intv (
'shell_ID' ,ns ,is_available,lsubmodel)
258 CALL hm_get_floatv (
'DIST' ,dist ,is_available, lsubmodel, unitab)
259
260 gauge(1,ng)=dist
261 gauge(9,ng)=zero
262 lgauge(2,ng)=ngau
263
264 WRITE (iout,'(///,A)')' GAUGE'
265 WRITE (iout,'(A/)') ' -----'
266 WRITE (iout,'(A,I10)')' GAUGE NUMBER . . . . . . . . . . . . .',ngau
267 IF(nod /= 0)THEN
268 lgauge(3,ng)=
usr2sys(nod,itabm1,mess,ngau)
269 WRITE (iout,'(A,I10)')' NODE NUMBER. . . . . . . . . . . . . .',nod
270 ELSEIF(ns /= 0)THEN
271 DO j=1,numelc
272 IF(ixc(nixc,j)==ns)THEN
273 lgauge(3,ng)=-j
274 EXIT
275 ENDIF
276 ENDDO
277 IF (lgauge(3,ng) == 0)
CALL ancmsg(msgid=3013,msgtype=msgerror,anmode=aninfo,i1=ngau,c1=titr,i2=ns)
278 WRITE (iout,'(/,A,I10)')' SHELL NUMBER . . . . . . . . . . . . .',ns
279 WRITE (iout,'(A,1PG20.13)')' DISTANCE . . . . . . . . . . . . . . .',dist
280 ENDIF
281 WRITE (iout,'(A,1PG20.13)')' 4-POLE BUTTERWORTH CORNER FREQUENCY. .',ff
282
283 ENDDO
284
285
286
287
288 CALL vdouble(nom_opt,lnopt1,nbgauge,mess,0,bid)
289
290 RETURN
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)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
integer function usr2sys(iu, itabm1, mess, id)
subroutine vdouble(list, ilist, nlist, mess, ir, rlist)