41 fstrheat%MATERIALtot = 0
42 fstrheat%AMPLITUDEtot= 0
43 fstrheat%T_FIX_tot = 0
44 fstrheat%Q_NOD_tot = 0
45 fstrheat%Q_VOL_tot = 0
46 fstrheat%Q_SUF_tot = 0
47 fstrheat%R_SUF_tot = 0
48 fstrheat%H_SUF_tot = 0
50 fstrheat%beta = -1.0d0
59 integer(kind=kint) :: ctrl
62 integer(kind=kint) :: rcode
63 integer(kind=kint) :: n
64 character(len=HECMW_NAME_LEN) :: mName
65 integer(kind=kint) :: i
77 p%PARAM%analysis_n = n
85 p%PARAM%timepoint_id = 0
100 if(
associated(p%PARAM%timepoints) )
then
101 do i=1,
size(p%PARAM%timepoints)
102 if(
hecmw_streqr( p%PARAM%timepoints(i)%name, mname ) )
then
103 p%PARAM%timepoint_id = i;
exit
114 p%HEAT%STEP_DLTIME = p%PARAM%dtime
115 p%HEAT%STEP_EETIME = p%PARAM%etime
116 p%HEAT%STEP_DELMIN = p%PARAM%dtmin
117 p%HEAT%STEP_DELMAX = p%PARAM%delmax
118 p%HEAT%timepoint_id = p%PARAM%timepoint_id
128 integer(kind=kint) :: ctrl
131 integer(kind=kint) :: rcode
132 character(HECMW_NAME_LEN) :: amp
133 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
134 real(kind=kreal),
pointer :: value(:)
135 integer(kind=kint) :: n
141 allocate( grp_id_name(n))
146 grp_id_name, hecmw_name_len,
value )
151 deallocate( grp_id_name )
161 integer(kind=kint) :: ctrl
164 integer(kind=kint) :: rcode
165 character(HECMW_NAME_LEN) :: amp
166 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
167 real(kind=kreal),
pointer :: value(:)
168 integer(kind=kint) :: n
174 allocate( grp_id_name(n))
179 grp_id_name, hecmw_name_len,
value )
184 deallocate( grp_id_name )
195 integer(kind=kint) :: ctrl
198 integer(kind=kint) :: rcode
199 character(HECMW_NAME_LEN) :: amp
200 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
201 integer(kind=kint),
pointer :: load_type(:)
202 real(kind=kreal),
pointer :: value(:)
203 integer(kind=kint) :: n
209 allocate( grp_id_name(n))
210 allocate( load_type(n))
215 grp_id_name, hecmw_name_len, load_type,
value )
220 deallocate( grp_id_name )
221 deallocate( load_type )
232 integer(kind=kint) :: ctrl
235 integer(kind=kint) :: rcode
236 character(HECMW_NAME_LEN) :: amp
237 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
238 real(kind=kreal),
pointer :: value(:)
239 integer(kind=kint) :: n
245 allocate( grp_id_name(n))
250 grp_id_name, hecmw_name_len,
value )
255 deallocate( grp_id_name )
266 integer(kind=kint) :: ctrl
269 integer(kind=kint) :: rcode
270 character(HECMW_NAME_LEN) :: amp1, amp2
271 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
272 integer(kind=kint),
pointer :: load_type(:)
273 real(kind=kreal),
pointer :: value(:)
274 real(kind=kreal),
pointer :: shink(:)
275 integer(kind=kint) :: n
281 allocate( grp_id_name(n))
282 allocate( load_type(n))
290 grp_id_name, hecmw_name_len, load_type,
value, shink )
294 n, grp_id_name, load_type,
value, shink )
296 deallocate( grp_id_name )
297 deallocate( load_type )
309 integer(kind=kint) :: ctrl
312 integer(kind=kint) :: rcode
313 character(HECMW_NAME_LEN) :: amp1, amp2
314 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
315 real(kind=kreal),
pointer :: value(:)
316 real(kind=kreal),
pointer :: shink(:)
317 integer(kind=kint) :: n
323 allocate( grp_id_name(n))
330 grp_id_name, hecmw_name_len,
value, shink )
334 n, grp_id_name,
value, shink )
336 deallocate( grp_id_name )
348 integer(kind=kint) :: ctrl
351 integer(kind=kint) :: rcode
352 character(HECMW_NAME_LEN) :: amp1, amp2
353 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
354 integer(kind=kint),
pointer :: load_type(:)
355 real(kind=kreal),
pointer :: value(:)
356 real(kind=kreal),
pointer :: shink(:)
357 integer(kind=kint) :: n
363 allocate( grp_id_name(n))
364 allocate( load_type(n))
371 grp_id_name, hecmw_name_len, load_type,
value, shink )
375 n, grp_id_name, load_type,
value, shink )
377 deallocate( grp_id_name )
378 deallocate( load_type )
390 integer(kind=kint) :: ctrl
393 integer(kind=kint) :: rcode
394 character(HECMW_NAME_LEN) :: amp1, amp2
395 character(HECMW_NAME_LEN),
pointer :: grp_id_name(:)
396 real(kind=kreal),
pointer :: value(:)
397 real(kind=kreal),
pointer :: shink(:)
398 integer(kind=kint) :: n
404 allocate( grp_id_name(n))
414 n, grp_id_name,
value, shink )
416 deallocate( grp_id_name )
426 integer(kind=kint) :: ctrl
429 type(hecmwst_local_mesh),
pointer :: hecMESH
437 fstrheat%WL_tot = slot%last
439 write(*,*)
'### Error: Fail in read in Weld Line definition : ' , fstrheat%WL_tot
440 write(
ilog,*)
'### Error: Fail in read in Weld Line definition : ', fstrheat%WL_tot
441 stop hecmw_exit_input
449 amp_name, n, grp_names, vals )
451 type(hecmwst_local_mesh),
target :: hecMESH
454 character(len=*),
intent(in) :: header_name
455 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name
456 integer(kind=kint),
intent(in) :: n
457 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
458 real(kind=kreal),
intent(in) :: vals(:)
460 integer(kind=kint) :: amp_id
461 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
462 integer(kind=kint),
pointer :: member(:)
463 integer(kind=kint) :: local_id, rtc
474 else if( rtc < 0 )
then
482 old_size = fstrheat%T_FIX_tot
483 new_size = old_size + m
487 fstrheat%T_FIX_tot = new_size
490 member => fstrheat%T_FIX_node(head:)
498 else if( rtc < 0 )
then
499 member_n =
get_grp_member( hecmesh,
'node_grp', grp_names(i), member )
504 member => member( member_n+1 : )
507 fstrheat%T_FIX_val (id) = vals(i)
508 fstrheat%T_FIX_ampl (id) = amp_id
520 type(hecmwst_local_mesh),
target :: hecMESH
522 character(len=*),
intent(in) :: header_name
523 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name
524 integer(kind=kint),
intent(in) :: n
525 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
526 real(kind=kreal),
intent(in) :: vals(:)
528 integer(kind=kint) :: amp_id
529 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
530 integer(kind=kint),
pointer :: member(:)
531 integer(kind=kint) :: local_id, rtc
542 else if( rtc < 0 )
then
550 old_size = fstrheat%Q_NOD_tot
551 new_size = old_size + m
555 fstrheat%Q_NOD_tot = new_size
558 member => fstrheat%Q_NOD_node(head:)
565 else if( rtc < 0 )
then
566 member_n =
get_grp_member( hecmesh,
'node_grp', grp_names(i), member )
570 if( i<n ) member => member( member_n+1 : )
572 fstrheat%Q_NOD_val (id) = vals(i)
573 fstrheat%Q_NOD_ampl (id) = amp_id
586 type(hecmwst_local_mesh),
target :: hecMESH
588 character(len=*),
intent(in) :: header_name
589 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name
590 integer(kind=kint),
intent(in) :: n
591 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
592 integer(kind=kint),
intent(in) :: load_types(:)
593 real(kind=kreal),
intent(in) :: vals(:)
595 integer(kind=kint) :: amp_id
596 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
597 integer(kind=kint),
pointer :: member(:)
598 integer(kind=kint) :: local_id, rtc
608 else if( rtc < 0 )
then
616 old_size = fstrheat%Q_SUF_tot
617 new_size = old_size + m
622 fstrheat%Q_SUF_tot = new_size
625 member => fstrheat%Q_SUF_elem(head:)
632 else if( rtc < 0 )
then
633 member_n =
get_grp_member( hecmesh,
'elem_grp', grp_names(i), member )
637 if( i<n ) member => member( member_n+1 : )
639 fstrheat%Q_SUF_surf (id) = load_types(i)
640 fstrheat%Q_SUF_val (id) = vals(i)
641 fstrheat%Q_SUF_ampl (id) = amp_id
653 type(hecmwst_local_mesh),
target :: hecMESH
655 character(len=*),
intent(in) :: header_name
656 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name
657 integer(kind=kint),
intent(in) :: n
658 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
659 real(kind=kreal),
intent(in) :: vals(:)
661 integer(kind=kint) :: amp_id
662 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
663 integer(kind=kint),
pointer :: member1(:), member2(:)
676 old_size = fstrheat%Q_SUF_tot
677 new_size = old_size + m
682 fstrheat%Q_SUF_tot = new_size
685 member1 => fstrheat%Q_SUF_elem(head:)
686 member2 => fstrheat%Q_SUF_surf(head:)
689 member_n =
get_grp_member( hecmesh,
'surf_grp', grp_names(i), member1, member2 )
691 member1 => member1( member_n+1 : )
692 member2 => member2( member_n+1 : )
695 fstrheat%Q_SUF_val (id) = vals(i)
696 fstrheat%Q_SUF_ampl (id) = amp_id
707 n, grp_names, load_types, vals, sinks )
709 type(hecmwst_local_mesh),
target :: hecMESH
711 character(len=*),
intent(in) :: header_name
712 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name1, amp_name2
713 integer(kind=kint),
intent(in) :: n
714 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
715 integer(kind=kint),
intent(in) :: load_types(:)
716 real(kind=kreal),
intent(in) :: vals(:)
717 real(kind=kreal),
intent(in) :: sinks(:)
719 integer(kind=kint) :: amp_id1, amp_id2
720 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
721 integer(kind=kint),
pointer :: member(:)
722 integer(kind=kint) :: local_id, rtc
733 else if( rtc < 0 )
then
741 old_size = fstrheat%H_SUF_tot
742 new_size = old_size + m
747 fstrheat%H_SUF_tot = new_size
750 member => fstrheat%H_SUF_elem(head:)
757 else if( rtc < 0 )
then
758 member_n =
get_grp_member( hecmesh,
'elem_grp', grp_names(i), member )
762 if( i<n ) member => member( member_n+1 : )
764 fstrheat%H_SUF_surf (id) = load_types(i)
765 fstrheat%H_SUF_val (id,1) = vals(i)
766 fstrheat%H_SUF_val (id,2) = sinks(i)
767 fstrheat%H_SUF_ampl (id,1) = amp_id1
768 fstrheat%H_SUF_ampl (id,2) = amp_id2
779 n, grp_names, vals, sinks )
781 type(hecmwst_local_mesh),
target :: hecMESH
783 character(len=*),
intent(in) :: header_name
784 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name1, amp_name2
785 integer(kind=kint),
intent(in) :: n
786 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
787 real(kind=kreal),
intent(in) :: vals(:)
788 real(kind=kreal),
intent(in) :: sinks(:)
790 integer(kind=kint) :: amp_id1, amp_id2
791 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
792 integer(kind=kint),
pointer :: member1(:), member2(:)
806 old_size = fstrheat%H_SUF_tot
807 new_size = old_size + m
812 fstrheat%H_SUF_tot = new_size
815 member1 => fstrheat%H_SUF_elem(head:)
816 member2 => fstrheat%H_SUF_surf(head:)
819 member_n =
get_grp_member( hecmesh,
'surf_grp', grp_names(i), member1, member2 )
821 member1 => member1( member_n+1 : )
822 member2 => member2( member_n+1 : )
825 fstrheat%H_SUF_val (id,1) = vals(i)
826 fstrheat%H_SUF_val (id,2) = sinks(i)
827 fstrheat%H_SUF_ampl (id,1) = amp_id1
828 fstrheat%H_SUF_ampl (id,2) = amp_id2
839 n, grp_names, load_types, vals, sinks )
841 type(hecmwst_local_mesh),
target :: hecMESH
843 character(len=*),
intent(in) :: header_name
844 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name1, amp_name2
845 integer(kind=kint),
intent(in) :: n
846 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
847 integer(kind=kint),
intent(in) :: load_types(:)
848 real(kind=kreal),
intent(in) :: vals(:)
849 real(kind=kreal),
intent(in) :: sinks(:)
851 integer(kind=kint) :: amp_id1, amp_id2
852 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
853 integer(kind=kint),
pointer :: member(:)
854 integer(kind=kint) :: local_id, rtc
865 else if( rtc < 0 )
then
873 old_size = fstrheat%R_SUF_tot
874 new_size = old_size + m
879 fstrheat%R_SUF_tot = new_size
882 member => fstrheat%R_SUF_elem(head:)
889 else if( rtc < 0 )
then
890 member_n =
get_grp_member( hecmesh,
'elem_grp', grp_names(i), member )
894 if( i<n ) member => member( member_n+1 : )
896 fstrheat%R_SUF_surf (id) = load_types(i)
897 fstrheat%R_SUF_val (id,1) = vals(i)
898 fstrheat%R_SUF_val (id,2) = sinks(i)
899 fstrheat%R_SUF_ampl (id,1) = amp_id1
900 fstrheat%R_SUF_ampl (id,2) = amp_id2
911 n, grp_names, vals, sinks )
913 type(hecmwst_local_mesh),
target :: hecMESH
915 character(len=*),
intent(in) :: header_name
916 character(len=HECMW_NAME_LEN),
intent(in) :: amp_name1, amp_name2
917 integer(kind=kint),
intent(in) :: n
918 character(len=HECMW_NAME_LEN),
intent(in) :: grp_names(:)
919 real(kind=kreal),
intent(in) :: vals(:)
920 real(kind=kreal),
intent(in) :: sinks(:)
922 integer(kind=kint) :: amp_id1, amp_id2
923 integer(kind=kint) :: i, j, m, head, id, member_n, old_size, new_size
924 integer(kind=kint),
pointer :: member1(:), member2(:)
938 old_size = fstrheat%R_SUF_tot
939 new_size = old_size + m
944 fstrheat%R_SUF_tot = new_size
947 member1 => fstrheat%R_SUF_elem(head:)
948 member2 => fstrheat%R_SUF_surf(head:)
951 member_n =
get_grp_member( hecmesh,
'surf_grp', grp_names(i), member1, member2 )
953 member1 => member1( member_n+1 : )
954 member2 => member2( member_n+1 : )
957 fstrheat%R_SUF_val (id,1) = vals(i)
958 fstrheat%R_SUF_val (id,2) = sinks(i)
959 fstrheat%R_SUF_ampl (id,1) = amp_id1
960 fstrheat%R_SUF_ampl (id,2) = amp_id2
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 fstr_ctrl_err_stop
integer(kind=kint) function get_local_member_index(hecMESH, type_name, name, local_id)
subroutine amp_name_to_id(hecMESH, header_name, aname, id)
subroutine reallocate_real(array, n)
subroutine reallocate_integer(array, n)
integer(kind=kint) function get_sorted_local_member_index(hecMESH, hecPARAM, type_name, name, local_id)
This module contains auxiliary functions in calculation setup.
subroutine hecmw_expand_real_array2(array, column, old_size, new_size)
subroutine hecmw_expand_integer_array(array, old_size, new_size)
subroutine hecmw_expand_real_array(array, old_size, new_size)
integer(kind=kint) function get_grp_member(hecMESH, grp_type_name, name, member1, member2)
subroutine hecmw_expand_integer_array2(array, column, old_size, new_size)
integer(kind=kint) function get_grp_member_n(hecMESH, grp_type_name, name)
logical function hecmw_streqr(s1, s2)
This module provides subroutines to initialize fstr_heat and to read the cards of heat analysis into ...
subroutine fstr_setup_sfilm(ctrl, P)
Read in !SFILM !
subroutine fstr_setup_sradiate(ctrl, P)
Read in !SRADIATE !
subroutine fstr_heat_append_film(hecMESH, fstrHEAT, header_name, amp_name1, amp_name2, n, grp_names, load_types, vals, sinks)
Append !FILM !
subroutine fstr_heat_append_dflux(hecMESH, fstrHEAT, header_name, amp_name, n, grp_names, load_types, vals)
Append !DFLUX !
subroutine fstr_setup_dflux(ctrl, P)
Read in !DFLUX !
subroutine fstr_heat_append_radiate(hecMESH, fstrHEAT, header_name, amp_name1, amp_name2, n, grp_names, load_types, vals, sinks)
Append !RADIATE !
subroutine fstr_heat_append_sfilm(hecMESH, fstrHEAT, header_name, amp_name1, amp_name2, n, grp_names, vals, sinks)
Append !SFILM !
subroutine fstr_heat_init(fstrHEAT)
Initial setting of heat analysis.
subroutine fstr_setup_cflux(ctrl, P)
Read in !CFLUX !
subroutine fstr_heat_append_fixtemp(hecMESH, fstrPARAM, fstrHEAT, header_name, amp_name, n, grp_names, vals)
Append !FIXTEMP !
subroutine fstr_setup_heat(ctrl, P)
Read in !HEAT !
subroutine fstr_setup_sflux(ctrl, P)
Read in !SFLUX !
subroutine fstr_setup_film(ctrl, P)
Read in !FILM !
subroutine fstr_heat_append_sflux(hecMESH, fstrHEAT, header_name, amp_name, n, grp_names, vals)
Append !SFLUX !
subroutine fstr_setup_radiate(ctrl, P)
Read in !RADIATE !
subroutine fstr_heat_append_cflux(hecMESH, fstrHEAT, header_name, amp_name, n, grp_names, vals)
Append !CFLUX !
subroutine fstr_setup_fixtemp(ctrl, P)
Read in !FIXTEMP !
subroutine fstr_setup_weld_line(ctrl, P)
Read in !WELD_LINE !
subroutine fstr_heat_append_sradiate(hecMESH, fstrHEAT, header_name, amp_name1, amp_name2, n, grp_names, vals, sinks)
Append !SRADIATE !
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter ilog
FILE HANDLER.
Places of a card in its sequence, from first to last. A card counted one by one has one place (first ...
Package of all data needs to initialize.
Data for HEAT ANSLYSIS (fstrHEAT)
FSTR INNER CONTROL PARAMETERS (fstrPARAM)