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(:)
212 real(kind=kreal),
pointer :: stress(:) => null()
213 real(kind=kreal),
pointer :: strain(:) => null()
214 real(kind=kreal),
pointer :: mises(:) => null()
216 real(kind=kreal),
pointer :: pstress(:) => null()
217 real(kind=kreal),
pointer :: pstrain(:) => null()
218 real(kind=kreal),
pointer :: pstress_vect(:,:) => null()
219 real(kind=kreal),
pointer :: pstrain_vect(:,:) => null()
221 real(kind=kreal),
pointer :: estress(:) => null()
222 real(kind=kreal),
pointer :: estrain(:) => null()
223 real(kind=kreal),
pointer :: emises(:) => null()
224 real(kind=kreal),
pointer :: eplstrain(:) => null()
226 real(kind=kreal),
pointer :: epstress(:) => null()
227 real(kind=kreal),
pointer :: epstrain(:) => null()
228 real(kind=kreal),
pointer :: epstress_vect(:,:) => null()
229 real(kind=kreal),
pointer :: epstrain_vect(:,:) => null()
230 real(kind=kreal),
pointer :: enqm(:) => null()
239 integer(kind=kint) :: file_type
240 integer(kind=kint) :: statictype
241 integer(kind=kint) :: nstep_tot
247 integer(kind=kint) :: boundary_ngrp_tot
248 integer(kind=kint),
pointer :: boundary_ngrp_grpid (:) =>null()
249 integer(kind=kint),
pointer :: boundary_ngrp_id (:) =>null()
250 integer(kind=kint),
pointer :: boundary_ngrp_type (:) =>null()
251 integer(kind=kint),
pointer :: boundary_ngrp_amp (:) =>null()
252 real(kind=kreal),
pointer :: boundary_ngrp_val(:) =>null()
253 integer(kind=kint),
pointer :: boundary_ngrp_istot (:) =>null()
254 integer(kind=kint) :: boundary_ngrp_rot
255 integer(kind=kint),
pointer :: boundary_ngrp_rotid (:) =>null()
256 integer(kind=kint),
pointer :: boundary_ngrp_centerid (:) =>null()
259 integer(kind=kint) :: velocity_type
260 integer(kind=kint) :: velocity_ngrp_tot
261 integer(kind=kint),
pointer :: velocity_ngrp_grpid (:) =>null()
262 integer(kind=kint),
pointer :: velocity_ngrp_id (:) =>null()
263 integer(kind=kint),
pointer :: velocity_ngrp_type (:) =>null()
264 integer(kind=kint),
pointer :: velocity_ngrp_amp (:) =>null()
265 real(kind=kreal),
pointer :: velocity_ngrp_val(:) =>null()
268 integer(kind=kint) :: acceleration_type
269 integer(kind=kint) :: acceleration_ngrp_tot
270 integer(kind=kint),
pointer :: acceleration_ngrp_grpid (:) =>null()
271 integer(kind=kint),
pointer :: acceleration_ngrp_id (:) =>null()
272 integer(kind=kint),
pointer :: acceleration_ngrp_type (:) =>null()
273 integer(kind=kint),
pointer :: acceleration_ngrp_amp (:) =>null()
274 real(kind=kreal),
pointer :: acceleration_ngrp_val(:) =>null()
277 integer(kind=kint) :: cload_ngrp_tot
278 integer(kind=kint),
pointer :: cload_ngrp_grpid (:) =>null()
279 integer(kind=kint),
pointer :: cload_ngrp_id (:)
280 integer(kind=kint),
pointer :: cload_ngrp_dof (:)
281 integer(kind=kint),
pointer :: cload_ngrp_amp (:)
282 real(kind=kreal),
pointer :: cload_ngrp_val(:)
283 integer(kind=kint) :: cload_ngrp_rot
284 integer(kind=kint),
pointer :: cload_ngrp_rotid (:) =>null()
285 integer(kind=kint),
pointer :: cload_ngrp_centerid (:) =>null()
288 integer(kind=kint) :: dload_ngrp_tot
289 integer(kind=kint) :: dload_follow
290 integer(kind=kint),
pointer :: dload_ngrp_grpid (:) =>null()
291 integer(kind=kint),
pointer :: dload_ngrp_id (:)
292 integer(kind=kint),
pointer :: dload_ngrp_lid (:)
293 integer(kind=kint),
pointer :: dload_ngrp_amp (:)
294 real(kind=kreal),
pointer :: dload_ngrp_params(:,:)
297 integer(kind=kint) :: temp_ngrp_tot
298 integer(kind=kint) :: temp_irres
299 integer(kind=kint) :: temp_tstep
300 integer(kind=kint) :: temp_interval
301 integer(kind=kint) :: temp_rtype
302 real(kind=kreal) :: temp_factor
303 integer(kind=kint),
pointer :: temp_ngrp_grpid (:) =>null()
304 integer(kind=kint),
pointer :: temp_ngrp_id (:)
305 real(kind=kreal),
pointer :: temp_ngrp_val(:)
308 integer(kind=kint) :: spring_ngrp_tot
309 integer(kind=kint),
pointer :: spring_ngrp_grpid (:) =>null()
310 integer(kind=kint),
pointer :: spring_ngrp_id (:)
311 integer(kind=kint),
pointer :: spring_ngrp_dof (:)
312 integer(kind=kint),
pointer :: spring_ngrp_amp (:)
313 real(kind=kreal),
pointer :: spring_ngrp_val(:)
316 integer( kind=kint ) :: couple_ngrp_tot
317 integer( kind=kint ),
pointer :: couple_ngrp_id(:)
320 integer(kind=kint) :: maxn_gauss
322 real(kind=kreal),
pointer :: stress(:)
323 real(kind=kreal),
pointer :: strain(:)
324 real(kind=kreal),
pointer :: mises(:)
326 real(kind=kreal),
pointer :: pstress(:)
327 real(kind=kreal),
pointer :: pstrain(:)
328 real(kind=kreal),
pointer :: pstress_vect(:,:)
329 real(kind=kreal),
pointer :: pstrain_vect(:,:)
331 real(kind=kreal),
pointer :: estress(:)
332 real(kind=kreal),
pointer :: estrain(:)
333 real(kind=kreal),
pointer :: emises(:)
335 real(kind=kreal),
pointer :: epstress(:)
336 real(kind=kreal),
pointer :: epstrain(:)
337 real(kind=kreal),
pointer :: epstress_vect(:,:)
338 real(kind=kreal),
pointer :: epstrain_vect(:,:)
340 real(kind=kreal),
pointer :: tnstrain(:)
341 real(kind=kreal),
pointer :: testrain(:)
343 real(kind=kreal),
pointer :: yield_ratio(:)
345 real(kind=kreal),
pointer :: enqm(:)
346 real(kind=kreal),
pointer :: reaction(:)
348 real(kind=kreal),
pointer :: cont_nforce(:)
349 real(kind=kreal),
pointer :: cont_fric(:)
350 real(kind=kreal),
pointer :: cont_relvel(:)
351 real(kind=kreal),
pointer :: cont_state(:)
352 integer(kind=kint),
pointer :: cont_sgrp_id(:)
353 real(kind=kreal),
pointer :: cont_area(:)
354 real(kind=kreal),
pointer :: cont_ntrac(:)
355 real(kind=kreal),
pointer :: cont_ftrac(:)
356 real(kind=kreal),
pointer :: embed_nforce(:)
363 integer(kind=kint) :: restart_nout
366 integer(kind=kint) :: restart_nin
369 integer(kind=kint) :: max_lyr
370 integer(kind=kint) :: is_33shell
371 integer(kind=kint) :: is_33beam
372 integer(kind=kint) :: is_heat
373 integer(kind=kint) :: max_ncon_stf
374 integer(kind=kint) :: max_ncon
375 integer(kind=kint),
pointer :: is_rot(:) => null()
376 integer(kind=kint) :: elemopt361
377 logical :: is_smoothing_active
378 real(kind=kreal) :: factor(2)
381 integer(kind=kint) :: nrstat_i(10)
382 real(kind=kreal) :: nrstat_r(10)
383 integer(kind=kint) :: autoinc_stat
384 integer(kind=kint) :: cutback_stat
386 real(kind=kreal),
pointer :: gl(:)
387 real(kind=kreal),
pointer :: gl0(:)
388 real(kind=kreal),
pointer :: eforce(:)
389 real(kind=kreal),
pointer :: qforce(:)
390 real(kind=kreal),
pointer :: qforce_bak(:)
391 real(kind=kreal),
pointer :: unode(:) => null()
392 real(kind=kreal),
pointer :: unode_bak(:) => null()
393 real(kind=kreal),
pointer :: dunode(:) => null()
394 real(kind=kreal),
pointer :: ddunode(:) => null()
395 real(kind=kreal),
pointer :: temperature(:)=> null()
396 real(kind=kreal),
pointer :: temp_bak(:) => null()
397 real(kind=kreal),
pointer :: last_temp(:) => null()
400 type( tmaterial ),
pointer :: materials(:) =>null()
401 integer :: n_contacts
406 real(kind=kreal),
pointer :: mpc_const(:) =>null()
416 real(kind=kreal),
pointer :: unode_bkup(:) => null()
417 real(kind=kreal),
pointer :: qforce_bkup(:) => null()
418 real(kind=kreal),
pointer :: last_temp_bkup(:) => null()
419 type(
telement ),
pointer :: elements_bkup(:) =>null()
420 type(
tcontact ),
pointer :: contacts_bkup(:) =>null()
421 type(
tcontact ),
pointer :: embeds_bkup(:) =>null()
427 integer(kind=kint) :: is_steady
428 real(kind=kreal) :: beta
429 logical :: is_iter_max_limit
432 integer(kind=kint) :: steptot
433 integer(kind=kint) :: restart_nout
434 real(kind=kreal),
pointer :: step_dltime(:), step_eetime(:)
435 real(kind=kreal),
pointer :: step_delmin(:), step_delmax(:)
436 integer(kind=kint) :: timepoint_id
439 integer(kind=kint) :: materialtot
440 integer(kind=kint),
pointer :: rhotab(:), cptab(:), condtab(:)
441 real(kind=kreal),
pointer :: rho(:,:), rhotemp(:,:)
442 real(kind=kreal),
pointer :: cp(:,:), cptemp(:,:)
443 real(kind=kreal),
pointer :: cond(:,:),condtemp(:,:)
445 real(kind=kreal),
pointer :: rhofunca(:,:), rhofuncb(:,:)
446 real(kind=kreal),
pointer :: cpfunca(:,:), cpfuncb(:,:)
447 real(kind=kreal),
pointer :: condfunca(:,:),condfuncb(:,:)
450 integer(kind=kint) :: amplitudetot
451 integer(kind=kint),
pointer :: ampltab(:)
452 real(kind=kreal),
pointer :: ampl(:,:), ampltime(:,:)
453 real(kind=kreal),
pointer :: amplfunca(:,:), amplfuncb(:,:)
456 real(kind=kreal),
pointer :: temp0(:)
457 real(kind=kreal),
pointer :: tempc(:)
458 real(kind=kreal),
pointer :: temp(:)
461 integer(kind=kint) :: t_fix_tot
462 integer(kind=kint),
pointer :: t_fix_node(:)
463 integer(kind=kint),
pointer :: t_fix_ampl(:)
464 real(kind=kreal),
pointer :: t_fix_val(:)
467 integer(kind=kint) :: q_nod_tot
468 integer(kind=kint),
pointer :: q_nod_node(:)
469 integer(kind=kint),
pointer :: q_nod_ampl(:)
470 real(kind=kreal),
pointer :: q_nod_val(:)
473 integer(kind=kint) :: q_vol_tot
474 integer(kind=kint),
pointer :: q_vol_elem(:)
475 integer(kind=kint),
pointer :: q_vol_ampl(:)
476 real(kind=kreal),
pointer :: q_vol_val(:)
479 integer(kind=kint) :: q_suf_tot
480 integer(kind=kint),
pointer :: q_suf_elem(:)
481 integer(kind=kint),
pointer :: q_suf_ampl(:)
482 integer(kind=kint),
pointer :: q_suf_surf(:)
483 real(kind=kreal),
pointer :: q_suf_val(:)
486 integer(kind=kint) :: r_suf_tot
487 integer(kind=kint),
pointer :: r_suf_elem(:)
488 integer(kind=kint),
pointer :: r_suf_ampl(:,:)
489 integer(kind=kint),
pointer :: r_suf_surf(:)
490 real(kind=kreal),
pointer :: r_suf_val(:,:)
493 integer(kind=kint) :: h_suf_tot
494 integer(kind=kint),
pointer :: h_suf_elem(:)
495 integer(kind=kint),
pointer :: h_suf_ampl(:,:)
496 integer(kind=kint),
pointer :: h_suf_surf(:)
497 real(kind=kreal),
pointer :: h_suf_val(:,:)
499 integer(kind=kint) :: wl_tot
506 integer(kind=kint) :: idx_eqa
507 integer(kind=kint) :: idx_resp
510 integer(kind=kint) :: n_step
511 real(kind=kreal) :: t_start
512 real(kind=kreal) :: t_curr
513 real(kind=kreal) :: t_end
514 real(kind=kreal) :: t_delta
515 integer(kind=kint) :: restart_nout
518 integer(kind=kint) :: restart_nin
521 real(kind=kreal) :: ganma
522 real(kind=kreal) :: beta
525 integer(kind=kint) :: idx_mas
528 integer(kind=kint) :: idx_dmp
529 real(kind=kreal) :: ray_m
530 real(kind=kreal) :: ray_k
533 logical :: varinitialize
536 integer(kind=kint) :: nout
537 integer(kind=kint) :: ngrp_monit
538 integer(kind=kint) :: nout_monit
539 integer(kind=kint) :: i_step
540 integer(kind=kint) :: iout_list(6)
549 real(kind=kreal),
pointer :: disp(:,:)
550 real(kind=kreal),
pointer :: vel(:,:)
551 real(kind=kreal),
pointer :: acc(:,:)
553 real(kind=kreal) :: kineticenergy
554 real(kind=kreal) :: strainenergy
555 real(kind=kreal) :: totalenergy
558 real(kind=kreal),
pointer :: vec1(:)
559 real(kind=kreal),
pointer :: vec2(:)
560 real(kind=kreal),
pointer :: vec3(:)
562 integer(kind=kint) :: dynamic_iw4 = 204
563 integer(kind=kint) :: dynamic_iw5 = 205
564 integer(kind=kint) :: dynamic_iw6 = 206
565 integer(kind=kint) :: dynamic_iw7 = 207
566 integer(kind=kint) :: dynamic_iw8 = 208
567 integer(kind=kint) :: dynamic_iw9 = 209
568 integer(kind=kint) :: dynamic_iw10 = 210
572 integer(kind=kint) :: fload_ngrp_tot
573 integer(kind=kint),
pointer :: fload_ngrp_grpid(:) => null()
574 integer(kind=kint),
pointer :: fload_ngrp_id(:) => null()
575 integer(kind=kint),
pointer :: fload_ngrp_type(:) => null()
576 integer(kind=kint),
pointer :: fload_ngrp_dof(:) => null()
577 real(kind=kreal),
pointer :: fload_ngrp_valre(:) => null()
578 real(kind=kreal),
pointer :: fload_ngrp_valim(:) => null()
579 character(len=HECMW_FILENAME_LEN) :: eigenlog_filename
580 integer(kind=kint) :: start_mode
581 integer(kind=kint) :: end_mode
585 integer(kind=kint) :: nummode
586 integer(kind=kint) :: numnodedof
587 real(kind=kreal),
pointer :: eigomega(:) => null()
588 real(kind=kreal),
pointer :: eigvector(:,:) => null()
589 real(kind=kreal) :: rayalpha, raybeta
595 integer(kind=kint) :: nget
596 integer(kind=kint) :: maxiter
597 integer(kind=kint) :: iter
598 real (kind=kreal) :: sigma
599 real (kind=kreal) :: tolerance
600 real (kind=kreal) :: totalmass
601 real (kind=kreal),
pointer :: eigval(:)
602 real (kind=kreal),
pointer :: eigvec(:,:)
603 real (kind=kreal),
pointer :: filter(:)
604 real (kind=kreal),
pointer :: mass(:)
605 real (kind=kreal),
pointer :: effmass(:)
606 real (kind=kreal),
pointer :: partfactor(:)
607 logical :: is_free = .false.
613 integer( kind=kint ) :: dof
614 integer( kind=kint ) :: ndof
615 integer( kind=kint ) :: coupled_node_n
617 integer,
pointer :: coupled_node(:)
618 real( kind=8 ),pointer :: trac(:)
619 real( kind=8 ),pointer :: disp(:)
620 real( kind=8 ),pointer :: velo(:)
621 real( kind=8 ),pointer :: accel(:)
623 integer( kind=kint ),
pointer :: index(:)
629 integer(kind=kint) :: egrpid
630 real( kind=kreal ) :: i
631 real( kind=kreal ) :: u
632 real( kind=kreal ) :: coe
633 real( kind=kreal ) :: v
634 integer(kind=kint) :: xyz
635 real(kind=kreal) :: n1, n2
636 real(kind=kreal) :: distol
637 real(kind=kreal) :: tstart
646 integer :: elemopt341
650 integer :: elemopt361
667 nullify( p%global_local_ID)
668 nullify( p%timepoints )
675 nullify( s%BOUNDARY_ngrp_ID )
676 nullify( s%BOUNDARY_ngrp_type )
677 nullify( s%BOUNDARY_ngrp_amp )
678 nullify( s%BOUNDARY_ngrp_val)
679 nullify( s%BOUNDARY_ngrp_rotID )
680 nullify( s%BOUNDARY_ngrp_centerID )
681 nullify( s%CLOAD_ngrp_ID )
682 nullify( s%CLOAD_ngrp_DOF )
683 nullify( s%CLOAD_ngrp_amp )
684 nullify( s%CLOAD_ngrp_rotID )
685 nullify( s%CLOAD_ngrp_centerID )
686 nullify( s%CLOAD_ngrp_val )
687 nullify( s%DLOAD_ngrp_ID )
688 nullify( s%DLOAD_ngrp_LID )
689 nullify( s%DLOAD_ngrp_amp )
690 nullify( s%DLOAD_ngrp_params )
691 nullify( s%TEMP_ngrp_ID )
692 nullify( s%TEMP_ngrp_val )
693 nullify( s%SPRING_ngrp_ID )
694 nullify( s%SPRING_ngrp_DOF )
695 nullify( s%SPRING_ngrp_amp )
696 nullify( s%SPRING_ngrp_val )
702 nullify( s%PSTRESS_VECT )
703 nullify( s%PSTRAIN_VECT )
704 nullify( s%REACTION )
708 nullify( s%EPSTRESS )
709 nullify( s%EPSTRAIN )
710 nullify( s%EPSTRESS_VECT )
711 nullify( s%EPSTRAIN_VECT )
716 nullify( s%VELOCITY_ngrp_ID )
717 nullify( s%VELOCITY_ngrp_type )
718 nullify( s%VELOCITY_ngrp_amp )
719 nullify( s%VELOCITY_ngrp_val )
720 nullify( s%ACCELERATION_ngrp_ID )
721 nullify( s%ACCELERATION_ngrp_type )
722 nullify( s%ACCELERATION_ngrp_amp )
723 nullify( s%ACCELERATION_ngrp_val )
724 nullify( s%COUPLE_ngrp_ID )
731 nullify( h%STEP_DLTIME )
732 nullify( h%STEP_EETIME )
733 nullify( h%STEP_DELMIN )
734 nullify( h%STEP_DELMAX )
740 nullify( h%CONDtemp )
744 nullify( h%RHOfuncA )
745 nullify( h%RHOfuncB )
748 nullify( h%CONDfuncA )
749 nullify( h%CONDfuncB )
751 nullify( h%AMPLtime )
753 nullify( h%AMPLfuncA )
754 nullify( h%AMPLfuncB )
758 nullify( h%T_FIX_node )
759 nullify( h%T_FIX_ampl )
760 nullify( h%T_FIX_val )
761 nullify( h%Q_NOD_node )
762 nullify( h%Q_NOD_ampl )
763 nullify( h%Q_NOD_val )
764 nullify( h%Q_VOL_elem )
765 nullify( h%Q_VOL_ampl )
766 nullify( h%Q_VOL_val )
767 nullify( h%Q_SUF_elem )
768 nullify( h%Q_SUF_ampl )
769 nullify( h%Q_SUF_surf )
770 nullify( h%Q_SUF_val )
771 nullify( h%R_SUF_elem )
772 nullify( h%R_SUF_ampl )
773 nullify( h%R_SUF_surf )
774 nullify( h%R_SUF_val )
775 nullify( h%H_SUF_elem )
776 nullify( h%H_SUF_ampl )
777 nullify( h%H_SUF_surf )
778 nullify( h%H_SUF_val )
798 nullify( f%FLOAD_ngrp_GRPID )
799 nullify( f%FLOAD_ngrp_ID )
800 nullify( f%FLOAD_ngrp_TYPE )
801 nullify( f%FLOAD_ngrp_DOF )
802 nullify( f%FLOAD_ngrp_valre )
803 nullify( f%FLOAD_ngrp_valim )
817 nullify( c%coupled_node )
826 type(hecmwst_matrix) :: hecMAT
828 hecmat%Iarray(1) = 100
833 hecmat%Iarray(6) = 10
835 hecmat%Iarray(21)=
kno
836 hecmat%Iarray(22)=
kno
840 hecmat%Iarray(34)= 10
851 hecmat%Rarray(1) = 1.0e-8
852 hecmat%Rarray(2) = 1.0
853 hecmat%Rarray(3) = 0.0
854 hecmat%Rarray(4) = 0.1
855 hecmat%Rarray(5) = 0.1
856 hecmat%Rarray(11)= 1.0e+4
858 hecmat%Iarray(96) = 0
859 hecmat%Iarray(97) =
kyes
860 hecmat%Iarray(98) =
kyes
861 hecmat%Iarray(99) =
kyes
866 type( hecmwst_matrix ) :: hecMAT
867 integer :: ndof, nn, ierror
870 allocate (hecmat%AL(nn*hecmat%NPL) ,stat=ierror )
871 if( ierror /= 0 )
then
872 write(*,*)
"##ERROR : not enough memory"
873 write(
idbg,*)
'stop due to allocation error'
875 call hecmw_abort( hecmw_comm_get_comm() )
877 allocate (hecmat%AU(nn*hecmat%NPU) ,stat=ierror )
878 if( ierror /= 0 )
then
879 write(*,*)
"##ERROR : not enough memory"
880 write(
idbg,*)
'stop due to allocation error'
882 call hecmw_abort( hecmw_comm_get_comm() )
884 allocate (hecmat%B(ndof*hecmat%NP) ,stat=ierror )
885 if( ierror /= 0 )
then
886 write(*,*)
"##ERROR : not enough memory"
887 write(
idbg,*)
'stop due to allocation error'
889 call hecmw_abort( hecmw_comm_get_comm() )
892 allocate (hecmat%D(nn*hecmat%NP) ,stat=ierror )
893 if( ierror /= 0 )
then
894 write(*,*)
"##ERROR : not enough memory"
895 write(
idbg,*)
'stop due to allocation error'
897 call hecmw_abort( hecmw_comm_get_comm() )
899 allocate (hecmat%X(ndof*hecmat%NP) ,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%ALU(nn*hecmat%N) ,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() )
923 type( hecmwst_matrix ) :: hecMAT
924 integer :: ndof, nn, ierror
927 if(
associated(hecmat%AL) )
then
928 deallocate(hecmat%AL ,stat=ierror)
929 if( ierror /= 0 )
then
930 write(
idbg,*)
'stop due to deallocation error'
932 call hecmw_abort( hecmw_comm_get_comm())
935 if(
associated(hecmat%AU) )
then
936 deallocate(hecmat%AU ,stat=ierror)
937 if( ierror /= 0 )
then
938 write(
idbg,*)
'stop due to deallocation error'
940 call hecmw_abort( hecmw_comm_get_comm())
943 if(
associated(hecmat%B) )
then
944 deallocate(hecmat%B ,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%D) )
then
952 deallocate(hecmat%D ,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%X) )
then
960 deallocate(hecmat%X ,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%ALU) )
then
968 deallocate(hecmat%ALU ,stat=ierror)
969 if( ierror /= 0 )
then
970 write(
idbg,*)
'stop due to deallocation error'
972 call hecmw_abort( hecmw_comm_get_comm())
981 type(hecmwst_local_mesh) :: hecMESH
982 integer(kind=kint) :: i
983 external fstr_sort_index
986 fstrparam%nlgeom = .false.
987 fstrparam%solver_method =
ksmcg
991 fstrparam%analysis_n = 0
992 fstrparam%ref_temp = 0
995 fstrparam%fg_echo =
koff
996 fstrparam%fg_result =
koff
997 fstrparam%fg_visual =
koff
1000 fstrparam%fg_neutral =
koff
1001 fstrparam%fg_irres =
kno
1002 fstrparam%fg_iwres =
kno
1004 fstrparam%nprint = 1
1007 fstrparam%fg_couple = 0
1008 fstrparam%fg_couple_type = 0
1009 fstrparam%fg_couple_first= 0
1010 fstrparam%fg_couple_window= 0
1013 fstrparam%restart_version = 5
1017 fstrparam%n_node = hecmesh%n_node;
1018 fstrparam%nn_internal = hecmesh%nn_internal;
1019 allocate( fstrparam%global_local_ID(2,hecmesh%nn_internal))
1020 do i = 1, hecmesh%nn_internal
1021 fstrparam%global_local_ID(1,i) = hecmesh%global_node_ID(i)
1022 fstrparam%global_local_ID(2,i) = i
1024 call fstr_sort_index( fstrparam%global_local_ID, hecmesh%nn_internal )
1029 integer,
intent(in) :: nbc
1030 integer,
intent(in) :: cstep
1032 if( .not.
associated(fstrsolid%step_ctrl) )
return
1033 if( cstep>fstrsolid%nstep_tot )
return
1039 integer,
intent(in) :: nbc
1040 integer,
intent(in) :: cstep
1042 if( cstep > 0 )
then
1043 if( .not.
associated(fstrsolid%step_ctrl) )
return
1044 if( cstep>fstrsolid%nstep_tot )
return
1053 integer,
intent(in) :: nbc
1054 integer,
intent(in) :: cstep
1056 if( .not.
associated(fstrsolid%step_ctrl) )
return
1057 if( cstep>fstrsolid%nstep_tot )
return
1063 integer,
intent(in) :: nbc
1064 integer,
intent(in) :: cstep
1066 if( .not.
associated(fstrsolid%step_ctrl) )
return
1067 if( cstep>fstrsolid%nstep_tot )
return
1072 subroutine get_coordsys( cdsys_ID, hecMESH, fstrSOLID, coords )
1073 integer,
intent(in) :: cdsys_ID
1074 type(hecmwst_local_mesh) :: hecMESH
1076 real(kind=kreal),
intent(out) :: coords(3,3)
1080 if( cdsys_id>0 )
then
1085 coords(1,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1086 + fstrsolid%dunode(3*ik-2:3*ik)
1088 coords(2,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1089 + fstrsolid%dunode(3*ik-2:3*ik)
1091 if(ik>0) coords(3,:)= hecmesh%node(3*ik-2:3*ik)+fstrsolid%unode(3*ik-2:3*ik) &
1092 + fstrsolid%dunode(3*ik-2:3*ik)
1099 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1100 type (fstr_solid),
intent(in) :: fstrSOLID
1101 real(kind=kreal),
intent(out) :: coord(:)
1102 integer(kind=kint) :: i
1103 if(hecmesh%n_dof == 4)
return
1104 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1105 coord(i) = hecmesh%node(i)
1106 hecmesh%node(i) = coord(i)+fstrsolid%unode(i)+fstrsolid%dunode(i)
1112 type(hecmwst_local_mesh),
intent(inout) :: hecMESH
1113 type (fstr_solid),
intent(in) :: fstrSOLID
1114 real(kind=kreal),
intent(in) :: coord(:)
1115 integer(kind=kint) :: i
1116 if(hecmesh%n_dof == 4)
return
1117 do i = 1, hecmesh%nn_internal*min(hecmesh%n_dof,3)
1118 hecmesh%node(i) = coord(i)
1128 phys%ESTRAIN = 0.0d0
1129 phys%ESTRESS = 0.0d0
1136 type (fstr_solid) :: fstrSOLID
1137 integer(kind=kint) :: i
1139 if (
associated(fstrsolid%SOLID))
then
1142 if (
associated(fstrsolid%SHELL))
then
1144 do i=1,fstrsolid%max_lyr
1149 if (
associated(fstrsolid%BEAM))
then
1154 subroutine table_amp(hecMESH, fstrSOLID, cstep, jj_n_amp, time, f_t)
1155 type ( hecmwST_local_mesh ),
intent(in) :: hecMESH
1156 type ( fstr_solid ),
intent(in) :: fstrSOLID
1157 integer(kind=kint),
intent(in) :: cstep
1158 integer(kind=kint),
intent(in) :: jj_n_amp
1159 real(kind=kreal),
intent(in) :: time
1160 real(kind=kreal),
intent(out) :: f_t
1162 integer(kind=kint) :: i
1163 integer(kind=kint) :: jj1, jj2
1164 integer(kind=kint) :: s1, s2, flag
1165 real(kind=kreal) :: t_1, t_2, t_t, f_1, f_2, tincre
1169 if( jj_n_amp <= 0 )
then
1171 write(
imsg,*)
'internal error: amplitude table not defined'
1173 call hecmw_abort( hecmw_comm_get_comm() )
1176 tincre = fstrsolid%step_ctrl( cstep )%initdt
1177 jj1 = hecmesh%amp%amp_index(jj_n_amp - 1)
1178 jj2 = hecmesh%amp%amp_index(jj_n_amp)
1181 t_t = time-fstrsolid%step_ctrl(cstep)%starttime
1185 if(t_t .gt. hecmesh%amp%amp_table(jj2))
then
1186 f_t = hecmesh%amp%amp_val(jj2)
1187 else if(t_t .le. hecmesh%amp%amp_table(jj2))
then
1190 if(t_t .le. hecmesh%amp%amp_table(i))
then
1195 if( flag == 1 )
exit
1198 t_2 = hecmesh%amp%amp_table(s2)
1199 t_1 = hecmesh%amp%amp_table(s1)
1200 f_2 = hecmesh%amp%amp_val(s2)
1201 f_1 = hecmesh%amp%amp_val(s1)
1202 if( t_2-t_1 .lt. 1.0e-20)
then
1204 write(
imsg,*)
'stop due to t_2-t_1 <= 0'
1206 call hecmw_abort( hecmw_comm_get_comm())
1208 f_t = ((t_2*f_1 - t_1*f_2) + (f_2 - f_1)*t_t) / (t_2 - t_1)