30 integer(kind=kint),
parameter ::
kyes = 1
31 integer(kind=kint),
parameter ::
kno = 0
32 integer(kind=kint),
parameter ::
kon = 1
33 integer(kind=kint),
parameter ::
koff = 0
39 integer(kind=kint),
parameter ::
kstheat = 3
46 integer(kind=kint),
parameter ::
ksmcg = 1
91 integer(kind=kint),
parameter ::
ilog = 16
92 integer(kind=kint),
parameter ::
ista = 17
93 integer(kind=kint),
parameter ::
iutb = 18
94 integer(kind=kint),
parameter ::
imsg = 51
95 integer(kind=kint),
parameter ::
idbg = 52
96 integer(kind=kint),
parameter ::
ifvs = 53
97 integer(kind=kint),
parameter ::
ineu = 54
98 integer(kind=kint),
parameter ::
iresout = 100
105 integer(kind=kint),
pointer ::
iecho
109 integer(kind=kint),
pointer ::
irres
110 integer(kind=kint),
pointer ::
iwres
111 integer(kind=kint),
pointer ::
nrres
123 real(kind=kreal) ::
dt
129 character(len=HECMW_FILENAME_LEN) :: cond_name
132 integer,
pointer :: intval(:) => null()
133 real(kind=kreal),
pointer :: realval(:) => null()
139 integer(kind=kint) :: solution_type
140 integer(kind=kint) :: solver_method
144 integer(kind=kint) :: analysis_n
145 real(kind=kreal),
pointer :: dtime(:)
146 real(kind=kreal),
pointer ::
etime(:)
147 real(kind=kreal),
pointer :: dtmin(:)
148 real(kind=kreal),
pointer :: delmax(:)
149 integer(kind=kint),
pointer::
itmax(:)
150 real(kind=kreal),
pointer ::
eps(:)
152 integer(kind=kint) :: timepoint_id
155 integer(kind=kint) :: fg_echo
156 integer(kind=kint) :: fg_result
157 integer(kind=kint) :: fg_visual
160 integer(kind=kint) :: fg_neutral
161 integer(kind=kint) :: fg_irres
162 integer(kind=kint) :: fg_iwres
167 integer(kind=kint) :: n_node
168 integer(kind=kint) :: nn_internal
169 integer(kind=kint),
pointer :: global_local_id(:,:)
172 integer( kind=kint ) :: fg_couple
173 integer( kind=kint ) :: fg_couple_type
174 integer( kind=kint ) :: fg_couple_first
175 integer( kind=kint ) :: fg_couple_window
178 integer( kind=kint ) :: restart_out_type
179 integer( kind=kint ) :: restart_version
182 integer( kind=kint ) :: contact_algo
194 real(kind=kreal),
pointer :: stress(:) => null()
195 real(kind=kreal),
pointer :: strain(:) => null()
196 real(kind=kreal),
pointer :: mises(:) => null()
198 real(kind=kreal),
pointer :: pstress(:) => null()
199 real(kind=kreal),
pointer :: pstrain(:) => null()
200 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
201 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
203 real(kind=kreal),
pointer :: estress(:) => null()
204 real(kind=kreal),
pointer :: estrain(:) => null()
205 real(kind=kreal),
pointer :: emises(:) => null()
207 real(kind=kreal),
pointer :: epstress(:) => null()
208 real(kind=kreal),
pointer :: epstrain(:) => null()
209 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
210 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
211 real(kind=kreal),
pointer :: enqm(:) => null()
220 integer(kind=kint) :: file_type
221 integer(kind=kint) :: statictype
222 integer(kind=kint) :: nstep_tot
228 integer(kind=kint) :: boundary_ngrp_tot
229 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
230 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
231 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
232 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
233 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
234 integer(kind=kint) :: boundary_ngrp_rot
235 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
236 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
239 integer(kind=kint) :: velocity_type
240 integer(kind=kint) :: velocity_ngrp_tot
241 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
242 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
243 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
244 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
245 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
248 integer(kind=kint) :: acceleration_type
249 integer(kind=kint) :: acceleration_ngrp_tot
250 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
251 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
252 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
253 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
254 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
257 integer(kind=kint) :: cload_ngrp_tot
258 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
259 integer(kind=kint),
pointer :: cload_ngrp_id (:)
260 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
261 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
262 real(kind=kreal),
pointer :: cload_ngrp_val(:)
263 integer(kind=kint) :: cload_ngrp_rot
264 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
265 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
268 integer(kind=kint) :: dload_ngrp_tot
269 integer(kind=kint) :: dload_follow
270 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
271 integer(kind=kint),
pointer :: dload_ngrp_id (:)
272 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
273 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
274 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
277 integer(kind=kint) :: temp_ngrp_tot
278 integer(kind=kint) :: temp_irres
279 integer(kind=kint) :: temp_tstep
280 integer(kind=kint) :: temp_interval
281 integer(kind=kint) :: temp_rtype
282 real(kind=kreal) :: temp_factor
283 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
284 integer(kind=kint),
pointer :: temp_ngrp_id (:)
285 real(kind=kreal),
pointer :: temp_ngrp_val(:)
288 integer(kind=kint) :: spring_ngrp_tot
289 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
290 integer(kind=kint),
pointer :: spring_ngrp_id (:)
291 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
292 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
293 real(kind=kreal),
pointer :: spring_ngrp_val(:)
296 integer( kind=kint ) :: couple_ngrp_tot
297 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
300 integer(kind=kint) :: maxn_gauss
302 real(kind=kreal),
pointer :: stress(:)
303 real(kind=kreal),
pointer :: strain(:)
304 real(kind=kreal),
pointer :: mises(:)
306 real(kind=kreal),
pointer :: pstress(:)
307 real(kind=kreal),
pointer :: pstrain(:)
308 real(kind=kreal),
pointer :: pstress_vect(:,:)
309 real(kind=kreal),
pointer :: pstrain_vect(:,:)
311 real(kind=kreal),
pointer :: estress(:)
312 real(kind=kreal),
pointer :: estrain(:)
313 real(kind=kreal),
pointer :: emises(:)
315 real(kind=kreal),
pointer :: epstress(:)
316 real(kind=kreal),
pointer :: epstrain(:)
317 real(kind=kreal),
pointer :: epstress_vect(:,:)
318 real(kind=kreal),
pointer :: epstrain_vect(:,:)
320 real(kind=kreal),
pointer :: tnstrain(:)
321 real(kind=kreal),
pointer :: testrain(:)
323 real(kind=kreal),
pointer :: yield_ratio(:)
325 real(kind=kreal),
pointer :: enqm(:)
326 real(kind=kreal),
pointer :: reaction(:)
328 real(kind=kreal),
pointer :: cont_nforce(:)
329 real(kind=kreal),
pointer :: cont_fric(:)
330 real(kind=kreal),
pointer :: cont_relvel(:)
331 real(kind=kreal),
pointer :: cont_state(:)
332 integer(kind=kint),
pointer :: cont_sgrp_id(:)
333 real(kind=kreal),
pointer :: cont_area(:)
334 real(kind=kreal),
pointer :: cont_ntrac(:)
335 real(kind=kreal),
pointer :: cont_ftrac(:)
342 integer(kind=kint) :: restart_nout
345 integer(kind=kint) :: restart_nin
348 integer(kind=kint) :: max_lyr
349 integer(kind=kint) :: is_33shell
350 integer(kind=kint) :: is_33beam
351 integer(kind=kint) :: is_heat
352 integer(kind=kint),
pointer :: is_rot(:) => null()
353 integer(kind=kint) :: elemopt361
354 real(kind=kreal) :: factor(2)
357 integer(kind=kint) :: nrstat_i(10)
358 real(kind=kreal) :: nrstat_r(10)
359 integer(kind=kint) :: autoinc_stat
360 integer(kind=kint) :: cutback_stat
362 real(kind=kreal),
pointer :: gl(:)
363 real(kind=kreal),
pointer :: eforce(:)
364 real(kind=kreal),
pointer :: qforce(:)
365 real(kind=kreal),
pointer :: unode(:) => null()
366 real(kind=kreal),
pointer :: dunode(:) => null()
367 real(kind=kreal),
pointer :: ddunode(:) => null()
368 real(kind=kreal),
pointer :: temperature(:)=> null()
369 real(kind=kreal),
pointer :: temp_bak(:) => null()
370 real(kind=kreal),
pointer :: last_temp(:) => null()
373 type( tmaterial ),
pointer :: materials(:) =>null()
376 real(kind=kreal),
pointer :: mpc_const(:) =>null()
386 real(kind=kreal),
pointer :: unode_bkup(:) => null()
387 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
388 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
389 type(
telement ),
pointer :: elements_bkup(:) =>null()
390 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
396 integer(kind=kint) :: is_steady
397 real(kind=kreal) :: beta
398 logical :: is_iter_max_limit
401 integer(kind=kint) :: steptot
402 integer(kind=kint) :: restart_nout
403 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
404 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
405 integer(kind=kint) :: timepoint_id
408 integer(kind=kint) :: materialtot
409 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
410 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
411 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
412 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
414 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
415 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
416 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
419 integer(kind=kint) :: amplitudetot
420 integer(kind=kint),
pointer :: ampltab(:)
421 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
422 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
425 real(kind=kreal),
pointer :: temp0(:)
426 real(kind=kreal),
pointer :: tempc(:)
427 real(kind=kreal),
pointer :: temp(:)
430 integer(kind=kint) :: t_fix_tot
431 integer(kind=kint),
pointer :: t_fix_node(:)
432 integer(kind=kint),
pointer :: t_fix_ampl(:)
433 real(kind=kreal),
pointer :: t_fix_val(:)
436 integer(kind=kint) :: q_nod_tot
437 integer(kind=kint),
pointer :: q_nod_node(:)
438 integer(kind=kint),
pointer :: q_nod_ampl(:)
439 real(kind=kreal),
pointer :: q_nod_val(:)
442 integer(kind=kint) :: q_vol_tot
443 integer(kind=kint),
pointer :: q_vol_elem(:)
444 integer(kind=kint),
pointer :: q_vol_ampl(:)
445 real(kind=kreal),
pointer :: q_vol_val(:)
448 integer(kind=kint) :: q_suf_tot
449 integer(kind=kint),
pointer :: q_suf_elem(:)
450 integer(kind=kint),
pointer :: q_suf_ampl(:)
451 integer(kind=kint),
pointer :: q_suf_surf(:)
452 real(kind=kreal),
pointer :: q_suf_val(:)
455 integer(kind=kint) :: r_suf_tot
456 integer(kind=kint),
pointer :: r_suf_elem(:)
457 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
458 integer(kind=kint),
pointer :: r_suf_surf(:)
459 real(kind=kreal),
pointer :: r_suf_val(:,:)
462 integer(kind=kint) :: h_suf_tot
463 integer(kind=kint),
pointer :: h_suf_elem(:)
464 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
465 integer(kind=kint),
pointer :: h_suf_surf(:)
466 real(kind=kreal),
pointer :: h_suf_val(:,:)
468 integer(kind=kint) :: wl_tot
475 integer(kind=kint) :: idx_eqa
476 integer(kind=kint) :: idx_resp
479 integer(kind=kint) :: n_step
480 real(kind=kreal) :: t_start
481 real(kind=kreal) :: t_curr
482 real(kind=kreal) :: t_end
483 real(kind=kreal) :: t_delta
484 integer(kind=kint) :: restart_nout
487 integer(kind=kint) :: restart_nin
490 real(kind=kreal) :: ganma
491 real(kind=kreal) :: beta
494 integer(kind=kint) :: idx_mas
497 integer(kind=kint) :: idx_dmp
498 real(kind=kreal) :: ray_m
499 real(kind=kreal) :: ray_k
502 logical :: varinitialize
505 integer(kind=kint) :: nout
506 integer(kind=kint) :: ngrp_monit
507 integer(kind=kint) :: nout_monit
508 integer(kind=kint) :: i_step
509 integer(kind=kint) :: iout_list(6)
518 real(kind=kreal),
pointer :: disp(:,:)
519 real(kind=kreal),
pointer :: vel(:,:)
520 real(kind=kreal),
pointer :: acc(:,:)
522 real(kind=kreal) :: kineticenergy
523 real(kind=kreal) :: strainenergy
524 real(kind=kreal) :: totalenergy
527 real(kind=kreal),
pointer :: vec1(:)
528 real(kind=kreal),
pointer :: vec2(:)
529 real(kind=kreal),
pointer :: vec3(:)
531 integer(kind=kint) :: dynamic_iw4 = 204
532 integer(kind=kint) :: dynamic_iw5 = 205
533 integer(kind=kint) :: dynamic_iw6 = 206
534 integer(kind=kint) :: dynamic_iw7 = 207
535 integer(kind=kint) :: dynamic_iw8 = 208
536 integer(kind=kint) :: dynamic_iw9 = 209
537 integer(kind=kint) :: dynamic_iw10 = 210
541 integer(kind=kint) :: fload_ngrp_tot
542 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
543 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
544 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
545 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
546 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
547 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
548 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
549 integer(kind=kint) :: start_mode
550 integer(kind=kint) :: end_mode
554 integer(kind=kint) :: nummode
555 integer(kind=kint) :: numnodedof
556 real(kind=kreal),
pointer :: eigomega(:) => null()
557 real(kind=kreal),
pointer :: eigvector(:,:) => null()
558 real(kind=kreal) :: rayalpha, raybeta
564 integer(kind=kint) :: nget
565 integer(kind=kint) :: maxiter
566 integer(kind=kint) :: iter
567 real (kind=kreal) :: sigma
568 real (kind=kreal) :: tolerance
569 real (kind=kreal) :: totalmass
570 real (kind=kreal),
pointer :: eigval(:)
571 real (kind=kreal),
pointer :: eigvec(:,:)
572 real (kind=kreal),
pointer :: filter(:)
573 real (kind=kreal),
pointer :: mass(:)
574 real (kind=kreal),
pointer :: effmass(:)
575 real (kind=kreal),
pointer :: partfactor(:)
576 logical :: is_free = .false.
582 integer( kind=kint ) :: dof
583 integer( kind=kint ) :: ndof
584 integer( kind=kint ) :: coupled_node_n
586 integer,
pointer :: coupled_node(:)
587 real( kind=8 ),pointer :: trac(:)
588 real( kind=8 ),pointer :: disp(:)
589 real( kind=8 ),pointer :: velo(:)
590 real( kind=8 ),pointer :: accel(:)
592 integer( kind=kint ),
pointer :: index(:)
598 integer(kind=kint) :: egrpid
599 real( kind=kreal ) :: i
600 real( kind=kreal ) :: u
601 real( kind=kreal ) :: coe
602 real( kind=kreal ) :: v
603 integer(kind=kint) :: xyz
604 real(kind=kreal) :: n1, n2
605 real(kind=kreal) :: distol
606 real(kind=kreal) :: tstart
619 integer :: elemopt361
636 nullify( p%global_local_ID)
637 nullify( p%timepoints )
644 nullify( s%BOUNDARY_ngrp_ID )
645 nullify( s%BOUNDARY_ngrp_type )
646 nullify( s%BOUNDARY_ngrp_amp )
647 nullify( s%BOUNDARY_ngrp_val)
648 nullify( s%BOUNDARY_ngrp_rotID )
649 nullify( s%BOUNDARY_ngrp_centerID )
650 nullify( s%CLOAD_ngrp_ID )
651 nullify( s%CLOAD_ngrp_DOF )
652 nullify( s%CLOAD_ngrp_amp )
653 nullify( s%CLOAD_ngrp_rotID )
654 nullify( s%CLOAD_ngrp_centerID )
655 nullify( s%CLOAD_ngrp_val )
656 nullify( s%DLOAD_ngrp_ID )
657 nullify( s%DLOAD_ngrp_LID )
658 nullify( s%DLOAD_ngrp_amp )
659 nullify( s%DLOAD_ngrp_params )
660 nullify( s%TEMP_ngrp_ID )
661 nullify( s%TEMP_ngrp_val )
662 nullify( s%SPRING_ngrp_ID )
663 nullify( s%SPRING_ngrp_DOF )
664 nullify( s%SPRING_ngrp_amp )
665 nullify( s%SPRING_ngrp_val )
671 nullify( s%PSTRESS_VECT )
672 nullify( s%PSTRAIN_VECT )
673 nullify( s%REACTION )
677 nullify( s%EPSTRESS )
678 nullify( s%EPSTRAIN )
679 nullify( s%EPSTRESS_VECT )
680 nullify( s%EPSTRAIN_VECT )
684 nullify( s%VELOCITY_ngrp_ID )
685 nullify( s%VELOCITY_ngrp_type )
686 nullify( s%VELOCITY_ngrp_amp )
687 nullify( s%VELOCITY_ngrp_val )
688 nullify( s%ACCELERATION_ngrp_ID )
689 nullify( s%ACCELERATION_ngrp_type )
690 nullify( s%ACCELERATION_ngrp_amp )
691 nullify( s%ACCELERATION_ngrp_val )
692 nullify( s%COUPLE_ngrp_ID )
699 nullify( h%STEP_DLTIME )
700 nullify( h%STEP_EETIME )
701 nullify( h%STEP_DELMIN )
702 nullify( h%STEP_DELMAX )
708 nullify( h%CONDtemp )
712 nullify( h%RHOfuncA )
713 nullify( h%RHOfuncB )
716 nullify( h%CONDfuncA )
717 nullify( h%CONDfuncB )
719 nullify( h%AMPLtime )
721 nullify( h%AMPLfuncA )
722 nullify( h%AMPLfuncB )
726 nullify( h%T_FIX_node )
727 nullify( h%T_FIX_ampl )
728 nullify( h%T_FIX_val )
729 nullify( h%Q_NOD_node )
730 nullify( h%Q_NOD_ampl )
731 nullify( h%Q_NOD_val )
732 nullify( h%Q_VOL_elem )
733 nullify( h%Q_VOL_ampl )
734 nullify( h%Q_VOL_val )
735 nullify( h%Q_SUF_elem )
736 nullify( h%Q_SUF_ampl )
737 nullify( h%Q_SUF_surf )
738 nullify( h%Q_SUF_val )
739 nullify( h%R_SUF_elem )
740 nullify( h%R_SUF_ampl )
741 nullify( h%R_SUF_surf )
742 nullify( h%R_SUF_val )
743 nullify( h%H_SUF_elem )
744 nullify( h%H_SUF_ampl )
745 nullify( h%H_SUF_surf )
746 nullify( h%H_SUF_val )
766 nullify( f%FLOAD_ngrp_GRPID )
767 nullify( f%FLOAD_ngrp_ID )
768 nullify( f%FLOAD_ngrp_TYPE )
769 nullify( f%FLOAD_ngrp_DOF )
770 nullify( f%FLOAD_ngrp_valre )
771 nullify( f%FLOAD_ngrp_valim )
785 nullify( c%coupled_node )
794 type(hecmwst_matrix) :: hecMAT
796 hecmat%Iarray(1) = 100
801 hecmat%Iarray(6) = 10
803 hecmat%Iarray(21)=
kno
804 hecmat%Iarray(22)=
kno
808 hecmat%Iarray(34)= 10
819 hecmat%Rarray(1) = 1.0e-8
820 hecmat%Rarray(2) = 1.0
821 hecmat%Rarray(3) = 0.0
822 hecmat%Rarray(4) = 0.1
823 hecmat%Rarray(5) = 0.1
824 hecmat%Rarray(11)= 1.0e+4
826 hecmat%Iarray(96) = 0
827 hecmat%Iarray(97) =
kyes
828 hecmat%Iarray(98) =
kyes
829 hecmat%Iarray(99) =
kyes
834 type( hecmwst_matrix ) :: hecMAT
835 integer :: ndof, nn, ierror
838 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
839 if( ierror /= 0 )
then
840 write(*,*)
"##ERROR : not enough memory"
841 write(
idbg,*)
'stop due to allocation error'
843 call hecmw_abort( hecmw_comm_get_comm() )
845 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
846 if( ierror /= 0 )
then
847 write(*,*)
"##ERROR : not enough memory"
848 write(
idbg,*)
'stop due to allocation error'
850 call hecmw_abort( hecmw_comm_get_comm() )
852 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
853 if( ierror /= 0 )
then
854 write(*,*)
"##ERROR : not enough memory"
855 write(
idbg,*)
'stop due to allocation error'
857 call hecmw_abort( hecmw_comm_get_comm() )
860 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
861 if( ierror /= 0 )
then
862 write(*,*)
"##ERROR : not enough memory"
863 write(
idbg,*)
'stop due to allocation error'
865 call hecmw_abort( hecmw_comm_get_comm() )
867 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
868 if( ierror /= 0 )
then
869 write(*,*)
"##ERROR : not enough memory"
870 write(
idbg,*)
'stop due to allocation error'
872 call hecmw_abort( hecmw_comm_get_comm() )
874 allocate (hecmat%ALU(nn*hecmat%N) ,stat=ierror )
875 if( ierror /= 0 )
then
876 write(*,*)
"##ERROR : not enough memory"
877 write(
idbg,*)
'stop due to allocation error'
879 call hecmw_abort( hecmw_comm_get_comm() )
881 call hecmw_cmat_init( hecmat%cmat )
892 type( hecmwst_matrix ) :: hecMAT
893 integer :: ndof, nn, ierror
896 if(
associated(hecmat%AL) )
then
897 deallocate(hecmat%AL ,stat=ierror)
898 if( ierror /= 0 )
then
899 write(
idbg,*)
'stop due to deallocation error'
901 call hecmw_abort( hecmw_comm_get_comm())
904 if(
associated(hecmat%AU) )
then
905 deallocate(hecmat%AU ,stat=ierror)
906 if( ierror /= 0 )
then
907 write(
idbg,*)
'stop due to deallocation error'
909 call hecmw_abort( hecmw_comm_get_comm())
912 if(
associated(hecmat%B) )
then
913 deallocate(hecmat%B ,stat=ierror)
914 if( ierror /= 0 )
then
915 write(
idbg,*)
'stop due to deallocation error'
917 call hecmw_abort( hecmw_comm_get_comm())
920 if(
associated(hecmat%D) )
then
921 deallocate(hecmat%D ,stat=ierror)
922 if( ierror /= 0 )
then
923 write(
idbg,*)
'stop due to deallocation error'
925 call hecmw_abort( hecmw_comm_get_comm())
928 if(
associated(hecmat%X) )
then
929 deallocate(hecmat%X ,stat=ierror)
930 if( ierror /= 0 )
then
931 write(
idbg,*)
'stop due to deallocation error'
933 call hecmw_abort( hecmw_comm_get_comm())
936 if(
associated(hecmat%ALU) )
then
937 deallocate(hecmat%ALU ,stat=ierror)
938 if( ierror /= 0 )
then
939 write(
idbg,*)
'stop due to deallocation error'
941 call hecmw_abort( hecmw_comm_get_comm())
944 call hecmw_cmat_finalize(hecmat%cmat)
951 type(hecmwst_local_mesh) :: hecMESH
952 integer(kind=kint) :: i
953 external fstr_sort_index
956 fstrparam%nlgeom = .false.
957 fstrparam%solver_method =
ksmcg
960 fstrparam%analysis_n = 0
961 fstrparam%ref_temp = 0
964 fstrparam%fg_echo =
koff
965 fstrparam%fg_result =
koff
966 fstrparam%fg_visual =
koff
969 fstrparam%fg_neutral =
koff
970 fstrparam%fg_irres =
kno
971 fstrparam%fg_iwres =
kno
976 fstrparam%fg_couple = 0
977 fstrparam%fg_couple_type = 0
978 fstrparam%fg_couple_first= 0
979 fstrparam%fg_couple_window= 0
982 fstrparam%restart_version = 5
986 fstrparam%n_node = hecmesh%n_node;
987 fstrparam%nn_internal = hecmesh%nn_internal;
988 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
989 do i = 1, hecmesh%nn_internal
990 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
991 fstrparam%global_local_ID(2,i) = i
998 integer,
intent(in) :: nbc
999 integer,
intent(in) :: cstep
1001 if( .not.
associated(fstrsolid%step_ctrl) )
return
1002 if( cstep>fstrsolid%nstep_tot )
return
1008 integer,
intent(in) :: nbc
1009 integer,
intent(in) :: cstep
1011 if( cstep > 0 )
then
1012 if( .not.
associated(fstrsolid%step_ctrl) )
return
1013 if( cstep>fstrsolid%nstep_tot )
return
1022 integer,
intent(in) :: nbc
1023 integer,
intent(in) :: cstep
1025 if( .not.
associated(fstrsolid%step_ctrl) )
return
1026 if( cstep>fstrsolid%nstep_tot )
return
1032 integer,
intent(in) :: cdsys_ID
1033 type(hecmwst_local_mesh) :: hecMESH
1035 real(kind=kreal),
intent(out) :: coords(3,3)
1039 if( cdsys_id>0 )
then
1044 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1045 + fstrsolid%dunode(3*ik-2:3*ik)
1047 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1048 + fstrsolid%dunode(3*ik-2:3*ik)
1050 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1051 + fstrsolid%dunode(3*ik-2:3*ik)
1058 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1059 type (fstr_solid),
intent(in) :: fstrSOLID
1060 real(kind=kreal),
intent(out) :: coord(:)
1061 integer(kind=kint) :: i
1062 if(hecmesh%n_dof == 4)
return
1063 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1064 coord(i) = hecmesh%node(i)
1065 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1071 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1072 type (fstr_solid),
intent(in) :: fstrSOLID
1073 real(kind=kreal),
intent(in) :: coord(:)
1074 integer(kind=kint) :: i
1075 if(hecmesh%n_dof == 4)
return
1076 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1077 hecmesh%node(i) = coord(i)
1087 phys%ESTRAIN = 0.0d0
1088 phys%ESTRESS = 0.0d0
1095 type (fstr_solid) :: fstrSOLID
1096 integer(kind=kint) :: i
1098 if (
associated(fstrsolid%SOLID))
then
1101 if (
associated(fstrsolid%SHELL))
then
1103 do i=1,fstrsolid%max_lyr
1108 if (
associated(fstrsolid%BEAM))
then
void fstr_sort_index(int *index_data, int *n)
This modules defines common structures for fem analysis.
logical function iscoordneeds(coordsys)
if need to fetch global nodes' coodinate
type(tlocalcoordsys), dimension(:), pointer, save g_localcoordsys
This module defined coomon data and basic structures for analysis.
logical function fstr_isboundaryactive(fstrsolid, nbc, cstep)
integer(kind=kint), parameter kel361bbar
integer(kind=kint), parameter iutb
integer(kind=kint), pointer iresult
subroutine fstr_solid_phys_zero(phys)
integer(kind=kint), parameter restart_outall
subroutine fstr_mat_init(hecmat)
Initializer of structure hecmwST_matrix.
integer(kind=kint), parameter ineu
integer(kind=kint) myrank
PARALLEL EXECUTION.
integer(kind=kint), parameter kbcffstr
boundary condition file type (bcf)
subroutine fstr_set_current_config_to_mesh(hecmesh, fstrsolid, coord)
integer(kind=kint), parameter imsg
integer(kind=kint), parameter kopss_material
integer(kind=kint), parameter ksmcg
solver method (sm) !CAUTION : (<=100):indirect, (>100):direct
real(kind=kreal), dimension(100) svrarray
logical function fstr_isloadactive(fstrsolid, nbc, cstep)
integer(kind=kint), parameter kstdynamic
subroutine hecmat_finalize(hecmat)
subroutine fstr_param_init(fstrparam, hecmesh)
Initializer of structure fstr_param.
integer(kind=kint), pointer ineutral
subroutine fstr_solid_phys_clear(fstrsolid)
subroutine get_coordsys(cdsys_id, hecmesh, fstrsolid, coords)
This subroutine fetch coords defined by local coordinate system.
integer(kind=kint), parameter idbg
integer(kind=kint), parameter kfloadtype_surf
integer(kind=kint), parameter ksmgmres
integer(kind=kint), parameter kopss_solution
integer(kind=kint), parameter kel361fi
section control
integer(kind=kint) opsstype
subroutine fstr_nullify_fstr_solid(s)
integer(kind=kint), dimension(100) sviarray
SOLVER CONTROL.
integer(kind=kint), parameter kon
character(len=hecmw_filename_len) restartfilname
integer(kind=kint), parameter kfloadcase_im
integer(kind=kint) nprocs
subroutine fstr_nullify_fstr_param(p)
NULL POINTER SETTING TO AVOID RUNTIME ERROR.
integer(kind=kint), parameter ifvs
integer(kind=kint), pointer iwres
integer(kind=kint), parameter kyes
CONSTANTS general.
integer(kind=kint), parameter kbcfnastran
integer(kind=kint), parameter kel361ic
integer(kind=kint), parameter kcaslagrange
contact analysis algorithm
integer(kind=kint), parameter ilog
FILE HANDLER.
integer(kind=kint), parameter ksmgpbicg
subroutine fstr_nullify_fstr_eigen(e)
integer(kind=kint), pointer nprint
real(kind=kreal) dt
ANALYSIS CONTROL for NLGEOM and HEAT.
integer(kind=kint), pointer nrres
integer(kind=kint), parameter kststatic
subroutine fstr_nullify_fstr_dynamic(dy)
integer(kind=kint), parameter kbcinitial
integer(kind=kint), parameter kfloadtype_node
integer(kind=kint), parameter kstprecheck
solution type (st)
integer(kind=kint), parameter kcaalagrange
integer(kind=kint), parameter kststaticeigen
integer(kind=kint), parameter kstheat
integer(kind=kint), parameter ista
subroutine fstr_nullify_fstr_freqanalysis(f)
integer(kind=kint), parameter ksmdirect
integer(kind=kint), parameter koff
real(kind=kreal), pointer ref_temp
REFTEMP.
integer(kind=kint), parameter kstnzprof
integer(kind=kint), parameter kbctransit
integer(kind=kint), pointer irres
integer(kind=kint), parameter ksmbicgstab
character(len=hecmw_filename_len) cntfilname
FILE NAME.
integer(kind=kint), pointer iecho
FLAG for ECHO/RESULT/POST.
type(fstr_param), target fstrpr
GLOBAL VARIABLE INITIALIZED IN FSTR_SETUP.
integer(kind=kint), parameter kel361fbar
logical function fstr_iscontactactive(fstrsolid, nbc, cstep)
subroutine fstr_nullify_fstr_couple(c)
integer(kind=kint), parameter ksteigen
subroutine fstr_nullify_fstr_heat(h)
type(tinitialcondition), dimension(:), pointer, save g_initialcnd
integer(kind=kint), pointer ivisual
integer(kind=kint), parameter restart_outlast
restart type
integer(kind=kint), parameter iresout
subroutine fstr_recover_initial_config_to_mesh(hecmesh, fstrsolid, coord)
subroutine hecmat_init(hecmat)
integer(kind=kint), parameter kno
logical paracontactflag
PARALLEL CONTACT FLAG.
integer(kind=kint), parameter kfloadcase_re
This module manages step infomation.
This module manages step infomation.
logical function iscontactactive(bnd, stepinfo)
Is contact condition in this step active.
logical function isboundaryactive(bnd, stepinfo)
Is boundary condition in this step active.
logical function isloadactive(bnd, stepinfo)
Is external load in this step active.
This module manages timepoint infomation.
This modules defines a structure to record history dependent parameter in static analysis.
Data for coupling analysis.
Data for DYNAMIC ANSLYSIS (fstrDYNAMIC)
Package of data used by Lanczos eigenvalue solver.
Data for HEAT ANSLYSIS (fstrHEAT)
FSTR INNER CONTROL PARAMETERS (fstrPARAM)
Data for STATIC ANSLYSIS (fstrSOLID)
Data for section control.
output control such as output filename, output freqency etc.
Step control such as active boundary condition, convergent condition etc.
Time points storage for output etc.
All data should be recorded in every elements.