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 '
253 steps%initdt = 1.d0/steps%num_substep
263 if( len( trim(amp) )>0 )
then
279 read( ss, * , iostat=ierr ) fn
283 steps%elapsetime = f1
285 steps%mindt = min(f2,steps%initdt)
288 steps%num_substep = max(int((f1+0.999999999d0*fn)/fn),steps%num_substep)
299 if( trim(header_name) ==
'BOUNDARY' )
then
301 else if( trim(header_name) ==
'LOAD' )
then
303 else if( trim(header_name) ==
'CONTACT' )
then
304 contact_n = contact_n+1
305 else if( trim(header_name) ==
'ELEMACT' )
then
306 elemact_n = elemact_n+1
307 else if( trim(header_name) ==
'TEMPERATURE' )
then
312 if( bc_n>0 )
allocate( steps%Boundary(bc_n) )
313 if( load_n>0 )
allocate( steps%Load(load_n) )
314 if( contact_n>0 )
allocate( steps%Contact(contact_n) )
315 if( elemact_n>0 )
allocate( steps%ElemActivation(elemact_n) )
323 if( trim(header_name) ==
'BOUNDARY' )
then
325 steps%Boundary(bc_n) = bcid
326 else if( trim(header_name) ==
'LOAD' )
then
328 steps%Load(load_n) = bcid
329 else if( trim(header_name) ==
'CONTACT' )
then
330 contact_n = contact_n+1
331 steps%Contact(contact_n) = bcid
332 else if( trim(header_name) ==
'ELEMACT' )
then
333 elemact_n = elemact_n+1
334 steps%ElemActivation(elemact_n) = bcid
344 integer(kind=kint),
intent(in) :: ctrl
345 type (hecmwst_local_mesh),
intent(inout) :: hecmesh
346 type (
tsection),
pointer,
intent(inout) :: sections(:)
348 integer(kind=kint) :: j, k, sect_id, ori_id, elemopt
349 integer(kind=kint),
save :: cache = 1
350 character(len=HECMW_NAME_LEN) :: sect_orien
351 character(19) :: form341list =
'FI,SELECTIVE_ESNS '
352 character(16) :: form361list =
'FI,BBAR,IC,FBAR '
357 if( sect_id > hecmesh%section%n_sect )
return
361 if( elemopt > 0 ) sections(sect_id)%elemopt341 = elemopt
365 if( elemopt > 0 ) sections(sect_id)%elemopt361 = elemopt
368 hecmesh%section%sect_orien_ID(sect_id) = -1
371 if(
associated(g_localcoordsys) )
then
373 k =
size(g_localcoordsys)
376 if( sect_orien == g_localcoordsys(cache)%sys_name )
then
377 hecmesh%section%sect_orien_ID(sect_id) = cache
385 if( sect_orien == g_localcoordsys(j)%sys_name )
then
386 hecmesh%section%sect_orien_ID(sect_id) = j
400 integer(kind=kint) :: ctrl
401 integer(kind=kint) :: res
402 integer(kind=kint) :: visual
403 integer(kind=kint) :: femap
419 integer(kind=kint) :: ctrl
420 integer(kind=kint) :: echo
431 integer(kind=kint) :: ctrl
432 integer(kind=kint) :: fg_type
433 integer(kind=kint) :: fg_first
434 integer(kind=kint) :: fg_window
435 character(len=HECMW_NAME_LEN) :: surf_id(:)
436 integer(kind=kint) :: surf_id_len
439 character(len=HECMW_NAME_LEN) :: data_fmt,ss
440 write(ss,*) surf_id_len
441 write(data_fmt,
'(a,a,a)')
'S',trim(adjustl(ss)),
' '
444 if(
fstr_ctrl_get_param_ex( ctrl,
'TYPE ',
'1,2,3,4,5,6 ', 0,
'I', fg_type )/= 0)
return
455 integer(kind=kint),
intent(in) :: ctrl
456 real(kind=kreal),
intent(out) :: penalty
460 if( penalty <= 1.0 )
then
462 write(
imsg,*)
"Warging : !MPC : too small penalty: ", penalty
463 write(*,*)
"Warging : !MPC : too small penalty: ", penalty
473 integer(kind=kint),
intent(in) :: ctrl
474 type (hecmwst_local_mesh),
intent(in) :: hecmesh
477 integer(kind=kint) :: rcode, ipos
478 integer(kind=kint) :: n, i, j
479 character(len=HECMW_NAME_LEN) :: data_fmt, ss
480 character(len=HECMW_NAME_LEN),
allocatable :: header_name(:), onoff(:), vtype(:)
482 write( ss, * ) hecmw_name_len
483 write( data_fmt,
'(a,a,a,a,a)')
'S', trim(adjustl(ss)),
'S', trim(adjustl(ss)),
' '
488 outinfo%grp_id_name =
"ALL"
496 allocate( header_name(n), onoff(n), vtype(n) )
497 header_name(:) =
""; vtype(:) =
""; onoff(:) =
""
502 do j = 1, outinfo%num_items
503 if( trim(header_name(i)) == outinfo%keyWord(j) )
then
504 outinfo%on(j) = .true.
505 if( trim(onoff(i)) ==
'OFF' ) outinfo%on(j) = .false.
506 if( len( trim(vtype(i)) )>0 )
then
508 outinfo%vtype(j) = ipos
509 else if( trim(vtype(i)) ==
"SCALER" )
then
510 outinfo%vtype(j) = -1
511 else if( trim(vtype(i)) ==
"VECTOR" )
then
512 outinfo%vtype(j) = -2
513 else if( trim(vtype(i)) ==
"SYMTENSOR" )
then
514 outinfo%vtype(j) = -3
515 else if( trim(vtype(i)) ==
"TENSOR" )
then
516 outinfo%vtype(j) = -4
523 deallocate( header_name, onoff, vtype )
530 integer(kind=kint) :: ctrl
531 integer(kind=kint) :: algo
532 integer(kind=kint) :: augiter
535 integer(kind=kint) :: rcode
536 character(len=80) :: s
537 s =
'SLAGRANGE,ALAGRANGE '
539 if( rcode /= 0 )
then
550 integer(kind=kint),
intent(in) :: ctrl
551 integer(kind=kint),
intent(in) :: n
552 integer(kind=kint),
intent(in) :: ctalgo
553 type(tcontact),
intent(out) :: contact(n)
554 real(kind=kreal),
intent(out) :: np
555 real(kind=kreal),
intent(out) :: tp
556 real(kind=kreal),
intent(out) :: ntol
557 real(kind=kreal),
intent(out) :: ttol
558 character(len=*),
intent(out) :: cpname
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)
566 write(ss,*) hecmw_name_len
570 contact(1)%algtype = contactsslid
572 if( contact(1)%algtype==contactglued ) contact(1)%algtype=contactfslid
575 contact(rcode)%ctype = contact(1)%ctype
576 contact(rcode)%group = contact(1)%group
577 contact(rcode)%algtype = contact(1)%algtype
582 if( contact(1)%algtype==contactsslid .or. contact(1)%algtype==contactfslid )
then
583 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'Rr '
587 contact(rcode)%pair_name = cp_name(rcode)
588 contact(rcode)%fcoeff = fcoeff(rcode)
589 contact(rcode)%nPenalty = 5.0d0
590 contact(rcode)%tPenalty = tpenalty(rcode)
591 contact(rcode)%refStiff = 1.d0
593 else if( contact(1)%algtype==contacttied )
then
594 write( data_fmt,
'(a,a)')
'S', trim(adjustl(ss))
598 contact(rcode)%pair_name = cp_name(rcode)
599 contact(rcode)%nPenalty = 5.0d0
600 contact(rcode)%fcoeff = 0.d0
601 contact(rcode)%tPenalty = 1.d0
606 ntol = 0.d0; ttol=0.d0
617 contact(rcode)%nPenalty = np
622 contact(rcode)%tPenalty = tp
632 integer(kind=kint),
intent(in) :: ctrl
633 integer(kind=kint),
intent(in) :: n
634 type(tcontact),
intent(out) :: embed(n)
635 character(len=*),
intent(out) :: cpname
637 integer :: rcode, ipt
638 character(len=30) :: s1 =
'TIED,GLUED,SSLID,FSLID '
639 character(len=HECMW_NAME_LEN) :: data_fmt,ss
640 character(len=HECMW_NAME_LEN) :: cp_name(n)
641 real(kind=kreal) :: fcoeff(n),tpenalty(n)
645 write(ss,*) hecmw_name_len
649 embed(1)%algtype = contacttied
652 embed(rcode)%ctype = embed(1)%ctype
653 embed(rcode)%group = embed(1)%group
654 embed(rcode)%algtype = embed(1)%algtype
657 write( data_fmt,
'(a,a)')
'S', trim(adjustl(ss))
661 embed(rcode)%pair_name = cp_name(rcode)
672 integer(kind=kint) :: ctrl
673 type( tcontactparam ) :: contactparam
676 integer(kind=kint) :: rcode
677 character(len=HECMW_NAME_LEN) :: data_fmt
678 character(len=128) :: msg
679 real(kind=kreal) :: clearance, clr_same_elem, clr_difflpos, clr_cal_norm
680 real(kind=kreal) :: distclr_init, distclr_free, distclr_nocheck, tensile_force
681 real(kind=kreal) :: box_exp_rate
686 contactparam%name =
''
692 & clearance, clr_same_elem, clr_difflpos, clr_cal_norm )
693 if( rcode /= 0 )
return
694 contactparam%CLEARANCE = clearance
695 contactparam%CLR_SAME_ELEM = clr_same_elem
696 contactparam%CLR_DIFFLPOS = clr_difflpos
697 contactparam%CLR_CAL_NORM = clr_cal_norm
702 & distclr_init, distclr_free, distclr_nocheck, tensile_force, box_exp_rate )
703 if( rcode /= 0 )
return
704 contactparam%DISTCLR_INIT = distclr_init
705 contactparam%DISTCLR_FREE = distclr_free
706 contactparam%DISTCLR_NOCHECK = distclr_nocheck
707 contactparam%TENSILE_FORCE = tensile_force
708 contactparam%BOX_EXP_RATE = box_exp_rate
712 if( clearance<0.d0 .OR. 1.d0<clearance )
THEN
713 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLEARANCE must be 0 < CLEARANCE < 1.'
714 else if( clr_same_elem<0.d0 .or. 1.d0<clr_same_elem )
then
715 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_SAME_ELEM must be 0 < CLR_SAME_ELEM < 1.'
716 else if( clr_difflpos<0.d0 .or. 1.d0<clr_difflpos )
then
717 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_DIFFLPOS must be 0 < CLR_DIFFLPOS < 1.'
718 else if( clr_cal_norm<0.d0 .or. 1.d0<clr_cal_norm )
then
719 write(msg,*)
'fstr control file error : !CONTACT_PARAM : CLR_CAL_NORM must be 0 < CLR_CAL_NORM < 1.'
720 else if( distclr_init<0.d0 .or. 1.d0<distclr_init )
then
721 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_INIT must be 0 < DISTCLR_INIT < 1.'
722 else if( distclr_free<-1.d0 .or. 1.d0<distclr_free )
then
723 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_FREE must be -1 < DISTCLR_FREE < 1.'
724 else if( distclr_nocheck<0.5d0 )
then
725 write(msg,*)
'fstr control file error : !CONTACT_PARAM : DISTCLR_NOCHECK must be >= 0.5.'
726 else if( tensile_force>=0.d0 )
then
727 write(msg,*)
'fstr control file error : !CONTACT_PARAM : TENSILE_FORCE must be < 0.'
728 else if( box_exp_rate<=1.d0 .or. 2.0<box_exp_rate )
then
729 write(msg,*)
'fstr control file error : !CONTACT_PARAM : BOX_EXP_RATE must be 1 < BOX_EXP_RATE <= 2.'
733 if( rcode /= 0 )
then
735 write(
ilog,*) trim(msg)
745 integer(kind=kint),
intent(in) :: ctrl
746 integer(kind=kint),
intent(in) :: n
748 type(tcontactinterference),
intent(out) :: contact_if(n)
751 character(len=30) :: s1 =
'SLAVE,MASTER '
752 character(len=HECMW_NAME_LEN) :: data_fmt,ss
753 character(len=HECMW_NAME_LEN) :: cp_name(n)
754 real(kind=kreal) :: init_pos(n), end_pos(n)
758 write(ss,*) hecmw_name_len
761 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(ss)),
'rr '
762 init_pos = 0.d0; end_pos = 0.d0
765 contact_if(i)%if_type = contact_if(1)%if_type
766 contact_if(i)%etime = contact_if(1)%etime
768 contact_if(i)%cp_name = cp_name(i)
769 contact_if(i)%initial_pos = - init_pos(i)
770 contact_if(i)%end_pos = - end_pos(i)
771 if(contact_if(i)%if_type == c_if_slave .and. init_pos(i) /= 0.d0) contact_if(i)%initial_pos = 0.d0
779 integer(kind=kint) :: ctrl
780 integer(kind=kint) :: elemopt361
783 character(72) :: o361list =
'IC,Bbar '
785 integer(kind=kint) :: o361
789 o361 = elemopt361 + 1
794 elemopt361 = o361 - 1
804 integer(kind=kint) :: ctrl
805 type( tparamautoinc ) :: aincparam
808 integer(kind=kint) :: rcode
809 character(len=HECMW_NAME_LEN) :: data_fmt
810 character(len=128) :: msg
811 integer(kind=kint) :: bound_s(10), bound_l(10)
812 real(kind=kreal) :: rs, rl
826 & bound_s(1), bound_s(2), bound_s(3), aincparam%NRtimes_s )
827 if( rcode /= 0 )
return
828 aincparam%ainc_Rs = rs
829 aincparam%NRbound_s(knstmaxit) = bound_s(1)
830 aincparam%NRbound_s(knstsumit) = bound_s(2)
831 aincparam%NRbound_s(knstciter) = bound_s(3)
836 & bound_l(1), bound_l(2), bound_l(3), aincparam%NRtimes_l )
837 if( rcode /= 0 )
return
838 aincparam%ainc_Rl = rl
839 aincparam%NRbound_l(knstmaxit) = bound_l(1)
840 aincparam%NRbound_l(knstsumit) = bound_l(2)
841 aincparam%NRbound_l(knstciter) = bound_l(3)
846 & aincparam%ainc_Rc, aincparam%CBbound )
847 if( rcode /= 0 )
return
851 if( rs<0.d0 .or. rs>1.d0 )
then
852 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : decrease ratio Rs must 0 < Rs < 1.'
853 else if( any(bound_s<0) )
then
854 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : decrease NR bound must >= 0.'
855 else if( aincparam%NRtimes_s < 1 )
then
856 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : # of times to decrease must > 0.'
857 else if( rl<1.d0 )
then
858 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : increase ratio Rl must > 1.'
859 else if( any(bound_l<0) )
then
860 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : increase NR bound must >= 0.'
861 else if( aincparam%NRtimes_l < 1 )
then
862 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : # of times to increase must > 0.'
863 elseif( aincparam%ainc_Rc<0.d0 .or. aincparam%ainc_Rc>1.d0 )
then
864 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : cutback decrease ratio Rc must 0 < Rc < 1.'
865 else if( aincparam%CBbound < 1 )
then
866 write(msg,*)
'fstr control file error : !AUTOINC_PARAM : maximum # of cutback times must > 0.'
870 if( rcode /= 0 )
then
872 write(
ilog,*) trim(msg)
881 integer(kind=kint) :: ctrl
885 integer(kind=kint) :: i, n, rcode
887 real(kind=kreal) :: stime,
etime, interval
899 stime = 0.d0;
etime = 0.d0; interval = 1.d0
901 tp%n_points = int((
etime-stime)/interval)+1
902 allocate(tp%points(tp%n_points))
904 tp%points(i) = stime + dble(i-1)*interval
910 allocate(tp%points(tp%n_points))
913 if( tp%points(i) < tp%points(i+1) ) cycle
914 write(*,*)
'Error in reading !TIME_POINT: time points must be given in ascending order.'
925 integer(kind=kint),
intent(in) :: ctrl
926 integer(kind=kint),
intent(in) :: nline
927 character(len=HECMW_NAME_LEN),
intent(out) :: name
928 integer(kind=kint),
intent(out) :: type_def
929 integer(kind=kint),
intent(out) :: type_time
930 integer(kind=kint),
intent(out) :: type_val
931 integer(kind=kint),
intent(out) :: n
932 real(kind=kreal),
pointer :: val(:)
933 real(kind=kreal),
pointer :: table(:)
936 integer(kind=kint) :: t_def, t_time, t_val
937 integer(kind=kint) :: i, j
938 real(kind=kreal) :: r(4), t(4)
953 type_def = hecmw_amp_typedef_tabular
955 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter DEFINITION.'
958 type_time = hecmw_amp_typetime_step
960 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter TIME.'
963 type_val = hecmw_amp_typeval_relative
964 elseif( t_val==2 )
then
965 type_val = hecmw_amp_typeval_absolute
967 write(*,*)
'Error in reading !AMPLITUDE: invalid value for parameter VALUE.'
972 r(:)=huge(0.0d0); t(:)=huge(0.0d0)
973 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
978 if (r(j) < huge(0.0d0) .and. t(j) < huge(0.0d0))
then
994 integer(kind=kint) :: ctrl
995 character(len=HECMW_NAME_LEN) :: amp
996 real(kind=kreal) ::
eps
997 character(len=HECMW_NAME_LEN),
target :: grp_id_name(:)
998 integer(kind=kint) :: mode
999 integer(kind=kint) :: measure
1000 integer(kind=kint) :: state
1001 real(kind=kreal),
target :: thlow(:), thup(:)
1004 character(len=HECMW_NAME_LEN),
pointer :: element_id_p
1005 real(kind=kreal),
pointer :: thlow_p(:), thup_p(:)
1006 integer(kind=kint) :: rcode, n
1007 character(len=HECMW_NAME_LEN) :: data_fmt, s1
1015 if( mode == 1 )
then
1021 elseif( mode == 2 )
then
1026 elseif( mode == 3 )
then
1029 measure = measure + 1
1038 write(s1,*) hecmw_name_len
1040 element_id_p => grp_id_name(1)
1044 if( mode == 3 )
then
1045 write( data_fmt,
'(a,a,a)')
'S', trim(adjustl(s1)),
'RR'
1048 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.
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_contact(ctrl, n, contact, np, tp, ntol, ttol, ctAlgo, cpname)
Read in contact definition.
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)
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.
subroutine init_stepinfo(stepinfo)
Initializer.
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.