13 private :: read_user_matl
21 integer(kind=kint),
intent(in) :: ctrl
22 character(len=*),
intent(out) :: matname
31 integer(kind=kint),
intent(in) :: ctrl
32 integer(kind=kint),
intent(inout) :: mattype
33 integer(kind=kint),
intent(out) :: nlgeom
34 integer(kind=kint),
intent(out) :: nstatus
35 real(kind=kreal),
intent(inout) :: matval(:)
37 integer(kind=kint) :: ipt
53 integer(kind=kint),
intent(in) :: ctrl
54 integer(kind=kint),
intent(inout) :: mattype
55 integer(kind=kint),
intent(out) :: nlgeom
56 real(kind=kreal),
intent(inout) :: matval(:)
57 type(dict_struct),
pointer :: dict
59 integer(kind=kint) :: i, rcode, depends, ipt, n
60 real(kind=kreal),
allocatable :: fval(:,:)
61 character(len=HECMW_NAME_LEN) :: data_fmt
64 character(len=256) :: s
69 if( depends>1 ) depends=1
70 if( depends > 3 ) stop
"We cannot read dependencies>3 right now"
81 write(*,*)
"Warning : !ELASTIC : parameter 'INFINITE' is deprecated." &
82 & //
" Please use the replacement parameter 'INFINITESIMAL'"
87 s =
'ISOTROPIC,ORTHOTROPIC,USER '
93 allocate( fval(2+depends,n) )
98 real(kind=kreal) :: fval1(n), fval2(n)
107 if( depends==1 )
then
110 real(kind=kreal) :: fval1(n), fval2(n), fval3(n)
122 matval(m_youngs) = fval(1,1)
123 matval(m_poisson) = fval(2,1)
124 call init_table( mattable, depends, 2+depends,n, fval )
125 call dict_add_key( dict, mc_isoelastic, mattable )
131 else if( ipt==2 )
then
132 allocate( fval(9+depends,n) )
134 if( depends==0 )
then
135 data_fmt =
"RRRRRRRRR "
137 real(kind=kreal) :: fval1(n), fval2(n), fval3(n), fval4(n), fval5(n), &
138 fval6(n), fval7(n), fval8(n), fval9(n)
150 fval1, fval2, fval3, fval4, fval5, fval6, fval7, fval8, fval9 )
161 else if( depends==1 )
then
162 data_fmt =
"RRRRRRRRRR "
164 real(kind=kreal) :: fval1(n), fval2(n), fval3(n), fval4(n), fval5(n), &
165 fval6(n), fval7(n), fval8(n), fval9(n), fval10(n)
178 fval1, fval2, fval3, fval4, fval5, fval6, fval7, fval8, fval9, fval10 )
194 if( fval(1,i)<=0.d0 .or. fval(2,i)<=0.d0 .or. fval(3,i)<=0.d0 .or. &
195 fval(7,i)<=0.d0 .or. fval(8,i)<=0.d0 .or. fval(9,i)<=0.d0 )
then
200 call init_table( mattable, depends, 9+depends,n, fval )
201 call dict_add_key( dict, mc_orthoelastic, mattable )
202 mattype = mn_orthoelastic
206 else if( ipt==3 )
then
208 mattype = userelastic
209 nlgeom = infinitesimal
212 stop
"ERROR: Material type not supported"
216 call finalize_table( mattable )
217 if(
allocated(fval) )
deallocate(fval)
224 integer(kind=kint),
intent(in) :: ctrl
225 integer(kind=kint),
intent(inout) :: mattype
226 integer(kind=kint),
intent(out) :: nlgeom
227 real(kind=kreal),
intent(inout) :: matval(:)
229 integer(kind=kint) :: rcode, depends, ipt
230 real(kind=kreal),
allocatable :: fval(:,:)
231 character(len=HECMW_NAME_LEN) :: data_fmt
232 character(len=256) :: s
237 if( depends > 3 ) stop
"We cannot read dependencies>3 right now"
240 if( ipt/=0 ) nlgeom = updatelag
243 s =
'NEOHOOKE,MOONEY-RIVLIN,ARRUDA-BOYCE,USER,MOONEY-RIVLIN-ANISO '
248 allocate( fval(2,depends+1) )
250 if( depends==0 )
then
253 real(kind=kreal) :: fval1(depends+1), fval2(depends+1)
263 if( fval(2,1)==0.d0 ) stop
"We cannot deal with incompressible material currently"
264 matval(m_plconst1) = fval(1,1)
265 matval(m_plconst2) = 0.d0
266 matval(m_plconst3) = fval(2,1)
273 else if( ipt==2 )
then
274 allocate( fval(3,depends+1) )
276 if( depends==0 )
then
279 real(kind=kreal) :: fval1(depends+1), fval2(depends+1), fval3(depends+1)
291 matval(m_plconst1) = fval(1,1)
292 matval(m_plconst2) = fval(2,1)
293 matval(m_plconst3) = fval(3,1)
295 mattype = mooneyrivlin
298 else if( ipt==3 )
then
299 allocate( fval(3,depends+1) )
301 if( depends==0 )
then
304 real(kind=kreal) :: fval1(depends+1), fval2(depends+1), fval3(depends+1)
316 matval(m_plconst1) = fval(1,1)
317 matval(m_plconst2) = fval(2,1)
318 matval(m_plconst3) = fval(3,1)
320 mattype = arrudaboyce
322 else if( ipt==4 )
then
324 mattype = userhyperelastic
327 else if( ipt==5 )
then
328 allocate( fval(10,depends+1) )
330 if( depends==0 )
then
331 data_fmt =
"RRRRRrrrrr "
333 real(kind=kreal) :: fval1(depends+1), fval2(depends+1), fval3(depends+1), fval4(depends+1), fval5(depends+1), &
334 fval6(depends+1), fval7(depends+1), fval8(depends+1), fval9(depends+1), fval10(depends+1)
347 fval1, fval2, fval3, fval4, fval5, fval6, fval7, fval8, fval9, fval10 )
361 matval(m_plconst1) = fval(1,1)
362 matval(m_plconst2) = fval(2,1)
363 matval(m_plconst3) = fval(3,1)
364 matval(m_plconst4) = fval(4,1)
365 matval(m_plconst5) = fval(5,1)
366 matval(m_plconst6) = fval(6,1)
367 matval(m_plconst7) = fval(7,1)
368 matval(m_plconst8) = fval(8,1)
369 matval(m_plconst9) = fval(9,1)
370 matval(m_plconst10) = fval(10,1)
372 mattype = mooneyrivlin_aniso
376 if(
allocated(fval) )
deallocate(fval)
383 integer(kind=kint),
intent(in) :: ctrl
384 integer(kind=kint),
intent(inout) :: mattype
385 integer(kind=kint),
intent(out) :: nlgeom
386 type(dict_struct),
pointer :: dict
388 integer(kind=kint) :: rcode, depends, ipt, n
389 real(kind=kreal),
allocatable :: fval(:,:)
390 character(len=HECMW_NAME_LEN) :: data_fmt
391 type( ttable ) :: mattable
392 character(len=256) :: s
397 if( depends>1 ) depends=1
401 if( ipt/=0 ) nlgeom = infinitesimal
406 write(*,*)
"Warning : !VISCOELASTIC : parameter 'INFINITE' is deprecated." &
407 & //
" Please use the replacement parameter 'INFINITESIMAL'"
408 nlgeom = infinitesimal
412 s =
'ISOTROPIC,USER '
418 allocate( fval(2+depends,n) )
420 if( depends==0 )
then
423 real(kind=kreal) :: fval1(n), fval2(n)
431 if( fval(2,1)==0.d0 ) stop
"Error in defining viscoelasticity: Relaxation time cannot be zero!"
433 if( depends==1 )
then
436 real(kind=kreal) :: fval1(n), fval2(n), fval3(n)
448 call init_table( mattable, 1, 2+depends,n, fval )
449 call dict_add_key( dict, mc_viscoelastic, mattable )
452 mattype = viscoelastic
455 stop
"ERROR: Material type not supported"
459 call finalize_table( mattable )
460 if(
allocated(fval) )
deallocate(fval)
466 integer(kind=kint),
intent(in) :: ctrl
467 integer(kind=kint),
intent(inout) :: mattype
468 real(kind=kreal),
intent(inout) :: matval(:)
471 character(len=256) :: s
480 mattype = mattype+ipt
488 integer(kind=kint),
intent(in) :: ctrl
489 integer(kind=kint),
intent(inout) :: mattype
490 integer(kind=kint),
intent(out) :: nlgeom
491 real(kind=kreal),
intent(inout) :: matval(:)
492 real(kind=kreal),
pointer :: mattable(:)
493 type(dict_struct),
pointer :: dict
495 integer(kind=kint) :: i, n, rcode, depends, ipt, hipt
496 real(kind=kreal),
allocatable :: fval(:,:)
497 real(kind=kreal) :: phi, psi
498 character(len=HECMW_NAME_LEN) :: data_fmt
499 character(len=256) :: s
500 type( ttable ) :: mttable
501 real(kind=kreal),
parameter :: pi=3.14159265358979d0
508 if( depends>1 ) depends = 1
509 if( depends > 3 ) stop
"We cannot read dependencies>3 right now"
513 if( ipt/=0 ) nlgeom = totallag
515 if( ipt/=0 ) nlgeom = infinitesimal
520 write(*,*)
"Warning : !PLASTIC : parameter 'INFINITE' is deprecated." &
521 & //
" Please use the replacement parameter 'INFINITESIMAL'"
522 nlgeom = infinitesimal
525 call setdigit( 1, 1, mattype )
526 call setdigit( 2, 2, mattype )
529 s =
'BILINEAR,MULTILINEAR,SWIFT,RAMBERG-OSGOOD,KINEMATIC,COMBINED '
532 call setdigit( 5, hipt-1, mattype )
535 s =
'MISES,MOHR-COULOMB,DRUCKER-PRAGER,USER '
536 call setdigit( 2, 2, mattype )
539 call setdigit( 4, ipt-1, mattype )
543 if( hipt==2 .and. n<2 )
return
544 if( ( ipt==2 .or. ipt==3 ) .and. hipt>2 ) hipt = 1
550 allocate( fval(2,n) )
554 real(kind=kreal) :: fval1(n), fval2(n)
563 matval(m_plconst1) = fval(1,1)
565 matval(m_plconst2) = fval(2,1)
567 matval(m_plconst2) = 0.d0
568 matval(m_plconst3) = fval(2,1)
572 allocate( fval(depends+2,n) )
574 if( depends==0 )
then
577 real(kind=kreal) :: fval1(n), fval2(n)
586 if( fval(2,1)/=0.d0 )
then
587 print *,
"Multilinear hardening: First plastic strain must be zero"
591 if( fval(2,i)<0.0 ) &
592 stop
"Multilinear hardening: Error in plastic strain definition"
594 call init_table( mttable,1, 2+depends, n, fval )
595 call dict_add_key( dict, mc_yield, mttable )
601 real(kind=kreal) :: fval1(n), fval2(n), fval3(n)
612 call init_table( mttable,2, 2+depends,n, fval )
613 call dict_add_key( dict, mc_yield, mttable )
617 allocate( fval(3,1) )
621 real(kind=kreal) :: fval1(1), fval2(1), fval3(1)
632 matval(m_plconst1) = fval(1,1)
633 matval(m_plconst2) = fval(2,1)
634 matval(m_plconst3) = fval(3,1)
637 print *,
"Error in hardening definition!"
643 allocate( fval(4,n) )
648 real(kind=kreal) :: fval1(n), fval2(n), fval3(n), fval4(n)
661 matval(m_plconst1) = fval(1,1)
662 matval(m_plconst2) = fval(3,1)
663 phi = fval(2,1)*pi/180.d0
664 if( fval(4,1) >= 0.d0 )
then
665 psi = fval(4,1)*pi/180.d0
672 stop
"Mohr-Coulomb and Drucker-Prager do not support temperature dependency"
674 allocate( fval(2,n) )
679 real(kind=kreal) :: fval1(n), fval2(n)
688 phi =fval(1,1)*pi/180.d0
689 if( fval(2,1) >= 0.d0 )
then
690 psi = fval(2,1)*pi/180.d0
694 if( fval(2,2)/=0.d0 )
then
695 print *,
"Multilinear hardening: First plastic strain must be zero"
699 if( fval(2,i)<0.0 ) &
700 stop
"Multilinear hardening: Error in plastic strain definition"
702 call init_table( mttable,1, 2, n-1, fval(1:2,2:n) )
703 call dict_add_key( dict, mc_yield, mttable )
707 matval(m_plconst3) = 2.d0*sin(phi)/ ( sqrt(3.d0)*(3.d0+sin(phi)) )
708 matval(m_plconst4) = 6.d0*cos(phi)/ ( sqrt(3.d0)*(3.d0+sin(phi)) )
709 matval(m_plconst5) = 2.d0*sin(psi)/ ( sqrt(3.d0)*(3.d0+sin(psi)) )
711 matval(m_plconst3) = phi
712 matval(m_plconst4) = psi
719 stop
"Yield function not supported"
722 if(
allocated(fval) )
deallocate(fval)
723 call finalize_table( mttable )
730 integer(kind=kint),
intent(in) :: ctrl
731 integer(kind=kint),
intent(inout) :: mattype
732 integer(kind=kint),
intent(out) :: nlgeom
733 type(dict_struct),
pointer :: dict
735 integer(kind=kint) :: rcode, depends, ipt, n
736 real(kind=kreal),
allocatable :: fval(:,:)
737 character(len=HECMW_NAME_LEN) :: data_fmt
738 type( ttable ) :: mattable
739 character(len=256) :: s
744 if( depends>1 ) depends=1
747 if( ipt/=0 ) nlgeom = totallag
749 if( ipt/=0 ) nlgeom = infinitesimal
758 allocate( fval(3+depends,n) )
760 if( depends==0 )
then
763 real(kind=kreal) :: fval1(n), fval2(n), fval3(n)
774 if( depends==1 )
then
777 real(kind=kreal) :: fval1(n), fval2(n), fval3(n), fval4(n)
791 call init_table( mattable, depends, 3+depends,n, fval )
792 call dict_add_key( dict, mc_norton, mattable )
798 stop
"ERROR: Material type not supported"
802 call finalize_table( mattable )
803 if(
allocated(fval) )
deallocate(fval)
809 integer(kind=kint),
intent(in) :: ctrl
810 real(kind=kreal),
intent(inout) :: matval(:)
812 integer(kind=kint) :: i, rcode, depends
813 real(kind=kreal),
allocatable :: fval(:,:)
814 character(len=HECMW_NAME_LEN) :: data_fmt
822 if( depends>1 ) depends = 1
824 allocate( fval(1,depends+1) )
827 data_fmt = data_fmt //
"R "
830 real(kind=kreal) :: fval1(depends+1)
838 if(
allocated(fval) )
deallocate(fval)
846 integer(kind=kint),
intent(in) :: ctrl
847 real(kind=kreal),
intent(inout) :: matval(:)
848 type(dict_struct),
pointer :: dict
850 integer(kind=kint) :: i, n, rcode, depends, ipt
851 real(kind=kreal),
allocatable :: fval(:,:)
852 type( ttable ) :: mttable
853 character(len=HECMW_NAME_LEN) :: data_fmt, ss
861 ss =
'ISOTROPIC,ORTHOTROPIC '
867 if( depends>1 ) depends = 1
870 allocate( fval(depends+1, n) )
873 data_fmt = data_fmt //
"R "
875 if( depends==0 )
then
877 real(kind=kreal) :: fval1(n)
885 real(kind=kreal) :: fval1(n), fval2(n)
895 matval(m_expansion) = fval(1,1)
896 call init_table( mttable,depends, 1+depends, n, fval )
897 call dict_add_key( dict, mc_themoexp, mttable )
900 allocate( fval(3+depends,n) )
903 data_fmt = trim(data_fmt) //
"R "
905 if( depends==0 )
then
907 real(kind=kreal) :: fval1(n), fval2(n), fval3(n)
917 elseif( depends==1 )
then
919 real(kind=kreal) :: fval1(n), fval2(n), fval3(n), fval4(n)
933 call init_table( mttable, depends, 3+depends,n, fval )
938 call finalize_table( mttable )
939 if(
allocated(fval) )
deallocate(fval)
954 integer(kind=kint),
intent(in) :: ctrl
955 real(kind=kreal),
intent(inout) :: matval(:)
956 logical,
intent(out) :: is_rd
957 integer(kind=kint) :: ipt
958 real(kind=kreal) :: rm, rk
959 character(len=HECMW_NAME_LEN) :: type_list
965 type_list =
'RAYLEIGH '
974 matval(m_damping_rm) = rm
975 matval(m_damping_rk) = rk
980 integer function read_user_matl( ctrl, matval )
981 integer(kind=kint),
intent(in) :: ctrl
982 real(kind=kreal),
intent(inout) :: matval(:)
984 integer(kind=kint) :: n, i, j
985 real(kind=kreal) :: fval(10,10)
990 if( n > 10 ) stop
"Num of data lines for user-defined material exceeds 10"
993 real(kind=kreal) :: fval1(10), fval2(10), fval3(10), fval4(10), fval5(10), &
994 fval6(10), fval7(10), fval8(10), fval9(10), fval10(10)
1006 fval4, fval5, fval6, fval7, fval8, fval9, fval10 ) /= 0 )
return
1020 matval((i-1)*10+j)=fval(j,i)
1025 end function read_user_matl
1030 integer(kind=kint),
intent(in) :: ctrl
1031 integer(kind=kint),
intent(inout) :: mattype
1032 integer(kind=kint),
intent(out) :: nlgeom
1033 real(kind=kreal),
intent(inout) :: matval(:)
1034 type(dict_struct),
pointer :: dict
1036 integer(kind=kint) :: rcode, depends, ipt, n
1037 real(kind=kreal),
allocatable :: fval(:,:)
1038 character(len=HECMW_NAME_LEN) :: data_fmt
1039 type( ttable ) :: mattable
1040 character(len=256) :: s
1045 if( depends>1 ) depends=1
1046 if( depends > 3 ) stop
"We cannot read dependencies>3 right now"
1050 s =
'INCOMP_NEWTONIAN '
1056 allocate( fval(1+depends,n) )
1058 if( depends==0 )
then
1061 real(kind=kreal) :: fval1(n)
1068 if( depends==1 )
then
1071 real(kind=kreal) :: fval1(n), fval2(n)
1081 matval(m_viscocity) = fval(1,1)
1082 call init_table( mattable, depends, 1+depends,n, fval )
1083 call dict_add_key( dict, mc_incomp_newtonian, mattable )
1086 mattype = incomp_newtonian
1089 stop
"ERROR: Material type not supported"
1093 call finalize_table( mattable )
1094 if(
allocated(fval) )
deallocate(fval)
1100 integer(kind=kint),
intent(in) :: ctrl
1101 integer(kind=kint),
intent(inout) :: mattype
1102 integer(kind=kint),
intent(out) :: nlgeom
1103 integer(kind=kint),
intent(inout) :: matval_i(:)
1104 type(dict_struct),
pointer :: dict
1106 integer(kind=kint) :: i, depends, n
1107 real(kind=kreal),
allocatable :: fval(:,:)
1108 integer(kind=kint),
allocatable :: ival(:,:)
1109 character(len=HECMW_NAME_LEN) :: data_fmt
1110 type( ttable ) :: mattable
1111 character(len=DICT_KEY_LENGTH) :: spkey
1115 nlgeom = infinitesimal
1118 allocate( fval(1+depends,n), ival(2,n) )
1121 if( depends==0 )
then
1124 integer(kind=kint) :: ival1(n), ival2(n)
1125 real(kind=kreal) :: fval1(n)
1141 matval_i(m_spring_d_ndoffset+1) = n
1143 matval_i(m_spring_d_ndoffset+2*i ) = ival(1,i)
1144 matval_i(m_spring_d_ndoffset+2*i+1) = ival(2,i)
1145 call init_table( mattable, depends, 1+depends, 1, fval(1,i:i) )
1146 write(spkey,
'(A,I0)') trim(mc_spring),i
1147 call dict_add_key( dict, trim(spkey), mattable )
1148 call finalize_table( mattable )
1153 if(
allocated(fval) )
deallocate(fval)
1154 if(
allocated(ival) )
deallocate(ival)
1160 integer(kind=kint),
intent(in) :: ctrl
1161 integer(kind=kint),
intent(inout) :: mattype
1162 integer(kind=kint),
intent(out) :: nlgeom
1163 integer(kind=kint),
intent(inout) :: matval_i(:)
1164 type(dict_struct),
pointer :: dict
1166 integer(kind=kint) :: i, depends, n
1167 real(kind=kreal),
allocatable :: fval(:,:)
1168 character(len=HECMW_NAME_LEN) :: data_fmt
1169 type( ttable ) :: mattable
1170 character(len=DICT_KEY_LENGTH) :: spkey
1174 nlgeom = infinitesimal
1177 allocate( fval(1+depends,n) )
1179 if( depends==0 )
then
1182 real(kind=kreal) :: fval1(n)
1194 matval_i(m_spring_a_ndoffset+1) = 1
1196 call init_table( mattable, depends, 1+depends, 1, fval(1,i:i) )
1197 write(spkey,
'(A,A)') trim(mc_spring),
'_A'
1198 call dict_add_key( dict, trim(spkey), mattable )
1199 call finalize_table( mattable )
1204 if(
allocated(fval) )
deallocate(fval)
1210 integer(kind=kint),
intent(in) :: ctrl
1211 integer(kind=kint),
intent(inout) :: mattype
1212 integer(kind=kint),
intent(out) :: nlgeom
1213 integer(kind=kint),
intent(inout) :: matval_i(:)
1214 type(dict_struct),
pointer :: dict
1216 integer(kind=kint) :: i, depends, n
1217 real(kind=kreal),
allocatable :: fval(:,:)
1218 integer(kind=kint),
allocatable :: ival(:,:)
1219 character(len=HECMW_NAME_LEN) :: data_fmt
1220 type( ttable ) :: mattable
1221 character(len=DICT_KEY_LENGTH) :: spkey
1225 nlgeom = infinitesimal
1228 allocate( fval(1+depends,n), ival(2,n) )
1231 if( depends==0 )
then
1234 integer(kind=kint) :: ival1(n), ival2(n)
1235 real(kind=kreal) :: fval1(n)
1251 matval_i(m_dashpot_d_ndoffset+1) = n
1253 matval_i(m_dashpot_d_ndoffset+2*i ) = ival(1,i)
1254 matval_i(m_dashpot_d_ndoffset+2*i+1) = ival(2,i)
1255 call init_table( mattable, depends, 1+depends, 1, fval(1,i:i) )
1256 write(spkey,
'(A,I0)') trim(mc_dashpot),i
1257 call dict_add_key( dict, trim(spkey), mattable )
1258 call finalize_table( mattable )
1263 if(
allocated(fval) )
deallocate(fval)
1264 if(
allocated(ival) )
deallocate(ival)
1270 integer(kind=kint),
intent(in) :: ctrl
1271 integer(kind=kint),
intent(inout) :: mattype
1272 integer(kind=kint),
intent(out) :: nlgeom
1273 integer(kind=kint),
intent(inout) :: matval_i(:)
1274 type(dict_struct),
pointer :: dict
1276 integer(kind=kint) :: i, depends, n
1277 real(kind=kreal),
allocatable :: fval(:,:)
1278 character(len=HECMW_NAME_LEN) :: data_fmt
1279 type( ttable ) :: mattable
1280 character(len=DICT_KEY_LENGTH) :: spkey
1284 nlgeom = infinitesimal
1287 allocate( fval(1+depends,n) )
1289 if( depends==0 )
then
1292 real(kind=kreal) :: fval1(n)
1304 matval_i(m_dashpot_a_ndoffset+1) = 1
1306 call init_table( mattable, depends, 1+depends, 1, fval(1,i:i) )
1307 write(spkey,
'(A,A)') trim(mc_dashpot),
'_A'
1308 call dict_add_key( dict, trim(spkey), mattable )
1309 call finalize_table( mattable )
1314 if(
allocated(fval) )
deallocate(fval)
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_line_n(int *ctrl)
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 manages read in of various material properties.
integer function fstr_ctrl_get_dashpot_d(ctrl, mattype, nlgeom, matval_i, dict)
Read in !DASHPOT_D.
integer function fstr_ctrl_get_hyperelastic(ctrl, mattype, nlgeom, matval)
Read in !HYPERELASTIC.
integer function fstr_ctrl_get_viscoelasticity(ctrl, mattype, nlgeom, dict)
Read in !VISCOELASTIC.
integer function fstr_ctrl_get_viscoplasticity(ctrl, mattype, nlgeom, dict)
Read in !CREEP.
integer function fstr_ctrl_get_usermaterial(ctrl, mattype, nlgeom, nstatus, matval)
Read in !USER_MATERIAL.
integer function fstr_ctrl_get_expansion_coeff(ctrl, matval, dict)
Read in !EXPANSION_COEFF.
integer function fstr_ctrl_get_trs(ctrl, mattype, matval)
Read in !TRS.
integer function fstr_ctrl_get_elasticity(ctrl, mattype, nlgeom, matval, dict)
Read in !ELASTIC.
integer function fstr_ctrl_get_plasticity(ctrl, mattype, nlgeom, matval, mattable, dict)
Read in !PLASTIC.
integer function fstr_ctrl_get_dashpot_a(ctrl, mattype, nlgeom, matval_i, dict)
Read in !DASHPOT_A.
integer function fstr_ctrl_get_material(ctrl, matname)
Read in !MATERIAL.
integer function fstr_ctrl_get_density(ctrl, matval)
Read in !DENSITY.
integer function fstr_ctrl_get_spring_a(ctrl, mattype, nlgeom, matval_i, dict)
Read in !SPRING_A.
integer function fstr_ctrl_get_rayleigh_damping(ctrl, matval, is_RD)
Read in !DAMPING (element-wise Rayleigh damping)
integer function fstr_ctrl_get_fluid(ctrl, mattype, nlgeom, matval, dict)
Read in !FLUID.
integer function fstr_ctrl_get_spring_d(ctrl, mattype, nlgeom, matval_i, dict)
Read in !SPRING_D.
This module provides data structure table which would be dictionaried afterwards.
This module summarizes all information of material properties.
integer(kind=kint), parameter totallag
integer(kind=kint), parameter infinitesimal
integer(kind=kint), parameter usermaterial
integer(kind=kint), parameter updatelag