39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
58
59
60
61#include "implicit_f.inc"
62
63
64
65
66 INTEGER,INTENT(INOUT) :: NB_SHELLS
67 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
68
69
70
71 INTEGER :: I,J,ID,SUBMODEL_INDEX,NB_PART,NB_MAT,NB_MAT_119,MAT_ID,NB_SHELLS_PART
72 INTEGER, DIMENSION(:), ALLOCATABLE :: PART_MAT119,MAT119_IDS
73 CHARACTER(LEN=NCHARLINE) :: KEY
74 LOGICAL :: IS_AVAILABLE
75
76 nb_mat_119 = 0
77
78
79
81
83 DO i=1,nb_mat
84 key = ''
86 IF(key(1:6) == 'LAW119' .OR. key(1:11) == 'SH_SEATBELT') THEN
87 nb_mat_119 = nb_mat_119 + 1
88 ENDIF
89 ENDDO
90
91
92
93 IF (nb_mat_119 /= 0) THEN
94 ALLOCATE(mat119_ids(nb_mat_119))
95 mat119_ids(1:nb_mat_119) = 0
96 j = 0
98 DO i=1,nb_mat
99 key = ''
101 IF(key(1:6) == 'LAW119' .OR. key(1:11) == 'SH_SEATBELT') THEN
102 j = j + 1
104 ENDIF
105 ENDDO
106
108 ALLOCATE(part_mat119(nb_part))
109 part_mat119(1:nb_part) = 0
110
112 DO i=1,nb_part
114 CALL hm_get_intv(
'materialid',mat_id,is_available,lsubmodel)
115 DO j=1,nb_mat_119
116 IF(mat_id == mat119_ids(j)) part_mat119(i) = mat119_ids(j)
117 ENDDO
118 ENDDO
119
120
121
122
123 nb_shells = 0
124 nb_shells_part = 0
126 DO i=1,nb_part
128 IF(part_mat119(i) /= 0) THEN
129 CALL cpp_count_elements_in_part(nb_shells_part)
130 nb_shells = nb_shells + nb_shells_part
131 ENDIF
132 ENDDO
133
134 IF (ALLOCATED(part_mat119)) DEALLOCATE(part_mat119)
135 IF (ALLOCATED(mat119_ids)) DEALLOCATE(mat119_ids)
136
137 ENDIF
138 RETURN
139
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)
integer, parameter ncharline