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 :: dforce(:)
400 real(kind=kreal),
pointer :: unode(:) => null()
401 real(kind=kreal),
pointer :: unode_bak(:) => null()
402 real(kind=kreal),
pointer :: dunode(:) => null()
403 real(kind=kreal),
pointer :: ddunode(:) => null()
404 logical :: has_finite_rotation_kinematics
405 logical :: finite_rotation_state_ready
406 integer(kind=kint),
pointer :: shell_node_mode(:) => null()
407 integer(kind=kint),
pointer :: shell_rot_state(:) => null()
408 real(kind=kreal),
pointer :: shell_ref_triad(:) => null()
409 real(kind=kreal),
pointer :: shell_triad(:) => null()
410 real(kind=kreal),
pointer :: shell_triad_bak(:) => null()
411 real(kind=kreal),
pointer :: shell_dtriad(:) => null()
412 real(kind=kreal),
pointer :: shell_drill(:) => null()
413 real(kind=kreal),
pointer :: shell_drill_bak(:) => null()
414 real(kind=kreal),
pointer :: shell_ddrill(:) => null()
415 real(kind=kreal),
pointer :: temperature(:)=> null()
416 real(kind=kreal),
pointer :: temp_bak(:) => null()
417 real(kind=kreal),
pointer :: last_temp(:) => null()
420 type( tmaterial ),
pointer :: materials(:) =>null()
421 integer :: n_contacts
426 real(kind=kreal),
pointer :: mpc_const(:) =>null()
436 real(kind=kreal),
pointer :: unode_bkup(:) => null()
437 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
438 real(kind=kreal),
pointer :: dforce_bkup(:) => null()
439 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
440 real(kind=kreal),
pointer :: shell_triad_bkup(:) => null()
441 real(kind=kreal),
pointer :: shell_drill_bkup(:) => null()
442 type(
telement ),
pointer :: elements_bkup(:) =>null()
443 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
444 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
450 integer(kind=kint) :: is_steady
451 real(kind=kreal) :: beta
452 logical :: is_iter_max_limit
455 integer(kind=kint) :: steptot
456 integer(kind=kint) :: restart_nout
457 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
458 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
459 integer(kind=kint) :: timepoint_id
462 integer(kind=kint) :: materialtot
463 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
464 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
465 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
466 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
468 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
469 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
470 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
473 integer(kind=kint) :: amplitudetot
474 integer(kind=kint),
pointer :: ampltab(:)
475 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
476 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
479 real(kind=kreal),
pointer :: temp0(:)
480 real(kind=kreal),
pointer :: tempc(:)
481 real(kind=kreal),
pointer :: temp(:)
484 integer(kind=kint) :: t_fix_tot
485 integer(kind=kint),
pointer :: t_fix_node(:)
486 integer(kind=kint),
pointer :: t_fix_ampl(:)
487 real(kind=kreal),
pointer :: t_fix_val(:)
490 integer(kind=kint) :: q_nod_tot
491 integer(kind=kint),
pointer :: q_nod_node(:)
492 integer(kind=kint),
pointer :: q_nod_ampl(:)
493 real(kind=kreal),
pointer :: q_nod_val(:)
496 integer(kind=kint) :: q_vol_tot
497 integer(kind=kint),
pointer :: q_vol_elem(:)
498 integer(kind=kint),
pointer :: q_vol_ampl(:)
499 real(kind=kreal),
pointer :: q_vol_val(:)
502 integer(kind=kint) :: q_suf_tot
503 integer(kind=kint),
pointer :: q_suf_elem(:)
504 integer(kind=kint),
pointer :: q_suf_ampl(:)
505 integer(kind=kint),
pointer :: q_suf_surf(:)
506 real(kind=kreal),
pointer :: q_suf_val(:)
509 integer(kind=kint) :: r_suf_tot
510 integer(kind=kint),
pointer :: r_suf_elem(:)
511 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
512 integer(kind=kint),
pointer :: r_suf_surf(:)
513 real(kind=kreal),
pointer :: r_suf_val(:,:)
516 integer(kind=kint) :: h_suf_tot
517 integer(kind=kint),
pointer :: h_suf_elem(:)
518 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
519 integer(kind=kint),
pointer :: h_suf_surf(:)
520 real(kind=kreal),
pointer :: h_suf_val(:,:)
522 integer(kind=kint) :: wl_tot
532 integer(kind=kint) :: idx_eqa
533 integer(kind=kint) :: idx_resp
536 integer(kind=kint) :: n_step
537 real(kind=kreal) :: t_start
538 real(kind=kreal) :: t_curr
539 real(kind=kreal) :: t_end
540 real(kind=kreal) :: t_delta
541 integer(kind=kint) :: restart_nout
544 integer(kind=kint) :: restart_nin
547 real(kind=kreal) :: gamma
548 real(kind=kreal) :: beta
551 integer(kind=kint) :: idx_mas
554 integer(kind=kint) :: idx_dmp
555 real(kind=kreal) :: ray_m
556 real(kind=kreal) :: ray_k
559 logical :: varinitialize
562 integer(kind=kint) :: nout
563 integer(kind=kint) :: ngrp_monit
564 integer(kind=kint) :: nout_monit
565 integer(kind=kint) :: iout_list(6)
574 real(kind=kreal),
pointer :: disp(:,:)
575 real(kind=kreal),
pointer :: vel(:,:)
576 real(kind=kreal),
pointer :: acc(:,:)
578 real(kind=kreal) :: kineticenergy
579 real(kind=kreal) :: strainenergy
580 real(kind=kreal) :: totalenergy
583 real(kind=kreal),
pointer :: vec1(:)
584 real(kind=kreal),
pointer :: vec2(:)
585 real(kind=kreal),
pointer :: vec3(:)
587 integer(kind=kint) :: dynamic_iw4 = 204
588 integer(kind=kint) :: dynamic_iw5 = 205
589 integer(kind=kint) :: dynamic_iw6 = 206
590 integer(kind=kint) :: dynamic_iw7 = 207
591 integer(kind=kint) :: dynamic_iw8 = 208
592 integer(kind=kint) :: dynamic_iw9 = 209
593 integer(kind=kint) :: dynamic_iw10 = 210
597 integer(kind=kint) :: fload_ngrp_tot
598 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
599 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
600 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
601 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
602 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
603 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
604 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
605 integer(kind=kint) :: start_mode
606 integer(kind=kint) :: end_mode
610 integer(kind=kint) :: nummode
611 integer(kind=kint) :: numnodedof
612 real(kind=kreal),
pointer :: eigomega(:) => null()
613 real(kind=kreal),
pointer :: eigvector(:,:) => null()
614 real(kind=kreal) :: rayalpha, raybeta
620 integer(kind=kint) :: nget
621 integer(kind=kint) :: maxiter
622 integer(kind=kint) :: iter
623 real (kind=kreal) :: sigma
624 real (kind=kreal) :: tolerance
625 real (kind=kreal) :: totalmass
626 real (kind=kreal),
pointer :: eigval(:)
627 real (kind=kreal),
pointer :: eigvec(:,:)
628 real (kind=kreal),
pointer :: filter(:)
629 real (kind=kreal),
pointer :: mass(:)
630 real (kind=kreal),
pointer :: effmass(:)
631 real (kind=kreal),
pointer :: partfactor(:)
632 logical :: is_free = .false.
638 integer( kind=kint ) :: dof
639 integer( kind=kint ) :: ndof
640 integer( kind=kint ) :: coupled_node_n
642 integer,
pointer :: coupled_node(:)
643 real( kind=8 ),pointer :: trac(:)
644 real( kind=8 ),pointer :: disp(:)
645 real( kind=8 ),pointer :: velo(:)
646 real( kind=8 ),pointer :: accel(:)
648 integer( kind=kint ),
pointer :: index(:)
654 integer(kind=kint) :: egrpid
655 real( kind=kreal ) :: i
656 real( kind=kreal ) :: u
657 real( kind=kreal ) :: coe
658 real( kind=kreal ) :: v
659 integer(kind=kint) :: xyz
660 real(kind=kreal) :: n1, n2
661 real(kind=kreal) :: distol
662 real(kind=kreal) :: tstart
671 integer :: elemopt341
675 integer :: elemopt361
692 nullify( p%global_local_ID)
693 nullify( p%timepoints )
700 nullify( s%BOUNDARY_ngrp_ID )
701 nullify( s%BOUNDARY_ngrp_type )
702 nullify( s%BOUNDARY_ngrp_amp )
703 nullify( s%BOUNDARY_ngrp_val)
704 nullify( s%BOUNDARY_ngrp_rotID )
705 nullify( s%BOUNDARY_ngrp_centerID )
706 nullify( s%CLOAD_ngrp_ID )
707 nullify( s%CLOAD_ngrp_DOF )
708 nullify( s%CLOAD_ngrp_amp )
709 nullify( s%CLOAD_ngrp_rotID )
710 nullify( s%CLOAD_ngrp_centerID )
711 nullify( s%CLOAD_ngrp_val )
712 nullify( s%DLOAD_ngrp_ID )
713 nullify( s%DLOAD_ngrp_LID )
714 nullify( s%DLOAD_ngrp_amp )
715 nullify( s%DLOAD_ngrp_params )
716 nullify( s%TEMP_ngrp_ID )
717 nullify( s%TEMP_ngrp_val )
718 nullify( s%SPRING_ngrp_ID )
719 nullify( s%SPRING_ngrp_DOF )
720 nullify( s%SPRING_ngrp_amp )
721 nullify( s%SPRING_ngrp_val )
727 nullify( s%PSTRESS_VECT )
728 nullify( s%PSTRAIN_VECT )
729 nullify( s%REACTION )
733 nullify( s%EPLSTRAIN )
734 nullify( s%EPSTRESS )
735 nullify( s%EPSTRAIN )
736 nullify( s%EPSTRESS_VECT )
737 nullify( s%EPSTRAIN_VECT )
743 nullify( s%VELOCITY_ngrp_GRPID )
744 nullify( s%VELOCITY_ngrp_ID )
745 nullify( s%VELOCITY_ngrp_type )
746 nullify( s%VELOCITY_ngrp_amp )
747 nullify( s%VELOCITY_ngrp_val )
748 nullify( s%ACCELERATION_ngrp_GRPID )
749 nullify( s%ACCELERATION_ngrp_ID )
750 nullify( s%ACCELERATION_ngrp_type )
751 nullify( s%ACCELERATION_ngrp_amp )
752 nullify( s%ACCELERATION_ngrp_val )
753 nullify( s%COUPLE_ngrp_ID )
760 nullify( h%STEP_DLTIME )
761 nullify( h%STEP_EETIME )
762 nullify( h%STEP_DELMIN )
763 nullify( h%STEP_DELMAX )
769 nullify( h%CONDtemp )
773 nullify( h%RHOfuncA )
774 nullify( h%RHOfuncB )
777 nullify( h%CONDfuncA )
778 nullify( h%CONDfuncB )
780 nullify( h%AMPLtime )
782 nullify( h%AMPLfuncA )
783 nullify( h%AMPLfuncB )
787 nullify( h%T_FIX_node )
788 nullify( h%T_FIX_ampl )
789 nullify( h%T_FIX_val )
790 nullify( h%Q_NOD_node )
791 nullify( h%Q_NOD_ampl )
792 nullify( h%Q_NOD_val )
793 nullify( h%Q_VOL_elem )
794 nullify( h%Q_VOL_ampl )
795 nullify( h%Q_VOL_val )
796 nullify( h%Q_SUF_elem )
797 nullify( h%Q_SUF_ampl )
798 nullify( h%Q_SUF_surf )
799 nullify( h%Q_SUF_val )
800 nullify( h%R_SUF_elem )
801 nullify( h%R_SUF_ampl )
802 nullify( h%R_SUF_surf )
803 nullify( h%R_SUF_val )
804 nullify( h%H_SUF_elem )
805 nullify( h%H_SUF_ampl )
806 nullify( h%H_SUF_surf )
807 nullify( h%H_SUF_val )
827 nullify( f%FLOAD_ngrp_GRPID )
828 nullify( f%FLOAD_ngrp_ID )
829 nullify( f%FLOAD_ngrp_TYPE )
830 nullify( f%FLOAD_ngrp_DOF )
831 nullify( f%FLOAD_ngrp_valre )
832 nullify( f%FLOAD_ngrp_valim )
846 nullify( c%coupled_node )
855 type(hecmwst_matrix) :: hecMAT
857 hecmat%Iarray(1) = 100
862 hecmat%Iarray(6) = 10
864 hecmat%Iarray(21)=
kno
865 hecmat%Iarray(22)=
kno
869 hecmat%Iarray(34)= 10
880 hecmat%Rarray(1) = 1.0e-8
881 hecmat%Rarray(2) = 1.0
882 hecmat%Rarray(3) = 0.0
883 hecmat%Rarray(4) = 0.1
884 hecmat%Rarray(5) = 0.1
885 hecmat%Rarray(11)= 1.0e+4
887 hecmat%Iarray(96) = 0
888 hecmat%Iarray(97) =
kyes
889 hecmat%Iarray(98) =
kyes
890 hecmat%Iarray(99) =
kyes
895 type( hecmwst_matrix ) :: hecMAT
896 integer :: ndof, nn, ierror
899 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
900 if( ierror /= 0 )
then
901 write(*,*)
"##ERROR : not enough memory"
902 write(
idbg,*)
'stop due to allocation error'
904 call hecmw_abort( hecmw_comm_get_comm() )
906 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
907 if( ierror /= 0 )
then
908 write(*,*)
"##ERROR : not enough memory"
909 write(
idbg,*)
'stop due to allocation error'
911 call hecmw_abort( hecmw_comm_get_comm() )
913 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
914 if( ierror /= 0 )
then
915 write(*,*)
"##ERROR : not enough memory"
916 write(
idbg,*)
'stop due to allocation error'
918 call hecmw_abort( hecmw_comm_get_comm() )
921 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
922 if( ierror /= 0 )
then
923 write(*,*)
"##ERROR : not enough memory"
924 write(
idbg,*)
'stop due to allocation error'
926 call hecmw_abort( hecmw_comm_get_comm() )
928 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
929 if( ierror /= 0 )
then
930 write(*,*)
"##ERROR : not enough memory"
931 write(
idbg,*)
'stop due to allocation error'
933 call hecmw_abort( hecmw_comm_get_comm() )
944 type( hecmwst_matrix ) :: hecMAT
945 integer :: ndof, nn, ierror
948 if(
associated(hecmat%AL) )
then
949 deallocate(hecmat%AL ,stat=ierror)
950 if( ierror /= 0 )
then
951 write(
idbg,*)
'stop due to deallocation error'
953 call hecmw_abort( hecmw_comm_get_comm())
956 if(
associated(hecmat%AU) )
then
957 deallocate(hecmat%AU ,stat=ierror)
958 if( ierror /= 0 )
then
959 write(
idbg,*)
'stop due to deallocation error'
961 call hecmw_abort( hecmw_comm_get_comm())
964 if(
associated(hecmat%B) )
then
965 deallocate(hecmat%B ,stat=ierror)
966 if( ierror /= 0 )
then
967 write(
idbg,*)
'stop due to deallocation error'
969 call hecmw_abort( hecmw_comm_get_comm())
972 if(
associated(hecmat%D) )
then
973 deallocate(hecmat%D ,stat=ierror)
974 if( ierror /= 0 )
then
975 write(
idbg,*)
'stop due to deallocation error'
977 call hecmw_abort( hecmw_comm_get_comm())
980 if(
associated(hecmat%X) )
then
981 deallocate(hecmat%X ,stat=ierror)
982 if( ierror /= 0 )
then
983 write(
idbg,*)
'stop due to deallocation error'
985 call hecmw_abort( hecmw_comm_get_comm())
988 if(
associated(hecmat%A) )
then
989 deallocate(hecmat%A ,stat=ierror)
990 if( ierror /= 0 )
then
991 write(
idbg,*)
'stop due to deallocation error'
993 call hecmw_abort( hecmw_comm_get_comm())
1002 type(hecmwst_local_mesh) :: hecMESH
1003 integer(kind=kint) :: i
1004 external fstr_sort_index
1007 fstrparam%nlgeom = .false.
1008 fstrparam%solver_method =
ksmcg
1012 fstrparam%analysis_n = 0
1013 fstrparam%ref_temp = 0
1016 fstrparam%fg_echo =
koff
1017 fstrparam%fg_result =
koff
1018 fstrparam%fg_visual =
koff
1021 fstrparam%fg_neutral =
koff
1022 fstrparam%fg_irres =
kno
1023 fstrparam%fg_iwres =
kno
1025 fstrparam%nprint = 1
1028 fstrparam%fg_couple = 0
1029 fstrparam%fg_couple_type = 0
1030 fstrparam%fg_couple_first= 0
1031 fstrparam%fg_couple_window= 0
1034 fstrparam%restart_version = 5
1038 fstrparam%augiter = 2
1042 fstrparam%n_node = hecmesh%n_node;
1043 fstrparam%nn_internal = hecmesh%nn_internal;
1044 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1045 do i = 1, hecmesh%nn_internal
1046 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1047 fstrparam%global_local_ID(2,i) = i
1049 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1054 integer,
intent(in) :: nbc
1055 integer,
intent(in) :: cstep
1057 if( .not.
associated(fstrsolid%step_ctrl) )
return
1058 if( cstep>fstrsolid%nstep_tot )
return
1064 integer,
intent(in) :: nbc
1065 integer,
intent(in) :: cstep
1067 if( cstep > 0 )
then
1068 if( .not.
associated(fstrsolid%step_ctrl) )
return
1069 if( cstep>fstrsolid%nstep_tot )
return
1078 integer,
intent(in) :: nbc
1079 integer,
intent(in) :: cstep
1081 if( .not.
associated(fstrsolid%step_ctrl) )
return
1082 if( cstep>fstrsolid%nstep_tot )
return
1088 integer,
intent(in) :: nbc
1089 integer,
intent(in) :: cstep
1091 if( .not.
associated(fstrsolid%step_ctrl) )
return
1092 if( cstep>fstrsolid%nstep_tot )
return
1098 integer,
intent(in) :: nbc
1099 integer,
intent(in) :: cstep
1101 if( .not.
associated(fstrsolid%step_ctrl) )
return
1102 if( cstep>fstrsolid%nstep_tot )
return
1108 integer,
intent(in) :: cdsys_ID
1109 type(hecmwst_local_mesh) :: hecMESH
1111 real(kind=kreal),
intent(out) :: coords(3,3)
1115 if( cdsys_id>0 )
then
1120 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1121 + fstrsolid%dunode(3*ik-2:3*ik)
1123 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1124 + fstrsolid%dunode(3*ik-2:3*ik)
1126 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1127 + fstrsolid%dunode(3*ik-2:3*ik)
1134 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1135 type (fstr_solid),
intent(in) :: fstrSOLID
1136 real(kind=kreal),
intent(out) :: coord(:)
1137 integer(kind=kint) :: i
1138 if(hecmesh%n_dof == 4)
return
1139 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1140 coord(i) = hecmesh%node(i)
1141 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1147 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1148 type (fstr_solid),
intent(in) :: fstrSOLID
1149 real(kind=kreal),
intent(in) :: coord(:)
1150 integer(kind=kint) :: i
1151 if(hecmesh%n_dof == 4)
return
1152 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1153 hecmesh%node(i) = coord(i)
1163 phys%ESTRAIN = 0.0d0
1164 phys%ESTRESS = 0.0d0
1166 phys%EPLSTRAIN = 0.0d0
1172 type (fstr_solid) :: fstrSOLID
1173 integer(kind=kint) :: i
1175 if (
associated(fstrsolid%SOLID))
then
1178 if (
associated(fstrsolid%SHELL))
then
1180 do i=1,fstrsolid%max_lyr
1185 if (
associated(fstrsolid%BEAM))
then
1190 subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
1191 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1192 type ( fstr_solid ),
intent(in) :: fstrSOLID
1193 integer(kind=kint),
intent(in) :: cstep
1194 integer(kind=kint),
intent(in) :: jj_n_amp
1195 real(kind=kreal),
intent(in) :: time
1196 real(kind=kreal),
intent(out) :: f_t
1198 integer(kind=kint) :: i
1199 integer(kind=kint) :: jj1, jj2
1200 integer(kind=kint) :: s1, s2, flag
1201 real(kind=kreal) :: t_1, t_2, t_t, f_1, f_2, tincre
1205 if( jj_n_amp <= 0 )
then
1207 write(
imsg,*)
'internal error: amplitude table not defined'
1209 call hecmw_abort( hecmw_comm_get_comm() )
1212 tincre = fstrsolid%step_ctrl( cstep )%initdt
1213 jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
1214 jj2 = hecmesh%amp%amp_index(jj_n_amp)
1217 t_t = time-fstrsolid%step_ctrl(cstep)%starttime
1221 if(t_t .gt. hecmesh%amp%amp_table(jj2))
then
1222 f_t = hecmesh%amp%amp_val(jj2)
1223 else if(t_t .le. hecmesh%amp%amp_table(jj2))
then
1226 if(t_t .le. hecmesh%amp%amp_table(i))
then
1231 if( flag == 1 )
exit
1234 t_2 = hecmesh%amp%amp_table(s2)
1235 t_1 = hecmesh%amp%amp_table(s1)
1236 f_2 = hecmesh%amp%amp_val(s2)
1237 f_1 = hecmesh%amp%amp_val(s1)
1238 if( t_2-t_1 .lt. 1.0e-20)
then
1240 write(
imsg,*)
'stop due to t_2-t_1 <= 0'
1242 call hecmw_abort( hecmw_comm_get_comm())
1244 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.