12 subroutine fstr_dynamic_output( cstep, istep, t_curr, hecMESH, fstrSOLID, fstrDYNAMIC, fstrPARAM, outflag )
18 integer,
intent(in) :: cstep
19 integer,
intent(in) :: istep
20 real(kind=kreal),
intent(in) :: t_curr
21 type(hecmwst_local_mesh),
intent(in) :: hecmesh
25 logical,
intent(in) :: outflag
27 type(hecmwst_result_data) :: fstrRESULT
28 integer(kind=kint) :: i, j, ndof, fnum, is, iE, gid
32 expflag = ( fstrdynamic%idx_eqa == 11 )
34 if( fstrsolid%TEMP_ngrp_tot>0 .or. fstrsolid%TEMP_irres>0 )
then
36 allocate( fstrsolid%tnstrain(hecmesh%n_node*6) )
37 allocate( fstrsolid%testrain(hecmesh%n_elem*6) )
38 else if( ndof==2 )
then
39 allocate( fstrsolid%tnstrain(hecmesh%n_node*3) )
40 allocate( fstrsolid%testrain(hecmesh%n_elem*3) )
41 else if( ndof== 4)
then
42 write(*,*)
'Error: This routine is not implemented'
47 if( ndof==3 .or. ndof == 4 )
then
49 else if( ndof==2 )
then
51 else if( ndof==6 )
then
55 if(
associated( fstrsolid%contacts ) ) &
58 if( (mod(istep,fstrsolid%output_ctrl(1)%frequency)==0 .or. outflag) )
then
59 fnum = fstrsolid%output_ctrl(1)%filenum
63 if( fstrsolid%output_ctrl(2)%outinfo%grp_id>0 .and. &
64 (mod(istep,fstrsolid%output_ctrl(2)%frequency)==0 .or. outflag) )
then
65 is = fstrsolid%output_ctrl(2)%outinfo%grp_id
66 fnum = fstrsolid%output_ctrl(2)%filenum
67 do i = hecmesh%node_group%grp_index(is-1)+1, hecmesh%node_group%grp_index(is)
68 ie = hecmesh%node_group%grp_item(i)
69 gid = hecmesh%global_node_ID(ie)
70 write(fnum,
'(2i10,1p6e15.7)') istep,gid,(fstrsolid%unode(ndof*(ie-1)+j),j=1,ndof)
74 if( fstrparam%fg_result==1 .and. &
75 (mod(istep,fstrsolid%output_ctrl(3)%frequency)==0 .or. outflag) )
then
76 if(
associated( fstrsolid%contacts ) ) &
81 if( fstrparam%fg_visual==1 .and. &
82 (mod(istep,fstrsolid%output_ctrl(4)%frequency)==0 .or. outflag) )
then
84 if(
associated( fstrsolid%contacts ) ) &
86 call fstr_make_result( hecmesh, fstrsolid, fstrresult, istep, t_curr, fstrdynamic )
88 call hecmw_visualize_init
89 call hecmw_visualize( hecmesh, fstrresult, istep )
90 call hecmw_visualize_finalize
92 call hecmw_result_free( fstrresult )
102 integer,
intent(in) :: fnum
103 integer,
intent(in) :: cstep
104 integer,
intent(in) :: istep
105 type(hecmwst_local_mesh),
intent(in) :: hecMESH
109 real(kind=kreal) :: umax(6), umin(6), vmax(6), vmin(6), amax(6), amin(6)
110 real(kind=kreal) :: emax(14), emin(14), smax(14), smin(14)
111 real(kind=kreal) :: mmax(1), mmin(1), emmax(1), emmin(1)
112 real(kind=kreal) :: eemax(14), eemin(14), esmax(14), esmin(14)
114 real(kind=kreal) :: gumax(6), gumin(6), gvmax(6), gvmin(6), gamax(6), gamin(6)
115 real(kind=kreal) :: gemax(14), gemin(14), gsmax(14), gsmin(14)
116 real(kind=kreal) :: gmmax(1), gmmin(1), gemmax(1), gemmin(1)
117 real(kind=kreal) :: geemax(14), geemin(14), gesmax(14), gesmin(14)
119 integer(kind=kint) :: IUmax(6), IUmin(6), IVmax(6), IVmin(6), IAmax(6), IAmin(6)
120 integer(kind=kint) :: IEmax(14), IEmin(14), ISmax(14), ISmin(14)
121 integer(kind=kint) :: IMmax(1), IMmin(1), IEMmax(1), IEMmin(1)
122 integer(kind=kint) :: IEEmax(14), IEEmin(14), IESmax(14), IESmin(14)
123 integer(kind=kint) :: i, j, k, ndof, mdof, ID_area, idx
124 integer(kind=kint) :: label(6)
126 if( istep==0 )
return
127 if( fstrdynamic%idx_eqa/=11 .and. istep>0 )
then
134 write( fnum,
'(''#### Result step, substep='',I6,I6)') cstep, istep
138 label(1)=11;label(2)=22
142 label(1)=11;label(2)=22;label(3)=33;
143 label(4)=12;label(5)=23;label(6)=31;
146 j = hecmesh%global_node_ID(1)
148 umax(k) = fstrdynamic%DISP(k,idx); umin(k) = fstrdynamic%DISP(k,idx)
149 vmax(k) = fstrdynamic%VEL(k,idx); vmin(k) = fstrdynamic%VEL(k,idx)
150 amax(k) = fstrdynamic%ACC(k,idx); amin(k) = fstrdynamic%ACC(k,idx)
151 iumax(k)= j; iumin(k)= j; ivmax(k)= j; ivmin(k)= j; iamax(k)= j; iamin(k)= j
154 emax(k) = fstrsolid%STRAIN(k); emin(k) = fstrsolid%STRAIN(k)
155 smax(k) = fstrsolid%STRESS(k); smin(k) = fstrsolid%STRESS(k)
156 eemax(k) = fstrsolid%ESTRAIN(k); eemin(k) = fstrsolid%ESTRAIN(k)
157 esmax(k) = fstrsolid%ESTRESS(k); esmin(k) = fstrsolid%ESTRESS(k)
158 iemax(k)= j; iemin(k)= j; ismax(k)= j; ismin(k)= j
159 ieemax(k)= j; ieemin(k)= j; iesmax(k)= j; iesmin(k)= j
161 mmax(1) = fstrsolid%MISES(1); mmin(1) = fstrsolid%MISES(1)
162 emmax(1) = fstrsolid%EMISES(1); emmin(1) = fstrsolid%EMISES(1)
163 immax(1)= j; immin(1)= j; iemmax(1)= j; iemmin(1)= j
166 do i = 1, hecmesh%nn_internal
167 if(fstrsolid%is_rot(i)==1)cycle
168 j = hecmesh%global_node_ID(i)
170 if ( fstrdynamic%DISP(ndof*(i-1)+k,idx) > umax(k) )
then
171 umax(k) = fstrdynamic%DISP(ndof*(i-1)+k,idx)
173 else if( fstrdynamic%DISP(ndof*(i-1)+k,idx) < umin(k) )
then
174 umin(k) = fstrdynamic%DISP(ndof*(i-1)+k,idx)
177 if ( fstrdynamic%VEL(ndof*(i-1)+k,idx) > vmax(k) )
then
178 vmax(k) = fstrdynamic%VEL(ndof*(i-1)+k,idx)
180 else if( fstrdynamic%VEL(ndof*(i-1)+k,idx) < vmin(k) )
then
181 vmin(k) = fstrdynamic%VEL(ndof*(i-1)+k,idx)
184 if ( fstrdynamic%ACC(ndof*(i-1)+k,idx) > amax(k) )
then
185 amax(k) = fstrdynamic%ACC(ndof*(i-1)+k,idx)
187 else if( fstrdynamic%ACC(ndof*(i-1)+k,idx) < amin(k) )
then
188 amin(k) = fstrdynamic%ACC(ndof*(i-1)+k,idx)
195 do i = 1, hecmesh%nn_internal
196 if(fstrsolid%is_rot(i)==1)cycle
197 j = hecmesh%global_node_ID(i)
199 if ( fstrsolid%STRAIN(mdof*(i-1)+k) > emax(k) )
then
200 emax(k) = fstrsolid%STRAIN(mdof*(i-1)+k)
202 else if( fstrsolid%STRAIN(mdof*(i-1)+k) < emin(k) )
then
203 emin(k) = fstrsolid%STRAIN(mdof*(i-1)+k)
206 if ( fstrsolid%STRESS(mdof*(i-1)+k) > smax(k) )
then
207 smax(k) = fstrsolid%STRESS(mdof*(i-1)+k)
209 else if( fstrsolid%STRESS(mdof*(i-1)+k) < smin(k) )
then
210 smin(k) = fstrsolid%STRESS(mdof*(i-1)+k)
214 if ( fstrsolid%MISES(i) > mmax(1) )
then
215 mmax(1) = fstrsolid%MISES(i)
217 else if( fstrsolid%MISES(i) < mmin(1) )
then
218 mmin(1) = fstrsolid%MISES(i)
223 do i = 1, hecmesh%n_elem
224 id_area = hecmesh%elem_ID(i*2)
225 if( id_area==hecmesh%my_rank )
then
226 j = hecmesh%global_elem_ID(i)
228 if( fstrsolid%ESTRAIN(mdof*(i-1)+k) > eemax(k) )
then
229 eemax(k) = fstrsolid%ESTRAIN(mdof*(i-1)+k)
231 else if( fstrsolid%ESTRAIN(mdof*(i-1)+k) < eemin(k) )
then
232 eemin(k) = fstrsolid%ESTRAIN(mdof*(i-1)+k)
235 if( fstrsolid%ESTRESS(mdof*(i-1)+k) > esmax(k) )
then
236 esmax(k) = fstrsolid%ESTRESS(mdof*(i-1)+k)
238 else if( fstrsolid%ESTRESS(mdof*(i-1)+k) < esmin(k) )
then
239 esmin(k) = fstrsolid%ESTRESS(mdof*(i-1)+k)
243 if( fstrsolid%EMISES(i) > emmax(1) )
then
244 emmax(1) = fstrsolid%EMISES(i)
246 else if( fstrsolid%EMISES(i) < emmin(1) )
then
247 emmin(1) = fstrsolid%EMISES(i)
254 write(
ilog,*)
'##### Local Summary @Node :Max/IdMax/Min/IdMin####'
255 do i = 1, ndof;
write(
ilog,1029)
' //U',i,
' ',umax(i),iumax(i),umin(i),iumin(i);
end do
256 if (ndof == 4)
write(
ilog,1009)
' //P ' , umax(4),iumax(4),umin(4),iumin(4)
257 do i = 1, ndof;
write(
ilog,1029)
' //V',i,
' ',vmax(i),ivmax(i),vmin(i),ivmin(i);
end do
258 do i = 1, ndof;
write(
ilog,1029)
' //A',i,
' ',amax(i),iamax(i),amin(i),iamin(i);
end do
259 do i = 1, mdof;
write(
ilog,1029)
' //E',label(i),
' ',emax(i),iemax(i),emin(i),iemin(i);
end do
260 do i = 1, mdof;
write(
ilog,1029)
' //S',label(i),
' ',smax(i),ismax(i),smin(i),ismin(i);
end do
261 write(
ilog,1009)
'//SMS ' ,mmax(1),immax(1),mmin(1),immin(1)
262 write(
ilog,*)
'##### Local Summary @Element :Max/IdMax/Min/IdMin####'
263 do i = 1, mdof;
write(
ilog,1029)
' //E',label(i),
' ',eemax(i),ieemax(i),eemin(i),ieemin(i);
end do
264 do i = 1, mdof;
write(
ilog,1029)
' //S',label(i),
' ',esmax(i),iesmax(i),esmin(i),iesmin(i);
end do
265 write(
ilog,1009)
'//SMS ' ,emmax(1),iemmax(1),emmin(1),iemmin(1)
268 gumax(1:ndof) = umax(1:ndof); gumin(1:ndof) = umin(1:ndof)
269 gvmax(1:ndof) = vmax(1:ndof); gvmin(1:ndof) = vmin(1:ndof)
270 gamax(1:ndof) = amax(1:ndof); gamin(1:ndof) = amin(1:ndof)
271 gemax(1:mdof) = emax(1:mdof); gemin(1:mdof) = emin(1:mdof); geemax(1:mdof) = eemax(1:mdof); geemin(1:mdof) = eemin(1:mdof)
272 gsmax(1:mdof) = smax(1:mdof); gsmin(1:mdof) = smin(1:mdof); gesmax(1:mdof) = esmax(1:mdof); gesmin(1:mdof) = esmin(1:mdof)
273 gmmax = mmax; gmmin = mmin; gemmax = emmax; gemmin = emmin;
275 call hecmw_allreduce_r(hecmesh,gumax,ndof,hecmw_max)
276 call hecmw_allreduce_r(hecmesh,gumin,ndof,hecmw_min)
277 call hecmw_allreduce_r(hecmesh,gvmax,ndof,hecmw_max)
278 call hecmw_allreduce_r(hecmesh,gvmin,ndof,hecmw_min)
279 call hecmw_allreduce_r(hecmesh,gamax,ndof,hecmw_max)
280 call hecmw_allreduce_r(hecmesh,gamin,ndof,hecmw_min)
281 call hecmw_allreduce_r(hecmesh,gemax,mdof,hecmw_max)
282 call hecmw_allreduce_r(hecmesh,gemin,mdof,hecmw_min)
283 call hecmw_allreduce_r(hecmesh,gsmax,mdof,hecmw_max)
284 call hecmw_allreduce_r(hecmesh,gsmin,mdof,hecmw_min)
285 call hecmw_allreduce_r(hecmesh,gmmax,1,hecmw_max)
286 call hecmw_allreduce_r(hecmesh,gmmin,1,hecmw_min)
287 call hecmw_allreduce_r(hecmesh,geemax,mdof,hecmw_max)
288 call hecmw_allreduce_r(hecmesh,geemin,mdof,hecmw_min)
289 call hecmw_allreduce_r(hecmesh,gesmax,mdof,hecmw_max)
290 call hecmw_allreduce_r(hecmesh,gesmin,mdof,hecmw_min)
291 call hecmw_allreduce_r(hecmesh,gemmax,1,hecmw_max)
292 call hecmw_allreduce_r(hecmesh,gemmin,1,hecmw_min)
295 if(gumax(i) > umax(i)) iumax(i) = 0
296 if(gvmax(i) > vmax(i)) ivmax(i) = 0
297 if(gamax(i) > amax(i)) iamax(i) = 0
298 if(gumin(i) < umin(i)) iumin(i) = 0
299 if(gvmin(i) < vmin(i)) ivmin(i) = 0
300 if(gamin(i) < amin(i)) iamin(i) = 0
303 if(gemax(i) > emax(i)) iemax(i) = 0
304 if(gsmax(i) > smax(i)) ismax(i) = 0
305 if(geemax(i) > eemax(i)) ieemax(i) = 0
306 if(gesmax(i) > esmax(i)) iesmax(i) = 0
307 if(gemin(i) < emin(i)) iemin(i) = 0
308 if(gsmin(i) < smin(i)) ismin(i) = 0
309 if(geemin(i) < eemin(i)) ieemin(i) = 0
310 if(gesmin(i) < esmin(i)) iesmin(i) = 0
313 if(gmmax(i) > mmax(i)) immax(i) = 0
314 if(gemmax(i) > emmax(i)) iemmax(i) = 0
315 if(gmmin(i) < mmin(i)) immin(i) = 0
316 if(gemmin(i) < emmin(i)) iemmin(i) = 0
319 call hecmw_allreduce_i(hecmesh,iumax,ndof,hecmw_max)
320 call hecmw_allreduce_i(hecmesh,iumin,ndof,hecmw_max)
321 call hecmw_allreduce_i(hecmesh,ivmax,ndof,hecmw_max)
322 call hecmw_allreduce_i(hecmesh,ivmin,ndof,hecmw_max)
323 call hecmw_allreduce_i(hecmesh,iamax,ndof,hecmw_max)
324 call hecmw_allreduce_i(hecmesh,iamin,ndof,hecmw_max)
325 call hecmw_allreduce_i(hecmesh,iemax,mdof,hecmw_max)
326 call hecmw_allreduce_i(hecmesh,iemin,mdof,hecmw_max)
327 call hecmw_allreduce_i(hecmesh,ismax,mdof,hecmw_max)
328 call hecmw_allreduce_i(hecmesh,ismin,mdof,hecmw_max)
329 call hecmw_allreduce_i(hecmesh,immax,1,hecmw_max)
330 call hecmw_allreduce_i(hecmesh,immin,1,hecmw_max)
331 call hecmw_allreduce_i(hecmesh,ieemax,mdof,hecmw_max)
332 call hecmw_allreduce_i(hecmesh,ieemin,mdof,hecmw_max)
333 call hecmw_allreduce_i(hecmesh,iesmax,mdof,hecmw_max)
334 call hecmw_allreduce_i(hecmesh,iesmin,mdof,hecmw_max)
335 call hecmw_allreduce_i(hecmesh,iemmax,1,hecmw_max)
336 call hecmw_allreduce_i(hecmesh,iemmin,1,hecmw_max)
338 if( hecmesh%my_rank==0 )
then
339 write(
ilog,*)
'##### Global Summary @Node :Max/IdMax/Min/IdMin####'
340 do i = 1, ndof;
write(
ilog,1029)
' //U',i,
' ',gumax(i),iumax(i),gumin(i),iumin(i);
end do
341 if (ndof == 4)
write(
ilog,1009)
' //P ' ,gumax(4),iumax(4),gumin(4),iumin(4)
342 do i = 1, ndof;
write(
ilog,1029)
' //V',i,
' ',gvmax(i),ivmax(i),gvmin(i),ivmin(i);
end do
343 do i = 1, ndof;
write(
ilog,1029)
' //A',i,
' ',gamax(i),iamax(i),gamin(i),iamin(i);
end do
344 do i = 1, mdof;
write(
ilog,1029)
' //E',label(i),
' ',gemax(i),iemax(i),gemin(i),iemin(i);
end do
345 do i = 1, mdof;
write(
ilog,1029)
' //S',label(i),
' ',gsmax(i),ismax(i),gsmin(i),ismin(i);
end do
346 write(
ilog,1009)
'//SMS ' ,gmmax(1),immax(1),gmmin(1),immin(1)
347 write(
ilog,*)
'##### Global Summary @Element :Max/IdMax/Min/IdMin####'
348 do i = 1, mdof;
write(
ilog,1029)
' //E',label(i),
' ',geemax(i),ieemax(i),geemin(i),ieemin(i);
end do
349 do i = 1, mdof;
write(
ilog,1029)
' //S',label(i),
' ',gesmax(i),iesmax(i),gesmin(i),iesmin(i);
end do
350 write(
ilog,1009)
'//SMS ' ,gemmax(1),iemmax(1),gemmin(1),iemmin(1)
353 1009
format(a7,1pe12.4,i10,1pe12.4,i10)
354 1029
format(a,i0,a,1pe12.4,i10,1pe12.4,i10)
362 integer,
intent(in) :: cstep
363 integer,
intent(in) :: istep
364 real(kind=kreal),
intent(in) :: t_curr
365 type(hecmwst_local_mesh) :: hecmesh
370 integer(kind=kint) :: idx, ii, jj, ierr, ncmp
371 integer(kind=kint) :: num_monit, ig, is, iE, ik, iunitS, iunit
374 if( mod(istep,fstrdynamic%nout_monit)/=0 )
return
376 if( fstrdynamic%idx_eqa/=11 .and. istep>0 )
then
383 ig = fstrdynamic%ngrp_monit
384 is = hecmesh%node_group%grp_index(ig-1)+1
385 ie = hecmesh%node_group%grp_index(ig)
387 ii = hecmesh%node_group%grp_item(ik)
388 if (ii > hecmesh%nn_internal) cycle
389 num_monit = num_monit+1
390 jj = hecmesh%global_node_id(ii)
391 iunits = 10*(num_monit-1)
394 if( fstrdynamic%iout_list(1)==1 )
then
395 iunit = iunits + fstrdynamic%dynamic_IW4
396 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p6e13.4e3)' ) &
397 cstep, istep, t_curr, jj, &
398 fstrdynamic%DISP( hecmesh%n_dof*(ii-1)+1 : hecmesh%n_dof*ii , idx )
401 if( fstrdynamic%iout_list(2)==1 )
then
402 iunit = iunits + fstrdynamic%dynamic_IW5
403 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p6e13.4e3)' ) &
404 cstep, istep, t_curr, jj, &
405 fstrdynamic%VEL( hecmesh%n_dof*(ii-1)+1 : hecmesh%n_dof*ii , idx )
408 if( fstrdynamic%iout_list(3)==1 )
then
409 iunit = iunits + fstrdynamic%dynamic_IW6
410 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p6e13.4e3)' ) &
411 cstep, istep, t_curr, jj, &
412 fstrdynamic%ACC( hecmesh%n_dof*(ii-1)+1 : hecmesh%n_dof*ii , idx )
415 if( fstrdynamic%iout_list(4)==1 )
then
416 iunit = iunits + fstrdynamic%dynamic_IW7
417 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p6e13.4e3)' ) &
418 cstep, istep, t_curr, jj, &
419 fstrsolid%QFORCE( hecmesh%n_dof*(ii-1)+1 : hecmesh%n_dof*ii )
422 if( fstrdynamic%iout_list(5) > 0 )
then
423 if (hecmesh%n_dof == 2 .or. hecmesh%n_dof == 3 .or. hecmesh%n_dof == 4)
then
428 iunit = iunits + fstrdynamic%dynamic_IW8
429 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p6e13.4e3)') &
430 cstep, istep, t_curr, jj, &
431 fstrsolid%STRAIN( ncmp*(ii-1)+1 : ncmp*ii )
434 if( fstrdynamic%iout_list(6) > 0 )
then
435 if (hecmesh%n_dof == 2 .or. hecmesh%n_dof == 3 .or. hecmesh%n_dof == 4)
then
440 iunit = iunits + fstrdynamic%dynamic_IW9
441 write( iunit,
'(i10, i10,1pe13.4e3,i10,1p7e13.4e3)') &
442 cstep, istep, t_curr, jj, &
443 fstrsolid%STRESS( ncmp*(ii-1)+1 : ncmp*ii )
447 if( hecmesh%my_rank==0 )
then
448 if( any(fstrdynamic%iout_list(1:3)==1) )
then
449 inquire( file=
'dyna_energy.txt', opened=yes )
451 open( fstrdynamic%dynamic_IW10, file=
'dyna_energy.txt', status=
'replace', iostat=ierr )
453 write(*,*)
'stop due to file opening error <dyna_enrgy.txt>'
454 call hecmw_abort( hecmw_comm_get_comm() )
456 write( fstrdynamic%dynamic_IW10, * ) &
457 ' time step',
' time ',
' kinetic energy',
' strain energy',
' total energy'
459 if(istep==0 .and. fstrdynamic%idx_eqa==11)
then
460 fstrdynamic%kineticEnergy = 0.0d0
461 do ii = 1, hecmesh%n_node*hecmesh%n_dof
462 fstrdynamic%kineticEnergy = fstrdynamic%kineticEnergy &
463 + 0.5d0 * fstreig%mass(ii) * fstrdynamic%VEL(ii,idx) * fstrdynamic%VEL(ii,idx)
466 fstrdynamic%totalEnergy = fstrdynamic%kineticEnergy + fstrdynamic%strainEnergy
467 write( fstrdynamic%dynamic_IW10,
'(i10, i10,1pe13.4e3,1p3e16.4e3)' ) &
468 cstep, istep, t_curr, &
469 fstrdynamic%kineticEnergy, fstrdynamic%strainEnergy, fstrdynamic%totalEnergy
471 if( istep==fstrdynamic%n_step )
close(fstrdynamic%dynamic_IW10)
478 subroutine matvec(y,x,hecMAT,ndof,D,AU,AL)
480 type(hecmwst_matrix) :: hecMAT
482 integer(kind=kint) :: ndof, i, is, ie, j, icol, ki, kj, ix, iy, ip, nn
483 real(kind=kreal) :: d(ndof*ndof*hecmat%NP)
484 real(kind=kreal) :: au(ndof*ndof*hecmat%NPU)
485 real(kind=kreal) :: al(ndof*ndof*hecmat%NPL)
486 real(kind=kreal) :: x(ndof*hecmat%NP)
487 real(kind=kreal) :: y(ndof*hecmat%NP)
494 is=hecmat%indexU(i-1)+1
502 ip=nn*(j-1)+ndof*(ki-1)+kj
503 y(iy)=y(iy)+au(ip)*x(ix)
510 is=hecmat%indexL(i-1)+1
518 ip=nn*(j-1)+ndof*(ki-1)+kj
519 y(iy)=y(iy)+al(ip)*x(ix)
530 ip=nn*(i-1)+ndof*(ki-1)+kj
531 y(iy)=y(iy)+d(ip)*x(ix)
This module provides functions to output result.
subroutine fstr_dynamic_output(cstep, istep, t_curr, hecMESH, fstrSOLID, fstrDYNAMIC, fstrPARAM, outflag)
Output result.
subroutine dynamic_output_monit(cstep, istep, t_curr, hecMESH, fstrDYNAMIC, fstrEIG, fstrSOLID)
subroutine matvec(y, x, hecMAT, ndof, D, AU, AL)
subroutine fstr_dynamic_post(fnum, cstep, istep, hecMESH, fstrSOLID, fstrDYNAMIC)
Summarizer of output data which prints out max and min output values.
This module provides functions to calculation nodal stress.
subroutine fstr_nodalstress3d(hecMESH, fstrSOLID)
Calculate NODAL STRESS of solid elements.
subroutine fstr_nodalstress6d(hecMESH, fstrSOLID)
Calculate NODAL STRESS of shell elements.
subroutine fstr_nodalstress2d(hecMESH, fstrSOLID)
Calculate NODAL STRESS of plane elements.
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter ilog
FILE HANDLER.
HECMW to FSTR Mesh Data Converter. Converting Connectivity of Element Type 232, 342 and 352.
subroutine fstr2hecmw_mesh_conv(hecMESH)
subroutine hecmw2fstr_mesh_conv(hecMESH)
This module provide a function to prepare output of static analysis.
subroutine, public fstr_write_result(hecMESH, fstrSOLID, istep, time, flag, fstrDYNAMIC)
OUTPUT result file for static and dynamic analysis.
subroutine, public setup_contact_output_variables(hecMESH, fstrSOLID, phase, dtime, expflag)
subroutine, public fstr_make_result(hecMESH, fstrSOLID, fstrRESULT, istep, time, fstrDYNAMIC, label_suffix)
MAKE RESULT for static and dynamic analysis (WITHOUT ELEMENTAL RESULTS) -----------------------------...
Data for DYNAMIC ANSLYSIS (fstrDYNAMIC)
Package of data used by Lanczos eigenvalue solver.
FSTR INNER CONTROL PARAMETERS (fstrPARAM)