10 include
'fstr_ctrl_util_f.inc'
16 subroutine pc_strupr( s )
19 integer :: i, n, a, da
22 da = iachar(
'a') - iachar(
'A')
25 if( a > iachar(
'Z'))
then
30 end subroutine pc_strupr
35 function fstr_ctrl_get_heat( ctrl, dt, etime, dtmin, deltmx, itmax, eps, tpname, beta )
37 integer(kind=kint) :: ctrl
38 real(kind=kreal),
pointer ::
dt(:)
39 real(kind=kreal),
pointer ::
etime(:)
40 real(kind=kreal),
pointer :: dtmin(:)
41 real(kind=kreal),
pointer :: deltmx(:)
42 integer(kind=kint),
pointer ::
itmax(:)
43 real(kind=kreal),
pointer ::
eps(:)
44 character(len=*),
intent(out) :: tpname
46 integer(kind=kint) :: result
47 real(kind=kreal) :: beta, t_beta
60 if(0.0d0 <= t_beta .and. t_beta <= 1.0d0) beta = t_beta
68 integer(kind=kint) :: ctrl
69 character(len=HECMW_NAME_LEN) :: amp
70 character(len=HECMW_NAME_LEN),
target :: node_grp_name(:)
71 character(len=HECMW_NAME_LEN),
pointer:: node_grp_name_p
72 integer(kind=kint) :: node_grp_name_len
73 real(kind=kreal),
pointer :: value(:)
76 character(len=HECMW_NAME_LEN) :: data_fmt,ss
83 write(ss,*) node_grp_name_len
84 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
86 node_grp_name_p => node_grp_name(1)
95 integer(kind=kint) :: ctrl
96 character(len=HECMW_NAME_LEN) :: amp
97 character(len=HECMW_NAME_LEN),
target :: node_grp_name(:)
98 character(len=HECMW_NAME_LEN),
pointer:: node_grp_name_p
99 integer(kind=kint) :: node_grp_name_len
100 real(kind=kreal),
pointer :: value(:)
103 character(len=HECMW_NAME_LEN) :: data_fmt,ss
110 write(ss,*) node_grp_name_len
111 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
113 node_grp_name_p => node_grp_name(1)
119 function fstr_ctrl_get_dflux( ctrl, amp, elem_grp_name, elem_grp_name_len, load_type, value )
121 integer(kind=kint) :: ctrl
122 character(len=HECMW_NAME_LEN) :: amp
123 character(len=HECMW_NAME_LEN),
target :: elem_grp_name(:)
124 character(len=HECMW_NAME_LEN),
pointer:: elem_grp_name_p
125 integer(kind=kint) :: elem_grp_name_len
126 integer(kind=kint),
pointer :: load_type(:)
127 real(kind=kreal),
pointer :: value(:)
130 integer(kind=kint),
parameter :: type_name_size = 5
131 integer(kind=kint) :: i, n
132 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
133 character(len=type_name_size),
pointer :: type_name_list(:)
134 character(len=type_name_size),
pointer :: type_name_list_p
135 integer(kind=kint) :: rcode
136 integer(kind=kint) :: lid = -1
143 write(s1,*) elem_grp_name_len
144 write(s2,*) type_name_size
145 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'r '
148 allocate( type_name_list(n) )
150 elem_grp_name_p => elem_grp_name(1)
151 type_name_list_p => type_name_list(1)
154 if( rcode /= 0 )
then
155 deallocate( type_name_list )
161 call pc_strupr( type_name_list(i) )
162 if( type_name_list(i)(1:2) ==
'BF' ) then; lid = 0
163 else if( type_name_list(i)(1:2) ==
'S0' ) then; lid = 1
164 else if( type_name_list(i)(1:2) ==
'S1' ) then; lid = 1
165 else if( type_name_list(i)(1:2) ==
'S2' ) then; lid = 2
166 else if( type_name_list(i)(1:2) ==
'S3' ) then; lid = 3
167 else if( type_name_list(i)(1:2) ==
'S4' ) then; lid = 4
168 else if( type_name_list(i)(1:2) ==
'S5' ) then; lid = 5
169 else if( type_name_list(i)(1:2) ==
'S6' ) then; lid = 6
172 write(
ilog,*)
'Error : !DFLUX : Load type ',type_name_list(i),
' is unknown'
173 deallocate( type_name_list )
179 deallocate( type_name_list )
189 integer(kind=kint) :: ctrl
190 character(len=HECMW_NAME_LEN) :: amp
191 character(len=HECMW_NAME_LEN),
target :: surface_grp_name(:)
192 character(len=HECMW_NAME_LEN),
pointer:: surface_grp_name_p
193 integer(kind=kint) :: surface_grp_name_len
194 real(kind=kreal),
pointer :: value(:)
197 character(len=HECMW_NAME_LEN) :: data_fmt,ss
204 write(ss,*) surface_grp_name_len
205 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
207 surface_grp_name_p => surface_grp_name(1)
216 function fstr_ctrl_get_film( ctrl, amp1, amp2, elem_grp_name, elem_grp_name_len, load_type, value, sink)
218 integer(kind=kint) :: ctrl
219 character(len=HECMW_NAME_LEN) :: amp1
220 character(len=HECMW_NAME_LEN) :: amp2
221 character(len=HECMW_NAME_LEN),
target :: elem_grp_name(:)
222 character(len=HECMW_NAME_LEN),
pointer:: elem_grp_name_p
223 integer(kind=kint) :: elem_grp_name_len
224 integer(kind=kint),
pointer :: load_type(:)
225 real(kind=kreal),
pointer :: value(:)
226 real(kind=kreal),
pointer :: sink(:)
229 integer(kind=kint),
parameter :: type_name_size = 5
230 integer(kind=kint) :: i, n
231 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
232 character(len=type_name_size),
pointer :: type_name_list(:)
233 character(len=type_name_size),
pointer :: type_name_list_p
234 integer(kind=kint) :: lid
235 integer(kind=kint) :: rcode
243 write(s1,*) elem_grp_name_len
244 write(s2,*) type_name_size
245 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'Rr '
248 allocate( type_name_list(n) )
250 elem_grp_name_p => elem_grp_name(1)
251 type_name_list_p => type_name_list(1)
254 if( rcode /= 0 )
then
255 deallocate( type_name_list )
261 call pc_strupr( type_name_list(i) )
262 if( type_name_list(i)(1:2) ==
'F0' ) then; lid = 1
263 else if( type_name_list(i)(1:2) ==
'F1' ) then; lid = 1
264 else if( type_name_list(i)(1:2) ==
'F2' ) then; lid = 2
265 else if( type_name_list(i)(1:2) ==
'F3' ) then; lid = 3
266 else if( type_name_list(i)(1:2) ==
'F4' ) then; lid = 4
267 else if( type_name_list(i)(1:2) ==
'F5' ) then; lid = 5
268 else if( type_name_list(i)(1:2) ==
'F6' ) then; lid = 6
271 write(
ilog,*)
'Error : !FILM : Load type ',type_name_list(i),
' is unknown'
272 deallocate( type_name_list )
278 deallocate( type_name_list )
287 function fstr_ctrl_get_sfilm( ctrl, amp1, amp2, surface_grp_name, surface_grp_name_len, value, sink)
289 integer(kind=kint) :: ctrl
290 character(len=HECMW_NAME_LEN) :: amp1
291 character(len=HECMW_NAME_LEN) :: amp2
292 character(len=HECMW_NAME_LEN),
target :: surface_grp_name(:)
293 character(len=HECMW_NAME_LEN),
pointer:: surface_grp_name_p
294 integer(kind=kint) :: surface_grp_name_len
295 real(kind=kreal),
pointer :: value(:)
296 real(kind=kreal),
pointer :: sink(:)
299 character(len=HECMW_NAME_LEN) :: data_fmt,ss
307 write(ss,*) surface_grp_name_len
308 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'Rr '
310 surface_grp_name_p => surface_grp_name(1)
319 function fstr_ctrl_get_radiate( ctrl, amp1, amp2, elem_grp_name, elem_grp_name_len, load_type, value, sink)
321 integer(kind=kint) :: ctrl
322 character(len=HECMW_NAME_LEN) :: amp1
323 character(len=HECMW_NAME_LEN) :: amp2
324 character(len=HECMW_NAME_LEN),
target :: elem_grp_name(:)
325 character(len=HECMW_NAME_LEN),
pointer:: elem_grp_name_p
326 integer(kind=kint) :: elem_grp_name_len
327 integer(kind=kint),
pointer :: load_type(:)
328 real(kind=kreal),
pointer :: value(:)
329 real(kind=kreal),
pointer :: sink(:)
332 integer(kind=kint),
parameter :: type_name_size = 5
333 integer(kind=kint) :: i, n
334 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
335 character(len=type_name_size),
pointer :: type_name_list(:)
336 character(len=type_name_size),
pointer :: type_name_list_p
337 integer(kind=kint) :: lid
338 integer(kind=kint) :: rcode
346 write(s1,*) elem_grp_name_len
347 write(s2,*) type_name_size
348 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'Rr '
351 allocate( type_name_list(n) )
353 elem_grp_name_p => elem_grp_name(1)
354 type_name_list_p => type_name_list(1)
357 if( rcode /= 0 )
then
358 deallocate( type_name_list )
364 call pc_strupr( type_name_list(i) )
365 if( type_name_list(i)(1:2) ==
'R0' ) then; lid = 1
366 else if( type_name_list(i)(1:2) ==
'R1' ) then; lid = 1
367 else if( type_name_list(i)(1:2) ==
'R2' ) then; lid = 2
368 else if( type_name_list(i)(1:2) ==
'R3' ) then; lid = 3
369 else if( type_name_list(i)(1:2) ==
'R4' ) then; lid = 4
370 else if( type_name_list(i)(1:2) ==
'R5' ) then; lid = 5
371 else if( type_name_list(i)(1:2) ==
'R6' ) then; lid = 6
374 write(
ilog,*)
'Error : !RADIATE : Load type ',type_name_list(i),
' is unknown'
375 deallocate( type_name_list )
381 deallocate( type_name_list )
392 integer(kind=kint) :: ctrl
393 character(len=HECMW_NAME_LEN) :: amp1
394 character(len=HECMW_NAME_LEN) :: amp2
395 character(len=HECMW_NAME_LEN),
target :: surface_grp_name(:)
396 character(len=HECMW_NAME_LEN),
pointer:: surface_grp_name_p
397 integer(kind=kint) :: surface_grp_name_len
398 real(kind=kreal),
pointer :: value(:)
399 real(kind=kreal),
pointer :: sink(:)
402 character(len=HECMW_NAME_LEN) :: data_fmt
403 character(len=HECMW_NAME_LEN) :: s1
411 write(s1,*) surface_grp_name_len;
412 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'Rr '
414 surface_grp_name_p => surface_grp_name(1)
426 integer(kind=kint),
intent(in) :: ctrl
427 type(hecmwst_local_mesh),
intent(in) :: hecmesh
428 integer(kind=kint),
intent(in) :: grp_name_len
429 type(
tweldline),
intent(inout) :: weldline
432 character(len=HECMW_NAME_LEN) :: data_fmt
433 character(len=HECMW_NAME_LEN) :: s1, grp_id_name(1)
437 if(
fstr_ctrl_get_data_ex( ctrl, 1,
'RRRR ', weldline%I, weldline%U, weldline%coe, weldline%v )/=0 )
return
438 write(s1,*) grp_name_len
439 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'IRRRR '
441 weldline%n2, weldline%distol, weldline%tstart )/=0 )
return
443 weldline%egrpid = grp_id(1)