15 subroutine pc_strupr( s )
18 integer :: i, n, a, da
21 da = iachar(
'a') - iachar(
'A')
24 if( a > iachar(
'Z'))
then
29 end subroutine pc_strupr
36 integer(kind=kint) :: ctrl
37 real(kind=kreal),
pointer ::
dt(:)
38 real(kind=kreal),
pointer ::
etime(:)
39 real(kind=kreal),
pointer :: dtmin(:)
40 real(kind=kreal),
pointer :: deltmx(:)
41 integer(kind=kint),
pointer ::
itmax(:)
42 real(kind=kreal),
pointer ::
eps(:)
43 character(len=*),
intent(out) :: tpname
45 integer(kind=kint) :: result
46 real(kind=kreal) :: beta, t_beta
59 if(0.0d0 <= t_beta .and. t_beta <= 1.0d0) beta = t_beta
67 integer(kind=kint) :: ctrl
68 character(len=HECMW_NAME_LEN) :: amp
69 character(len=HECMW_NAME_LEN) :: node_grp_name(:)
70 integer(kind=kint) :: node_grp_name_len
71 real(kind=kreal),
pointer :: value(:)
74 character(len=HECMW_NAME_LEN) :: data_fmt,ss
81 write(ss,*) node_grp_name_len
82 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
92 integer(kind=kint) :: ctrl
93 character(len=HECMW_NAME_LEN) :: amp
94 character(len=HECMW_NAME_LEN) :: node_grp_name(:)
95 integer(kind=kint) :: node_grp_name_len
96 real(kind=kreal),
pointer :: value(:)
99 character(len=HECMW_NAME_LEN) :: data_fmt,ss
106 write(ss,*) node_grp_name_len
107 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
116 integer(kind=kint) :: ctrl
117 character(len=HECMW_NAME_LEN) :: amp
118 character(len=HECMW_NAME_LEN) :: elem_grp_name(:)
119 integer(kind=kint) :: elem_grp_name_len
120 integer(kind=kint),
pointer :: load_type(:)
121 real(kind=kreal),
pointer :: value(:)
124 integer(kind=kint),
parameter :: type_name_size = 5
125 integer(kind=kint) :: i, n
126 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
127 character(len=type_name_size),
pointer :: type_name_list(:)
128 integer(kind=kint) :: rcode
129 integer(kind=kint) :: lid = -1
136 write(s1,*) elem_grp_name_len
137 write(s2,*) type_name_size
138 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'r '
141 allocate( type_name_list(n) )
145 if( rcode /= 0 )
then
146 deallocate( type_name_list )
152 call pc_strupr( type_name_list(i) )
153 if( type_name_list(i)(1:2) ==
'BF' ) then; lid = 0
154 else if( type_name_list(i)(1:2) ==
'S0' ) then; lid = 1
155 else if( type_name_list(i)(1:2) ==
'S1' ) then; lid = 1
156 else if( type_name_list(i)(1:2) ==
'S2' ) then; lid = 2
157 else if( type_name_list(i)(1:2) ==
'S3' ) then; lid = 3
158 else if( type_name_list(i)(1:2) ==
'S4' ) then; lid = 4
159 else if( type_name_list(i)(1:2) ==
'S5' ) then; lid = 5
160 else if( type_name_list(i)(1:2) ==
'S6' ) then; lid = 6
163 write(
ilog,*)
'Error : !DFLUX : Load type ',type_name_list(i),
' is unknown'
164 deallocate( type_name_list )
170 deallocate( type_name_list )
180 integer(kind=kint) :: ctrl
181 character(len=HECMW_NAME_LEN) :: amp
182 character(len=HECMW_NAME_LEN) :: surface_grp_name(:)
183 integer(kind=kint) :: surface_grp_name_len
184 real(kind=kreal),
pointer :: value(:)
187 character(len=HECMW_NAME_LEN) :: data_fmt,ss
194 write(ss,*) surface_grp_name_len
195 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'r '
205 function fstr_ctrl_get_film( ctrl, amp1, amp2, elem_grp_name, elem_grp_name_len, load_type, value, sink)
207 integer(kind=kint) :: ctrl
208 character(len=HECMW_NAME_LEN) :: amp1
209 character(len=HECMW_NAME_LEN) :: amp2
210 character(len=HECMW_NAME_LEN) :: elem_grp_name(:)
211 integer(kind=kint) :: elem_grp_name_len
212 integer(kind=kint),
pointer :: load_type(:)
213 real(kind=kreal),
pointer :: value(:)
214 real(kind=kreal),
pointer :: sink(:)
217 integer(kind=kint),
parameter :: type_name_size = 5
218 integer(kind=kint) :: i, n
219 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
220 character(len=type_name_size),
pointer :: type_name_list(:)
221 integer(kind=kint) :: lid
222 integer(kind=kint) :: rcode
230 write(s1,*) elem_grp_name_len
231 write(s2,*) type_name_size
232 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'Rr '
235 allocate( type_name_list(n) )
239 if( rcode /= 0 )
then
240 deallocate( type_name_list )
246 call pc_strupr( type_name_list(i) )
247 if( type_name_list(i)(1:2) ==
'F0' ) then; lid = 1
248 else if( type_name_list(i)(1:2) ==
'F1' ) then; lid = 1
249 else if( type_name_list(i)(1:2) ==
'F2' ) then; lid = 2
250 else if( type_name_list(i)(1:2) ==
'F3' ) then; lid = 3
251 else if( type_name_list(i)(1:2) ==
'F4' ) then; lid = 4
252 else if( type_name_list(i)(1:2) ==
'F5' ) then; lid = 5
253 else if( type_name_list(i)(1:2) ==
'F6' ) then; lid = 6
256 write(
ilog,*)
'Error : !FILM : Load type ',type_name_list(i),
' is unknown'
257 deallocate( type_name_list )
263 deallocate( type_name_list )
274 integer(kind=kint) :: ctrl
275 character(len=HECMW_NAME_LEN) :: amp1
276 character(len=HECMW_NAME_LEN) :: amp2
277 character(len=HECMW_NAME_LEN) :: surface_grp_name(:)
278 integer(kind=kint) :: surface_grp_name_len
279 real(kind=kreal),
pointer :: value(:)
280 real(kind=kreal),
pointer :: sink(:)
283 character(len=HECMW_NAME_LEN) :: data_fmt,ss
291 write(ss,*) surface_grp_name_len
292 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
'Rr '
304 integer(kind=kint) :: ctrl
305 character(len=HECMW_NAME_LEN) :: amp1
306 character(len=HECMW_NAME_LEN) :: amp2
307 character(len=HECMW_NAME_LEN) :: elem_grp_name(:)
308 integer(kind=kint) :: elem_grp_name_len
309 integer(kind=kint),
pointer :: load_type(:)
310 real(kind=kreal),
pointer :: value(:)
311 real(kind=kreal),
pointer :: sink(:)
314 integer(kind=kint),
parameter :: type_name_size = 5
315 integer(kind=kint) :: i, n
316 character(len=HECMW_NAME_LEN) :: data_fmt,s1,s2
317 character(len=type_name_size),
pointer :: type_name_list(:)
318 integer(kind=kint) :: lid
319 integer(kind=kint) :: rcode
327 write(s1,*) elem_grp_name_len
328 write(s2,*) type_name_size
329 write(data_fmt,
'(a,a,a,a,a)')
'S',trim(adjustl(s1)),
'S',trim(adjustl(s2)),
'Rr '
332 allocate( type_name_list(n) )
336 if( rcode /= 0 )
then
337 deallocate( type_name_list )
343 call pc_strupr( type_name_list(i) )
344 if( type_name_list(i)(1:2) ==
'R0' ) then; lid = 1
345 else if( type_name_list(i)(1:2) ==
'R1' ) then; lid = 1
346 else if( type_name_list(i)(1:2) ==
'R2' ) then; lid = 2
347 else if( type_name_list(i)(1:2) ==
'R3' ) then; lid = 3
348 else if( type_name_list(i)(1:2) ==
'R4' ) then; lid = 4
349 else if( type_name_list(i)(1:2) ==
'R5' ) then; lid = 5
350 else if( type_name_list(i)(1:2) ==
'R6' ) then; lid = 6
353 write(
ilog,*)
'Error : !RADIATE : Load type ',type_name_list(i),
' is unknown'
354 deallocate( type_name_list )
360 deallocate( type_name_list )
371 integer(kind=kint) :: ctrl
372 character(len=HECMW_NAME_LEN) :: amp1
373 character(len=HECMW_NAME_LEN) :: amp2
374 character(len=HECMW_NAME_LEN) :: surface_grp_name(:)
375 integer(kind=kint) :: surface_grp_name_len
376 real(kind=kreal),
pointer :: value(:)
377 real(kind=kreal),
pointer :: sink(:)
380 character(len=HECMW_NAME_LEN) :: data_fmt
381 character(len=HECMW_NAME_LEN) :: s1
389 write(s1,*) surface_grp_name_len;
390 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'Rr '
403 integer(kind=kint),
intent(in) :: ctrl
404 type(hecmwst_local_mesh),
intent(in) :: hecmesh
405 integer(kind=kint),
intent(in) :: grp_name_len
406 type(
tweldline),
intent(inout) :: weldline
409 character(len=HECMW_NAME_LEN) :: data_fmt
410 character(len=HECMW_NAME_LEN) :: s1, grp_id_name(1)
414 if(
fstr_ctrl_get_data_ex( ctrl, 1,
'RRRR ', weldline%I, weldline%U, weldline%coe, weldline%v )/=0 )
return
415 write(s1,*) grp_name_len
416 write(data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'IRRRR '
418 weldline%n2, weldline%distol, weldline%tstart )/=0 )
return
420 weldline%egrpid = grp_id(1)
int fstr_ctrl_get_param_ex(int *ctrl, const char *param_name, const char *value_list, int *necessity, char *type, void *val)
int fstr_ctrl_get_data_array_ex(int *ctrl, const char *format,...)
int fstr_ctrl_get_data_ex(int *ctrl, int *line_no, const char *format,...)
This module contains control file data obtaining functions for heat conductive analysis.
integer(kind=kint) function fstr_ctrl_get_dflux(ctrl, amp, elem_grp_name, elem_grp_name_len, load_type, value)
Read in !DFLUX (heat)
integer(kind=kint) function fstr_ctrl_get_sflux(ctrl, amp, surface_grp_name, surface_grp_name_len, value)
Read in !SFLUX (heat)
integer(kind=kint) function fstr_ctrl_get_weldline(ctrl, hecMESH, grp_name_len, weldline)
Read in !WELD_LINE (heat)
integer(kind=kint) function fstr_ctrl_get_heat(ctrl, dt, etime, dtmin, deltmx, itmax, eps, tpname, beta)
Read in !HEAT.
integer(kind=kint) function fstr_ctrl_get_film(ctrl, amp1, amp2, elem_grp_name, elem_grp_name_len, load_type, value, sink)
Read in !FILM (heat)
integer(kind=kint) function fstr_ctrl_get_radiate(ctrl, amp1, amp2, elem_grp_name, elem_grp_name_len, load_type, value, sink)
Read in !RADIATE (heat)
integer(kind=kint) function fstr_ctrl_get_cflux(ctrl, amp, node_grp_name, node_grp_name_len, value)
Read in !CFLUX (heat)
integer(kind=kint) function fstr_ctrl_get_fixtemp(ctrl, amp, node_grp_name, node_grp_name_len, value)
Read in !FIXTEMP.
integer(kind=kint) function fstr_ctrl_get_sfilm(ctrl, amp1, amp2, surface_grp_name, surface_grp_name_len, value, sink)
Read in !SFILM (heat)
integer(kind=kint) function fstr_ctrl_get_sradiate(ctrl, amp1, amp2, surface_grp_name, surface_grp_name_len, value, sink)
Read in !SRADIATE (heat)
This module contains auxiliary functions in calculation setup.
subroutine elem_grp_name_to_id(hecMESH, header_name, n, grp_id_name, grp_ID)
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter ilog
FILE HANDLER.
real(kind=kreal) dt
ANALYSIS CONTROL for NLGEOM and HEAT.
-1:not relation, >1:index of coupled_node