FrontISTR  5.2.0
Large-scale structural analysis program with finit element method
fstr_ass_load.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
6 
8  implicit none
9 contains
10  !
11  !======================================================================!
17 
18  subroutine fstr_ass_load(cstep, ctime, hecMESH, hecMAT, fstrSOLID, fstrPARAM)
19  !======================================================================!
20  use m_fstr
21  use m_static_lib
22  use m_fstr_precheck
23  use mmechgauss
24  use mreadtemp
25  use muload
26  use m_fstr_spring
27  use m_common_struct
28  use m_utilities
29  integer(kind=kint), intent(in) :: cstep
30  real(kind=kreal), intent(in) :: ctime
31  type(hecmwst_matrix), intent(inout) :: hecmat
32  type(hecmwst_local_mesh), intent(in) :: hecMESH
33  type(fstr_solid), intent(inout) :: fstrSOLID
34  type(fstr_param), intent(inout) :: fstrPARAM
35 
36  real(kind=kreal) :: xx(20), yy(20), zz(20)
37  real(kind=kreal) :: params(0:6)
38  real(kind=kreal) :: vect(60)
39  integer(kind=kint) :: iwk(60)
40  integer(kind=kint) :: nodLocal(20)
41  real(kind=kreal) :: tt(20), tt0(20), coords(3, 3), factor
42  integer(kind=kint) :: ndof, ig0, ig, ityp, ltype, iS0, iE0, ik, in, i, j
43  integer(kind=kint) :: icel, ic_type, nn, is, isect, id, iset, nsize
44  integer(kind=kint) :: itype, iE, ierror, grpid, cdsys_ID
45  real(kind=kreal) :: fval, rho, thick, pa1
46  logical :: fg_surf
47  integer(kind=kint) :: tstep
48  type(tmaterial), pointer :: material
49  integer(kind=kint) :: ihead
50  real(kind=kreal) :: a
51 
52  !for torque load
53  integer(kind=kint) :: n_rot, rid, n_nodes, idof
54  type(trotinfo) :: rinfo
55  real(kind=kreal) :: tval, normal(3), direc(3), ccoord(3), cdisp(3), cdiff(3)
56 
57  ndof = hecmat%NDOF
58 
59  ! -------------------------------------------------------------------
60  ! CLOAD
61  ! -------------------------------------------------------------------
62  n_rot = fstrsolid%CLOAD_ngrp_rot
63  if( n_rot > 0 ) call fstr_rotinfo_init(n_rot, rinfo)
64 
65  fstrsolid%GL(:) = 0.0d0
66  fstrsolid%EFORCE(:) = 0.0d0
67  do ig0 = 1, fstrsolid%CLOAD_ngrp_tot
68  grpid = fstrsolid%CLOAD_ngrp_GRPID(ig0)
69  if( .not. fstr_isloadactive( fstrsolid, grpid, cstep ) ) cycle
70  factor = fstrsolid%factor(2)
71  if( fstr_isloadactive( fstrsolid, grpid, cstep-1 ) ) factor = 1.0d0
72  ig = fstrsolid%CLOAD_ngrp_ID(ig0)
73  ityp = fstrsolid%CLOAD_ngrp_DOF(ig0)
74  fval = fstrsolid%CLOAD_ngrp_val(ig0)
75  is0 = hecmesh%node_group%grp_index(ig-1) + 1
76  ie0 = hecmesh%node_group%grp_index(ig )
77 
78  if( fstrsolid%CLOAD_ngrp_rotID(ig0) > 0 ) then ! setup torque load information
79  rid = fstrsolid%CLOAD_ngrp_rotID(ig0)
80  if( .not. rinfo%conds(rid)%active ) then
81  rinfo%conds(rid)%active = .true.
82  rinfo%conds(rid)%center_ngrp_id = fstrsolid%CLOAD_ngrp_centerID(ig0)
83  rinfo%conds(rid)%torque_ngrp_id = ig
84  endif
85  if( ityp>ndof ) ityp = ityp-ndof
86  rinfo%conds(rid)%vec(ityp) = factor*fval
87  cycle
88  endif
89 
90  do ik = is0, ie0
91  in = hecmesh%node_group%grp_item(ik)
92  fstrsolid%GL(ndof*(in-1)+ityp) = fstrsolid%GL(ndof*(in-1)+ityp)+factor*fval
93  enddo
94  enddo
95 
96  !Add torque load to fstrSOLID%GL
97  do rid = 1, n_rot
98  if( .not. rinfo%conds(rid)%active ) cycle
99  !get number of slave nodes
100  n_nodes = hecmw_ngrp_get_number(hecmesh, rinfo%conds(rid)%torque_ngrp_id)
101 
102  !get center node
103  ig = rinfo%conds(rid)%center_ngrp_id
104  do idof = 1, ndof
105  ccoord(idof) = hecmw_ngrp_get_totalvalue(hecmesh, ig, ndof, idof, hecmesh%node)
106  cdisp(idof) = hecmw_ngrp_get_totalvalue(hecmesh, ig, ndof, idof, fstrsolid%unode)
107  cdisp(idof) = cdisp(idof) + hecmw_ngrp_get_totalvalue(hecmesh, ig, ndof, idof, fstrsolid%dunode)
108  enddo
109  ccoord(1:ndof) = ccoord(1:ndof) + cdisp(1:ndof)
110 
111  tval = dsqrt(dot_product(rinfo%conds(rid)%vec(1:ndof),rinfo%conds(rid)%vec(1:ndof)))
112  if( tval < 1.d-16 ) then
113  write(*,*) '###ERROR### : norm of torque vector must be > 0.0'
114  call hecmw_abort( hecmw_comm_get_comm() )
115  endif
116  normal(1:ndof) = rinfo%conds(rid)%vec(1:ndof)/tval
117  tval = tval/dble(n_nodes)
118 
119  ig = rinfo%conds(rid)%torque_ngrp_id
120  is0 = hecmesh%node_group%grp_index(ig-1) + 1
121  ie0 = hecmesh%node_group%grp_index(ig )
122  do ik = is0, ie0
123  in = hecmesh%node_group%grp_item(ik)
124  cdiff(1:ndof) = hecmesh%node(ndof*(in-1)+1:ndof*in)+fstrsolid%unode(ndof*(in-1)+1:ndof*in) &
125  & +fstrsolid%dunode(ndof*(in-1)+1:ndof*in)-ccoord(1:ndof)
126  call cross_product(normal,cdiff,vect(1:ndof))
127  fval = dot_product(vect(1:ndof),vect(1:ndof))
128  if( fval < 1.d-16 ) then
129  write(*,*) '###ERROR### : torque node is at the same position as that of center node in rotational surface.'
130  call hecmw_abort( hecmw_comm_get_comm() )
131  endif
132  vect(1:ndof) = (tval/fval)*vect(1:ndof)
133  fstrsolid%GL(ndof*(in-1)+1:ndof*in) = fstrsolid%GL(ndof*(in-1)+1:ndof*in)+vect(1:ndof)
134  enddo
135  enddo
136  if( n_rot > 0 ) call fstr_rotinfo_finalize(rinfo)
137  !
138  ! -------------------------------------------------------------------
139  ! DLOAD
140  ! -------------------------------------------------------------------
141  do ig0 = 1, fstrsolid%DLOAD_ngrp_tot
142  grpid = fstrsolid%DLOAD_ngrp_GRPID(ig0)
143  if( .not. fstr_isloadactive( fstrsolid, grpid, cstep ) ) cycle
144  factor = fstrsolid%factor(2)
145  if( fstr_isloadactive( fstrsolid, grpid, cstep-1 ) ) factor = 1.0d0
146  ig = fstrsolid%DLOAD_ngrp_ID(ig0)
147  ltype = fstrsolid%DLOAD_ngrp_LID(ig0)
148  do i = 0, 6
149  params(i)= fstrsolid%DLOAD_ngrp_params(i,ig0)
150  enddo
151  ! ----- START & END
152  fg_surf = (ltype == 100)
153  if( fg_surf ) then ! surface group
154  is0 = hecmesh%surf_group%grp_index(ig-1) + 1
155  ie0 = hecmesh%surf_group%grp_index(ig )
156  else ! element group
157  is0 = hecmesh%elem_group%grp_index(ig-1) + 1
158  ie0 = hecmesh%elem_group%grp_index(ig )
159  endif
160  do ik = is0, ie0
161  if( fg_surf ) then ! surface group
162  ltype = hecmesh%surf_group%grp_item(2*ik)*10
163  icel = hecmesh%surf_group%grp_item(2*ik-1)
164  ic_type = hecmesh%elem_type(icel)
165  else ! element group
166  icel = hecmesh%elem_group%grp_item(ik)
167  ic_type = hecmesh%elem_type(icel)
168  endif
169  if( hecmw_is_etype_link(ic_type) ) cycle
170  if( hecmw_is_etype_patch(ic_type) ) cycle
171  ! if( ic_type==3422 ) ic_type=342
172  nn = hecmw_get_max_node(ic_type)
173  ! ----- node ID
174  is = hecmesh%elem_node_index(icel-1)
175  if( fstrsolid%DLOAD_follow == 0 ) then
176  do j = 1, nn
177  nodlocal(j) = hecmesh%elem_node_item (is+j)
178  ! ----- nodal coordinate
179  xx(j) = hecmesh%node( 3*nodlocal(j)-2 )
180  yy(j) = hecmesh%node( 3*nodlocal(j)-1 )
181  zz(j) = hecmesh%node( 3*nodlocal(j) )
182  ! ----- create iwk array ***
183  do i = 1, ndof
184  iwk( ndof*(j-1)+i ) = ndof*( nodlocal(j)-1 )+i
185  enddo
186  enddo
187  else
188  do j = 1, nn
189  nodlocal(j) = hecmesh%elem_node_item (is+j)
190  ! ----- nodal coordinate
191  if (ndof==2) then
192  xx(j) = hecmesh%node( 3*nodlocal(j)-2 )+fstrsolid%unode( 2*nodlocal(j)-1 )+fstrsolid%dunode( 2*nodlocal(j)-1 )
193  yy(j) = hecmesh%node( 3*nodlocal(j)-1 )+fstrsolid%unode( 2*nodlocal(j) )+fstrsolid%dunode( 2*nodlocal(j) )
194  else if (ndof==3) then
195  xx(j) = hecmesh%node( 3*nodlocal(j)-2 )+fstrsolid%unode( 3*nodlocal(j)-2 )+fstrsolid%dunode( 3*nodlocal(j)-2 )
196  yy(j) = hecmesh%node( 3*nodlocal(j)-1 )+fstrsolid%unode( 3*nodlocal(j)-1 )+fstrsolid%dunode( 3*nodlocal(j)-1 )
197  zz(j) = hecmesh%node( 3*nodlocal(j) )+fstrsolid%unode( 3*nodlocal(j) )+fstrsolid%dunode( 3*nodlocal(j) )
198  else if (ndof==6) then
199  xx(j) = hecmesh%node( 3*nodlocal(j)-2 )+fstrsolid%unode( 6*nodlocal(j)-5 )+fstrsolid%dunode( 6*nodlocal(j)-5 )
200  yy(j) = hecmesh%node( 3*nodlocal(j)-1 )+fstrsolid%unode( 6*nodlocal(j)-4 )+fstrsolid%dunode( 6*nodlocal(j)-4 )
201  zz(j) = hecmesh%node( 3*nodlocal(j) )+fstrsolid%unode( 6*nodlocal(j)-3 )+fstrsolid%dunode( 6*nodlocal(j)-3 )
202  endif
203  ! ----- create iwk array ***
204  do i = 1, ndof
205  iwk( ndof*(j-1)+i ) = ndof*( nodlocal(j)-1 )+i
206  enddo
207  enddo
208  end if
209  ! ----- section ID
210  isect = hecmesh%section_ID(icel)
211  ! ----- Get Properties
212  material => fstrsolid%elements(icel)%gausses(1)%pMaterial
213  rho = material%variables(m_density)
214  call fstr_get_thickness(hecmesh,isect,thick)
215  ! ----- Section Data
216  if( ndof == 2 ) then
217  id=hecmesh%section%sect_opt(isect)
218  if( id == 0 ) then
219  iset = 1
220  else if( id == 1 ) then
221  iset = 0
222  else if( id == 2) then
223  iset = 2
224  endif
225  pa1=1.d0
226  endif
227  ! ----- Create local stiffness
228  if (ic_type==301)then
229  ihead = hecmesh%section%sect_R_index(isect-1)
230  call dl_c1(ic_type,nn,xx(1:nn),yy(1:nn),zz(1:nn),rho,thick,ltype,params,vect(1:nn*ndof),nsize)
231 
232  elseif( ic_type == 241 .or. ic_type == 242 .or. ic_type == 231 .or. ic_type == 232 .or. ic_type == 2322 ) then
233  call dl_c2(ic_type,nn,xx(1:nn),yy(1:nn),rho,pa1,ltype,params,vect(1:nn*ndof),nsize,iset)
234 
235  else if ( ic_type == 341 .or. ic_type == 351 .or. ic_type == 361 .or. &
236  ic_type == 342 .or. ic_type == 352 .or. ic_type == 362 ) then
237  call dl_c3(ic_type,nn,xx(1:nn),yy(1:nn),zz(1:nn),rho,ltype,params,vect(1:nn*ndof),nsize)
238 
239  else if ( ic_type == 641 ) then
240  ihead = hecmesh%section%sect_R_index(isect-1)
241  call dl_beam_641(ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), rho, ltype, params, &
242  hecmesh%section%sect_R_item(ihead+1:), vect(1:nn*ndof), nsize)
243 
244  else if( ( ic_type == 741 ) .or. ( ic_type == 743 ) .or. ( ic_type == 731 ) ) then
245  call dl_shell(ic_type, nn, ndof, xx, yy, zz, rho, thick, ltype, params, vect, nsize, fstrsolid%elements(icel)%gausses)
246 
247  else if( ( ic_type==761 ) .or. ( ic_type==781 ) ) then
248  call dl_shell_33(ic_type, nn, ndof, xx, yy, zz, rho, thick, ltype, params, vect, nsize, &
249  fstrsolid%elements(icel)%gausses)
250 
251  else
252  nsize = 0
253  write(*,*)"### WARNING: DLOAD",ic_type
254 
255  endif
256  ! ----- Add vector
257  do j=1,nsize
258  fstrsolid%GL( iwk(j) )=fstrsolid%GL( iwk(j) )+factor*vect(j)
259  enddo
260  enddo
261  enddo
262 
263  ! -----Uload
264  call uloading( cstep, factor, fstrsolid%GL )
265 
266  !C
267  !C Update for fstrSOLID%GL
268  !C
269  if( hecmesh%n_dof == 3 ) then
270  call hecmw_update_3_r (hecmesh,fstrsolid%GL,hecmesh%n_node)
271  else if( hecmesh%n_dof == 2 ) then
272  call hecmw_update_2_r (hecmesh,fstrsolid%GL,hecmesh%n_node)
273  endif
274 
275  call hecmw_mat_clear_b( hecmat )
276  do i=1, hecmesh%n_node* hecmesh%n_dof
277  hecmat%B(i)=fstrsolid%GL(i)-fstrsolid%QFORCE(i)
278  enddo
279 
280  do i=1, hecmat%NDOF*hecmat%NP
281  !thermal load is not considered
282  fstrsolid%EFORCE(i) = fstrsolid%GL(i)
283  enddo
284 
285  ! -------------------------------------------------------------------
286  ! TLOAD : THERMAL LOAD USING TEMPERATURE
287  ! -------------------------------------------------------------------
288  !C
289  !C Set Temperature
290  !C
291  if( fstrsolid%TEMP_ngrp_tot > 0 .or. fstrsolid%TEMP_irres > 0 ) then
292  do ig0 = 1, fstrsolid%TEMP_ngrp_tot
293  grpid = fstrsolid%TEMP_ngrp_GRPID(ig0)
294  if( .not. fstr_isloadactive( fstrsolid, grpid, cstep ) ) cycle
295  factor = fstrsolid%factor(2)
296  if( fstr_isloadactive( fstrsolid, grpid, cstep-1 ) ) factor = 1.0d0
297  ig = fstrsolid%TEMP_ngrp_ID(ig0)
298  fval =fstrsolid%TEMP_ngrp_val(ig0)
299  is0 = hecmesh%node_group%grp_index(ig-1)+1
300  ie0 = hecmesh%node_group%grp_index(ig )
301  do ik = is0, ie0
302  in = hecmesh%node_group%grp_item(ik)
303  pa1 = fstrsolid%temp_bak( in )
304  fstrsolid%temperature( in ) = pa1+(fval-pa1)*factor
305  enddo
306  enddo
307 
308  if( fstrsolid%TEMP_irres > 0 ) then
309  call read_temperature_result(hecmesh, fstrsolid%TEMP_irres, fstrsolid%TEMP_tstep, &
310  & fstrsolid%TEMP_rtype, fstrsolid%TEMP_interval, fstrsolid%TEMP_factor, ctime, &
311  & fstrsolid%temperature, fstrsolid%temp_bak)
312  endif
313 
314  ! ----- element TYPE loop.
315  do itype = 1, hecmesh%n_elem_type
316 
317  is = hecmesh%elem_type_index(itype-1)+1
318  ie = hecmesh%elem_type_index(itype )
319  ic_type = hecmesh%elem_type_item(itype)
320  if( hecmw_is_etype_link(ic_type) ) cycle
321  if( hecmw_is_etype_patch(ic_type) ) cycle
322  ! ----- Set number of nodes
323  nn = hecmw_get_max_node(ic_type)
324 
325  ! ----- element loop
326  do icel = is, ie
327 
328  ! ----- node ID
329  is= hecmesh%elem_node_index(icel-1)
330  do j=1,nn
331  nodlocal(j)=hecmesh%elem_node_item(is+j)
332  ! ----- nodal coordinate
333  if (ndof==2) then
334  xx(j)=hecmesh%node(3*nodlocal(j)-2)+fstrsolid%unode(ndof*nodlocal(j)-1)
335  yy(j)=hecmesh%node(3*nodlocal(j)-1)+fstrsolid%unode(ndof*nodlocal(j) )
336  else if (ndof==3) then
337  xx(j)=hecmesh%node(3*nodlocal(j)-2)+fstrsolid%unode(ndof*nodlocal(j)-2)
338  yy(j)=hecmesh%node(3*nodlocal(j)-1)+fstrsolid%unode(ndof*nodlocal(j)-1)
339  zz(j)=hecmesh%node(3*nodlocal(j) )+fstrsolid%unode(ndof*nodlocal(j))
340  endif
341  tt0(j)=fstrsolid%last_temp( nodlocal(j) )
342  tt(j) = fstrsolid%temperature( nodlocal(j) )
343  ! ----- create iwk array ***
344  do i=1,ndof
345  iwk(ndof*(j-1)+i)=ndof*(nodlocal(j)-1)+i
346  enddo
347  enddo
348 
349  ! ----- section Data
350  isect= hecmesh%section_ID(icel)
351  cdsys_id = hecmesh%section%sect_orien_ID(isect)
352  call get_coordsys(cdsys_id, hecmesh, fstrsolid, coords)
353 
354  if( ndof == 2 ) then
355  id=hecmesh%section%sect_opt(isect)
356  if( id==0 ) then
357  iset = 1
358  else if( id == 1 ) then
359  iset = 0
360  else if( id == 2 ) then
361  iset = 2
362  endif
363  pa1 = 1.0d0
364  endif
365 
366  if( ic_type == 641 ) then
367 
368  isect= hecmesh%section_ID(icel)
369  ihead = hecmesh%section%sect_R_index(isect-1)
370 
371  call tload_beam_641( ic_type, nn, ndof, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
372  fstrsolid%elements(icel)%gausses, hecmesh%section%sect_R_item(ihead+1:), &
373  vect(1:nn*ndof) )
374 
375  do j = 1, ndof*nn
376  hecmat%B( iwk(j) ) = hecmat%B( iwk(j) )+vect(j)
377  end do
378  cycle
379  end if
380 
381  ! ----- Create local stiffness
382  if(ic_type == 241 .or. ic_type == 242 .or. ic_type == 231 .or. ic_type == 232 ) then
383  call tload_c2( ic_type, nn, xx(1:nn), yy(1:nn), tt(1:nn), tt0(1:nn), &
384  fstrsolid%elements(icel)%gausses,pa1, iset, vect(1:nn*2) )
385 
386  else if( ic_type == 361 ) then
387  if( fstrsolid%sections(isect)%elemopt361 == kel361fi ) then
388  call tload_c3 &
389  ( ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
390  fstrsolid%elements(icel)%gausses, vect(1:nn*ndof), cdsys_id, coords )
391  else if( fstrsolid%sections(isect)%elemopt361 == kel361bbar ) then
392  call tload_c3d8bbar &
393  ( ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
394  fstrsolid%elements(icel)%gausses, vect(1:nn*ndof), cdsys_id, coords )
395  else if( fstrsolid%sections(isect)%elemopt361 == kel361ic ) then
396  call tload_c3d8ic &
397  ( ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
398  fstrsolid%elements(icel)%gausses, vect(1:nn*ndof), cdsys_id, coords )
399  else if( fstrsolid%sections(isect)%elemopt361 == kel361fbar ) then
400  call tload_c3d8fbar &
401  ( ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
402  fstrsolid%elements(icel)%gausses, vect(1:nn*ndof), cdsys_id, coords )
403  endif
404 
405  else if( ic_type == 341 .or. ic_type == 351 .or. &
406  ic_type == 342 .or. ic_type == 352 .or. ic_type == 362 ) then
407  call tload_c3 &
408  ( ic_type, nn, xx(1:nn), yy(1:nn), zz(1:nn), tt(1:nn), tt0(1:nn), &
409  fstrsolid%elements(icel)%gausses, vect(1:nn*ndof), cdsys_id, coords )
410 
411  else if( ic_type == 741 .or. ic_type == 743 .or. ic_type == 731 ) then
412  if( myrank == 0 ) then
413  write(imsg,*) '*------------------------', &
414  '-------------------*'
415  write(imsg,*) ' Thermal loading option for shell elements', &
416  'not yet available.'
417  write(imsg,*) '*------------------------', &
418  '-------------------*'
419  call hecmw_abort( hecmw_comm_get_comm())
420  endif
421 
422  endif
423 
424  ! ----- Add vector
425  do j = 1, ndof*nn
426  ! fstrSOLID%GL( iwk(j) )=fstrSOLID%GL( iwk(j) )+vect(j)
427  hecmat%B( iwk(j) ) = hecmat%B( iwk(j) )+vect(j)
428  enddo
429 
430  enddo
431  enddo
432  endif
433 
434  ! ----- Spring force
435  call fstr_update_ndforce_spring( cstep, hecmesh, fstrsolid, hecmat%B )
436 
437  if( associated( fstrsolid%contacts ) .and. fstrparam%contact_algo == kcaalagrange ) then
438  do i = 1, size(fstrsolid%contacts)
439  call ass_contact_force( fstrsolid%contacts(i), hecmesh%node, fstrsolid%unode, hecmat%B )
440  enddo
441  endif
442 
443  end subroutine fstr_ass_load
444 
445 end module m_fstr_ass_load
This modules defines common structures for fem analysis.
subroutine fstr_rotinfo_init(n, rinfo)
subroutine fstr_rotinfo_finalize(rinfo)
This module provides functions to take into acount external load.
subroutine fstr_ass_load(cstep, ctime, hecMESH, hecMAT, fstrSOLID, fstrPARAM)
This subroutine assmble following external force into fstrSOLIDGL and hecMATB afterwards.
This module provides function to check input data of IFSTR solver.
subroutine fstr_get_thickness(hecMESH, mid, thick)
This module provides functions to deal with spring force.
Definition: fstr_Spring.f90:7
subroutine fstr_update_ndforce_spring(cstep, hecMESH, fstrSOLID, B)
Definition: fstr_Spring.f90:46
This module defined coomon data and basic structures for analysis.
Definition: m_fstr.f90:15
integer(kind=kint), parameter kel361bbar
Definition: m_fstr.f90:69
subroutine get_coordsys(cdsys_ID, hecMESH, fstrSOLID, coords)
This subroutine fetch coords defined by local coordinate system.
Definition: m_fstr.f90:1032
integer(kind=kint) myrank
PARALLEL EXECUTION.
Definition: m_fstr.f90:80
integer(kind=kint), parameter imsg
Definition: m_fstr.f90:94
logical function fstr_isloadactive(fstrSOLID, nbc, cstep)
Definition: m_fstr.f90:1007
integer(kind=kint), parameter kel361fi
section control
Definition: m_fstr.f90:68
integer(kind=kint), parameter kel361ic
Definition: m_fstr.f90:70
integer(kind=kint), parameter kcaalagrange
Definition: m_fstr.f90:54
integer(kind=kint), parameter kel361fbar
Definition: m_fstr.f90:71
This modules just summarizes all modules used in static analysis.
Definition: static_LIB.f90:6
This module provides aux functions.
Definition: utilities.f90:6
subroutine cross_product(v1, v2, vn)
Definition: utilities.f90:330
This modules defines a structure to record history dependent parameter in static analysis.
Definition: mechgauss.f90:6
subroutine, public read_temperature_result(hecMESH, nstep, sstep, rtype, interval, factor, ctime, temp, temp_bak)
Read in temperature distribution from external file.
Definition: readtemp.f90:14
This subroutine read in used-defined loading tangent.
Definition: uload.f90:7
subroutine uloading(cstep, factor, exForce)
This subroutine take consider of user-defined external loading.
Definition: uload.f90:31
FSTR INNER CONTROL PARAMETERS (fstrPARAM)
Definition: m_fstr.f90:138