32 integer(kind=kint),
parameter ::
kyes = 1
33 integer(kind=kint),
parameter ::
kno = 0
34 integer(kind=kint),
parameter ::
kon = 1
35 integer(kind=kint),
parameter ::
koff = 0
41 integer(kind=kint),
parameter ::
kstheat = 3
48 integer(kind=kint),
parameter ::
ksmcg = 1
109 integer(kind=kint),
parameter ::
ilog = 16
110 integer(kind=kint),
parameter ::
ista = 17
111 integer(kind=kint),
parameter ::
iutb = 18
112 integer(kind=kint),
parameter ::
imsg = 51
113 integer(kind=kint),
parameter ::
idbg = 52
114 integer(kind=kint),
parameter ::
ifvs = 53
115 integer(kind=kint),
parameter ::
ineu = 54
116 integer(kind=kint),
parameter ::
iresout = 100
123 integer(kind=kint),
pointer ::
iecho
127 integer(kind=kint),
pointer ::
irres
128 integer(kind=kint),
pointer ::
iwres
129 integer(kind=kint),
pointer ::
nrres
141 real(kind=kreal) ::
dt
147 character(len=HECMW_FILENAME_LEN) :: cond_name
150 integer,
pointer :: intval(:) => null()
151 real(kind=kreal),
pointer :: realval(:) => null()
157 integer(kind=kint) :: solution_type
158 integer(kind=kint) :: solver_method
159 integer(kind=kint) :: nlsolver_method
163 integer(kind=kint) :: analysis_n
164 real(kind=kreal),
pointer :: dtime(:)
165 real(kind=kreal),
pointer ::
etime(:)
166 real(kind=kreal),
pointer :: dtmin(:)
167 real(kind=kreal),
pointer :: delmax(:)
168 integer(kind=kint),
pointer::
itmax(:)
169 real(kind=kreal),
pointer ::
eps(:)
171 integer(kind=kint) :: timepoint_id
174 integer(kind=kint) :: fg_echo
175 integer(kind=kint) :: fg_result
176 integer(kind=kint) :: fg_visual
179 integer(kind=kint) :: fg_neutral
180 integer(kind=kint) :: fg_irres
181 integer(kind=kint) :: fg_iwres
186 integer(kind=kint) :: n_node
187 integer(kind=kint) :: nn_internal
188 integer(kind=kint),
pointer :: global_local_id(:,:)
191 integer( kind=kint ) :: fg_couple
192 integer( kind=kint ) :: fg_couple_type
193 integer( kind=kint ) :: fg_couple_first
194 integer( kind=kint ) :: fg_couple_window
197 integer( kind=kint ) :: restart_out_type
198 integer( kind=kint ) :: restart_version
201 integer( kind=kint ) :: contact_algo
202 integer( kind=kint ) :: augiter
203 type(tcontactparam),
pointer :: contactparam(:)
204 type(tcontactinterference),
pointer :: contact_if(:)
216 real(kind=kreal),
pointer :: stress(:) => null()
217 real(kind=kreal),
pointer :: strain(:) => null()
218 real(kind=kreal),
pointer :: mises(:) => null()
220 real(kind=kreal),
pointer :: pstress(:) => null()
221 real(kind=kreal),
pointer :: pstrain(:) => null()
222 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
223 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
225 real(kind=kreal),
pointer :: estress(:) => null()
226 real(kind=kreal),
pointer :: estrain(:) => null()
227 real(kind=kreal),
pointer :: emises(:) => null()
228 real(kind=kreal),
pointer :: eplstrain(:) => null()
230 real(kind=kreal),
pointer :: epstress(:) => null()
231 real(kind=kreal),
pointer :: epstrain(:) => null()
232 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
233 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
234 real(kind=kreal),
pointer :: enqm(:) => null()
243 integer(kind=kint) :: file_type
244 integer(kind=kint) :: statictype
245 integer(kind=kint) :: nstep_tot
251 integer(kind=kint) :: boundary_ngrp_tot
252 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
253 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
254 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
255 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
256 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
257 integer(kind=kint),
pointer :: boundary_ngrp_istot (:) =>null()
258 integer(kind=kint) :: boundary_ngrp_rot
259 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
260 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
263 integer(kind=kint) :: velocity_type
264 integer(kind=kint) :: velocity_ngrp_tot
265 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
266 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
267 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
268 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
269 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
272 integer(kind=kint) :: acceleration_type
273 integer(kind=kint) :: acceleration_ngrp_tot
274 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
275 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
276 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
277 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
278 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
281 integer(kind=kint) :: cload_ngrp_tot
282 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
283 integer(kind=kint),
pointer :: cload_ngrp_id (:)
284 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
285 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
286 real(kind=kreal),
pointer :: cload_ngrp_val(:)
287 integer(kind=kint) :: cload_ngrp_rot
288 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
289 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
292 integer(kind=kint) :: dload_ngrp_tot
293 integer(kind=kint) :: dload_follow
294 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
295 integer(kind=kint),
pointer :: dload_ngrp_id (:)
296 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
297 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
298 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
301 integer(kind=kint) :: temp_ngrp_tot
302 integer(kind=kint) :: temp_irres
303 integer(kind=kint) :: temp_tstep
304 integer(kind=kint) :: temp_interval
305 integer(kind=kint) :: temp_rtype
306 real(kind=kreal) :: temp_factor
307 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
308 integer(kind=kint),
pointer :: temp_ngrp_id (:)
309 real(kind=kreal),
pointer :: temp_ngrp_val(:)
312 integer(kind=kint) :: spring_ngrp_tot
313 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
314 integer(kind=kint),
pointer :: spring_ngrp_id (:)
315 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
316 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
317 real(kind=kreal),
pointer :: spring_ngrp_val(:)
323 integer( kind=kint ) :: couple_ngrp_tot
324 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
327 integer(kind=kint) :: maxn_gauss
329 real(kind=kreal),
pointer :: stress(:)
330 real(kind=kreal),
pointer :: strain(:)
331 real(kind=kreal),
pointer :: mises(:)
333 real(kind=kreal),
pointer :: pstress(:)
334 real(kind=kreal),
pointer :: pstrain(:)
335 real(kind=kreal),
pointer :: pstress_vect(:,:)
336 real(kind=kreal),
pointer :: pstrain_vect(:,:)
338 real(kind=kreal),
pointer :: estress(:)
339 real(kind=kreal),
pointer :: estrain(:)
340 real(kind=kreal),
pointer :: emises(:)
341 real(kind=kreal),
pointer :: eplstrain(:)
343 real(kind=kreal),
pointer :: epstress(:)
344 real(kind=kreal),
pointer :: epstrain(:)
345 real(kind=kreal),
pointer :: epstress_vect(:,:)
346 real(kind=kreal),
pointer :: epstrain_vect(:,:)
348 real(kind=kreal),
pointer :: tnstrain(:)
349 real(kind=kreal),
pointer :: testrain(:)
351 real(kind=kreal),
pointer :: yield_ratio(:)
353 real(kind=kreal),
pointer :: enqm(:)
354 real(kind=kreal),
pointer :: reaction(:)
356 real(kind=kreal),
pointer :: cont_nforce(:)
357 real(kind=kreal),
pointer :: cont_fric(:)
358 real(kind=kreal),
pointer :: cont_relvel(:)
359 real(kind=kreal),
pointer :: cont_state(:)
360 integer(kind=kint),
pointer :: cont_sgrp_id(:)
361 real(kind=kreal),
pointer :: cont_area(:)
362 real(kind=kreal),
pointer :: cont_ntrac(:)
363 real(kind=kreal),
pointer :: cont_ftrac(:)
364 real(kind=kreal),
pointer :: embed_nforce(:)
371 integer(kind=kint) :: restart_nout
374 integer(kind=kint) :: restart_nin
377 integer(kind=kint) :: max_lyr
378 integer(kind=kint) :: is_33shell
379 integer(kind=kint) :: is_33beam
380 integer(kind=kint) :: is_heat
381 integer(kind=kint) :: max_ncon_stf
382 integer(kind=kint) :: max_ncon
383 integer(kind=kint),
pointer :: is_rot(:) => null()
384 integer(kind=kint) :: elemopt361
385 logical :: is_smoothing_active
386 real(kind=kreal) :: factor(2)
389 integer(kind=kint) :: nrstat_i(10)
390 real(kind=kreal) :: nrstat_r(10)
391 integer(kind=kint) :: autoinc_stat
392 integer(kind=kint) :: cutback_stat
394 real(kind=kreal),
pointer :: gl(:)
395 real(kind=kreal),
pointer :: gl0(:)
396 real(kind=kreal),
pointer :: eforce(:)
397 real(kind=kreal),
pointer :: qforce(:)
398 real(kind=kreal),
pointer :: qforce_bak(:)
399 real(kind=kreal),
pointer :: unode(:) => null()
400 real(kind=kreal),
pointer :: unode_bak(:) => null()
401 real(kind=kreal),
pointer :: dunode(:) => null()
402 real(kind=kreal),
pointer :: ddunode(:) => null()
403 real(kind=kreal),
pointer :: temperature(:)=> null()
404 real(kind=kreal),
pointer :: temp_bak(:) => null()
405 real(kind=kreal),
pointer :: last_temp(:) => null()
408 type( tmaterial ),
pointer :: materials(:) =>null()
409 integer :: n_contacts
414 real(kind=kreal),
pointer :: mpc_const(:) =>null()
424 real(kind=kreal),
pointer :: unode_bkup(:) => null()
425 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
426 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
427 type(
telement ),
pointer :: elements_bkup(:) =>null()
428 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
429 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
435 integer(kind=kint) :: is_steady
436 real(kind=kreal) :: beta
437 logical :: is_iter_max_limit
440 integer(kind=kint) :: steptot
441 integer(kind=kint) :: restart_nout
442 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
443 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
444 integer(kind=kint) :: timepoint_id
447 integer(kind=kint) :: materialtot
448 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
449 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
450 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
451 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
453 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
454 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
455 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
458 integer(kind=kint) :: amplitudetot
459 integer(kind=kint),
pointer :: ampltab(:)
460 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
461 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
464 real(kind=kreal),
pointer :: temp0(:)
465 real(kind=kreal),
pointer :: tempc(:)
466 real(kind=kreal),
pointer :: temp(:)
469 integer(kind=kint) :: t_fix_tot
470 integer(kind=kint),
pointer :: t_fix_node(:)
471 integer(kind=kint),
pointer :: t_fix_ampl(:)
472 real(kind=kreal),
pointer :: t_fix_val(:)
475 integer(kind=kint) :: q_nod_tot
476 integer(kind=kint),
pointer :: q_nod_node(:)
477 integer(kind=kint),
pointer :: q_nod_ampl(:)
478 real(kind=kreal),
pointer :: q_nod_val(:)
481 integer(kind=kint) :: q_vol_tot
482 integer(kind=kint),
pointer :: q_vol_elem(:)
483 integer(kind=kint),
pointer :: q_vol_ampl(:)
484 real(kind=kreal),
pointer :: q_vol_val(:)
487 integer(kind=kint) :: q_suf_tot
488 integer(kind=kint),
pointer :: q_suf_elem(:)
489 integer(kind=kint),
pointer :: q_suf_ampl(:)
490 integer(kind=kint),
pointer :: q_suf_surf(:)
491 real(kind=kreal),
pointer :: q_suf_val(:)
494 integer(kind=kint) :: r_suf_tot
495 integer(kind=kint),
pointer :: r_suf_elem(:)
496 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
497 integer(kind=kint),
pointer :: r_suf_surf(:)
498 real(kind=kreal),
pointer :: r_suf_val(:,:)
501 integer(kind=kint) :: h_suf_tot
502 integer(kind=kint),
pointer :: h_suf_elem(:)
503 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
504 integer(kind=kint),
pointer :: h_suf_surf(:)
505 real(kind=kreal),
pointer :: h_suf_val(:,:)
507 integer(kind=kint) :: wl_tot
517 integer(kind=kint) :: idx_eqa
518 integer(kind=kint) :: idx_resp
521 integer(kind=kint) :: n_step
522 real(kind=kreal) :: t_start
523 real(kind=kreal) :: t_curr
524 real(kind=kreal) :: t_end
525 real(kind=kreal) :: t_delta
526 integer(kind=kint) :: restart_nout
529 integer(kind=kint) :: restart_nin
532 real(kind=kreal) :: gamma
533 real(kind=kreal) :: beta
536 integer(kind=kint) :: idx_mas
539 integer(kind=kint) :: idx_dmp
540 real(kind=kreal) :: ray_m
541 real(kind=kreal) :: ray_k
544 logical :: varinitialize
547 integer(kind=kint) :: nout
548 integer(kind=kint) :: ngrp_monit
549 integer(kind=kint) :: nout_monit
550 integer(kind=kint) :: i_step
551 integer(kind=kint) :: iout_list(6)
560 real(kind=kreal),
pointer :: disp(:,:)
561 real(kind=kreal),
pointer :: vel(:,:)
562 real(kind=kreal),
pointer :: acc(:,:)
564 real(kind=kreal) :: kineticenergy
565 real(kind=kreal) :: strainenergy
566 real(kind=kreal) :: totalenergy
569 real(kind=kreal),
pointer :: vec1(:)
570 real(kind=kreal),
pointer :: vec2(:)
571 real(kind=kreal),
pointer :: vec3(:)
573 integer(kind=kint) :: dynamic_iw4 = 204
574 integer(kind=kint) :: dynamic_iw5 = 205
575 integer(kind=kint) :: dynamic_iw6 = 206
576 integer(kind=kint) :: dynamic_iw7 = 207
577 integer(kind=kint) :: dynamic_iw8 = 208
578 integer(kind=kint) :: dynamic_iw9 = 209
579 integer(kind=kint) :: dynamic_iw10 = 210
583 integer(kind=kint) :: fload_ngrp_tot
584 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
585 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
586 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
587 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
588 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
589 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
590 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
591 integer(kind=kint) :: start_mode
592 integer(kind=kint) :: end_mode
596 integer(kind=kint) :: nummode
597 integer(kind=kint) :: numnodedof
598 real(kind=kreal),
pointer :: eigomega(:) => null()
599 real(kind=kreal),
pointer :: eigvector(:,:) => null()
600 real(kind=kreal) :: rayalpha, raybeta
606 integer(kind=kint) :: nget
607 integer(kind=kint) :: maxiter
608 integer(kind=kint) :: iter
609 real (kind=kreal) :: sigma
610 real (kind=kreal) :: tolerance
611 real (kind=kreal) :: totalmass
612 real (kind=kreal),
pointer :: eigval(:)
613 real (kind=kreal),
pointer :: eigvec(:,:)
614 real (kind=kreal),
pointer :: filter(:)
615 real (kind=kreal),
pointer :: mass(:)
616 real (kind=kreal),
pointer :: effmass(:)
617 real (kind=kreal),
pointer :: partfactor(:)
618 logical :: is_free = .false.
624 integer( kind=kint ) :: dof
625 integer( kind=kint ) :: ndof
626 integer( kind=kint ) :: coupled_node_n
628 integer,
pointer :: coupled_node(:)
629 real( kind=8 ),pointer :: trac(:)
630 real( kind=8 ),pointer :: disp(:)
631 real( kind=8 ),pointer :: velo(:)
632 real( kind=8 ),pointer :: accel(:)
634 integer( kind=kint ),
pointer :: index(:)
640 integer(kind=kint) :: egrpid
641 real( kind=kreal ) :: i
642 real( kind=kreal ) :: u
643 real( kind=kreal ) :: coe
644 real( kind=kreal ) :: v
645 integer(kind=kint) :: xyz
646 real(kind=kreal) :: n1, n2
647 real(kind=kreal) :: distol
648 real(kind=kreal) :: tstart
657 integer :: elemopt341
661 integer :: elemopt361
678 nullify( p%global_local_ID)
679 nullify( p%timepoints )
686 nullify( s%BOUNDARY_ngrp_ID )
687 nullify( s%BOUNDARY_ngrp_type )
688 nullify( s%BOUNDARY_ngrp_amp )
689 nullify( s%BOUNDARY_ngrp_val)
690 nullify( s%BOUNDARY_ngrp_rotID )
691 nullify( s%BOUNDARY_ngrp_centerID )
692 nullify( s%CLOAD_ngrp_ID )
693 nullify( s%CLOAD_ngrp_DOF )
694 nullify( s%CLOAD_ngrp_amp )
695 nullify( s%CLOAD_ngrp_rotID )
696 nullify( s%CLOAD_ngrp_centerID )
697 nullify( s%CLOAD_ngrp_val )
698 nullify( s%DLOAD_ngrp_ID )
699 nullify( s%DLOAD_ngrp_LID )
700 nullify( s%DLOAD_ngrp_amp )
701 nullify( s%DLOAD_ngrp_params )
702 nullify( s%TEMP_ngrp_ID )
703 nullify( s%TEMP_ngrp_val )
704 nullify( s%SPRING_ngrp_ID )
705 nullify( s%SPRING_ngrp_DOF )
706 nullify( s%SPRING_ngrp_amp )
707 nullify( s%SPRING_ngrp_val )
713 nullify( s%PSTRESS_VECT )
714 nullify( s%PSTRAIN_VECT )
715 nullify( s%REACTION )
719 nullify( s%EPLSTRAIN )
720 nullify( s%EPSTRESS )
721 nullify( s%EPSTRAIN )
722 nullify( s%EPSTRESS_VECT )
723 nullify( s%EPSTRAIN_VECT )
728 nullify( s%VELOCITY_ngrp_ID )
729 nullify( s%VELOCITY_ngrp_type )
730 nullify( s%VELOCITY_ngrp_amp )
731 nullify( s%VELOCITY_ngrp_val )
732 nullify( s%ACCELERATION_ngrp_ID )
733 nullify( s%ACCELERATION_ngrp_type )
734 nullify( s%ACCELERATION_ngrp_amp )
735 nullify( s%ACCELERATION_ngrp_val )
736 nullify( s%COUPLE_ngrp_ID )
743 nullify( h%STEP_DLTIME )
744 nullify( h%STEP_EETIME )
745 nullify( h%STEP_DELMIN )
746 nullify( h%STEP_DELMAX )
752 nullify( h%CONDtemp )
756 nullify( h%RHOfuncA )
757 nullify( h%RHOfuncB )
760 nullify( h%CONDfuncA )
761 nullify( h%CONDfuncB )
763 nullify( h%AMPLtime )
765 nullify( h%AMPLfuncA )
766 nullify( h%AMPLfuncB )
770 nullify( h%T_FIX_node )
771 nullify( h%T_FIX_ampl )
772 nullify( h%T_FIX_val )
773 nullify( h%Q_NOD_node )
774 nullify( h%Q_NOD_ampl )
775 nullify( h%Q_NOD_val )
776 nullify( h%Q_VOL_elem )
777 nullify( h%Q_VOL_ampl )
778 nullify( h%Q_VOL_val )
779 nullify( h%Q_SUF_elem )
780 nullify( h%Q_SUF_ampl )
781 nullify( h%Q_SUF_surf )
782 nullify( h%Q_SUF_val )
783 nullify( h%R_SUF_elem )
784 nullify( h%R_SUF_ampl )
785 nullify( h%R_SUF_surf )
786 nullify( h%R_SUF_val )
787 nullify( h%H_SUF_elem )
788 nullify( h%H_SUF_ampl )
789 nullify( h%H_SUF_surf )
790 nullify( h%H_SUF_val )
810 nullify( f%FLOAD_ngrp_GRPID )
811 nullify( f%FLOAD_ngrp_ID )
812 nullify( f%FLOAD_ngrp_TYPE )
813 nullify( f%FLOAD_ngrp_DOF )
814 nullify( f%FLOAD_ngrp_valre )
815 nullify( f%FLOAD_ngrp_valim )
829 nullify( c%coupled_node )
838 type(hecmwst_matrix) :: hecMAT
840 hecmat%Iarray(1) = 100
845 hecmat%Iarray(6) = 10
847 hecmat%Iarray(21)=
kno
848 hecmat%Iarray(22)=
kno
852 hecmat%Iarray(34)= 10
863 hecmat%Rarray(1) = 1.0e-8
864 hecmat%Rarray(2) = 1.0
865 hecmat%Rarray(3) = 0.0
866 hecmat%Rarray(4) = 0.1
867 hecmat%Rarray(5) = 0.1
868 hecmat%Rarray(11)= 1.0e+4
870 hecmat%Iarray(96) = 0
871 hecmat%Iarray(97) =
kyes
872 hecmat%Iarray(98) =
kyes
873 hecmat%Iarray(99) =
kyes
878 type( hecmwst_matrix ) :: hecMAT
879 integer :: ndof, nn, ierror
882 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
883 if( ierror /= 0 )
then
884 write(*,*)
"##ERROR : not enough memory"
885 write(
idbg,*)
'stop due to allocation error'
887 call hecmw_abort( hecmw_comm_get_comm() )
889 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
890 if( ierror /= 0 )
then
891 write(*,*)
"##ERROR : not enough memory"
892 write(
idbg,*)
'stop due to allocation error'
894 call hecmw_abort( hecmw_comm_get_comm() )
896 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
897 if( ierror /= 0 )
then
898 write(*,*)
"##ERROR : not enough memory"
899 write(
idbg,*)
'stop due to allocation error'
901 call hecmw_abort( hecmw_comm_get_comm() )
904 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
905 if( ierror /= 0 )
then
906 write(*,*)
"##ERROR : not enough memory"
907 write(
idbg,*)
'stop due to allocation error'
909 call hecmw_abort( hecmw_comm_get_comm() )
911 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
912 if( ierror /= 0 )
then
913 write(*,*)
"##ERROR : not enough memory"
914 write(
idbg,*)
'stop due to allocation error'
916 call hecmw_abort( hecmw_comm_get_comm() )
919 allocate (hecmat%A(nn*(hecmat%NPA)) ,stat=ierror )
920 if( ierror /= 0 )
then
921 write(*,*)
"##ERROR : not enough memory"
922 write(
idbg,*)
'stop due to allocation error'
924 call hecmw_abort( hecmw_comm_get_comm() )
939 type( hecmwst_matrix ) :: hecMAT
940 integer :: ndof, nn, ierror
943 if(
associated(hecmat%AL) )
then
944 deallocate(hecmat%AL ,stat=ierror)
945 if( ierror /= 0 )
then
946 write(
idbg,*)
'stop due to deallocation error'
948 call hecmw_abort( hecmw_comm_get_comm())
951 if(
associated(hecmat%AU) )
then
952 deallocate(hecmat%AU ,stat=ierror)
953 if( ierror /= 0 )
then
954 write(
idbg,*)
'stop due to deallocation error'
956 call hecmw_abort( hecmw_comm_get_comm())
959 if(
associated(hecmat%B) )
then
960 deallocate(hecmat%B ,stat=ierror)
961 if( ierror /= 0 )
then
962 write(
idbg,*)
'stop due to deallocation error'
964 call hecmw_abort( hecmw_comm_get_comm())
967 if(
associated(hecmat%D) )
then
968 deallocate(hecmat%D ,stat=ierror)
969 if( ierror /= 0 )
then
970 write(
idbg,*)
'stop due to deallocation error'
972 call hecmw_abort( hecmw_comm_get_comm())
975 if(
associated(hecmat%X) )
then
976 deallocate(hecmat%X ,stat=ierror)
977 if( ierror /= 0 )
then
978 write(
idbg,*)
'stop due to deallocation error'
980 call hecmw_abort( hecmw_comm_get_comm())
983 if(
associated(hecmat%A) )
then
984 deallocate(hecmat%A ,stat=ierror)
985 if( ierror /= 0 )
then
986 write(
idbg,*)
'stop due to deallocation error'
988 call hecmw_abort( hecmw_comm_get_comm())
997 type(hecmwst_local_mesh) :: hecMESH
998 integer(kind=kint) :: i
999 external fstr_sort_index
1002 fstrparam%nlgeom = .false.
1003 fstrparam%solver_method =
ksmcg
1007 fstrparam%analysis_n = 0
1008 fstrparam%ref_temp = 0
1011 fstrparam%fg_echo =
koff
1012 fstrparam%fg_result =
koff
1013 fstrparam%fg_visual =
koff
1016 fstrparam%fg_neutral =
koff
1017 fstrparam%fg_irres =
kno
1018 fstrparam%fg_iwres =
kno
1020 fstrparam%nprint = 1
1023 fstrparam%fg_couple = 0
1024 fstrparam%fg_couple_type = 0
1025 fstrparam%fg_couple_first= 0
1026 fstrparam%fg_couple_window= 0
1029 fstrparam%restart_version = 5
1033 fstrparam%augiter = 2
1037 fstrparam%n_node = hecmesh%n_node;
1038 fstrparam%nn_internal = hecmesh%nn_internal;
1039 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1040 do i = 1, hecmesh%nn_internal
1041 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1042 fstrparam%global_local_ID(2,i) = i
1044 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1049 integer,
intent(in) :: nbc
1050 integer,
intent(in) :: cstep
1052 if( .not.
associated(fstrsolid%step_ctrl) )
return
1053 if( cstep>fstrsolid%nstep_tot )
return
1059 integer,
intent(in) :: nbc
1060 integer,
intent(in) :: cstep
1062 if( cstep > 0 )
then
1063 if( .not.
associated(fstrsolid%step_ctrl) )
return
1064 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) :: nbc
1094 integer,
intent(in) :: cstep
1096 if( .not.
associated(fstrsolid%step_ctrl) )
return
1097 if( cstep>fstrsolid%nstep_tot )
return
1103 integer,
intent(in) :: cdsys_ID
1104 type(hecmwst_local_mesh) :: hecMESH
1106 real(kind=kreal),
intent(out) :: coords(3,3)
1110 if( cdsys_id>0 )
then
1115 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1116 + fstrsolid%dunode(3*ik-2:3*ik)
1118 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1119 + fstrsolid%dunode(3*ik-2:3*ik)
1121 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1122 + fstrsolid%dunode(3*ik-2:3*ik)
1129 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1130 type (fstr_solid),
intent(in) :: fstrSOLID
1131 real(kind=kreal),
intent(out) :: coord(:)
1132 integer(kind=kint) :: i
1133 if(hecmesh%n_dof == 4)
return
1134 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1135 coord(i) = hecmesh%node(i)
1136 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1142 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1143 type (fstr_solid),
intent(in) :: fstrSOLID
1144 real(kind=kreal),
intent(in) :: coord(:)
1145 integer(kind=kint) :: i
1146 if(hecmesh%n_dof == 4)
return
1147 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1148 hecmesh%node(i) = coord(i)
1158 phys%ESTRAIN = 0.0d0
1159 phys%ESTRESS = 0.0d0
1161 phys%EPLSTRAIN = 0.0d0
1167 type (fstr_solid) :: fstrSOLID
1168 integer(kind=kint) :: i
1170 if (
associated(fstrsolid%SOLID))
then
1173 if (
associated(fstrsolid%SHELL))
then
1175 do i=1,fstrsolid%max_lyr
1180 if (
associated(fstrsolid%BEAM))
then
1185 subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
1186 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1187 type ( fstr_solid ),
intent(in) :: fstrSOLID
1188 integer(kind=kint),
intent(in) :: cstep
1189 integer(kind=kint),
intent(in) :: jj_n_amp
1190 real(kind=kreal),
intent(in) :: time
1191 real(kind=kreal),
intent(out) :: f_t
1193 integer(kind=kint) :: i
1194 integer(kind=kint) :: jj1, jj2
1195 integer(kind=kint) :: s1, s2, flag
1196 real(kind=kreal) :: t_1, t_2, t_t, f_1, f_2, tincre
1200 if( jj_n_amp <= 0 )
then
1202 write(
imsg,*)
'internal error: amplitude table not defined'
1204 call hecmw_abort( hecmw_comm_get_comm() )
1207 tincre = fstrsolid%step_ctrl( cstep )%initdt
1208 jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
1209 jj2 = hecmesh%amp%amp_index(jj_n_amp)
1212 t_t = time-fstrsolid%step_ctrl(cstep)%starttime
1216 if(t_t .gt. hecmesh%amp%amp_table(jj2))
then
1217 f_t = hecmesh%amp%amp_val(jj2)
1218 else if(t_t .le. hecmesh%amp%amp_table(jj2))
then
1221 if(t_t .le. hecmesh%amp%amp_table(i))
then
1226 if( flag == 1 )
exit
1229 t_2 = hecmesh%amp%amp_table(s2)
1230 t_1 = hecmesh%amp%amp_table(s1)
1231 f_2 = hecmesh%amp%amp_val(s2)
1232 f_1 = hecmesh%amp%amp_val(s1)
1233 if( t_2-t_1 .lt. 1.0e-20)
then
1235 write(
imsg,*)
'stop due to t_2-t_1 <= 0'
1237 call hecmw_abort( hecmw_comm_get_comm())
1239 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.