9 use hecmw,
only : kint, kreal
24 (etype, nn, ecoord, gausses, stiff, cdsys_id, coords, &
25 time, tincr, u, temperature)
35 integer(kind=kint),
intent(in) :: etype
36 integer(kind=kint),
intent(in) :: nn
37 real(kind=kreal),
intent(in) :: ecoord(3, nn)
39 real(kind=kreal),
intent(out) :: stiff(:,:)
40 integer(kind=kint),
intent(in) :: cdsys_id
41 real(kind=kreal),
intent(inout) :: coords(3, 3)
42 real(kind=kreal),
intent(in) :: time
43 real(kind=kreal),
intent(in) :: tincr
44 real(kind=kreal),
intent(in),
optional :: u(:, :)
45 real(kind=kreal),
intent(in) :: temperature(nn)
49 integer(kind=kint) :: flag
50 integer(kind=kint),
parameter :: ndof = 3
51 real(kind=kreal) :: d(6, 6),b(6, ndof*nn),db(6, ndof*nn)
52 real(kind=kreal) :: gderiv(nn, 3),stress(6),mat(6, 6)
53 real(kind=kreal) :: det, wg, temp, spfunc(nn)
54 integer(kind=kint) :: i, j, lx, serr
55 real(kind=kreal) :: naturalcoord(3)
56 real(kind=kreal) :: gdispderiv(3, 3)
57 real(kind=kreal) :: b1(6, ndof*nn), bbar(nn, 3)
58 real(kind=kreal) :: smat(9, 9), elem(3, nn)
59 real(kind=kreal) :: bn(9, ndof*nn), sbn(9, ndof*nn)
60 real(kind=kreal) :: b4, b6, b8, coordsys(3, 3)
66 flag = gausses(1)%pMaterial%nlgeom_flag
67 if( .not.
present(u) ) flag = infinitesimal
68 elem(:, :) = ecoord(:, :)
69 if( flag == updatelag ) elem(:, :) = ecoord(:, :)+u(:, :)
80 if( cdsys_id > 0 )
then
82 if( serr == -1 ) stop
"Fail to setup local coordinate"
85 write(*, *)
"WARNING! Cannot setup local coordinate, it is modified automatically"
91 temp = dot_product( temperature, spfunc )
92 call matlmatrix( gausses(lx), d3, d, time, tincr, coordsys, temp )
94 if( flag == updatelag )
then
100 b(1:6, 1:nn*ndof) = 0.0d0
102 b4 = ( bbar(j, 1)-gderiv(j, 1) )/3.0d0
103 b6 = ( bbar(j, 2)-gderiv(j, 2) )/3.0d0
104 b8 = ( bbar(j, 3)-gderiv(j, 3) )/3.0d0
105 b(1, 3*j-2) = gderiv(j, 1)+b4
110 b(2, 3*j-1) = gderiv(j, 2)+b6
115 b(3, 3*j ) = gderiv(j, 3)+b8
117 b(4, 3*j-2) = gderiv(j, 2)
118 b(4, 3*j-1) = gderiv(j, 1)
119 b(5, 3*j-1) = gderiv(j, 3)
120 b(5, 3*j ) = gderiv(j, 2)
121 b(6, 3*j-2) = gderiv(j, 3)
122 b(6, 3*j ) = gderiv(j, 1)
126 if( flag == totallag )
then
128 gdispderiv(1:ndof, 1:ndof) = matmul( u(1:ndof, 1:nn), gderiv(1:nn, 1:ndof) )
129 b1(1:6, 1:nn*ndof) = 0.0d0
131 b1(1, 3*j-2) = gdispderiv(1, 1)*gderiv(j, 1)
132 b1(1, 3*j-1) = gdispderiv(2, 1)*gderiv(j, 1)
133 b1(1, 3*j ) = gdispderiv(3, 1)*gderiv(j, 1)
134 b1(2, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 2)
135 b1(2, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 2)
136 b1(2, 3*j ) = gdispderiv(3, 2)*gderiv(j, 2)
137 b1(3, 3*j-2) = gdispderiv(1, 3)*gderiv(j, 3)
138 b1(3, 3*j-1) = gdispderiv(2, 3)*gderiv(j, 3)
139 b1(3, 3*j ) = gdispderiv(3, 3)*gderiv(j, 3)
140 b1(4, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 1)+gdispderiv(1, 1)*gderiv(j, 2)
141 b1(4, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 1)+gdispderiv(2, 1)*gderiv(j, 2)
142 b1(4, 3*j ) = gdispderiv(3, 2)*gderiv(j, 1)+gdispderiv(3, 1)*gderiv(j, 2)
143 b1(5, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 3)+gdispderiv(1, 3)*gderiv(j, 2)
144 b1(5, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 3)+gdispderiv(2, 3)*gderiv(j, 2)
145 b1(5, 3*j ) = gdispderiv(3, 2)*gderiv(j, 3)+gdispderiv(3, 3)*gderiv(j, 2)
146 b1(6, 3*j-2) = gdispderiv(1, 3)*gderiv(j, 1)+gdispderiv(1, 1)*gderiv(j, 3)
147 b1(6, 3*j-1) = gdispderiv(2, 3)*gderiv(j, 1)+gdispderiv(2, 1)*gderiv(j, 3)
148 b1(6, 3*j ) = gdispderiv(3, 3)*gderiv(j, 1)+gdispderiv(3, 1)*gderiv(j, 3)
152 b(:, j) = b(:, j)+b1(:, j)
156 db(1:6, 1:nn*ndof) = matmul( d, b(1:6, 1:nn*ndof) )
159 stiff(i, j) = stiff(i, j)+dot_product( b(:, i), db(:, j) )*wg
164 if( flag == totallag .or. flag == updatelag )
then
165 stress(1:6) = gausses(lx)%stress
166 bn(1:9, 1:nn*ndof) = 0.0d0
168 bn(1, 3*j-2) = gderiv(j, 1)
169 bn(2, 3*j-1) = gderiv(j, 1)
170 bn(3, 3*j ) = gderiv(j, 1)
171 bn(4, 3*j-2) = gderiv(j, 2)
172 bn(5, 3*j-1) = gderiv(j, 2)
173 bn(6, 3*j ) = gderiv(j, 2)
174 bn(7, 3*j-2) = gderiv(j, 3)
175 bn(8, 3*j-1) = gderiv(j, 3)
176 bn(9, 3*j ) = gderiv(j, 3)
180 smat(j , j ) = stress(1)
181 smat(j , j+3) = stress(4)
182 smat(j , j+6) = stress(6)
183 smat(j+3, j ) = stress(4)
184 smat(j+3, j+3) = stress(2)
185 smat(j+3, j+6) = stress(5)
186 smat(j+6, j ) = stress(6)
187 smat(j+6, j+3) = stress(5)
188 smat(j+6, j+6) = stress(3)
190 sbn(1:9, 1:nn*ndof) = matmul( smat(1:9, 1:9), bn(1:9, 1:nn*ndof) )
193 stiff(i, j) = stiff(i, j)+dot_product( bn(:, i), sbn(:, j) )*wg
206 (etype, nn, ecoord, u, du, cdsys_id, coords, &
207 qf ,gausses, iter, time, tincr, tt,t0, tn )
221 integer(kind=kint),
intent(in) :: etype
222 integer(kind=kint),
intent(in) :: nn
223 real(kind=kreal),
intent(in) :: ecoord(3, nn)
224 real(kind=kreal),
intent(in) :: u(3, nn)
225 real(kind=kreal),
intent(in) :: du(3, nn)
226 integer(kind=kint),
intent(in) :: cdsys_id
227 real(kind=kreal),
intent(inout) :: coords(3, 3)
228 real(kind=kreal),
intent(out) :: qf(nn*3)
230 integer,
intent(in) :: iter
231 real(kind=kreal),
intent(in) :: time
232 real(kind=kreal),
intent(in) :: tincr
233 real(kind=kreal),
intent(in) :: tt(nn)
234 real(kind=kreal),
intent(in) :: t0(nn)
235 real(kind=kreal),
intent(in) :: tn(nn)
239 integer(kind=kint) :: flag
240 integer(kind=kint),
parameter :: ndof = 3
241 real(kind=kreal) :: b(6, ndof*nn), b1(6, ndof*nn)
242 real(kind=kreal) :: gderiv(nn, 3), gderiv1(nn,3), gdispderiv(3, 3), f(3,3), det, det1, wg
243 integer(kind=kint) :: j, lx, mtype, serr
244 real(kind=kreal) :: naturalcoord(3), rot(3, 3), spfunc(nn)
245 real(kind=kreal) :: totaldisp(3, nn), elem(3, nn), elem1(3, nn), coordsys(3, 3)
246 real(kind=kreal) :: dstrain(6)
247 real(kind=kreal) :: dvol, vol0, bbar(nn, 3), derivdum(1:ndof, 1:ndof), bbar2(nn, 3)
248 real(kind=kreal) :: b4, b6, b8, ttc, tt0, ttn, alpo(3), ina(1), epsth(6)
249 logical :: ierr, matlaniso
255 flag = gausses(1)%pMaterial%nlgeom_flag
256 elem(:, :) = ecoord(:, :)
257 totaldisp(:, :) = u(:, :)+du(:, :)
259 elem(:, :) = ( 0.5d0*du(:, :)+u(:, :) )+ecoord(:, :)
260 elem1(:, :) = ( du(:, :)+u(:, :) )+ecoord(:, :)
262 totaldisp(:, :) = du(:, :)
267 call fetch_tabledata(
mc_orthoexp, gausses(1)%pMaterial%dict, alpo(:), ierr, ina )
268 if( .not. ierr ) matlaniso = .true.
273 derivdum = matmul( totaldisp(1:ndof, 1:nn), bbar(1:nn, 1:ndof) )
274 vol0 = ( derivdum(1, 1)+derivdum(2, 2)+derivdum(3, 3) )/3.0d0
279 mtype = gausses(lx)%pMaterial%mtype
284 if( cdsys_id > 0 )
then
285 call set_localcoordsys( coords, g_localcoordsys(cdsys_id), coordsys(:, :), serr )
286 if( serr == -1 ) stop
"Fail to setup local coordinate"
287 if( serr == -2 )
then
289 write(*, *)
"WARNING! Cannot setup local coordinate, it is modified automatically"
294 gdispderiv(1:ndof, 1:ndof) = matmul( totaldisp(1:ndof, 1:nn), gderiv(1:nn, 1:ndof) )
295 dvol = vol0-( gdispderiv(1, 1)+gdispderiv(2, 2)+gdispderiv(3, 3) )/3.0d0
306 ttc = dot_product(tt, spfunc)
307 tt0 = dot_product(t0, spfunc)
308 ttn = dot_product(tn, spfunc)
313 dstrain(1) = gdispderiv(1, 1)+dvol
314 dstrain(2) = gdispderiv(2, 2)+dvol
315 dstrain(3) = gdispderiv(3, 3)+dvol
316 dstrain(4) = ( gdispderiv(1, 2)+gdispderiv(2, 1) )
317 dstrain(5) = ( gdispderiv(2, 3)+gdispderiv(3, 2) )
318 dstrain(6) = ( gdispderiv(3, 1)+gdispderiv(1, 3) )
319 dstrain(:) = dstrain(:)-epsth(:)
321 f(1:3,1:3) = 0.d0; f(1,1)=1.d0; f(2,2)=1.d0; f(3,3)=1.d0;
323 gausses(lx)%strain(1:6) = dstrain(1:6)+epsth(:)
327 dstrain(1) = dstrain(1)+0.5d0*dot_product( gdispderiv(:, 1), gdispderiv(:, 1) )
328 dstrain(2) = dstrain(2)+0.5d0*dot_product( gdispderiv(:, 2), gdispderiv(:, 2) )
329 dstrain(3) = dstrain(3)+0.5d0*dot_product( gdispderiv(:, 3), gdispderiv(:, 3) )
330 dstrain(4) = dstrain(4)+( gdispderiv(1, 1)*gdispderiv(1, 2) &
331 +gdispderiv(2, 1)*gdispderiv(2, 2)+gdispderiv(3, 1)*gdispderiv(3, 2) )
332 dstrain(5) = dstrain(5)+( gdispderiv(1, 2)*gdispderiv(1, 3) &
333 +gdispderiv(2, 2)*gdispderiv(2, 3)+gdispderiv(3, 2)*gdispderiv(3, 3) )
334 dstrain(6) = dstrain(6)+( gdispderiv(1, 1)*gdispderiv(1, 3) &
335 +gdispderiv(2, 1)*gdispderiv(2, 3)+gdispderiv(3, 1)*gdispderiv(3, 3) )
337 gausses(lx)%strain(1:6) = dstrain(1:6)+epsth(:)
338 f(1:3,1:3) = f(1:3,1:3) + gdispderiv(1:3,1:3)
342 rot(1, 2)= 0.5d0*( gdispderiv(1, 2)-gdispderiv(2, 1) ); rot(2, 1) = -rot(1, 2)
343 rot(2, 3)= 0.5d0*( gdispderiv(2, 3)-gdispderiv(3, 2) ); rot(3, 2) = -rot(2, 3)
344 rot(1, 3)= 0.5d0*( gdispderiv(1, 3)-gdispderiv(3, 1) ); rot(3, 1) = -rot(1, 3)
346 gausses(lx)%strain(1:6) = gausses(lx)%strain_bak(1:6)+dstrain(1:6)+epsth(:)
347 call getglobalderiv(etype, nn, naturalcoord, ecoord, det1, gderiv1)
348 f(1:3,1:3) = f(1:3,1:3) + matmul( u(1:ndof, 1:nn)+du(1:ndof, 1:nn), gderiv1(1:nn, 1:ndof) )
353 call update_stress3d( flag, gausses(lx), rot, dstrain, f, coordsys, time, tincr, ttc, tt0, ttn )
359 b(1:6, 1:nn*ndof) = 0.0d0
361 b4 = ( bbar(j, 1)-gderiv(j, 1) )/3.0d0
362 b6 = ( bbar(j, 2)-gderiv(j, 2) )/3.0d0
363 b8 = ( bbar(j, 3)-gderiv(j, 3) )/3.0d0
364 b(1, 3*j-2) = gderiv(j, 1)+b4
369 b(2, 3*j-1) = gderiv(j, 2)+b6
374 b(3, 3*j ) = gderiv(j, 3)+b8
376 b(4, 3*j-2) = gderiv(j, 2)
377 b(4, 3*j-1) = gderiv(j, 1)
378 b(5, 3*j-1) = gderiv(j, 3)
379 b(5, 3*j ) = gderiv(j, 2)
380 b(6, 3*j-2) = gderiv(j, 3)
381 b(6, 3*j ) = gderiv(j, 1)
388 b1(1:6, 1:nn*ndof) = 0.0d0
390 b1(1, 3*j-2) = gdispderiv(1, 1)*gderiv(j, 1)
391 b1(1, 3*j-1) = gdispderiv(2, 1)*gderiv(j, 1)
392 b1(1, 3*j ) = gdispderiv(3, 1)*gderiv(j, 1)
393 b1(2, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 2)
394 b1(2, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 2)
395 b1(2, 3*j ) = gdispderiv(3, 2)*gderiv(j, 2)
396 b1(3, 3*j-2) = gdispderiv(1, 3)*gderiv(j, 3)
397 b1(3, 3*j-1) = gdispderiv(2, 3)*gderiv(j, 3)
398 b1(3, 3*j ) = gdispderiv(3, 3)*gderiv(j, 3)
399 b1(4, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 1)+gdispderiv(1, 1)*gderiv(j, 2)
400 b1(4, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 1)+gdispderiv(2, 1)*gderiv(j, 2)
401 b1(4, 3*j ) = gdispderiv(3, 2)*gderiv(j, 1)+gdispderiv(3, 1)*gderiv(j, 2)
402 b1(5, 3*j-2) = gdispderiv(1, 2)*gderiv(j, 3)+gdispderiv(1, 3)*gderiv(j, 2)
403 b1(5, 3*j-1) = gdispderiv(2, 2)*gderiv(j, 3)+gdispderiv(2, 3)*gderiv(j, 2)
404 b1(5, 3*j ) = gdispderiv(3, 2)*gderiv(j, 3)+gdispderiv(3, 3)*gderiv(j, 2)
405 b1(6, 3*j-2) = gdispderiv(1, 3)*gderiv(j, 1)+gdispderiv(1, 1)*gderiv(j, 3)
406 b1(6, 3*j-1) = gdispderiv(2, 3)*gderiv(j, 1)+gdispderiv(2, 1)*gderiv(j, 3)
407 b1(6, 3*j ) = gdispderiv(3, 3)*gderiv(j, 1)+gdispderiv(3, 1)*gderiv(j, 3)
411 b(:, j) = b(:, j)+b1(:, j)
417 b(1:6, 1:nn*ndof) = 0.0d0
419 b4 = ( bbar2(j, 1)-gderiv(j, 1) )/3.0d0
420 b6 = ( bbar2(j, 2)-gderiv(j, 2) )/3.0d0
421 b8 = ( bbar2(j, 3)-gderiv(j, 3) )/3.0d0
422 b(1, 3*j-2) = gderiv(j, 1)+b4
427 b(2, 3*j-1) = gderiv(j, 2)+b6
432 b(3, 3*j ) = gderiv(j, 3)+b8
434 b(4, 3*j-2) = gderiv(j, 2)
435 b(4, 3*j-1) = gderiv(j, 1)
436 b(5, 3*j-1) = gderiv(j, 3)
437 b(5, 3*j ) = gderiv(j, 2)
438 b(6, 3*j-2) = gderiv(j, 3)
439 b(6, 3*j ) = gderiv(j, 1)
445 qf(1:nn*ndof) = qf(1:nn*ndof) &
446 +matmul( gausses(lx)%stress(1:6), b(1:6, 1:nn*ndof) )*wg
449 gausses(lx)%strain_energy = 0.5d0*dot_product(gausses(lx)%stress(1:6)+gausses(lx)%stress_bak(1:6), &
450 & gausses(lx)%strain(1:6)-gausses(lx)%strain_bak(1:6))*wg
458 (etype, nn, xx, yy, zz, tt, t0, &
459 gausses, vect, cdsys_id, coords)
469 integer(kind=kint),
parameter :: ndof = 3
470 integer(kind=kint),
intent(in) :: etype, nn
472 real(kind=kreal),
intent(in) :: xx(nn), yy(nn), zz(nn)
473 real(kind=kreal),
intent(in) :: tt(nn), t0(nn)
474 real(kind=kreal),
intent(out) :: vect(nn*ndof)
475 integer(kind=kint),
intent(in) :: cdsys_ID
476 real(kind=kreal),
intent(inout) :: coords(3, 3)
480 real(kind=kreal) :: alp, alp0, d(6, 6), b(6, ndof*nn)
481 real(kind=kreal) :: b4, b6, b8, det, ecoord(3, nn)
482 integer(kind=kint) :: j, LX, serr
483 real(kind=kreal) :: estrain(6), sgm(6), h(nn)
484 real(kind=kreal) :: naturalcoord(3), gderiv(nn, 3)
485 real(kind=kreal) :: wg, outa(1), ina(1), bbar(nn, 3), alpo(3), alpo0(3), coordsys(3, 3)
486 real(kind=kreal) :: tempc, temp0, tempc0, temp00, thermal_eps, tm(6,6)
487 logical :: ierr, matlaniso
493 if( cdsys_id > 0 )
then
495 call fetch_tabledata( mc_orthoexp, gausses(1)%pMaterial%dict, alpo(:), ierr, ina )
496 if( .not. ierr ) matlaniso = .true.
508 tempc0 = dot_product( h(1:nn), tt(1:nn) )
509 temp00 = dot_product( h(1:nn), t0(1:nn) )
518 if( cdsys_id > 0 )
then
519 call set_localcoordsys(coords, g_localcoordsys(cdsys_id), coordsys, serr)
520 if( serr == -1 ) stop
"Fail to setup local coordinate"
521 if( serr == -2 )
then
522 write(*, *)
"WARNING! Cannot setup local coordinate, it is modified automatically"
528 b(1:6, 1:nn*ndof) = 0.0d0
530 b4 = ( bbar(j, 1)-gderiv(j, 1) )/3.0d0
531 b6 = ( bbar(j, 2)-gderiv(j, 2) )/3.0d0
532 b8 = ( bbar(j, 3)-gderiv(j, 3) )/3.0d0
533 b(1, 3*j-2) = gderiv(j, 1)+b4
538 b(2, 3*j-1) = gderiv(j, 2)+b6
543 b(3, 3*j ) = gderiv(j, 3)+b8
545 b(4, 3*j-2) = gderiv(j, 2)
546 b(4, 3*j-1) = gderiv(j, 1)
547 b(5, 3*j-1) = gderiv(j, 3)
548 b(5, 3*j ) = gderiv(j, 2)
549 b(6, 3*j-2) = gderiv(j, 3)
550 b(6, 3*j ) = gderiv(j, 1)
553 tempc = dot_product( h(1:nn),tt(1:nn) )
554 temp0 = dot_product( h(1:nn),t0(1:nn) )
556 call matlmatrix( gausses(lx), d3, d, 1.d0, 0.0d0, coordsys, tempc )
560 call fetch_tabledata( mc_orthoexp, gausses(lx)%pMaterial%dict, alpo(:), ierr, ina )
561 if( ierr ) stop
"Fails in fetching orthotropic expansion coefficient!"
563 call fetch_tabledata( mc_themoexp, gausses(lx)%pMaterial%dict, outa(:), ierr, ina )
564 if( ierr ) outa(1) = gausses(lx)%pMaterial%variables(m_expansion)
569 call fetch_tabledata( mc_orthoexp, gausses(lx)%pMaterial%dict, alpo0(:), ierr, ina )
570 if( ierr ) stop
"Fails in fetching orthotropic expansion coefficient!"
572 call fetch_tabledata( mc_themoexp, gausses(lx)%pMaterial%dict, outa(:), ierr, ina )
573 if( ierr ) outa(1) = gausses(lx)%pMaterial%variables(m_expansion)
586 estrain(:) = matmul( estrain(:), tm )
587 estrain(4:6) = estrain(4:6)*2.0d0
590 estrain(1:3) = thermal_eps
597 sgm(:) = matmul( d(:, :), estrain(:) )
602 vect(1:nn*ndof) = vect(1:nn*ndof)+matmul( sgm(:), b(:, :) )*wg
This module encapsulate the basic functions of all elements provide by this software.
subroutine getshapefunc(fetype, localcoord, func)
Calculate the shape function in natural coordinate system.
subroutine getquadpoint(fetype, np, pos)
Fetch the coordinate of gauss point.
subroutine getglobalderiv(fetype, nn, localcoord, elecoord, det, gderiv)
Calculate shape derivative in global coordinate system.
real(kind=kreal) function getweight(fetype, np)
Fetch the weight value in given gauss point.
integer function numofquadpoints(fetype)
Obtains the number of quadrature points of the element.
This modules defines common structures for fem analysis.
type(tlocalcoordsys), dimension(:), pointer, save g_localcoordsys
subroutine set_localcoordsys(coords, coordsys, outsys, ierr)
setup of coordinate system
This module provide functions for elastoplastic calculation.
This module defines common data and basic structures for analysis.
real(kind=kreal), pointer ref_temp
REFTEMP.
This module manages calculation relates with materials.
subroutine matlmatrix(gauss, sectType, matrix, time, dtime, cdsys, temperature, isEp, hdflag)
Calculate constituive matrix.
This module provides common functions of Solid elements.
subroutine geomat_c3(stress, mat)
subroutine cal_thermal_expansion_c3(tt0, ttc, material, coordsys, matlaniso, EPSTH)
subroutine update_stress3d(flag, gauss, rot, dstrain, F, coordsys, time, tincr, ttc, tt0, ttn, hdflag)
This module contains several strategy to free locking problem in Eight-node hexagonal element.
subroutine tload_c3d8bbar(etype, nn, XX, YY, ZZ, TT, T0, gausses, VECT, cdsys_ID, coords)
This subroutien calculate thermal loading.
subroutine update_c3d8bbar(etype, nn, ecoord, u, du, cdsys_ID, coords, qf, gausses, iter, time, tincr, TT, T0, TN)
Update Strain stress of this element.
subroutine stf_c3d8bbar(etype, nn, ecoord, gausses, stiff, cdsys_ID, coords, time, tincr, u, temperature)
This subroutine calculate stiff matrix using b-bar method.
This module provides aux functions.
subroutine transformation(jacob, tm)
This module provides functions for hyperelastic calculation.
This module summarizes all information of material properties.
integer(kind=kint), parameter totallag
character(len=dict_key_length) mc_orthoexp
integer(kind=kint), parameter infinitesimal
integer(kind=kint), parameter updatelag
This modules defines a structure to record history dependent parameter in static analysis.
All data should be recorded in every quadrature points.