31 integer(kind=kint),
parameter ::
kyes = 1
32 integer(kind=kint),
parameter ::
kno = 0
33 integer(kind=kint),
parameter ::
kon = 1
34 integer(kind=kint),
parameter ::
koff = 0
40 integer(kind=kint),
parameter ::
kstheat = 3
47 integer(kind=kint),
parameter ::
ksmcg = 1
108 integer(kind=kint),
parameter ::
ilog = 16
109 integer(kind=kint),
parameter ::
ista = 17
110 integer(kind=kint),
parameter ::
iutb = 18
111 integer(kind=kint),
parameter ::
imsg = 51
112 integer(kind=kint),
parameter ::
idbg = 52
113 integer(kind=kint),
parameter ::
ifvs = 53
114 integer(kind=kint),
parameter ::
ineu = 54
115 integer(kind=kint),
parameter ::
iresout = 100
122 integer(kind=kint),
pointer ::
iecho
126 integer(kind=kint),
pointer ::
irres
127 integer(kind=kint),
pointer ::
iwres
128 integer(kind=kint),
pointer ::
nrres
140 real(kind=kreal) ::
dt
146 character(len=HECMW_FILENAME_LEN) :: cond_name
149 integer,
pointer :: intval(:) => null()
150 real(kind=kreal),
pointer :: realval(:) => null()
156 integer(kind=kint) :: solution_type
157 integer(kind=kint) :: solver_method
158 integer(kind=kint) :: nlsolver_method
162 integer(kind=kint) :: analysis_n
163 real(kind=kreal),
pointer :: dtime(:)
164 real(kind=kreal),
pointer ::
etime(:)
165 real(kind=kreal),
pointer :: dtmin(:)
166 real(kind=kreal),
pointer :: delmax(:)
167 integer(kind=kint),
pointer::
itmax(:)
168 real(kind=kreal),
pointer ::
eps(:)
170 integer(kind=kint) :: timepoint_id
173 integer(kind=kint) :: fg_echo
174 integer(kind=kint) :: fg_result
175 integer(kind=kint) :: fg_visual
178 integer(kind=kint) :: fg_neutral
179 integer(kind=kint) :: fg_irres
180 integer(kind=kint) :: fg_iwres
185 integer(kind=kint) :: n_node
186 integer(kind=kint) :: nn_internal
187 integer(kind=kint),
pointer :: global_local_id(:,:)
190 integer( kind=kint ) :: fg_couple
191 integer( kind=kint ) :: fg_couple_type
192 integer( kind=kint ) :: fg_couple_first
193 integer( kind=kint ) :: fg_couple_window
196 integer( kind=kint ) :: restart_out_type
197 integer( kind=kint ) :: restart_version
200 integer( kind=kint ) :: contact_algo
201 type(tcontactparam),
pointer :: contactparam(:)
202 type(tcontactinterference),
pointer :: contact_if(:)
214 real(kind=kreal),
pointer :: stress(:) => null()
215 real(kind=kreal),
pointer :: strain(:) => null()
216 real(kind=kreal),
pointer :: mises(:) => null()
218 real(kind=kreal),
pointer :: pstress(:) => null()
219 real(kind=kreal),
pointer :: pstrain(:) => null()
220 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
221 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
223 real(kind=kreal),
pointer :: estress(:) => null()
224 real(kind=kreal),
pointer :: estrain(:) => null()
225 real(kind=kreal),
pointer :: emises(:) => null()
226 real(kind=kreal),
pointer :: eplstrain(:) => null()
228 real(kind=kreal),
pointer :: epstress(:) => null()
229 real(kind=kreal),
pointer :: epstrain(:) => null()
230 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
231 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
232 real(kind=kreal),
pointer :: enqm(:) => null()
241 integer(kind=kint) :: file_type
242 integer(kind=kint) :: statictype
243 integer(kind=kint) :: nstep_tot
249 integer(kind=kint) :: boundary_ngrp_tot
250 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
251 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
252 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
253 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
254 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
255 integer(kind=kint),
pointer :: boundary_ngrp_istot (:) =>null()
256 integer(kind=kint) :: boundary_ngrp_rot
257 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
258 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
261 integer(kind=kint) :: velocity_type
262 integer(kind=kint) :: velocity_ngrp_tot
263 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
264 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
265 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
266 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
267 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
270 integer(kind=kint) :: acceleration_type
271 integer(kind=kint) :: acceleration_ngrp_tot
272 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
273 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
274 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
275 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
276 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
279 integer(kind=kint) :: cload_ngrp_tot
280 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
281 integer(kind=kint),
pointer :: cload_ngrp_id (:)
282 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
283 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
284 real(kind=kreal),
pointer :: cload_ngrp_val(:)
285 integer(kind=kint) :: cload_ngrp_rot
286 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
287 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
290 integer(kind=kint) :: dload_ngrp_tot
291 integer(kind=kint) :: dload_follow
292 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
293 integer(kind=kint),
pointer :: dload_ngrp_id (:)
294 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
295 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
296 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
299 integer(kind=kint) :: temp_ngrp_tot
300 integer(kind=kint) :: temp_irres
301 integer(kind=kint) :: temp_tstep
302 integer(kind=kint) :: temp_interval
303 integer(kind=kint) :: temp_rtype
304 real(kind=kreal) :: temp_factor
305 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
306 integer(kind=kint),
pointer :: temp_ngrp_id (:)
307 real(kind=kreal),
pointer :: temp_ngrp_val(:)
310 integer(kind=kint) :: spring_ngrp_tot
311 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
312 integer(kind=kint),
pointer :: spring_ngrp_id (:)
313 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
314 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
315 real(kind=kreal),
pointer :: spring_ngrp_val(:)
321 integer( kind=kint ) :: couple_ngrp_tot
322 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
325 integer(kind=kint) :: maxn_gauss
327 real(kind=kreal),
pointer :: stress(:)
328 real(kind=kreal),
pointer :: strain(:)
329 real(kind=kreal),
pointer :: mises(:)
331 real(kind=kreal),
pointer :: pstress(:)
332 real(kind=kreal),
pointer :: pstrain(:)
333 real(kind=kreal),
pointer :: pstress_vect(:,:)
334 real(kind=kreal),
pointer :: pstrain_vect(:,:)
336 real(kind=kreal),
pointer :: estress(:)
337 real(kind=kreal),
pointer :: estrain(:)
338 real(kind=kreal),
pointer :: emises(:)
339 real(kind=kreal),
pointer :: eplstrain(:)
341 real(kind=kreal),
pointer :: epstress(:)
342 real(kind=kreal),
pointer :: epstrain(:)
343 real(kind=kreal),
pointer :: epstress_vect(:,:)
344 real(kind=kreal),
pointer :: epstrain_vect(:,:)
346 real(kind=kreal),
pointer :: tnstrain(:)
347 real(kind=kreal),
pointer :: testrain(:)
349 real(kind=kreal),
pointer :: yield_ratio(:)
351 real(kind=kreal),
pointer :: enqm(:)
352 real(kind=kreal),
pointer :: reaction(:)
354 real(kind=kreal),
pointer :: cont_nforce(:)
355 real(kind=kreal),
pointer :: cont_fric(:)
356 real(kind=kreal),
pointer :: cont_relvel(:)
357 real(kind=kreal),
pointer :: cont_state(:)
358 integer(kind=kint),
pointer :: cont_sgrp_id(:)
359 real(kind=kreal),
pointer :: cont_area(:)
360 real(kind=kreal),
pointer :: cont_ntrac(:)
361 real(kind=kreal),
pointer :: cont_ftrac(:)
362 real(kind=kreal),
pointer :: embed_nforce(:)
369 integer(kind=kint) :: restart_nout
372 integer(kind=kint) :: restart_nin
375 integer(kind=kint) :: max_lyr
376 integer(kind=kint) :: is_33shell
377 integer(kind=kint) :: is_33beam
378 integer(kind=kint) :: is_heat
379 integer(kind=kint) :: max_ncon_stf
380 integer(kind=kint) :: max_ncon
381 integer(kind=kint),
pointer :: is_rot(:) => null()
382 integer(kind=kint) :: elemopt361
383 logical :: is_smoothing_active
384 real(kind=kreal) :: factor(2)
387 integer(kind=kint) :: nrstat_i(10)
388 real(kind=kreal) :: nrstat_r(10)
389 integer(kind=kint) :: autoinc_stat
390 integer(kind=kint) :: cutback_stat
392 real(kind=kreal),
pointer :: gl(:)
393 real(kind=kreal),
pointer :: gl0(:)
394 real(kind=kreal),
pointer :: eforce(:)
395 real(kind=kreal),
pointer :: qforce(:)
396 real(kind=kreal),
pointer :: qforce_bak(:)
397 real(kind=kreal),
pointer :: unode(:) => null()
398 real(kind=kreal),
pointer :: unode_bak(:) => null()
399 real(kind=kreal),
pointer :: dunode(:) => null()
400 real(kind=kreal),
pointer :: ddunode(:) => null()
401 real(kind=kreal),
pointer :: temperature(:)=> null()
402 real(kind=kreal),
pointer :: temp_bak(:) => null()
403 real(kind=kreal),
pointer :: last_temp(:) => null()
406 type( tmaterial ),
pointer :: materials(:) =>null()
407 integer :: n_contacts
412 real(kind=kreal),
pointer :: mpc_const(:) =>null()
422 real(kind=kreal),
pointer :: unode_bkup(:) => null()
423 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
424 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
425 type(
telement ),
pointer :: elements_bkup(:) =>null()
426 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
427 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
433 integer(kind=kint) :: is_steady
434 real(kind=kreal) :: beta
435 logical :: is_iter_max_limit
438 integer(kind=kint) :: steptot
439 integer(kind=kint) :: restart_nout
440 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
441 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
442 integer(kind=kint) :: timepoint_id
445 integer(kind=kint) :: materialtot
446 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
447 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
448 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
449 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
451 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
452 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
453 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
456 integer(kind=kint) :: amplitudetot
457 integer(kind=kint),
pointer :: ampltab(:)
458 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
459 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
462 real(kind=kreal),
pointer :: temp0(:)
463 real(kind=kreal),
pointer :: tempc(:)
464 real(kind=kreal),
pointer :: temp(:)
467 integer(kind=kint) :: t_fix_tot
468 integer(kind=kint),
pointer :: t_fix_node(:)
469 integer(kind=kint),
pointer :: t_fix_ampl(:)
470 real(kind=kreal),
pointer :: t_fix_val(:)
473 integer(kind=kint) :: q_nod_tot
474 integer(kind=kint),
pointer :: q_nod_node(:)
475 integer(kind=kint),
pointer :: q_nod_ampl(:)
476 real(kind=kreal),
pointer :: q_nod_val(:)
479 integer(kind=kint) :: q_vol_tot
480 integer(kind=kint),
pointer :: q_vol_elem(:)
481 integer(kind=kint),
pointer :: q_vol_ampl(:)
482 real(kind=kreal),
pointer :: q_vol_val(:)
485 integer(kind=kint) :: q_suf_tot
486 integer(kind=kint),
pointer :: q_suf_elem(:)
487 integer(kind=kint),
pointer :: q_suf_ampl(:)
488 integer(kind=kint),
pointer :: q_suf_surf(:)
489 real(kind=kreal),
pointer :: q_suf_val(:)
492 integer(kind=kint) :: r_suf_tot
493 integer(kind=kint),
pointer :: r_suf_elem(:)
494 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
495 integer(kind=kint),
pointer :: r_suf_surf(:)
496 real(kind=kreal),
pointer :: r_suf_val(:,:)
499 integer(kind=kint) :: h_suf_tot
500 integer(kind=kint),
pointer :: h_suf_elem(:)
501 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
502 integer(kind=kint),
pointer :: h_suf_surf(:)
503 real(kind=kreal),
pointer :: h_suf_val(:,:)
505 integer(kind=kint) :: wl_tot
515 integer(kind=kint) :: idx_eqa
516 integer(kind=kint) :: idx_resp
519 integer(kind=kint) :: n_step
520 real(kind=kreal) :: t_start
521 real(kind=kreal) :: t_curr
522 real(kind=kreal) :: t_end
523 real(kind=kreal) :: t_delta
524 integer(kind=kint) :: restart_nout
527 integer(kind=kint) :: restart_nin
530 real(kind=kreal) :: gamma
531 real(kind=kreal) :: beta
534 integer(kind=kint) :: idx_mas
537 integer(kind=kint) :: idx_dmp
538 real(kind=kreal) :: ray_m
539 real(kind=kreal) :: ray_k
542 logical :: varinitialize
545 integer(kind=kint) :: nout
546 integer(kind=kint) :: ngrp_monit
547 integer(kind=kint) :: nout_monit
548 integer(kind=kint) :: i_step
549 integer(kind=kint) :: iout_list(6)
558 real(kind=kreal),
pointer :: disp(:,:)
559 real(kind=kreal),
pointer :: vel(:,:)
560 real(kind=kreal),
pointer :: acc(:,:)
562 real(kind=kreal) :: kineticenergy
563 real(kind=kreal) :: strainenergy
564 real(kind=kreal) :: totalenergy
567 real(kind=kreal),
pointer :: vec1(:)
568 real(kind=kreal),
pointer :: vec2(:)
569 real(kind=kreal),
pointer :: vec3(:)
571 integer(kind=kint) :: dynamic_iw4 = 204
572 integer(kind=kint) :: dynamic_iw5 = 205
573 integer(kind=kint) :: dynamic_iw6 = 206
574 integer(kind=kint) :: dynamic_iw7 = 207
575 integer(kind=kint) :: dynamic_iw8 = 208
576 integer(kind=kint) :: dynamic_iw9 = 209
577 integer(kind=kint) :: dynamic_iw10 = 210
581 integer(kind=kint) :: fload_ngrp_tot
582 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
583 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
584 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
585 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
586 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
587 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
588 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
589 integer(kind=kint) :: start_mode
590 integer(kind=kint) :: end_mode
594 integer(kind=kint) :: nummode
595 integer(kind=kint) :: numnodedof
596 real(kind=kreal),
pointer :: eigomega(:) => null()
597 real(kind=kreal),
pointer :: eigvector(:,:) => null()
598 real(kind=kreal) :: rayalpha, raybeta
604 integer(kind=kint) :: nget
605 integer(kind=kint) :: maxiter
606 integer(kind=kint) :: iter
607 real (kind=kreal) :: sigma
608 real (kind=kreal) :: tolerance
609 real (kind=kreal) :: totalmass
610 real (kind=kreal),
pointer :: eigval(:)
611 real (kind=kreal),
pointer :: eigvec(:,:)
612 real (kind=kreal),
pointer :: filter(:)
613 real (kind=kreal),
pointer :: mass(:)
614 real (kind=kreal),
pointer :: effmass(:)
615 real (kind=kreal),
pointer :: partfactor(:)
616 logical :: is_free = .false.
622 integer( kind=kint ) :: dof
623 integer( kind=kint ) :: ndof
624 integer( kind=kint ) :: coupled_node_n
626 integer,
pointer :: coupled_node(:)
627 real( kind=8 ),pointer :: trac(:)
628 real( kind=8 ),pointer :: disp(:)
629 real( kind=8 ),pointer :: velo(:)
630 real( kind=8 ),pointer :: accel(:)
632 integer( kind=kint ),
pointer :: index(:)
638 integer(kind=kint) :: egrpid
639 real( kind=kreal ) :: i
640 real( kind=kreal ) :: u
641 real( kind=kreal ) :: coe
642 real( kind=kreal ) :: v
643 integer(kind=kint) :: xyz
644 real(kind=kreal) :: n1, n2
645 real(kind=kreal) :: distol
646 real(kind=kreal) :: tstart
655 integer :: elemopt341
659 integer :: elemopt361
676 nullify( p%global_local_ID)
677 nullify( p%timepoints )
684 nullify( s%BOUNDARY_ngrp_ID )
685 nullify( s%BOUNDARY_ngrp_type )
686 nullify( s%BOUNDARY_ngrp_amp )
687 nullify( s%BOUNDARY_ngrp_val)
688 nullify( s%BOUNDARY_ngrp_rotID )
689 nullify( s%BOUNDARY_ngrp_centerID )
690 nullify( s%CLOAD_ngrp_ID )
691 nullify( s%CLOAD_ngrp_DOF )
692 nullify( s%CLOAD_ngrp_amp )
693 nullify( s%CLOAD_ngrp_rotID )
694 nullify( s%CLOAD_ngrp_centerID )
695 nullify( s%CLOAD_ngrp_val )
696 nullify( s%DLOAD_ngrp_ID )
697 nullify( s%DLOAD_ngrp_LID )
698 nullify( s%DLOAD_ngrp_amp )
699 nullify( s%DLOAD_ngrp_params )
700 nullify( s%TEMP_ngrp_ID )
701 nullify( s%TEMP_ngrp_val )
702 nullify( s%SPRING_ngrp_ID )
703 nullify( s%SPRING_ngrp_DOF )
704 nullify( s%SPRING_ngrp_amp )
705 nullify( s%SPRING_ngrp_val )
711 nullify( s%PSTRESS_VECT )
712 nullify( s%PSTRAIN_VECT )
713 nullify( s%REACTION )
717 nullify( s%EPLSTRAIN )
718 nullify( s%EPSTRESS )
719 nullify( s%EPSTRAIN )
720 nullify( s%EPSTRESS_VECT )
721 nullify( s%EPSTRAIN_VECT )
726 nullify( s%VELOCITY_ngrp_ID )
727 nullify( s%VELOCITY_ngrp_type )
728 nullify( s%VELOCITY_ngrp_amp )
729 nullify( s%VELOCITY_ngrp_val )
730 nullify( s%ACCELERATION_ngrp_ID )
731 nullify( s%ACCELERATION_ngrp_type )
732 nullify( s%ACCELERATION_ngrp_amp )
733 nullify( s%ACCELERATION_ngrp_val )
734 nullify( s%COUPLE_ngrp_ID )
741 nullify( h%STEP_DLTIME )
742 nullify( h%STEP_EETIME )
743 nullify( h%STEP_DELMIN )
744 nullify( h%STEP_DELMAX )
750 nullify( h%CONDtemp )
754 nullify( h%RHOfuncA )
755 nullify( h%RHOfuncB )
758 nullify( h%CONDfuncA )
759 nullify( h%CONDfuncB )
761 nullify( h%AMPLtime )
763 nullify( h%AMPLfuncA )
764 nullify( h%AMPLfuncB )
768 nullify( h%T_FIX_node )
769 nullify( h%T_FIX_ampl )
770 nullify( h%T_FIX_val )
771 nullify( h%Q_NOD_node )
772 nullify( h%Q_NOD_ampl )
773 nullify( h%Q_NOD_val )
774 nullify( h%Q_VOL_elem )
775 nullify( h%Q_VOL_ampl )
776 nullify( h%Q_VOL_val )
777 nullify( h%Q_SUF_elem )
778 nullify( h%Q_SUF_ampl )
779 nullify( h%Q_SUF_surf )
780 nullify( h%Q_SUF_val )
781 nullify( h%R_SUF_elem )
782 nullify( h%R_SUF_ampl )
783 nullify( h%R_SUF_surf )
784 nullify( h%R_SUF_val )
785 nullify( h%H_SUF_elem )
786 nullify( h%H_SUF_ampl )
787 nullify( h%H_SUF_surf )
788 nullify( h%H_SUF_val )
808 nullify( f%FLOAD_ngrp_GRPID )
809 nullify( f%FLOAD_ngrp_ID )
810 nullify( f%FLOAD_ngrp_TYPE )
811 nullify( f%FLOAD_ngrp_DOF )
812 nullify( f%FLOAD_ngrp_valre )
813 nullify( f%FLOAD_ngrp_valim )
827 nullify( c%coupled_node )
836 type(hecmwst_matrix) :: hecMAT
838 hecmat%Iarray(1) = 100
843 hecmat%Iarray(6) = 10
845 hecmat%Iarray(21)=
kno
846 hecmat%Iarray(22)=
kno
850 hecmat%Iarray(34)= 10
861 hecmat%Rarray(1) = 1.0e-8
862 hecmat%Rarray(2) = 1.0
863 hecmat%Rarray(3) = 0.0
864 hecmat%Rarray(4) = 0.1
865 hecmat%Rarray(5) = 0.1
866 hecmat%Rarray(11)= 1.0e+4
868 hecmat%Iarray(96) = 0
869 hecmat%Iarray(97) =
kyes
870 hecmat%Iarray(98) =
kyes
871 hecmat%Iarray(99) =
kyes
876 type( hecmwst_matrix ) :: hecMAT
877 integer :: ndof, nn, ierror
880 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
881 if( ierror /= 0 )
then
882 write(*,*)
"##ERROR : not enough memory"
883 write(
idbg,*)
'stop due to allocation error'
885 call hecmw_abort( hecmw_comm_get_comm() )
887 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
888 if( ierror /= 0 )
then
889 write(*,*)
"##ERROR : not enough memory"
890 write(
idbg,*)
'stop due to allocation error'
892 call hecmw_abort( hecmw_comm_get_comm() )
894 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
895 if( ierror /= 0 )
then
896 write(*,*)
"##ERROR : not enough memory"
897 write(
idbg,*)
'stop due to allocation error'
899 call hecmw_abort( hecmw_comm_get_comm() )
902 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
903 if( ierror /= 0 )
then
904 write(*,*)
"##ERROR : not enough memory"
905 write(
idbg,*)
'stop due to allocation error'
907 call hecmw_abort( hecmw_comm_get_comm() )
909 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
910 if( ierror /= 0 )
then
911 write(*,*)
"##ERROR : not enough memory"
912 write(
idbg,*)
'stop due to allocation error'
914 call hecmw_abort( hecmw_comm_get_comm() )
916 allocate (hecmat%ALU(nn*hecmat%N) ,stat=ierror )
917 if( ierror /= 0 )
then
918 write(*,*)
"##ERROR : not enough memory"
919 write(
idbg,*)
'stop due to allocation error'
921 call hecmw_abort( hecmw_comm_get_comm() )
933 type( hecmwst_matrix ) :: hecMAT
934 integer :: ndof, nn, ierror
937 if(
associated(hecmat%AL) )
then
938 deallocate(hecmat%AL ,stat=ierror)
939 if( ierror /= 0 )
then
940 write(
idbg,*)
'stop due to deallocation error'
942 call hecmw_abort( hecmw_comm_get_comm())
945 if(
associated(hecmat%AU) )
then
946 deallocate(hecmat%AU ,stat=ierror)
947 if( ierror /= 0 )
then
948 write(
idbg,*)
'stop due to deallocation error'
950 call hecmw_abort( hecmw_comm_get_comm())
953 if(
associated(hecmat%B) )
then
954 deallocate(hecmat%B ,stat=ierror)
955 if( ierror /= 0 )
then
956 write(
idbg,*)
'stop due to deallocation error'
958 call hecmw_abort( hecmw_comm_get_comm())
961 if(
associated(hecmat%D) )
then
962 deallocate(hecmat%D ,stat=ierror)
963 if( ierror /= 0 )
then
964 write(
idbg,*)
'stop due to deallocation error'
966 call hecmw_abort( hecmw_comm_get_comm())
969 if(
associated(hecmat%X) )
then
970 deallocate(hecmat%X ,stat=ierror)
971 if( ierror /= 0 )
then
972 write(
idbg,*)
'stop due to deallocation error'
974 call hecmw_abort( hecmw_comm_get_comm())
977 if(
associated(hecmat%ALU) )
then
978 deallocate(hecmat%ALU ,stat=ierror)
979 if( ierror /= 0 )
then
980 write(
idbg,*)
'stop due to deallocation error'
982 call hecmw_abort( hecmw_comm_get_comm())
991 type(hecmwst_local_mesh) :: hecMESH
992 integer(kind=kint) :: i
993 external fstr_sort_index
996 fstrparam%nlgeom = .false.
997 fstrparam%solver_method =
ksmcg
1001 fstrparam%analysis_n = 0
1002 fstrparam%ref_temp = 0
1005 fstrparam%fg_echo =
koff
1006 fstrparam%fg_result =
koff
1007 fstrparam%fg_visual =
koff
1010 fstrparam%fg_neutral =
koff
1011 fstrparam%fg_irres =
kno
1012 fstrparam%fg_iwres =
kno
1014 fstrparam%nprint = 1
1017 fstrparam%fg_couple = 0
1018 fstrparam%fg_couple_type = 0
1019 fstrparam%fg_couple_first= 0
1020 fstrparam%fg_couple_window= 0
1023 fstrparam%restart_version = 5
1027 fstrparam%n_node = hecmesh%n_node;
1028 fstrparam%nn_internal = hecmesh%nn_internal;
1029 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1030 do i = 1, hecmesh%nn_internal
1031 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1032 fstrparam%global_local_ID(2,i) = i
1034 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1039 integer,
intent(in) :: nbc
1040 integer,
intent(in) :: cstep
1042 if( .not.
associated(fstrsolid%step_ctrl) )
return
1043 if( cstep>fstrsolid%nstep_tot )
return
1049 integer,
intent(in) :: nbc
1050 integer,
intent(in) :: cstep
1052 if( cstep > 0 )
then
1053 if( .not.
associated(fstrsolid%step_ctrl) )
return
1054 if( cstep>fstrsolid%nstep_tot )
return
1063 integer,
intent(in) :: nbc
1064 integer,
intent(in) :: cstep
1066 if( .not.
associated(fstrsolid%step_ctrl) )
return
1067 if( cstep>fstrsolid%nstep_tot )
return
1073 integer,
intent(in) :: nbc
1074 integer,
intent(in) :: cstep
1076 if( .not.
associated(fstrsolid%step_ctrl) )
return
1077 if( cstep>fstrsolid%nstep_tot )
return
1083 integer,
intent(in) :: nbc
1084 integer,
intent(in) :: cstep
1086 if( .not.
associated(fstrsolid%step_ctrl) )
return
1087 if( cstep>fstrsolid%nstep_tot )
return
1093 integer,
intent(in) :: cdsys_ID
1094 type(hecmwst_local_mesh) :: hecMESH
1096 real(kind=kreal),
intent(out) :: coords(3,3)
1100 if( cdsys_id>0 )
then
1105 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1106 + fstrsolid%dunode(3*ik-2:3*ik)
1108 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1109 + fstrsolid%dunode(3*ik-2:3*ik)
1111 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1112 + fstrsolid%dunode(3*ik-2:3*ik)
1119 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1120 type (fstr_solid),
intent(in) :: fstrSOLID
1121 real(kind=kreal),
intent(out) :: coord(:)
1122 integer(kind=kint) :: i
1123 if(hecmesh%n_dof == 4)
return
1124 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1125 coord(i) = hecmesh%node(i)
1126 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1132 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1133 type (fstr_solid),
intent(in) :: fstrSOLID
1134 real(kind=kreal),
intent(in) :: coord(:)
1135 integer(kind=kint) :: i
1136 if(hecmesh%n_dof == 4)
return
1137 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1138 hecmesh%node(i) = coord(i)
1148 phys%ESTRAIN = 0.0d0
1149 phys%ESTRESS = 0.0d0
1151 phys%EPLSTRAIN = 0.0d0
1157 type (fstr_solid) :: fstrSOLID
1158 integer(kind=kint) :: i
1160 if (
associated(fstrsolid%SOLID))
then
1163 if (
associated(fstrsolid%SHELL))
then
1165 do i=1,fstrsolid%max_lyr
1170 if (
associated(fstrsolid%BEAM))
then
1175 subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
1176 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1177 type ( fstr_solid ),
intent(in) :: fstrSOLID
1178 integer(kind=kint),
intent(in) :: cstep
1179 integer(kind=kint),
intent(in) :: jj_n_amp
1180 real(kind=kreal),
intent(in) :: time
1181 real(kind=kreal),
intent(out) :: f_t
1183 integer(kind=kint) :: i
1184 integer(kind=kint) :: jj1, jj2
1185 integer(kind=kint) :: s1, s2, flag
1186 real(kind=kreal) :: t_1, t_2, t_t, f_1, f_2, tincre
1190 if( jj_n_amp <= 0 )
then
1192 write(
imsg,*)
'internal error: amplitude table not defined'
1194 call hecmw_abort( hecmw_comm_get_comm() )
1197 tincre = fstrsolid%step_ctrl( cstep )%initdt
1198 jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
1199 jj2 = hecmesh%amp%amp_index(jj_n_amp)
1202 t_t = time-fstrsolid%step_ctrl(cstep)%starttime
1206 if(t_t .gt. hecmesh%amp%amp_table(jj2))
then
1207 f_t = hecmesh%amp%amp_val(jj2)
1208 else if(t_t .le. hecmesh%amp%amp_table(jj2))
then
1211 if(t_t .le. hecmesh%amp%amp_table(i))
then
1216 if( flag == 1 )
exit
1219 t_2 = hecmesh%amp%amp_table(s2)
1220 t_1 = hecmesh%amp%amp_table(s1)
1221 f_2 = hecmesh%amp%amp_val(s2)
1222 f_1 = hecmesh%amp%amp_val(s1)
1223 if( t_2-t_1 .lt. 1.0e-20)
then
1225 write(
imsg,*)
'stop due to t_2-t_1 <= 0'
1227 call hecmw_abort( hecmw_comm_get_comm())
1229 f_t = ((t_2*f_1 - t_1*f_2) + (f_2 - f_1)*t_t) / (t_2 - t_1)
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' coordinate
type(tlocalcoordsys), dimension(:), pointer, save g_localcoordsys
This module defined elemact data and function.
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter kel361bbar
integer(kind=kint), parameter iutb
integer(kind=kint), pointer iresult
subroutine fstr_solid_phys_zero(phys)
subroutine hecmat_finalize(hecMAT)
subroutine get_coordsys(cdsys_ID, hecMESH, fstrSOLID, coords)
This subroutine fetch coords defined by local coordinate system.
subroutine fstr_nullify_fstr_couple(C)
integer(kind=kint), parameter restart_outall
integer(kind=kint), parameter ineu
integer(kind=kint) myrank
PARALLEL EXECUTION.
integer(kind=kint), parameter kel341sesns
integer(kind=kint), parameter kbcffstr
boundary condition file type (bcf)
subroutine fstr_recover_initial_config_to_mesh(hecMESH, fstrSOLID, coord)
subroutine fstr_param_init(fstrPARAM, hecMESH)
Initializer of structure fstr_param.
integer(kind=kint), parameter imsg
integer(kind=kint), parameter kopss_material
integer(kind=kint), parameter kitrfloatingerror
logical function fstr_isembedactive(fstrSOLID, nbc, cstep)
integer(kind=kint), parameter ksmcg
solver method (sm) !CAUTION : (<=100):indirect, (>100):direct
real(kind=kreal), dimension(100) svrarray
integer(kind=kint), parameter kstdynamic
integer(kind=kint), parameter ksmgmresren
integer(kind=kint), pointer ineutral
subroutine fstr_nullify_fstr_heat(H)
logical function fstr_isloadactive(fstrSOLID, nbc, cstep)
integer(kind=kint), parameter kel341fi
section control
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
integer(kind=kint) opsstype
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
subroutine fstr_mat_init(hecMAT)
Initializer of structure hecmwST_matrix.
subroutine fstr_nullify_fstr_eigen(E)
integer(kind=kint) nprocs
integer(kind=kint), parameter ifvs
logical function fstr_iscontactactive(fstrSOLID, nbc, cstep)
integer(kind=kint), pointer iwres
logical function fstr_iselemactivationactive(fstrSOLID, nbc, cstep)
integer(kind=kint), parameter kitrconverged
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
integer(kind=kint), parameter knsmnewton
nonlinear solver method (nsm)
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_set_current_config_to_mesh(hecMESH, fstrSOLID, coord)
integer(kind=kint), parameter kbcinitial
integer(kind=kint), parameter kfloadtype_node
integer(kind=kint), parameter kstprecheck
solution type (st)
integer(kind=kint), parameter knsmquasinewton
integer(kind=kint), parameter kcaalagrange
subroutine hecmat_init(hecMAT)
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
subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
integer(kind=kint), parameter koff
real(kind=kreal), pointer ref_temp
REFTEMP.
integer(kind=kint), parameter kstnzprof
integer(kind=kint), parameter kbctransit
subroutine fstr_solid_phys_clear(fstrSOLID)
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_isboundaryactive(fstrSOLID, nbc, cstep)
subroutine fstr_nullify_fstr_param(P)
NULL POINTER SETTING TO AVOID RUNTIME ERROR.
integer(kind=kint), parameter ksteigen
type(tinitialcondition), dimension(:), pointer, save g_initialcnd
integer(kind=kint), pointer ivisual
integer(kind=kint), parameter kitrcontinue
iteration control
integer(kind=kint), parameter restart_outlast
restart type
integer(kind=kint), parameter iresout
integer(kind=kint), parameter ksmgmresr
subroutine fstr_nullify_fstr_solid(S)
subroutine fstr_nullify_fstr_dynamic(DY)
integer(kind=kint), parameter kno
integer(kind=kint), parameter kitrdiverged
logical paracontactflag
PARALLEL CONTACT FLAG.
integer(kind=kint), parameter kfloadcase_re
This module manages step information.
This module manages step information.
logical function iscontactactive(bnd, stepinfo)
Is contact condition in this step active.
logical function iselemactivationactive(bnd, stepinfo)
Is elemact 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 information.
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.
-1:not relation, >1:index of coupled_node
output control such as output filename, output frequency 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.