OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_convert_2d_elements_seatbelt.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_convert_2d_elements_seatbelt (idmax_part, idmax_prop, idmax_mat, idmax_elem, idmax_th, seatbelt_converted_elements, nb_seatbelt_shells, lsubmodel)

Function/Subroutine Documentation

◆ hm_convert_2d_elements_seatbelt()

subroutine hm_convert_2d_elements_seatbelt ( integer, intent(in) idmax_part,
integer, intent(in) idmax_prop,
integer, intent(in) idmax_mat,
integer, intent(in) idmax_elem,
integer, intent(in) idmax_th,
integer, dimension(3,nb_seatbelt_shells), intent(inout) seatbelt_converted_elements,
integer, intent(in) nb_seatbelt_shells,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel )

Definition at line 38 of file hm_convert_2d_elements_seatbelt.F.

40C-----------------------------------------------
41C ROUTINE DESCRIPTION :
42C ===================
43C ROUTINE TO CONVERT /SHELL & /MAT/LAW119 -> /SPRING /PART /PROP/TYPE23 & /MAT/LAW114
44C-----------------------------------------------
45C DUMMY ARGUMENTS DESCRIPTION:
46C ===================
47C
48C NAME DESCRIPTION
49C
50C IDMAX_PART MAX ID PARTS
51C IDMAX_PROP MAX ID PROPS
52C IDMAX_MAT MAX ID MATS
53C IDMAX_ELEM MAX ID ELEMS
54C IDMAX_TH MAX ID TH
55C SEATBELT_CONVERTED_ELEMENTS CORRESPONDANCE SHELL SPRING FOR SEATBLETS
56C NB_SEATBELT_SHELLS NUMBER OF SEATELT SHELL
57C LSUBMODEL SUBMODEL STRUCTURE
58C============================================================================
59C M o d u l e s
60C-----------------------------------------------
61 USE message_mod
62 USE submodel_mod
65C-----------------------------------------------
66C I m p l i c i t T y p e s
67C-----------------------------------------------
68#include "implicit_f.inc"
69C-----------------------------------------------
70C D u m m y A r g u m e n t s
71C-----------------------------------------------
72C INPUT ARGUMENTS
73 INTEGER,INTENT(IN)::IDMAX_PART,IDMAX_PROP,IDMAX_MAT,IDMAX_ELEM,IDMAX_TH,
74 . NB_SEATBELT_SHELLS
75 INTEGER,INTENT(INOUT)::SEATBELT_CONVERTED_ELEMENTS(3,NB_SEATBELT_SHELLS)
76 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(NSUBMOD)
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER :: I,J,ID,SUBMODEL_INDEX,OFFSET,NB_PART,NB_MAT,NB_MAT_119,MAT_ID,ELEM_INDEX,NB_THSHELL,PART_ID
81 INTEGER, DIMENSION(:), ALLOCATABLE :: PART_SUB,PART_MAT119,MAT119_IDS
82 CHARACTER(LEN=NCHARLINE) :: KEY
83 LOGICAL :: IS_AVAILABLE
84C-----------------------------------------------
85 nb_mat_119 = 0
86C-----------------------------------------------
87C Check existence of Mat laws 119 in the model
88C-----------------------------------------------
89 CALL hm_option_count('/MAT',nb_mat)
90c
91 CALL hm_option_start('/MAT')
92 DO i=1,nb_mat
93 key = ''
94 CALL hm_option_read_key(lsubmodel,
95 . keyword2 = key)
96 IF(key(1:6) == 'LAW119' .OR. key(1:11) == 'SH_SEATBELT') THEN
97 nb_mat_119 = nb_mat_119 + 1
98 ENDIF
99 ENDDO
100C-----------------------------------------------
101C Search Parts with Mat 119
102C-----------------------------------------------
103 IF (nb_mat_119 /= 0) THEN
104 ALLOCATE(mat119_ids(nb_mat_119))
105 mat119_ids(1:nb_mat_119) = 0
106 j = 0
107 CALL hm_option_start('/MAT')
108 DO i=1,nb_mat
109 key = ''
110 CALL hm_option_read_key(lsubmodel,
111 . option_id = id,
112 . keyword2 = key,
113 . submodel_index = submodel_index)
114 IF(key(1:6) == 'LAW119' .OR. key(1:11) == 'SH_SEATBELT') THEN
115 j = j + 1
116 mat119_ids(j) = id
117 ENDIF
118 ENDDO
119C-----------------------------------------------
120 CALL hm_option_count('/PART',nb_part)
121 ALLOCATE(part_sub(nb_part))
122 ALLOCATE(part_mat119(nb_part))
123 part_mat119(1:nb_part) = 0
124c
125 CALL hm_option_start('/PART')
126 DO i=1,nb_part
127 CALL hm_option_read_key(lsubmodel,
128 . option_id = id,
129 . submodel_index = submodel_index)
130 CALL hm_get_intv('materialid',mat_id,is_available,lsubmodel)
131 DO j=1,nb_mat_119
132 IF(mat_id == mat119_ids(j)) part_mat119(i) = id
133 ENDDO
134 ENDDO
135C-----------------------------------------------
136C Translate /SHELL -> /SPRING /PART /PROP/TYPE23 & /MAT/LAW114
137C-----------------------------------------------
138c
139 elem_index = 0
140 DO i=1,nb_part
141 IF(part_mat119(i) /= 0) THEN
142 offset = 0
143 part_id = part_mat119(i)
144 CALL cpp_convert_2d_elements_seatbelt(part_id,idmax_part,idmax_prop,idmax_mat,
145 . idmax_elem,offset,seatbelt_converted_elements,elem_index)
146 ENDIF
147 ENDDO
148c
149 IF (ALLOCATED(part_sub)) DEALLOCATE(part_sub)
150 IF (ALLOCATED(part_mat119)) DEALLOCATE(part_mat119)
151 IF (ALLOCATED(mat119_ids)) DEALLOCATE(mat119_ids)
152C-----------------------------------------------
153C Translate /TH containing /SHELLs THAT ARE TRANSLATED TO /SPRINGs
154C-----------------------------------------------
155c
156 CALL hm_option_count('/TH/SHEL',nb_thshell)
157 CALL hm_option_start('/TH/SHEL')
158 DO i=1,nb_thshell
159 CALL hm_option_next()
160 CALL cpp_get_submodel_index(submodel_index)
161 offset = 0
162 CALL cpp_convert_th_2d_element_seatbelt(idmax_th,offset,seatbelt_converted_elements,nb_seatbelt_shells)
163 ENDDO
164c
165C--------------------------------------------------
166 ENDIF
167 RETURN
168C
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_next()
subroutine hm_option_start(entity_type)
initmumps id
integer, parameter ncharline