18   subroutine table_dyn(hecMESH, fstrSOLID, fstrDYNAMIC, ig0, f_t, flag_u)
 
   19     type(hecmwst_local_mesh) :: hecMESH
 
   23     integer(kind=kint) :: i, ig0
 
   24     integer(kind=kint) :: jj_n_amp, jj1, jj2
 
   25     integer(kind=kint) :: s1, s2, flag_u
 
   26     real(kind=kreal)   :: t_1, t_2, t_t, f_1, f_2, f_t
 
   30     t_1 = 0.0d0; t_2 = 0.0d0; t_t = 0.0d0; f_1 = 0.0d0; f_2 = 0.0d0; f_t = 0.0d0
 
   32     if( flag_u .eq. 1 ) 
then 
   33       jj_n_amp = fstrsolid%BOUNDARY_ngrp_amp(ig0)
 
   34     else if( flag_u .eq. 2 ) 
then 
   35       jj_n_amp = fstrsolid%VELOCITY_ngrp_amp(ig0)
 
   36     else if( flag_u .eq. 3 ) 
then 
   37       jj_n_amp = fstrsolid%ACCELERATION_ngrp_amp(ig0)
 
   38     else if( flag_u .eq. 0 ) 
then 
   39       jj_n_amp = fstrsolid%CLOAD_ngrp_amp(ig0)
 
   40     else if( flag_u .eq. 10 ) 
then 
   41       jj_n_amp = fstrsolid%DLOAD_ngrp_amp(ig0)
 
   44     if( jj_n_amp == 0 ) 
then 
   48       jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
 
   49       jj2 = hecmesh%amp%amp_index(jj_n_amp)
 
   52       if( fstrdynamic%idx_eqa == 1 ) 
then 
   53         t_t = fstrdynamic%t_curr
 
   55       else if( fstrdynamic%idx_eqa == 11 ) 
then 
   58             t_t = fstrdynamic%t_curr - fstrdynamic%t_delta
 
   60             t_t = fstrdynamic%t_curr - fstrdynamic%t_delta
 
   62             t_t = fstrdynamic%t_curr - fstrdynamic%t_delta
 
   64             t_t = fstrdynamic%t_curr - fstrdynamic%t_delta
 
   66             t_t = fstrdynamic%t_curr - fstrdynamic%t_delta
 
   70       if( fstrdynamic%i_step == 0 ) 
then 
   71         t_t = fstrdynamic%t_delta*fstrdynamic%i_step
 
   77       if(t_t .gt. hecmesh%amp%amp_table(jj2)) 
then 
   78         f_t = hecmesh%amp%amp_val(jj2)
 
   79       else if(t_t .le. hecmesh%amp%amp_table(jj2)) 
then 
   81           if(t_t .le. hecmesh%amp%amp_table(i)) 
then 
   88         t_2 = hecmesh%amp%amp_table(s2)
 
   89         t_1 = hecmesh%amp%amp_table(s1)
 
   90         f_2 = hecmesh%amp%amp_val(s2)
 
   91         f_1 = hecmesh%amp%amp_val(s1)
 
   92         if( t_2-t_1 .lt. 1.0e-20) 
then 
   93           if( hecmesh%my_rank.eq.0) 
then 
   94             write(
imsg,*) 
'stop due to t_2-t_1 <= 0' 
   96           call hecmw_abort( hecmw_comm_get_comm())
 
   98         f_t = ((t_2*f_1 - t_1*f_2) + (f_2 - f_1)*t_t) / (t_2 - t_1)
 
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter imsg
Table of lading step in dynamic analysis.
subroutine table_dyn(hecMESH, fstrSOLID, fstrDYNAMIC, ig0, f_t, flag_u)
Data for DYNAMIC ANSLYSIS (fstrDYNAMIC)