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
110 integer(kind=kint),
parameter ::
ilog = 16
111 integer(kind=kint),
parameter ::
ista = 17
112 integer(kind=kint),
parameter ::
iutb = 18
113 integer(kind=kint),
parameter ::
imsg = 51
114 integer(kind=kint),
parameter ::
idbg = 52
115 integer(kind=kint),
parameter ::
ifvs = 53
116 integer(kind=kint),
parameter ::
ineu = 54
117 integer(kind=kint),
parameter ::
iresout = 100
124 integer(kind=kint),
pointer ::
iecho
128 integer(kind=kint),
pointer ::
irres
129 integer(kind=kint),
pointer ::
iwres
130 integer(kind=kint),
pointer ::
nrres
142 real(kind=kreal) ::
dt
148 character(len=HECMW_FILENAME_LEN) :: cond_name
151 integer,
pointer :: intval(:) => null()
152 real(kind=kreal),
pointer :: realval(:) => null()
158 integer(kind=kint) :: solution_type
159 integer(kind=kint) :: solver_method
160 integer(kind=kint) :: nlsolver_method
164 integer(kind=kint) :: analysis_n
165 real(kind=kreal),
pointer :: dtime(:)
166 real(kind=kreal),
pointer ::
etime(:)
167 real(kind=kreal),
pointer :: dtmin(:)
168 real(kind=kreal),
pointer :: delmax(:)
169 integer(kind=kint),
pointer::
itmax(:)
170 real(kind=kreal),
pointer ::
eps(:)
172 integer(kind=kint) :: timepoint_id
175 integer(kind=kint) :: fg_echo
176 integer(kind=kint) :: fg_result
177 integer(kind=kint) :: fg_visual
180 integer(kind=kint) :: fg_neutral
181 integer(kind=kint) :: fg_irres
182 integer(kind=kint) :: fg_iwres
187 integer(kind=kint) :: n_node
188 integer(kind=kint) :: nn_internal
189 integer(kind=kint),
pointer :: global_local_id(:,:)
192 integer( kind=kint ) :: fg_couple
193 integer( kind=kint ) :: fg_couple_type
194 integer( kind=kint ) :: fg_couple_first
195 integer( kind=kint ) :: fg_couple_window
198 integer( kind=kint ) :: restart_out_type
199 integer( kind=kint ) :: restart_version
202 integer( kind=kint ) :: contact_algo
203 integer( kind=kint ) :: augiter
204 type(tcontactparam),
pointer :: contactparam(:)
205 type(tcontactinterference),
pointer :: contact_if(:)
217 real(kind=kreal),
pointer :: stress(:) => null()
218 real(kind=kreal),
pointer :: strain(:) => null()
219 real(kind=kreal),
pointer :: mises(:) => null()
221 real(kind=kreal),
pointer :: pstress(:) => null()
222 real(kind=kreal),
pointer :: pstrain(:) => null()
223 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
224 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
226 real(kind=kreal),
pointer :: estress(:) => null()
227 real(kind=kreal),
pointer :: estrain(:) => null()
228 real(kind=kreal),
pointer :: emises(:) => null()
229 real(kind=kreal),
pointer :: eplstrain(:) => null()
231 real(kind=kreal),
pointer :: epstress(:) => null()
232 real(kind=kreal),
pointer :: epstrain(:) => null()
233 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
234 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
235 real(kind=kreal),
pointer :: enqm(:) => null()
244 integer(kind=kint) :: file_type
245 integer(kind=kint) :: statictype
246 integer(kind=kint) :: nstep_tot
252 integer(kind=kint) :: boundary_ngrp_tot
253 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
254 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
255 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
256 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
257 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
258 integer(kind=kint),
pointer :: boundary_ngrp_istot (:) =>null()
259 integer(kind=kint) :: boundary_ngrp_rot
260 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
261 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
264 integer(kind=kint) :: velocity_type
265 integer(kind=kint) :: velocity_ngrp_tot
266 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
267 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
268 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
269 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
270 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
271 integer(kind=kint) :: velocity_ngrp_rot
272 integer(kind=kint),
pointer :: velocity_ngrp_rotid (:) =>null()
273 integer(kind=kint),
pointer :: velocity_ngrp_centerid (:) =>null()
276 integer(kind=kint) :: acceleration_type
277 integer(kind=kint) :: acceleration_ngrp_tot
278 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
279 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
280 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
281 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
282 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
285 integer(kind=kint) :: cload_ngrp_tot
286 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
287 integer(kind=kint),
pointer :: cload_ngrp_id (:)
288 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
289 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
290 real(kind=kreal),
pointer :: cload_ngrp_val(:)
291 integer(kind=kint) :: cload_ngrp_rot
292 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
293 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
296 integer(kind=kint) :: dload_ngrp_tot
297 integer(kind=kint) :: dload_follow
298 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
299 integer(kind=kint),
pointer :: dload_ngrp_id (:)
300 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
301 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
302 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
305 integer(kind=kint) :: temp_ngrp_tot
306 integer(kind=kint) :: temp_irres
307 integer(kind=kint) :: temp_tstep
308 integer(kind=kint) :: temp_interval
309 integer(kind=kint) :: temp_rtype
310 real(kind=kreal) :: temp_factor
311 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
312 integer(kind=kint),
pointer :: temp_ngrp_id (:)
313 real(kind=kreal),
pointer :: temp_ngrp_val(:)
316 integer(kind=kint) :: spring_ngrp_tot
317 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
318 integer(kind=kint),
pointer :: spring_ngrp_id (:)
319 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
320 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
321 real(kind=kreal),
pointer :: spring_ngrp_val(:)
322 integer(kind=kint),
pointer :: spring_incremental (:)
328 integer( kind=kint ) :: couple_ngrp_tot
329 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
332 integer(kind=kint) :: maxn_gauss
334 real(kind=kreal),
pointer :: stress(:)
335 real(kind=kreal),
pointer :: strain(:)
336 real(kind=kreal),
pointer :: mises(:)
338 real(kind=kreal),
pointer :: pstress(:)
339 real(kind=kreal),
pointer :: pstrain(:)
340 real(kind=kreal),
pointer :: pstress_vect(:,:)
341 real(kind=kreal),
pointer :: pstrain_vect(:,:)
343 real(kind=kreal),
pointer :: estress(:)
344 real(kind=kreal),
pointer :: estrain(:)
345 real(kind=kreal),
pointer :: emises(:)
346 real(kind=kreal),
pointer :: eplstrain(:)
348 real(kind=kreal),
pointer :: epstress(:)
349 real(kind=kreal),
pointer :: epstrain(:)
350 real(kind=kreal),
pointer :: epstress_vect(:,:)
351 real(kind=kreal),
pointer :: epstrain_vect(:,:)
353 real(kind=kreal),
pointer :: tnstrain(:)
354 real(kind=kreal),
pointer :: testrain(:)
356 real(kind=kreal),
pointer :: yield_ratio(:)
358 real(kind=kreal),
pointer :: enqm(:)
359 real(kind=kreal),
pointer :: reaction(:)
361 real(kind=kreal),
pointer :: cont_nforce(:)
362 real(kind=kreal),
pointer :: cont_fric(:)
363 real(kind=kreal),
pointer :: cont_relvel(:)
364 real(kind=kreal),
pointer :: cont_state(:)
365 integer(kind=kint),
pointer :: cont_sgrp_id(:)
366 real(kind=kreal),
pointer :: cont_area(:)
367 real(kind=kreal),
pointer :: cont_ntrac(:)
368 real(kind=kreal),
pointer :: cont_ftrac(:)
369 real(kind=kreal),
pointer :: embed_nforce(:)
376 integer(kind=kint) :: restart_nout
379 integer(kind=kint) :: restart_nin
382 integer(kind=kint) :: max_lyr
383 integer(kind=kint) :: is_33shell
384 integer(kind=kint) :: is_33beam
385 integer(kind=kint) :: is_heat
386 integer(kind=kint) :: max_ncon_stf
387 integer(kind=kint) :: max_ncon
388 integer(kind=kint),
pointer :: is_rot(:) => null()
389 integer(kind=kint) :: elemopt361
390 logical :: is_smoothing_active
391 real(kind=kreal) :: factor(2)
394 integer(kind=kint) :: nrstat_i(10)
395 real(kind=kreal) :: nrstat_r(10)
396 integer(kind=kint) :: autoinc_stat
397 integer(kind=kint) :: cutback_stat
399 real(kind=kreal),
pointer :: gl(:)
400 real(kind=kreal),
pointer :: gl0(:)
401 real(kind=kreal),
pointer :: eforce(:)
402 real(kind=kreal),
pointer :: qforce(:)
403 real(kind=kreal),
pointer :: qforce_bak(:)
404 real(kind=kreal),
pointer :: dforce(:)
405 real(kind=kreal),
pointer :: unode(:) => null()
406 real(kind=kreal),
pointer :: unode_bak(:) => null()
407 real(kind=kreal),
pointer :: dunode(:) => null()
408 real(kind=kreal),
pointer :: ddunode(:) => null()
409 logical :: has_finite_rotation_kinematics
410 logical :: finite_rotation_state_ready
411 integer(kind=kint),
pointer :: shell_node_mode(:) => null()
412 integer(kind=kint),
pointer :: shell_rot_state(:) => null()
413 real(kind=kreal),
pointer :: shell_ref_triad(:) => null()
414 real(kind=kreal),
pointer :: shell_triad(:) => null()
415 real(kind=kreal),
pointer :: shell_triad_bak(:) => null()
416 real(kind=kreal),
pointer :: shell_dtriad(:) => null()
417 real(kind=kreal),
pointer :: shell_drill(:) => null()
418 real(kind=kreal),
pointer :: shell_drill_bak(:) => null()
419 real(kind=kreal),
pointer :: shell_ddrill(:) => null()
420 real(kind=kreal),
pointer :: temperature(:)=> null()
421 real(kind=kreal),
pointer :: temp_bak(:) => null()
422 real(kind=kreal),
pointer :: last_temp(:) => null()
425 type( tmaterial ),
pointer :: materials(:) =>null()
426 integer :: n_contacts
431 real(kind=kreal),
pointer :: mpc_const(:) =>null()
441 real(kind=kreal),
pointer :: unode_bkup(:) => null()
442 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
443 real(kind=kreal),
pointer :: dforce_bkup(:) => null()
444 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
445 real(kind=kreal),
pointer :: shell_triad_bkup(:) => null()
446 real(kind=kreal),
pointer :: shell_drill_bkup(:) => null()
447 type(
telement ),
pointer :: elements_bkup(:) =>null()
448 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
449 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
455 integer(kind=kint) :: is_steady
456 real(kind=kreal) :: beta
457 logical :: is_iter_max_limit
460 integer(kind=kint) :: steptot
461 integer(kind=kint) :: restart_nout
462 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
463 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
464 integer(kind=kint) :: timepoint_id
467 integer(kind=kint) :: materialtot
468 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
469 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
470 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
471 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
473 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
474 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
475 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
478 integer(kind=kint) :: amplitudetot
479 integer(kind=kint),
pointer :: ampltab(:)
480 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
481 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
484 real(kind=kreal),
pointer :: temp0(:)
485 real(kind=kreal),
pointer :: tempc(:)
486 real(kind=kreal),
pointer :: temp(:)
489 integer(kind=kint) :: t_fix_tot
490 integer(kind=kint),
pointer :: t_fix_node(:)
491 integer(kind=kint),
pointer :: t_fix_ampl(:)
492 real(kind=kreal),
pointer :: t_fix_val(:)
495 integer(kind=kint) :: q_nod_tot
496 integer(kind=kint),
pointer :: q_nod_node(:)
497 integer(kind=kint),
pointer :: q_nod_ampl(:)
498 real(kind=kreal),
pointer :: q_nod_val(:)
501 integer(kind=kint) :: q_vol_tot
502 integer(kind=kint),
pointer :: q_vol_elem(:)
503 integer(kind=kint),
pointer :: q_vol_ampl(:)
504 real(kind=kreal),
pointer :: q_vol_val(:)
507 integer(kind=kint) :: q_suf_tot
508 integer(kind=kint),
pointer :: q_suf_elem(:)
509 integer(kind=kint),
pointer :: q_suf_ampl(:)
510 integer(kind=kint),
pointer :: q_suf_surf(:)
511 real(kind=kreal),
pointer :: q_suf_val(:)
514 integer(kind=kint) :: r_suf_tot
515 integer(kind=kint),
pointer :: r_suf_elem(:)
516 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
517 integer(kind=kint),
pointer :: r_suf_surf(:)
518 real(kind=kreal),
pointer :: r_suf_val(:,:)
521 integer(kind=kint) :: h_suf_tot
522 integer(kind=kint),
pointer :: h_suf_elem(:)
523 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
524 integer(kind=kint),
pointer :: h_suf_surf(:)
525 real(kind=kreal),
pointer :: h_suf_val(:,:)
527 integer(kind=kint) :: wl_tot
537 integer(kind=kint) :: idx_eqa
538 integer(kind=kint) :: idx_resp
541 integer(kind=kint) :: n_step
542 real(kind=kreal) :: t_start
543 real(kind=kreal) :: t_curr
544 real(kind=kreal) :: t_end
545 real(kind=kreal) :: t_delta
546 integer(kind=kint) :: restart_nout
549 integer(kind=kint) :: restart_nin
552 real(kind=kreal) :: gamma
553 real(kind=kreal) :: beta
556 integer(kind=kint) :: idx_mas
559 integer(kind=kint) :: idx_dmp
560 real(kind=kreal) :: ray_m
561 real(kind=kreal) :: ray_k
564 logical :: varinitialize
567 integer(kind=kint) :: nout
568 integer(kind=kint) :: ngrp_monit
569 integer(kind=kint) :: nout_monit
570 integer(kind=kint) :: iout_list(6)
579 real(kind=kreal),
pointer :: disp(:,:)
580 real(kind=kreal),
pointer :: vel(:,:)
581 real(kind=kreal),
pointer :: acc(:,:)
583 real(kind=kreal) :: kineticenergy
584 real(kind=kreal) :: strainenergy
585 real(kind=kreal) :: totalenergy
588 real(kind=kreal),
pointer :: vec1(:)
589 real(kind=kreal),
pointer :: vec2(:)
590 real(kind=kreal),
pointer :: vec3(:)
592 integer(kind=kint) :: dynamic_iw4 = 204
593 integer(kind=kint) :: dynamic_iw5 = 205
594 integer(kind=kint) :: dynamic_iw6 = 206
595 integer(kind=kint) :: dynamic_iw7 = 207
596 integer(kind=kint) :: dynamic_iw8 = 208
597 integer(kind=kint) :: dynamic_iw9 = 209
598 integer(kind=kint) :: dynamic_iw10 = 210
602 integer(kind=kint) :: fload_ngrp_tot
603 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
604 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
605 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
606 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
607 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
608 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
609 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
610 integer(kind=kint) :: start_mode
611 integer(kind=kint) :: end_mode
615 integer(kind=kint) :: nummode
616 integer(kind=kint) :: numnodedof
617 real(kind=kreal),
pointer :: eigomega(:) => null()
618 real(kind=kreal),
pointer :: eigvector(:,:) => null()
619 real(kind=kreal) :: rayalpha, raybeta
625 integer(kind=kint) :: nget
626 integer(kind=kint) :: maxiter
627 integer(kind=kint) :: iter
628 real (kind=kreal) :: sigma
629 real (kind=kreal) :: tolerance
630 real (kind=kreal) :: totalmass
631 real (kind=kreal),
pointer :: eigval(:)
632 real (kind=kreal),
pointer :: eigvec(:,:)
633 real (kind=kreal),
pointer :: filter(:)
634 real (kind=kreal),
pointer :: mass(:)
635 real (kind=kreal),
pointer :: effmass(:)
636 real (kind=kreal),
pointer :: partfactor(:)
637 logical :: is_free = .false.
643 integer( kind=kint ) :: dof
644 integer( kind=kint ) :: ndof
645 integer( kind=kint ) :: coupled_node_n
647 integer,
pointer :: coupled_node(:)
648 real( kind=8 ),pointer :: trac(:)
649 real( kind=8 ),pointer :: disp(:)
650 real( kind=8 ),pointer :: velo(:)
651 real( kind=8 ),pointer :: accel(:)
653 integer( kind=kint ),
pointer :: index(:)
659 integer(kind=kint) :: egrpid
660 real( kind=kreal ) :: i
661 real( kind=kreal ) :: u
662 real( kind=kreal ) :: coe
663 real( kind=kreal ) :: v
664 integer(kind=kint) :: xyz
665 real(kind=kreal) :: n1, n2
666 real(kind=kreal) :: distol
667 real(kind=kreal) :: tstart
676 integer :: elemopt341
680 integer :: elemopt361
697 nullify( p%global_local_ID)
698 nullify( p%timepoints )
705 nullify( s%BOUNDARY_ngrp_ID )
706 nullify( s%BOUNDARY_ngrp_type )
707 nullify( s%BOUNDARY_ngrp_amp )
708 nullify( s%BOUNDARY_ngrp_val)
709 nullify( s%BOUNDARY_ngrp_rotID )
710 nullify( s%BOUNDARY_ngrp_centerID )
711 nullify( s%CLOAD_ngrp_ID )
712 nullify( s%CLOAD_ngrp_DOF )
713 nullify( s%CLOAD_ngrp_amp )
714 nullify( s%CLOAD_ngrp_rotID )
715 nullify( s%CLOAD_ngrp_centerID )
716 nullify( s%CLOAD_ngrp_val )
717 nullify( s%DLOAD_ngrp_ID )
718 nullify( s%DLOAD_ngrp_LID )
719 nullify( s%DLOAD_ngrp_amp )
720 nullify( s%DLOAD_ngrp_params )
721 nullify( s%TEMP_ngrp_ID )
722 nullify( s%TEMP_ngrp_val )
723 nullify( s%SPRING_ngrp_ID )
724 nullify( s%SPRING_ngrp_DOF )
725 nullify( s%SPRING_ngrp_amp )
726 nullify( s%SPRING_ngrp_val )
727 nullify( s%SPRING_incremental )
733 nullify( s%PSTRESS_VECT )
734 nullify( s%PSTRAIN_VECT )
735 nullify( s%REACTION )
739 nullify( s%EPLSTRAIN )
740 nullify( s%EPSTRESS )
741 nullify( s%EPSTRAIN )
742 nullify( s%EPSTRESS_VECT )
743 nullify( s%EPSTRAIN_VECT )
749 nullify( s%VELOCITY_ngrp_GRPID )
750 nullify( s%VELOCITY_ngrp_ID )
751 nullify( s%VELOCITY_ngrp_type )
752 nullify( s%VELOCITY_ngrp_amp )
753 nullify( s%VELOCITY_ngrp_val )
754 nullify( s%VELOCITY_ngrp_rotID )
755 nullify( s%VELOCITY_ngrp_centerID )
756 nullify( s%ACCELERATION_ngrp_GRPID )
757 nullify( s%ACCELERATION_ngrp_ID )
758 nullify( s%ACCELERATION_ngrp_type )
759 nullify( s%ACCELERATION_ngrp_amp )
760 nullify( s%ACCELERATION_ngrp_val )
761 nullify( s%COUPLE_ngrp_ID )
768 nullify( h%STEP_DLTIME )
769 nullify( h%STEP_EETIME )
770 nullify( h%STEP_DELMIN )
771 nullify( h%STEP_DELMAX )
777 nullify( h%CONDtemp )
781 nullify( h%RHOfuncA )
782 nullify( h%RHOfuncB )
785 nullify( h%CONDfuncA )
786 nullify( h%CONDfuncB )
788 nullify( h%AMPLtime )
790 nullify( h%AMPLfuncA )
791 nullify( h%AMPLfuncB )
795 nullify( h%T_FIX_node )
796 nullify( h%T_FIX_ampl )
797 nullify( h%T_FIX_val )
798 nullify( h%Q_NOD_node )
799 nullify( h%Q_NOD_ampl )
800 nullify( h%Q_NOD_val )
801 nullify( h%Q_VOL_elem )
802 nullify( h%Q_VOL_ampl )
803 nullify( h%Q_VOL_val )
804 nullify( h%Q_SUF_elem )
805 nullify( h%Q_SUF_ampl )
806 nullify( h%Q_SUF_surf )
807 nullify( h%Q_SUF_val )
808 nullify( h%R_SUF_elem )
809 nullify( h%R_SUF_ampl )
810 nullify( h%R_SUF_surf )
811 nullify( h%R_SUF_val )
812 nullify( h%H_SUF_elem )
813 nullify( h%H_SUF_ampl )
814 nullify( h%H_SUF_surf )
815 nullify( h%H_SUF_val )
835 nullify( f%FLOAD_ngrp_GRPID )
836 nullify( f%FLOAD_ngrp_ID )
837 nullify( f%FLOAD_ngrp_TYPE )
838 nullify( f%FLOAD_ngrp_DOF )
839 nullify( f%FLOAD_ngrp_valre )
840 nullify( f%FLOAD_ngrp_valim )
854 nullify( c%coupled_node )
863 type(hecmwst_matrix) :: hecMAT
865 hecmat%Iarray(1) = 100
870 hecmat%Iarray(6) = 10
872 hecmat%Iarray(21)=
kno
873 hecmat%Iarray(22)=
kno
877 hecmat%Iarray(34)= 10
888 hecmat%Rarray(1) = 1.0e-8
889 hecmat%Rarray(2) = 1.0
890 hecmat%Rarray(3) = 0.0
891 hecmat%Rarray(4) = 0.1
892 hecmat%Rarray(5) = 0.1
893 hecmat%Rarray(11)= 1.0e+4
895 hecmat%Iarray(96) = 0
896 hecmat%Iarray(97) =
kyes
897 hecmat%Iarray(98) =
kyes
898 hecmat%Iarray(99) =
kyes
903 type( hecmwst_matrix ) :: hecMAT
904 integer :: ndof, nn, ierror
907 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
908 if( ierror /= 0 )
then
909 write(*,*)
"##ERROR : not enough memory"
910 write(
idbg,*)
'stop due to allocation error'
912 call hecmw_abort( hecmw_comm_get_comm() )
914 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
915 if( ierror /= 0 )
then
916 write(*,*)
"##ERROR : not enough memory"
917 write(
idbg,*)
'stop due to allocation error'
919 call hecmw_abort( hecmw_comm_get_comm() )
921 allocate (hecmat%B(ndof*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() )
929 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
930 if( ierror /= 0 )
then
931 write(*,*)
"##ERROR : not enough memory"
932 write(
idbg,*)
'stop due to allocation error'
934 call hecmw_abort( hecmw_comm_get_comm() )
936 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
937 if( ierror /= 0 )
then
938 write(*,*)
"##ERROR : not enough memory"
939 write(
idbg,*)
'stop due to allocation error'
941 call hecmw_abort( hecmw_comm_get_comm() )
952 type( hecmwst_matrix ) :: hecMAT
953 integer :: ndof, nn, ierror
956 if(
associated(hecmat%AL) )
then
957 deallocate(hecmat%AL ,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%AU) )
then
965 deallocate(hecmat%AU ,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%B) )
then
973 deallocate(hecmat%B ,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%D) )
then
981 deallocate(hecmat%D ,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%X) )
then
989 deallocate(hecmat%X ,stat=ierror)
990 if( ierror /= 0 )
then
991 write(
idbg,*)
'stop due to deallocation error'
993 call hecmw_abort( hecmw_comm_get_comm())
996 if(
associated(hecmat%A) )
then
997 deallocate(hecmat%A ,stat=ierror)
998 if( ierror /= 0 )
then
999 write(
idbg,*)
'stop due to deallocation error'
1001 call hecmw_abort( hecmw_comm_get_comm())
1010 type(hecmwst_local_mesh) :: hecMESH
1011 integer(kind=kint) :: i
1012 external fstr_sort_index
1015 fstrparam%nlgeom = .false.
1016 fstrparam%solver_method =
ksmcg
1020 fstrparam%analysis_n = 0
1021 fstrparam%ref_temp = 0
1024 fstrparam%fg_echo =
koff
1025 fstrparam%fg_result =
koff
1026 fstrparam%fg_visual =
koff
1029 fstrparam%fg_neutral =
koff
1030 fstrparam%fg_irres =
kno
1031 fstrparam%fg_iwres =
kno
1033 fstrparam%nprint = 1
1036 fstrparam%fg_couple = 0
1037 fstrparam%fg_couple_type = 0
1038 fstrparam%fg_couple_first= 0
1039 fstrparam%fg_couple_window= 0
1042 fstrparam%restart_version = 6
1046 fstrparam%augiter = 2
1050 fstrparam%n_node = hecmesh%n_node;
1051 fstrparam%nn_internal = hecmesh%nn_internal;
1052 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1053 do i = 1, hecmesh%nn_internal
1054 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1055 fstrparam%global_local_ID(2,i) = i
1057 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1062 integer,
intent(in) :: nbc
1063 integer,
intent(in) :: cstep
1065 if( .not.
associated(fstrsolid%step_ctrl) )
return
1066 if( cstep>fstrsolid%nstep_tot )
return
1072 integer,
intent(in) :: nbc
1073 integer,
intent(in) :: cstep
1075 if( cstep > 0 )
then
1076 if( .not.
associated(fstrsolid%step_ctrl) )
return
1077 if( cstep>fstrsolid%nstep_tot )
return
1086 integer,
intent(in) :: nbc
1087 integer,
intent(in) :: cstep
1089 if( .not.
associated(fstrsolid%step_ctrl) )
return
1090 if( cstep>fstrsolid%nstep_tot )
return
1096 integer,
intent(in) :: nbc
1097 integer,
intent(in) :: cstep
1099 if( .not.
associated(fstrsolid%step_ctrl) )
return
1100 if( cstep>fstrsolid%nstep_tot )
return
1106 integer,
intent(in) :: nbc
1107 integer,
intent(in) :: cstep
1109 if( .not.
associated(fstrsolid%step_ctrl) )
return
1110 if( cstep>fstrsolid%nstep_tot )
return
1116 integer,
intent(in) :: cdsys_ID
1117 integer,
intent(in) :: icel
1118 type(hecmwst_local_mesh) :: hecMESH
1120 real(kind=kreal),
intent(out) :: coords(3,3)
1121 integer :: ik, local_nid, iSS
1124 if( cdsys_id>0 )
then
1128 iss = hecmesh%elem_node_index(icel-1)
1131 ik = hecmesh%elem_node_item(iss+local_nid)
1132 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1133 + fstrsolid%dunode(3*ik-2:3*ik)
1135 ik = hecmesh%elem_node_item(iss+local_nid)
1136 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1137 + fstrsolid%dunode(3*ik-2:3*ik)
1139 ik = hecmesh%elem_node_item(iss+local_nid)
1140 coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1141 + fstrsolid%dunode(3*ik-2:3*ik)
1144 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1145 + fstrsolid%dunode(3*ik-2:3*ik)
1147 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1148 + fstrsolid%dunode(3*ik-2:3*ik)
1150 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1151 + fstrsolid%dunode(3*ik-2:3*ik)
1158 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1159 type (fstr_solid),
intent(in) :: fstrSOLID
1160 real(kind=kreal),
intent(out) :: coord(:)
1161 integer(kind=kint) :: i
1162 if(hecmesh%n_dof == 4)
return
1163 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1164 coord(i) = hecmesh%node(i)
1165 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1171 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1172 type (fstr_solid),
intent(in) :: fstrSOLID
1173 real(kind=kreal),
intent(in) :: coord(:)
1174 integer(kind=kint) :: i
1175 if(hecmesh%n_dof == 4)
return
1176 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1177 hecmesh%node(i) = coord(i)
1187 phys%ESTRAIN = 0.0d0
1188 phys%ESTRESS = 0.0d0
1190 phys%EPLSTRAIN = 0.0d0
1196 type (fstr_solid) :: fstrSOLID
1197 integer(kind=kint) :: i
1199 if (
associated(fstrsolid%SOLID))
then
1202 if (
associated(fstrsolid%SHELL))
then
1204 do i=1,fstrsolid%max_lyr
1209 if (
associated(fstrsolid%BEAM))
then
1223 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1224 type ( fstr_solid ),
intent(in) :: fstrSOLID
1225 integer(kind=kint),
intent(in) :: cstep
1226 integer(kind=kint),
intent(in) :: jj_n_amp
1227 real(kind=kreal),
intent(in) :: time
1228 real(kind=kreal),
intent(inout) ::
value
1230 real(kind=kreal) :: t_eval
1232 if( jj_n_amp <= 0 )
then
1234 write(
imsg,*)
'internal error: amplitude table not defined'
1236 call hecmw_abort( hecmw_comm_get_comm() )
1239 if( hecmesh%amp%amp_type_time(jj_n_amp) == hecmw_amp_typetime_total )
then
1242 t_eval = time - fstrsolid%step_ctrl(cstep)%starttime
1245 call hecmw_get_amplitude_value(hecmesh%amp, jj_n_amp, t_eval,
value)
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 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 kel361up
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
subroutine fstr_get_amplitude(hecMESH, fstrSOLID, cstep, jj_n_amp, time, value)
Evaluate the amplitude-scaled target value a(t) for static analysis.
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.
subroutine get_coordsys(cdsys_ID, hecMESH, fstrSOLID, coords, icel)
This subroutine fetch coords defined by local coordinate system.
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
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.