30 integer(kind=kint),
parameter ::
kyes = 1
31 integer(kind=kint),
parameter ::
kno = 0
32 integer(kind=kint),
parameter ::
kon = 1
33 integer(kind=kint),
parameter ::
koff = 0
39 integer(kind=kint),
parameter ::
kstheat = 3
46 integer(kind=kint),
parameter ::
ksmcg = 1
107 integer(kind=kint),
parameter ::
ilog = 16
108 integer(kind=kint),
parameter ::
ista = 17
109 integer(kind=kint),
parameter ::
iutb = 18
110 integer(kind=kint),
parameter ::
imsg = 51
111 integer(kind=kint),
parameter ::
idbg = 52
112 integer(kind=kint),
parameter ::
ifvs = 53
113 integer(kind=kint),
parameter ::
ineu = 54
114 integer(kind=kint),
parameter ::
iresout = 100
121 integer(kind=kint),
pointer ::
iecho
125 integer(kind=kint),
pointer ::
irres
126 integer(kind=kint),
pointer ::
iwres
127 integer(kind=kint),
pointer ::
nrres
139 real(kind=kreal) ::
dt
145 character(len=HECMW_FILENAME_LEN) :: cond_name
148 integer,
pointer :: intval(:) => null()
149 real(kind=kreal),
pointer :: realval(:) => null()
155 integer(kind=kint) :: solution_type
156 integer(kind=kint) :: solver_method
157 integer(kind=kint) :: nlsolver_method
161 integer(kind=kint) :: analysis_n
162 real(kind=kreal),
pointer :: dtime(:)
163 real(kind=kreal),
pointer ::
etime(:)
164 real(kind=kreal),
pointer :: dtmin(:)
165 real(kind=kreal),
pointer :: delmax(:)
166 integer(kind=kint),
pointer::
itmax(:)
167 real(kind=kreal),
pointer ::
eps(:)
169 integer(kind=kint) :: timepoint_id
172 integer(kind=kint) :: fg_echo
173 integer(kind=kint) :: fg_result
174 integer(kind=kint) :: fg_visual
177 integer(kind=kint) :: fg_neutral
178 integer(kind=kint) :: fg_irres
179 integer(kind=kint) :: fg_iwres
184 integer(kind=kint) :: n_node
185 integer(kind=kint) :: nn_internal
186 integer(kind=kint),
pointer :: global_local_id(:,:)
189 integer( kind=kint ) :: fg_couple
190 integer( kind=kint ) :: fg_couple_type
191 integer( kind=kint ) :: fg_couple_first
192 integer( kind=kint ) :: fg_couple_window
195 integer( kind=kint ) :: restart_out_type
196 integer( kind=kint ) :: restart_version
199 integer( kind=kint ) :: contact_algo
200 type(tcontactparam),
pointer :: contactparam(:)
201 type(tcontactinterference),
pointer :: contact_if(:)
213 real(kind=kreal),
pointer :: stress(:) => null()
214 real(kind=kreal),
pointer :: strain(:) => null()
215 real(kind=kreal),
pointer :: mises(:) => null()
217 real(kind=kreal),
pointer :: pstress(:) => null()
218 real(kind=kreal),
pointer :: pstrain(:) => null()
219 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
220 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
222 real(kind=kreal),
pointer :: estress(:) => null()
223 real(kind=kreal),
pointer :: estrain(:) => null()
224 real(kind=kreal),
pointer :: emises(:) => null()
225 real(kind=kreal),
pointer :: eplstrain(:) => null()
227 real(kind=kreal),
pointer :: epstress(:) => null()
228 real(kind=kreal),
pointer :: epstrain(:) => null()
229 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
230 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
231 real(kind=kreal),
pointer :: enqm(:) => null()
240 integer(kind=kint) :: file_type
241 integer(kind=kint) :: statictype
242 integer(kind=kint) :: nstep_tot
248 integer(kind=kint) :: boundary_ngrp_tot
249 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
250 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
251 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
252 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
253 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
254 integer(kind=kint),
pointer :: boundary_ngrp_istot (:) =>null()
255 integer(kind=kint) :: boundary_ngrp_rot
256 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
257 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
260 integer(kind=kint) :: velocity_type
261 integer(kind=kint) :: velocity_ngrp_tot
262 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
263 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
264 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
265 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
266 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
269 integer(kind=kint) :: acceleration_type
270 integer(kind=kint) :: acceleration_ngrp_tot
271 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
272 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
273 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
274 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
275 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
278 integer(kind=kint) :: cload_ngrp_tot
279 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
280 integer(kind=kint),
pointer :: cload_ngrp_id (:)
281 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
282 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
283 real(kind=kreal),
pointer :: cload_ngrp_val(:)
284 integer(kind=kint) :: cload_ngrp_rot
285 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
286 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
289 integer(kind=kint) :: dload_ngrp_tot
290 integer(kind=kint) :: dload_follow
291 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
292 integer(kind=kint),
pointer :: dload_ngrp_id (:)
293 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
294 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
295 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
298 integer(kind=kint) :: temp_ngrp_tot
299 integer(kind=kint) :: temp_irres
300 integer(kind=kint) :: temp_tstep
301 integer(kind=kint) :: temp_interval
302 integer(kind=kint) :: temp_rtype
303 real(kind=kreal) :: temp_factor
304 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
305 integer(kind=kint),
pointer :: temp_ngrp_id (:)
306 real(kind=kreal),
pointer :: temp_ngrp_val(:)
309 integer(kind=kint) :: spring_ngrp_tot
310 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
311 integer(kind=kint),
pointer :: spring_ngrp_id (:)
312 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
313 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
314 real(kind=kreal),
pointer :: spring_ngrp_val(:)
317 integer( kind=kint ) :: couple_ngrp_tot
318 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
321 integer(kind=kint) :: maxn_gauss
323 real(kind=kreal),
pointer :: stress(:)
324 real(kind=kreal),
pointer :: strain(:)
325 real(kind=kreal),
pointer :: mises(:)
327 real(kind=kreal),
pointer :: pstress(:)
328 real(kind=kreal),
pointer :: pstrain(:)
329 real(kind=kreal),
pointer :: pstress_vect(:,:)
330 real(kind=kreal),
pointer :: pstrain_vect(:,:)
332 real(kind=kreal),
pointer :: estress(:)
333 real(kind=kreal),
pointer :: estrain(:)
334 real(kind=kreal),
pointer :: emises(:)
336 real(kind=kreal),
pointer :: epstress(:)
337 real(kind=kreal),
pointer :: epstrain(:)
338 real(kind=kreal),
pointer :: epstress_vect(:,:)
339 real(kind=kreal),
pointer :: epstrain_vect(:,:)
341 real(kind=kreal),
pointer :: tnstrain(:)
342 real(kind=kreal),
pointer :: testrain(:)
344 real(kind=kreal),
pointer :: yield_ratio(:)
346 real(kind=kreal),
pointer :: enqm(:)
347 real(kind=kreal),
pointer :: reaction(:)
349 real(kind=kreal),
pointer :: cont_nforce(:)
350 real(kind=kreal),
pointer :: cont_fric(:)
351 real(kind=kreal),
pointer :: cont_relvel(:)
352 real(kind=kreal),
pointer :: cont_state(:)
353 integer(kind=kint),
pointer :: cont_sgrp_id(:)
354 real(kind=kreal),
pointer :: cont_area(:)
355 real(kind=kreal),
pointer :: cont_ntrac(:)
356 real(kind=kreal),
pointer :: cont_ftrac(:)
357 real(kind=kreal),
pointer :: embed_nforce(:)
364 integer(kind=kint) :: restart_nout
367 integer(kind=kint) :: restart_nin
370 integer(kind=kint) :: max_lyr
371 integer(kind=kint) :: is_33shell
372 integer(kind=kint) :: is_33beam
373 integer(kind=kint) :: is_heat
374 integer(kind=kint) :: max_ncon_stf
375 integer(kind=kint) :: max_ncon
376 integer(kind=kint),
pointer :: is_rot(:) => null()
377 integer(kind=kint) :: elemopt361
378 logical :: is_smoothing_active
379 real(kind=kreal) :: factor(2)
382 integer(kind=kint) :: nrstat_i(10)
383 real(kind=kreal) :: nrstat_r(10)
384 integer(kind=kint) :: autoinc_stat
385 integer(kind=kint) :: cutback_stat
387 real(kind=kreal),
pointer :: gl(:)
388 real(kind=kreal),
pointer :: gl0(:)
389 real(kind=kreal),
pointer :: eforce(:)
390 real(kind=kreal),
pointer :: qforce(:)
391 real(kind=kreal),
pointer :: qforce_bak(:)
392 real(kind=kreal),
pointer :: unode(:) => null()
393 real(kind=kreal),
pointer :: unode_bak(:) => null()
394 real(kind=kreal),
pointer :: dunode(:) => null()
395 real(kind=kreal),
pointer :: ddunode(:) => null()
396 real(kind=kreal),
pointer :: temperature(:)=> null()
397 real(kind=kreal),
pointer :: temp_bak(:) => null()
398 real(kind=kreal),
pointer :: last_temp(:) => null()
401 type( tmaterial ),
pointer :: materials(:) =>null()
402 integer :: n_contacts
407 real(kind=kreal),
pointer :: mpc_const(:) =>null()
417 real(kind=kreal),
pointer :: unode_bkup(:) => null()
418 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
419 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
420 type(
telement ),
pointer :: elements_bkup(:) =>null()
421 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
422 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
428 integer(kind=kint) :: is_steady
429 real(kind=kreal) :: beta
430 logical :: is_iter_max_limit
433 integer(kind=kint) :: steptot
434 integer(kind=kint) :: restart_nout
435 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
436 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
437 integer(kind=kint) :: timepoint_id
440 integer(kind=kint) :: materialtot
441 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
442 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
443 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
444 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
446 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
447 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
448 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
451 integer(kind=kint) :: amplitudetot
452 integer(kind=kint),
pointer :: ampltab(:)
453 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
454 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
457 real(kind=kreal),
pointer :: temp0(:)
458 real(kind=kreal),
pointer :: tempc(:)
459 real(kind=kreal),
pointer :: temp(:)
462 integer(kind=kint) :: t_fix_tot
463 integer(kind=kint),
pointer :: t_fix_node(:)
464 integer(kind=kint),
pointer :: t_fix_ampl(:)
465 real(kind=kreal),
pointer :: t_fix_val(:)
468 integer(kind=kint) :: q_nod_tot
469 integer(kind=kint),
pointer :: q_nod_node(:)
470 integer(kind=kint),
pointer :: q_nod_ampl(:)
471 real(kind=kreal),
pointer :: q_nod_val(:)
474 integer(kind=kint) :: q_vol_tot
475 integer(kind=kint),
pointer :: q_vol_elem(:)
476 integer(kind=kint),
pointer :: q_vol_ampl(:)
477 real(kind=kreal),
pointer :: q_vol_val(:)
480 integer(kind=kint) :: q_suf_tot
481 integer(kind=kint),
pointer :: q_suf_elem(:)
482 integer(kind=kint),
pointer :: q_suf_ampl(:)
483 integer(kind=kint),
pointer :: q_suf_surf(:)
484 real(kind=kreal),
pointer :: q_suf_val(:)
487 integer(kind=kint) :: r_suf_tot
488 integer(kind=kint),
pointer :: r_suf_elem(:)
489 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
490 integer(kind=kint),
pointer :: r_suf_surf(:)
491 real(kind=kreal),
pointer :: r_suf_val(:,:)
494 integer(kind=kint) :: h_suf_tot
495 integer(kind=kint),
pointer :: h_suf_elem(:)
496 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
497 integer(kind=kint),
pointer :: h_suf_surf(:)
498 real(kind=kreal),
pointer :: h_suf_val(:,:)
500 integer(kind=kint) :: wl_tot
507 integer(kind=kint) :: idx_eqa
508 integer(kind=kint) :: idx_resp
511 integer(kind=kint) :: n_step
512 real(kind=kreal) :: t_start
513 real(kind=kreal) :: t_curr
514 real(kind=kreal) :: t_end
515 real(kind=kreal) :: t_delta
516 integer(kind=kint) :: restart_nout
519 integer(kind=kint) :: restart_nin
522 real(kind=kreal) :: ganma
523 real(kind=kreal) :: beta
526 integer(kind=kint) :: idx_mas
529 integer(kind=kint) :: idx_dmp
530 real(kind=kreal) :: ray_m
531 real(kind=kreal) :: ray_k
534 logical :: varinitialize
537 integer(kind=kint) :: nout
538 integer(kind=kint) :: ngrp_monit
539 integer(kind=kint) :: nout_monit
540 integer(kind=kint) :: i_step
541 integer(kind=kint) :: iout_list(6)
550 real(kind=kreal),
pointer :: disp(:,:)
551 real(kind=kreal),
pointer :: vel(:,:)
552 real(kind=kreal),
pointer :: acc(:,:)
554 real(kind=kreal) :: kineticenergy
555 real(kind=kreal) :: strainenergy
556 real(kind=kreal) :: totalenergy
559 real(kind=kreal),
pointer :: vec1(:)
560 real(kind=kreal),
pointer :: vec2(:)
561 real(kind=kreal),
pointer :: vec3(:)
563 integer(kind=kint) :: dynamic_iw4 = 204
564 integer(kind=kint) :: dynamic_iw5 = 205
565 integer(kind=kint) :: dynamic_iw6 = 206
566 integer(kind=kint) :: dynamic_iw7 = 207
567 integer(kind=kint) :: dynamic_iw8 = 208
568 integer(kind=kint) :: dynamic_iw9 = 209
569 integer(kind=kint) :: dynamic_iw10 = 210
573 integer(kind=kint) :: fload_ngrp_tot
574 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
575 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
576 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
577 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
578 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
579 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
580 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
581 integer(kind=kint) :: start_mode
582 integer(kind=kint) :: end_mode
586 integer(kind=kint) :: nummode
587 integer(kind=kint) :: numnodedof
588 real(kind=kreal),
pointer :: eigomega(:) => null()
589 real(kind=kreal),
pointer :: eigvector(:,:) => null()
590 real(kind=kreal) :: rayalpha, raybeta
596 integer(kind=kint) :: nget
597 integer(kind=kint) :: maxiter
598 integer(kind=kint) :: iter
599 real (kind=kreal) :: sigma
600 real (kind=kreal) :: tolerance
601 real (kind=kreal) :: totalmass
602 real (kind=kreal),
pointer :: eigval(:)
603 real (kind=kreal),
pointer :: eigvec(:,:)
604 real (kind=kreal),
pointer :: filter(:)
605 real (kind=kreal),
pointer :: mass(:)
606 real (kind=kreal),
pointer :: effmass(:)
607 real (kind=kreal),
pointer :: partfactor(:)
608 logical :: is_free = .false.
614 integer( kind=kint ) :: dof
615 integer( kind=kint ) :: ndof
616 integer( kind=kint ) :: coupled_node_n
618 integer,
pointer :: coupled_node(:)
619 real( kind=8 ),pointer :: trac(:)
620 real( kind=8 ),pointer :: disp(:)
621 real( kind=8 ),pointer :: velo(:)
622 real( kind=8 ),pointer :: accel(:)
624 integer( kind=kint ),
pointer :: index(:)
630 integer(kind=kint) :: egrpid
631 real( kind=kreal ) :: i
632 real( kind=kreal ) :: u
633 real( kind=kreal ) :: coe
634 real( kind=kreal ) :: v
635 integer(kind=kint) :: xyz
636 real(kind=kreal) :: n1, n2
637 real(kind=kreal) :: distol
638 real(kind=kreal) :: tstart
647 integer :: elemopt341
651 integer :: elemopt361
668 nullify( p%global_local_ID)
669 nullify( p%timepoints )
676 nullify( s%BOUNDARY_ngrp_ID )
677 nullify( s%BOUNDARY_ngrp_type )
678 nullify( s%BOUNDARY_ngrp_amp )
679 nullify( s%BOUNDARY_ngrp_val)
680 nullify( s%BOUNDARY_ngrp_rotID )
681 nullify( s%BOUNDARY_ngrp_centerID )
682 nullify( s%CLOAD_ngrp_ID )
683 nullify( s%CLOAD_ngrp_DOF )
684 nullify( s%CLOAD_ngrp_amp )
685 nullify( s%CLOAD_ngrp_rotID )
686 nullify( s%CLOAD_ngrp_centerID )
687 nullify( s%CLOAD_ngrp_val )
688 nullify( s%DLOAD_ngrp_ID )
689 nullify( s%DLOAD_ngrp_LID )
690 nullify( s%DLOAD_ngrp_amp )
691 nullify( s%DLOAD_ngrp_params )
692 nullify( s%TEMP_ngrp_ID )
693 nullify( s%TEMP_ngrp_val )
694 nullify( s%SPRING_ngrp_ID )
695 nullify( s%SPRING_ngrp_DOF )
696 nullify( s%SPRING_ngrp_amp )
697 nullify( s%SPRING_ngrp_val )
703 nullify( s%PSTRESS_VECT )
704 nullify( s%PSTRAIN_VECT )
705 nullify( s%REACTION )
709 nullify( s%EPSTRESS )
710 nullify( s%EPSTRAIN )
711 nullify( s%EPSTRESS_VECT )
712 nullify( s%EPSTRAIN_VECT )
717 nullify( s%VELOCITY_ngrp_ID )
718 nullify( s%VELOCITY_ngrp_type )
719 nullify( s%VELOCITY_ngrp_amp )
720 nullify( s%VELOCITY_ngrp_val )
721 nullify( s%ACCELERATION_ngrp_ID )
722 nullify( s%ACCELERATION_ngrp_type )
723 nullify( s%ACCELERATION_ngrp_amp )
724 nullify( s%ACCELERATION_ngrp_val )
725 nullify( s%COUPLE_ngrp_ID )
732 nullify( h%STEP_DLTIME )
733 nullify( h%STEP_EETIME )
734 nullify( h%STEP_DELMIN )
735 nullify( h%STEP_DELMAX )
741 nullify( h%CONDtemp )
745 nullify( h%RHOfuncA )
746 nullify( h%RHOfuncB )
749 nullify( h%CONDfuncA )
750 nullify( h%CONDfuncB )
752 nullify( h%AMPLtime )
754 nullify( h%AMPLfuncA )
755 nullify( h%AMPLfuncB )
759 nullify( h%T_FIX_node )
760 nullify( h%T_FIX_ampl )
761 nullify( h%T_FIX_val )
762 nullify( h%Q_NOD_node )
763 nullify( h%Q_NOD_ampl )
764 nullify( h%Q_NOD_val )
765 nullify( h%Q_VOL_elem )
766 nullify( h%Q_VOL_ampl )
767 nullify( h%Q_VOL_val )
768 nullify( h%Q_SUF_elem )
769 nullify( h%Q_SUF_ampl )
770 nullify( h%Q_SUF_surf )
771 nullify( h%Q_SUF_val )
772 nullify( h%R_SUF_elem )
773 nullify( h%R_SUF_ampl )
774 nullify( h%R_SUF_surf )
775 nullify( h%R_SUF_val )
776 nullify( h%H_SUF_elem )
777 nullify( h%H_SUF_ampl )
778 nullify( h%H_SUF_surf )
779 nullify( h%H_SUF_val )
799 nullify( f%FLOAD_ngrp_GRPID )
800 nullify( f%FLOAD_ngrp_ID )
801 nullify( f%FLOAD_ngrp_TYPE )
802 nullify( f%FLOAD_ngrp_DOF )
803 nullify( f%FLOAD_ngrp_valre )
804 nullify( f%FLOAD_ngrp_valim )
818 nullify( c%coupled_node )
827 type(hecmwst_matrix) :: hecMAT
829 hecmat%Iarray(1) = 100
834 hecmat%Iarray(6) = 10
836 hecmat%Iarray(21)=
kno
837 hecmat%Iarray(22)=
kno
841 hecmat%Iarray(34)= 10
852 hecmat%Rarray(1) = 1.0e-8
853 hecmat%Rarray(2) = 1.0
854 hecmat%Rarray(3) = 0.0
855 hecmat%Rarray(4) = 0.1
856 hecmat%Rarray(5) = 0.1
857 hecmat%Rarray(11)= 1.0e+4
859 hecmat%Iarray(96) = 0
860 hecmat%Iarray(97) =
kyes
861 hecmat%Iarray(98) =
kyes
862 hecmat%Iarray(99) =
kyes
867 type( hecmwst_matrix ) :: hecMAT
868 integer :: ndof, nn, ierror
871 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
872 if( ierror /= 0 )
then
873 write(*,*)
"##ERROR : not enough memory"
874 write(
idbg,*)
'stop due to allocation error'
876 call hecmw_abort( hecmw_comm_get_comm() )
878 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
879 if( ierror /= 0 )
then
880 write(*,*)
"##ERROR : not enough memory"
881 write(
idbg,*)
'stop due to allocation error'
883 call hecmw_abort( hecmw_comm_get_comm() )
885 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
886 if( ierror /= 0 )
then
887 write(*,*)
"##ERROR : not enough memory"
888 write(
idbg,*)
'stop due to allocation error'
890 call hecmw_abort( hecmw_comm_get_comm() )
893 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
894 if( ierror /= 0 )
then
895 write(*,*)
"##ERROR : not enough memory"
896 write(
idbg,*)
'stop due to allocation error'
898 call hecmw_abort( hecmw_comm_get_comm() )
900 allocate (hecmat%X(ndof*hecmat%NP) ,stat=ierror )
901 if( ierror /= 0 )
then
902 write(*,*)
"##ERROR : not enough memory"
903 write(
idbg,*)
'stop due to allocation error'
905 call hecmw_abort( hecmw_comm_get_comm() )
907 allocate (hecmat%ALU(nn*hecmat%N) ,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() )
924 type( hecmwst_matrix ) :: hecMAT
925 integer :: ndof, nn, ierror
928 if(
associated(hecmat%AL) )
then
929 deallocate(hecmat%AL ,stat=ierror)
930 if( ierror /= 0 )
then
931 write(
idbg,*)
'stop due to deallocation error'
933 call hecmw_abort( hecmw_comm_get_comm())
936 if(
associated(hecmat%AU) )
then
937 deallocate(hecmat%AU ,stat=ierror)
938 if( ierror /= 0 )
then
939 write(
idbg,*)
'stop due to deallocation error'
941 call hecmw_abort( hecmw_comm_get_comm())
944 if(
associated(hecmat%B) )
then
945 deallocate(hecmat%B ,stat=ierror)
946 if( ierror /= 0 )
then
947 write(
idbg,*)
'stop due to deallocation error'
949 call hecmw_abort( hecmw_comm_get_comm())
952 if(
associated(hecmat%D) )
then
953 deallocate(hecmat%D ,stat=ierror)
954 if( ierror /= 0 )
then
955 write(
idbg,*)
'stop due to deallocation error'
957 call hecmw_abort( hecmw_comm_get_comm())
960 if(
associated(hecmat%X) )
then
961 deallocate(hecmat%X ,stat=ierror)
962 if( ierror /= 0 )
then
963 write(
idbg,*)
'stop due to deallocation error'
965 call hecmw_abort( hecmw_comm_get_comm())
968 if(
associated(hecmat%ALU) )
then
969 deallocate(hecmat%ALU ,stat=ierror)
970 if( ierror /= 0 )
then
971 write(
idbg,*)
'stop due to deallocation error'
973 call hecmw_abort( hecmw_comm_get_comm())
982 type(hecmwst_local_mesh) :: hecMESH
983 integer(kind=kint) :: i
984 external fstr_sort_index
987 fstrparam%nlgeom = .false.
988 fstrparam%solver_method =
ksmcg
992 fstrparam%analysis_n = 0
993 fstrparam%ref_temp = 0
996 fstrparam%fg_echo =
koff
997 fstrparam%fg_result =
koff
998 fstrparam%fg_visual =
koff
1001 fstrparam%fg_neutral =
koff
1002 fstrparam%fg_irres =
kno
1003 fstrparam%fg_iwres =
kno
1005 fstrparam%nprint = 1
1008 fstrparam%fg_couple = 0
1009 fstrparam%fg_couple_type = 0
1010 fstrparam%fg_couple_first= 0
1011 fstrparam%fg_couple_window= 0
1014 fstrparam%restart_version = 5
1018 fstrparam%n_node = hecmesh%n_node;
1019 fstrparam%nn_internal = hecmesh%nn_internal;
1020 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1021 do i = 1, hecmesh%nn_internal
1022 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1023 fstrparam%global_local_ID(2,i) = i
1025 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1030 integer,
intent(in) :: nbc
1031 integer,
intent(in) :: cstep
1033 if( .not.
associated(fstrsolid%step_ctrl) )
return
1034 if( cstep>fstrsolid%nstep_tot )
return
1040 integer,
intent(in) :: nbc
1041 integer,
intent(in) :: cstep
1043 if( cstep > 0 )
then
1044 if( .not.
associated(fstrsolid%step_ctrl) )
return
1045 if( cstep>fstrsolid%nstep_tot )
return
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( .not.
associated(fstrsolid%step_ctrl) )
return
1068 if( cstep>fstrsolid%nstep_tot )
return
1073 subroutine get_coordsys( cdsys_ID, hecMESH, fstrSOLID, coords )
1074 integer,
intent(in) :: cdsys_ID
1075 type(hecmwst_local_mesh) :: hecMESH
1077 real(kind=kreal),
intent(out) :: coords(3,3)
1081 if( cdsys_id>0 )
then
1086 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1087 + fstrsolid%dunode(3*ik-2:3*ik)
1089 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1090 + fstrsolid%dunode(3*ik-2:3*ik)
1092 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1093 + fstrsolid%dunode(3*ik-2:3*ik)
1100 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1101 type (fstr_solid),
intent(in) :: fstrSOLID
1102 real(kind=kreal),
intent(out) :: coord(:)
1103 integer(kind=kint) :: i
1104 if(hecmesh%n_dof == 4)
return
1105 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1106 coord(i) = hecmesh%node(i)
1107 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1113 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1114 type (fstr_solid),
intent(in) :: fstrSOLID
1115 real(kind=kreal),
intent(in) :: coord(:)
1116 integer(kind=kint) :: i
1117 if(hecmesh%n_dof == 4)
return
1118 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1119 hecmesh%node(i) = coord(i)
1129 phys%ESTRAIN = 0.0d0
1130 phys%ESTRESS = 0.0d0
1137 type (fstr_solid) :: fstrSOLID
1138 integer(kind=kint) :: i
1140 if (
associated(fstrsolid%SOLID))
then
1143 if (
associated(fstrsolid%SHELL))
then
1145 do i=1,fstrsolid%max_lyr
1150 if (
associated(fstrsolid%BEAM))
then
1155 subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
1156 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1157 type ( fstr_solid ),
intent(in) :: fstrSOLID
1158 integer(kind=kint),
intent(in) :: cstep
1159 integer(kind=kint),
intent(in) :: jj_n_amp
1160 real(kind=kreal),
intent(in) :: time
1161 real(kind=kreal),
intent(out) :: f_t
1163 integer(kind=kint) :: i
1164 integer(kind=kint) :: jj1, jj2
1165 integer(kind=kint) :: s1, s2, flag
1166 real(kind=kreal) :: t_1, t_2, t_t, f_1, f_2, tincre
1170 if( jj_n_amp <= 0 )
then
1172 write(
imsg,*)
'internal error: amplitude table not defined'
1174 call hecmw_abort( hecmw_comm_get_comm() )
1177 tincre = fstrsolid%step_ctrl( cstep )%initdt
1178 jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
1179 jj2 = hecmesh%amp%amp_index(jj_n_amp)
1182 t_t = time-fstrsolid%step_ctrl(cstep)%starttime
1186 if(t_t .gt. hecmesh%amp%amp_table(jj2))
then
1187 f_t = hecmesh%amp%amp_val(jj2)
1188 else if(t_t .le. hecmesh%amp%amp_table(jj2))
then
1191 if(t_t .le. hecmesh%amp%amp_table(i))
then
1196 if( flag == 1 )
exit
1199 t_2 = hecmesh%amp%amp_table(s2)
1200 t_1 = hecmesh%amp%amp_table(s1)
1201 f_2 = hecmesh%amp%amp_val(s2)
1202 f_1 = hecmesh%amp%amp_val(s1)
1203 if( t_2-t_1 .lt. 1.0e-20)
then
1205 write(
imsg,*)
'stop due to t_2-t_1 <= 0'
1207 call hecmw_abort( hecmw_comm_get_comm())
1209 f_t = ((t_2*f_1 - t_1*f_2) + (f_2 - f_1)*t_t) / (t_2 - t_1)