20 subroutine pc_strupr( s )
23 integer :: i, n, a, da
26 da = iachar(
'a') - iachar(
'A')
29 if( a > iachar(
'Z'))
then
34 end subroutine pc_strupr
39 integer(kind=kint) :: ctrl
40 integer(kind=kint) :: type
44 integer(kind=kint) :: ipt
45 character(len=80) :: s
49 s =
'ELEMCHECK,STATIC,EIGEN,HEAT,DYNAMIC,NLSTATIC,STATICEIGEN,NZPROF '
68 integer(kind=kint) :: ctrl
69 integer(kind=kint) :: method
72 integer(kind=kint) :: ipt
73 character(len=80) :: s
77 s =
'NEWTON,QUASINEWTON '
84 iterpremax, nrest, nBFGS, scaling, &
85 dumptype, dumpexit, usejad, ncolor_in, mpc_method, estcond, method2, recyclepre, &
86 solver_opt, contact_elim, &
87 resid, singma_diag, sigma, thresh, filter )
88 integer(kind=kint) :: ctrl
89 integer(kind=kint) :: method
90 integer(kind=kint) :: precond
91 integer(kind=kint) :: nset
92 integer(kind=kint) :: iterlog
93 integer(kind=kint) :: timelog
94 integer(kind=kint) :: steplog
95 integer(kind=kint) :: nier
96 integer(kind=kint) :: iterpremax
97 integer(kind=kint) :: nrest
98 integer(kind=kint) :: nbfgs
99 integer(kind=kint) :: scaling
100 integer(kind=kint) :: dumptype
101 integer(kind=kint) :: dumpexit
102 integer(kind=kint) :: usejad
103 integer(kind=kint) :: ncolor_in
104 integer(kind=kint) :: mpc_method
105 integer(kind=kint) :: estcond
106 integer(kind=kint) :: method2
107 integer(kind=kint) :: recyclepre
108 integer(kind=kint) :: solver_opt(10)
109 integer(kind=kint) :: contact_elim
110 real(kind=kreal) :: resid
111 real(kind=kreal) :: singma_diag
112 real(kind=kreal) :: sigma
113 real(kind=kreal) :: thresh
114 real(kind=kreal) :: filter
117 character(92) :: mlist =
'1,2,3,4,101,CG,BiCGSTAB,GMRES,GPBiCG,GMRESR,GMRESREN,DIRECT,DIRECTmkl,DIRECTlag,MUMPS,MKL '
119 character(24) :: dlist =
'0,1,2,3,NONE,MM,CSR,BSR '
121 integer(kind=kint) :: number_number = 5
122 integer(kind=kint) :: indirect_number = 6
123 integer(kind=kint) :: iter, time, sclg, dmpt, dmpx, usjd, step
138 if(
fstr_ctrl_get_param_ex( ctrl,
'PRECOND ',
'1,2,3,4,5,6,7,8,9,10,11,12,20,21,30,31,32 ' ,0,
'I', precond ) /= 0)
return
152 if( method > number_number )
then
153 method = method - number_number
154 if( method > indirect_number )
then
156 method = method - indirect_number + 100
157 if( method == 103 ) method = 101
158 if( method == 105 ) method = 102
161 if( method2 > number_number )
then
162 method2 = method2 - number_number
163 if( method2 > indirect_number )
then
165 method2 = method2 - indirect_number + 100
170 if( dumptype >= 4 )
then
171 dumptype = dumptype - 4
176 if(
fstr_ctrl_get_data_ex( ctrl, 1,
'iiiiii ', nier, iterpremax, nrest, ncolor_in, recyclepre, nbfgs )/= 0)
return
179 if( precond == 20 .or. precond == 21)
then
181 else if( precond == 5 )
then
183 solver_opt(1), solver_opt(2), solver_opt(3), solver_opt(4), solver_opt(5), &
184 solver_opt(6), solver_opt(7), solver_opt(8), solver_opt(9), solver_opt(10) )/= 0)
return
185 else if( method == 101 )
then
203 integer(kind=kint) :: ctrl
204 character(len=HECMW_NAME_LEN) :: amp
205 integer(kind=kint) :: iproc
208 integer(kind=kint) :: ipt = 0
209 integer(kind=kint) :: ip = 0
217 if( ipt == 2 .or. ip == 1 ) iproc = 1
227 integer(kind=kint),
intent(in) :: ctrl
228 type (hecmwst_local_mesh),
intent(in) :: hecmesh
230 character(len=*),
intent(out) :: tpname
231 character(len=*),
intent(out) :: apname
233 character(len=HECMW_NAME_LEN) :: data_fmt,ss, data_fmt1
234 character(len=HECMW_NAME_LEN) :: amp
235 character(len=HECMW_NAME_LEN) :: header_name
236 integer(kind=kint) :: bcid
237 integer(kind=kint) :: i, n, sn, ierr
238 integer(kind=kint) :: bc_n, load_n, contact_n, elemact_n
239 real(kind=kreal) :: fn, f1, f2, f3
243 write(ss,*) hecmw_name_len
244 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'I '
245 write( data_fmt1,
'(a,a,a)')
'S', trim(adjustl(ss)),
'rrr '
252 steps%initdt = 1.d0/steps%num_substep
262 if( len( trim(amp) )>0 )
then
278 read( ss, * , iostat=ierr ) fn
282 steps%elapsetime = f1
284 steps%mindt = min(f2,steps%initdt)
287 steps%num_substep = max(int((f1+0.999999999d0*fn)/fn),steps%num_substep)
298 if( trim(header_name) ==
'BOUNDARY' )
then
300 else if( trim(header_name) ==
'LOAD' )
then
302 else if( trim(header_name) ==
'CONTACT' )
then
303 contact_n = contact_n+1
304 else if( trim(header_name) ==
'ELEMACT' )
then
305 elemact_n = elemact_n+1
306 else if( trim(header_name) ==
'TEMPERATURE' )
then
311 if( bc_n>0 )
allocate( steps%Boundary(bc_n) )
312 if( load_n>0 )
allocate( steps%Load(load_n) )
313 if( contact_n>0 )
allocate( steps%Contact(contact_n) )
314 if( elemact_n>0 )
allocate( steps%ElemActivation(elemact_n) )
322 if( trim(header_name) ==
'BOUNDARY' )
then
324 steps%Boundary(bc_n) = bcid
325 else if( trim(header_name) ==
'LOAD' )
then
327 steps%Load(load_n) = bcid
328 else if( trim(header_name) ==
'CONTACT' )
then
329 contact_n = contact_n+1
330 steps%Contact(contact_n) = bcid
331 else if( trim(header_name) ==
'ELEMACT' )
then
332 elemact_n = elemact_n+1
333 steps%ElemActivation(elemact_n) = bcid
343 integer(kind=kint),
intent(in) :: ctrl
344 type (hecmwst_local_mesh),
intent(inout) :: hecmesh
345 type (
tsection),
pointer,
intent(inout) :: sections(:)
347 integer(kind=kint) :: j, k, sect_id, ori_id, elemopt
348 integer(kind=kint),
save :: cache = 1
349 character(len=HECMW_NAME_LEN) :: sect_orien
350 character(19) :: form341list =
'FI,SELECTIVE_ESNS '
351 character(16) :: form361list =
'FI,BBAR,IC,FBAR '
356 if( sect_id > hecmesh%section%n_sect )
return
360 if( elemopt > 0 ) sections(sect_id)%elemopt341 = elemopt
364 if( elemopt > 0 ) sections(sect_id)%elemopt361 = elemopt
367 hecmesh%section%sect_orien_ID(sect_id) = -1
370 if(
associated(g_localcoordsys) )
then
372 k =
size(g_localcoordsys)
375 if( sect_orien == g_localcoordsys(cache)%sys_name )
then
376 hecmesh%section%sect_orien_ID(sect_id) = cache
384 if( sect_orien == g_localcoordsys(j)%sys_name )
then
385 hecmesh%section%sect_orien_ID(sect_id) = j
399 integer(kind=kint) :: ctrl
400 integer(kind=kint) :: res
401 integer(kind=kint) :: visual
402 integer(kind=kint) :: femap
418 integer(kind=kint) :: ctrl
419 integer(kind=kint) :: echo
430 integer(kind=kint) :: ctrl
431 integer(kind=kint) :: fg_type
432 integer(kind=kint) :: fg_first
433 integer(kind=kint) :: fg_window
434 character(len=HECMW_NAME_LEN) :: surf_id(:)
435 integer(kind=kint) :: surf_id_len
438 character(len=HECMW_NAME_LEN) :: data_fmt,ss
439 write(ss,*) surf_id_len
440 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
' '
443 if(
fstr_ctrl_get_param_ex( ctrl,
'TYPE ',
'1,2,3,4,5,6 ', 0,
'I', fg_type )/= 0)
return
454 integer(kind=kint),
intent(in) :: ctrl
455 real(kind=kreal),
intent(out) :: penalty
459 if( penalty <= 1.0 )
then
461 write(
imsg,*)
"Warging : !MPC : too small penalty: ", penalty
462 write(*,*)
"Warging : !MPC : too small penalty: ", penalty
472 integer(kind=kint),
intent(in) :: ctrl
473 type (hecmwst_local_mesh),
intent(in) :: hecmesh
476 integer(kind=kint) :: rcode, ipos
477 integer(kind=kint) :: n, i, j
478 character(len=HECMW_NAME_LEN) :: data_fmt, ss
479 character(len=HECMW_NAME_LEN),
allocatable :: header_name(:), onoff(:), vtype(:)
481 write( ss, * ) hecmw_name_len
482 write( data_fmt,
'(a,a,a,a,a)')
'S', trim(adjustl(ss)),
'S', trim(adjustl(ss)),
' '
487 outinfo%grp_id_name =
"ALL"
495 allocate( header_name(n), onoff(n), vtype(n) )
496 header_name(:) =
""; vtype(:) =
""; onoff(:) =
""
501 do j = 1, outinfo%num_items
502 if( trim(header_name(i)) == outinfo%keyWord(j) )
then
503 outinfo%on(j) = .true.
504 if( trim(onoff(i)) ==
'OFF' ) outinfo%on(j) = .false.
505 if( len( trim(vtype(i)) )>0 )
then
507 outinfo%vtype(j) = ipos
508 else if( trim(vtype(i)) ==
"SCALER" )
then
509 outinfo%vtype(j) = -1
510 else if( trim(vtype(i)) ==
"VECTOR" )
then
511 outinfo%vtype(j) = -2
512 else if( trim(vtype(i)) ==
"SYMTENSOR" )
then
513 outinfo%vtype(j) = -3
514 else if( trim(vtype(i)) ==
"TENSOR" )
then
515 outinfo%vtype(j) = -4
522 deallocate( header_name, onoff, vtype )
529 integer(kind=kint) :: ctrl
530 integer(kind=kint) :: algo
531 integer(kind=kint) :: augiter
534 integer(kind=kint) :: rcode
535 character(len=80) :: s
536 s =
'SLAGRANGE,ALAGRANGE '
538 if( rcode /= 0 )
then
549 integer(kind=kint),
intent(in) :: ctrl
550 integer(kind=kint),
intent(in) :: n
551 integer(kind=kint),
intent(in) :: ctalgo
552 type(tcontact),
intent(out) :: contact(n)
553 real(kind=kreal),
intent(out) :: np
554 real(kind=kreal),
intent(out) :: tp
555 real(kind=kreal),
intent(out) :: ntol
556 real(kind=kreal),
intent(out) :: ttol
557 character(len=*),
intent(out) :: cpname
558 integer(kind=kint),
intent(out) :: smoothing
560 integer :: rcode, ipt
561 character(len=30) :: s1 =
'TIED,GLUED,SSLID,FSLID '
562 character(len=HECMW_NAME_LEN) :: data_fmt,ss
563 character(len=HECMW_NAME_LEN) :: cp_name(n)
564 real(kind=kreal) :: fcoeff(n),tpenalty(n)
565 real(kind=kreal) :: damp_alpha, damp_gact
567 write(ss,*) hecmw_name_len
571 contact(1)%algtype = contactsslid
573 if( contact(1)%algtype==contactglued ) contact(1)%algtype=contactfslid
575 smoothing = kcsnone + 1
577 smoothing = smoothing - 1
579 contact(rcode)%ctype = contact(1)%ctype
580 contact(rcode)%group = contact(1)%group
581 contact(rcode)%algtype = contact(1)%algtype
586 if( contact(1)%algtype==contactsslid .or. contact(1)%algtype==contactfslid )
then
587 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'Rr '
591 contact(rcode)%pair_name = cp_name(rcode)
592 contact(rcode)%fcoeff = fcoeff(rcode)
593 contact(rcode)%nPenalty = 5.0d0
594 contact(rcode)%tPenalty = tpenalty(rcode)
595 contact(rcode)%refStiff = 1.d0
596 contact(rcode)%damp_alpha = 0.0d0
597 contact(rcode)%damp_gact = 0.0d0
599 else if( contact(1)%algtype==contacttied )
then
600 write( data_fmt,
'(a,a)')
'S', trim(adjustl(ss))
604 contact(rcode)%pair_name = cp_name(rcode)
605 contact(rcode)%nPenalty = 5.0d0
606 contact(rcode)%fcoeff = 0.d0
607 contact(rcode)%tPenalty = 1.d0
608 contact(rcode)%damp_alpha = 0.0d0
609 contact(rcode)%damp_gact = 0.0d0
614 ntol = 0.d0; ttol=0.d0
615 damp_alpha = 0.0d0; damp_gact = 0.0d0
628 contact(rcode)%nPenalty = np
633 contact(rcode)%tPenalty = tp
636 if( damp_alpha > 0.0d0 )
then
638 contact(rcode)%damp_alpha = damp_alpha
641 if( damp_gact > 0.0d0 )
then
643 contact(rcode)%damp_gact = damp_gact
653 integer(kind=kint),
intent(in) :: ctrl
654 integer(kind=kint),
intent(in) :: n
655 type(tcontact),
intent(out) :: embed(n)
656 character(len=*),
intent(out) :: cpname
657 integer(kind=kint),
intent(out) :: smoothing
659 integer :: rcode, ipt
660 character(len=30) :: s1 =
'TIED,GLUED,SSLID,FSLID '
661 character(len=HECMW_NAME_LEN) :: data_fmt,ss
662 character(len=HECMW_NAME_LEN) :: cp_name(n)
663 real(kind=kreal) :: fcoeff(n),tpenalty(n)
667 write(ss,*) hecmw_name_len
671 embed(1)%algtype = contacttied
673 smoothing = kcsnone + 1
675 smoothing = smoothing - 1
677 embed(rcode)%ctype = embed(1)%ctype
678 embed(rcode)%group = embed(1)%group
679 embed(rcode)%algtype = embed(1)%algtype
682 write( data_fmt,
'(a,a)')
'S', trim(adjustl(ss))
686 embed(rcode)%pair_name = cp_name(rcode)
697 integer(kind=kint) :: ctrl
698 type( tcontactparam ) :: contactparam
701 integer(kind=kint) :: rcode
702 character(len=HECMW_NAME_LEN) :: data_fmt
703 character(len=128) :: msg
704 real(kind=kreal) :: clearance, clr_same_elem, clr_difflpos, clr_cal_norm
705 real(kind=kreal) :: distclr_init, distclr_free, distclr_nocheck, tensile_force
706 real(kind=kreal) :: box_exp_rate
711 contactparam%name =
''
717 & clearance, clr_same_elem, clr_difflpos, clr_cal_norm )
718 if( rcode /= 0 )
return
719 contactparam%CLEARANCE = clearance
720 contactparam%CLR_SAME_ELEM = clr_same_elem
721 contactparam%CLR_DIFFLPOS = clr_difflpos
722 contactparam%CLR_CAL_NORM = clr_cal_norm
727 & distclr_init, distclr_free, distclr_nocheck, tensile_force, box_exp_rate )
728 if( rcode /= 0 )
return
729 contactparam%DISTCLR_INIT = distclr_init
730 contactparam%DISTCLR_FREE = distclr_free
731 contactparam%DISTCLR_NOCHECK = distclr_nocheck
732 contactparam%TENSILE_FORCE = tensile_force
733 contactparam%BOX_EXP_RATE = box_exp_rate
737 if( clearance<0.d0 .OR. 1.d0<clearance )
THEN
738 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLEARANCE must be 0 < CLEARANCE < 1.'
739 else if( clr_same_elem<0.d0 .or. 1.d0<clr_same_elem )
then
740 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_SAME_ELEM must be 0 < CLR_SAME_ELEM < 1.'
741 else if( clr_difflpos<0.d0 .or. 1.d0<clr_difflpos )
then
742 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_DIFFLPOS must be 0 < CLR_DIFFLPOS < 1.'
743 else if( clr_cal_norm<0.d0 .or. 1.d0<clr_cal_norm )
then
744 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_CAL_NORM must be 0 < CLR_CAL_NORM < 1.'
745 else if( distclr_init<0.d0 .or. 1.d0<distclr_init )
then
746 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_INIT must be 0 < DISTCLR_INIT < 1.'
747 else if( distclr_free<-1.d0 .or. 1.d0<distclr_free )
then
748 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_FREE must be -1 < DISTCLR_FREE < 1.'
749 else if( distclr_nocheck<0.5d0 )
then
750 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_NOCHECK must be >= 0.5.'
751 else if( tensile_force>=0.d0 )
then
752 write(msg,*)
'fstr control file error : !CONTACT_PARAM : TENSILE_FORCE must be < 0.'
753 else if( box_exp_rate<=1.d0 .or. 2.0<box_exp_rate )
then
754 write(msg,*)
'fstr control file error : !CONTACT_PARAM : BOX_EXP_RATE must be 1 < BOX_EXP_RATE <= 2.'
758 if( rcode /= 0 )
then
760 write(
ilog,*) trim(msg)
770 integer(kind=kint),
intent(in) :: ctrl
771 integer(kind=kint),
intent(in) :: n
773 type(tcontactinterference),
intent(out) :: contact_if(n)
776 character(len=30) :: s1 =
'SLAVE,MASTER '
777 character(len=HECMW_NAME_LEN) :: data_fmt,ss
778 character(len=HECMW_NAME_LEN) :: cp_name(n)
779 real(kind=kreal) :: init_pos(n), end_pos(n)
783 write(ss,*) hecmw_name_len
786 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'rr '
787 init_pos = 0.d0; end_pos = 0.d0
790 contact_if(i)%if_type = contact_if(1)%if_type
791 contact_if(i)%etime = contact_if(1)%etime
793 contact_if(i)%cp_name = cp_name(i)
794 contact_if(i)%initial_pos = - init_pos(i)
795 contact_if(i)%end_pos = - end_pos(i)
796 if(contact_if(i)%if_type == c_if_slave .and. init_pos(i) /= 0.d0) contact_if(i)%initial_pos = 0.d0
804 integer(kind=kint) :: ctrl
805 integer(kind=kint) :: elemopt361
808 character(72) :: o361list =
'IC,Bbar '
810 integer(kind=kint) :: o361
814 o361 = elemopt361 + 1
819 elemopt361 = o361 - 1
829 integer(kind=kint) :: ctrl
830 type( tparamautoinc ) :: aincparam
833 integer(kind=kint) :: rcode
834 character(len=HECMW_NAME_LEN) :: data_fmt
835 character(len=128) :: msg
836 integer(kind=kint) :: bound_s(10), bound_l(10)
837 real(kind=kreal) :: rs, rl
851 & bound_s(1), bound_s(2), bound_s(3), aincparam%NRtimes_s )
852 if( rcode /= 0 )
return
853 aincparam%ainc_Rs = rs
854 aincparam%NRbound_s(knstmaxit) = bound_s(1)
855 aincparam%NRbound_s(knstsumit) = bound_s(2)
856 aincparam%NRbound_s(knstciter) = bound_s(3)
861 & bound_l(1), bound_l(2), bound_l(3), aincparam%NRtimes_l )
862 if( rcode /= 0 )
return
863 aincparam%ainc_Rl = rl
864 aincparam%NRbound_l(knstmaxit) = bound_l(1)
865 aincparam%NRbound_l(knstsumit) = bound_l(2)
866 aincparam%NRbound_l(knstciter) = bound_l(3)
871 & aincparam%ainc_Rc, aincparam%CBbound )
872 if( rcode /= 0 )
return
876 if( rs<0.d0 .or. rs>1.d0 )
then
877 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : decrease ratio Rs must 0 < Rs < 1.'
878 else if( any(bound_s<0) )
then
879 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : decrease NR bound must >= 0.'
880 else if( aincparam%NRtimes_s < 1 )
then
881 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : # of times to decrease must > 0.'
882 else if( rl<1.d0 )
then
883 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : increase ratio Rl must > 1.'
884 else if( any(bound_l<0) )
then
885 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : increase NR bound must >= 0.'
886 else if( aincparam%NRtimes_l < 1 )
then
887 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : # of times to increase must > 0.'
888 elseif( aincparam%ainc_Rc<0.d0 .or. aincparam%ainc_Rc>1.d0 )
then
889 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : cutback decrease ratio Rc must 0 < Rc < 1.'
890 else if( aincparam%CBbound < 1 )
then
891 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : maximum # of cutback times must > 0.'
895 if( rcode /= 0 )
then
897 write(
ilog,*) trim(msg)
906 integer(kind=kint) :: ctrl
910 integer(kind=kint) :: i, n, rcode
912 real(kind=kreal) :: stime,
etime, interval
924 stime = 0.d0;
etime = 0.d0; interval = 1.d0
926 tp%n_points = int((
etime-stime)/interval)+1
927 allocate(tp%points(tp%n_points))
929 tp%points(i) = stime + dble(i-1)*interval
935 allocate(tp%points(tp%n_points))
938 if( tp%points(i) < tp%points(i+1) ) cycle
939 write(*,*)
'Error in reading !TIME_POINT: time points must be given in ascending order.'
950 integer(kind=kint),
intent(in) :: ctrl
951 integer(kind=kint),
intent(in) :: nline
952 character(len=HECMW_NAME_LEN),
intent(out) :: name
953 integer(kind=kint),
intent(out) :: type_def
954 integer(kind=kint),
intent(out) :: type_time
955 integer(kind=kint),
intent(out) :: type_val
956 integer(kind=kint),
intent(out) :: n
957 real(kind=kreal),
pointer :: val(:)
958 real(kind=kreal),
pointer :: table(:)
961 integer(kind=kint) :: t_def, t_time, t_val
962 integer(kind=kint) :: i, j
963 real(kind=kreal) :: r(4), t(4)
978 type_def = hecmw_amp_typedef_tabular
980 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter DEFINITION.'
983 type_time = hecmw_amp_typetime_step
985 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter TIME.'
988 type_val = hecmw_amp_typeval_relative
989 elseif( t_val==2 )
then
990 type_val = hecmw_amp_typeval_absolute
992 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter VALUE.'
997 r(:)=huge(0.0d0); t(:)=huge(0.0d0)
998 if(
fstr_ctrl_get_data_ex( ctrl, 1,
'RRrrrrrr ', r(1), t(1), r(2), t(2), r(3), t(3), r(4), t(4) ) /= 0)
return
1003 if (r(j) < huge(0.0d0) .and. t(j) < huge(0.0d0))
then
1019 integer(kind=kint) :: ctrl
1020 character(len=HECMW_NAME_LEN) :: amp
1021 real(kind=kreal) ::
eps
1022 character(len=HECMW_NAME_LEN),
target :: grp_id_name(:)
1023 integer(kind=kint) :: mode
1024 integer(kind=kint) :: measure
1025 integer(kind=kint) :: state
1026 real(kind=kreal),
target :: thlow(:), thup(:)
1029 character(len=HECMW_NAME_LEN),
pointer :: element_id_p
1030 real(kind=kreal),
pointer :: thlow_p(:), thup_p(:)
1031 integer(kind=kint) :: rcode, n
1032 character(len=HECMW_NAME_LEN) :: data_fmt, s1
1040 if( mode == 1 )
then
1046 elseif( mode == 2 )
then
1051 elseif( mode == 3 )
then
1054 measure = measure + 1
1063 write(s1,*) hecmw_name_len
1065 element_id_p => grp_id_name(1)
1069 if( mode == 3 )
then
1070 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'RR'
1073 write( data_fmt,
'(a,a)')
'S', trim(adjustl(s1))
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 fstr control file data obtaining functions.
integer(kind=kint) function fstr_ctrl_get_element_activation(ctrl, amp, eps, grp_id_name, mode, measure, state, thlow, thup)
Read in !ELEMENT_ACTIVATION.
integer(kind=kint) function fstr_ctrl_get_contactparam(ctrl, contactparam)
Read in !CONTACT_PARAM !
integer(kind=kint) function fstr_ctrl_get_solution(ctrl, type, nlgeom)
Read in !SOLUTION.
integer(kind=kint) function fstr_ctrl_get_contactalgo(ctrl, algo, augiter)
Read in !CONTACT.
integer(kind=kint) function fstr_ctrl_get_contact_if(ctrl, n, contact_if)
Read in contact interference.
integer(kind=kint) function fstr_ctrl_get_couple(ctrl, fg_type, fg_first, fg_window, surf_id, surf_id_len)
Read in !COUPLE.
integer(kind=kint) function fstr_get_autoinc(ctrl, aincparam)
Read in !AUTOINC_PARAM !
integer(kind=kint) function fstr_ctrl_get_amplitude(ctrl, nline, name, type_def, type_time, type_val, n, val, table)
Read in !AMPLITUDE.
logical function fstr_ctrl_get_outitem(ctrl, hecMESH, outinfo)
Read in !OUTPUT_RES & !OUTPUT_VIS.
integer(kind=kint) function fstr_ctrl_get_elemopt(ctrl, elemopt361)
Read in !ELEMOPT.
integer(kind=kint) function fstr_ctrl_get_timepoints(ctrl, tp)
Read in !TIME_POINTS.
integer(kind=kint) function fstr_ctrl_get_solver(ctrl, method, precond, nset, iterlog, timelog, steplog, nier, iterpremax, nrest, nBFGS, scaling, dumptype, dumpexit, usejad, ncolor_in, mpc_method, estcond, method2, recyclepre, solver_opt, contact_elim, resid, singma_diag, sigma, thresh, filter)
Read in !SOLVER.
integer(kind=kint) function fstr_ctrl_get_echo(ctrl, echo)
Read in !ECHO.
logical function fstr_ctrl_get_contact(ctrl, n, contact, np, tp, ntol, ttol, ctAlgo, cpname, smoothing)
Read in contact definition.
integer(kind=kint) function fstr_ctrl_get_nonlinear_solver(ctrl, method)
Read in !NONLINEAR_SOLVER.
integer(kind=kint) function fstr_ctrl_get_mpc(ctrl, penalty)
Read in !MPC.
integer function fstr_ctrl_get_section(ctrl, hecMESH, sections)
Read in !SECTION.
logical function fstr_ctrl_get_istep(ctrl, hecMESH, steps, tpname, apname)
Read in !STEP and !ISTEP.
integer(kind=kint) function fstr_ctrl_get_write(ctrl, res, visual, femap)
Read in !WRITE.
integer(kind=kint) function fstr_ctrl_get_step(ctrl, amp, iproc)
Read in !STEP.
logical function fstr_ctrl_get_embed(ctrl, n, embed, cpname, smoothing)
Read in contact definition.
This module contains auxiliary functions in calculation setup.
logical function fstr_str2index(s, x)
subroutine amp_name_to_id(hecMESH, header_name, aname, id)
subroutine fstr_strupr(s)
This module defines common data and basic structures for analysis.
integer(kind=kint) myrank
PARALLEL EXECUTION.
integer(kind=kint), parameter imsg
integer(kind=kint), parameter kstdynamic
integer(kind=kint), parameter kon
integer(kind=kint), parameter ilog
FILE HANDLER.
integer(kind=kint), parameter kststatic
integer(kind=kint), parameter kststaticeigen
This module manages step information.
This module manages step information.
integer, parameter stepfixedinc
integer, parameter stepautoinc
integer, parameter stepstatic
This module manages timepoint information.
Data for section control.
Step control such as active boundary condition, convergent condition etc.
Time points storage for output etc.