42
43
44
50 use element_mod , only : nixs
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com01_c.inc"
59#include "com04_c.inc"
60
61
62
63 INTEGER IXS(NIXS,*)
65 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
66 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
67
68
69
70 INTEGER :: ,J,N,ID_ELEM,IE,UID,SUB_ID,STAT,NB_INIBRI, IFLAGUNIT,IUNIT,NB_ELEMENTS
71 INTEGER :: WORKS(70000)
72 INTEGER, DIMENSION(:), ALLOCATABLE :: KSYSUSRS,INDEXS,ITRIS
73 CHARACTER(LEN=NCHARKEY) :: KEY
75 LOGICAL :: IS_AVAILABLE
76 INTEGER, EXTERNAL :: UEL2SYS
77
78 DO n=1,numels
79 fillsol(n)=one
80 END DO
81
82 is_available = .false.
83
84
85
86!-----------------------------------------
88
89 IF ( nb_inibri > 0 ) THEN
90
91
93
94 nfilsol=0
95 DO ini=1,nb_inibri
96
98 . unit_id = uid,
99 . submodel_id = sub_id,
100 . keyword2 = key)
101
102 SELECT CASE (key(1:len_trim(key)))
103 CASE ( 'FILL' )
104 nfilsol = 1
105 END SELECT
106
107 ENDDO
108
109
110 IF(nfilsol==0)RETURN
111
112
113
114 ALLOCATE (itris(numels) ,stat=stat)
115 IF (stat /= 0) THEN
116 CALL ancmsg(msgid=268,anmode=aninfo,
117 . msgtype=msgerror,
118 . c1='ITRIS')
119 RETURN
120 END IF
121 ALLOCATE (indexs(2*numels) ,stat=stat)
122 IF (stat /= 0) THEN
123 CALL ancmsg(msgid=268,anmode=aninfo,
124 . msgtype=msgerror,
125 . c1='INDEXS')
126 RETURN
127 END IF
128 ALLOCATE (ksysusrs(2*numels) ,stat=stat)
129 IF (stat /= 0) THEN
130 CALL ancmsg(msgid=268,anmode=aninfo,
131 . msgtype=msgerror,
132 . c1='KSYSUSRS')
133 RETURN
134 END IF
135 itris = 0
136 indexs = 0
137 ksysusrs=0
138
139 DO ie = 1, numels
140 itris(ie) = ixs(nixs,ie)
141 END DO
142 CALL my_orders(0,works,itris,indexs,numels,1)
143 DO j = 1, numels
144 ie=indexs(j)
145 ksysusrs(j) =ixs(nixs,ie)
146 ksysusrs(numels+j)=ie
147 END DO
148
150 DO ini=1,nb_inibri
151
153 . unit_id = uid,
154 . submodel_id = sub_id,
155 . keyword2 = key)
156
157 iflagunit = 0
158 DO iunit=1,unitab%NUNITS
159 IF (unitab%UNIT_ID(iunit) == uid) THEN
160 iflagunit = 1
161 EXIT
162 ENDIF
163 ENDDO
164 IF (uid/=0.AND.iflagunit == 0) THEN
165 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
166 . i2=uid,i1=sub_id,c1='INIBRI',
167 . c2='INIBRI',c3=' ')
168 ENDIF
169
170 SELECT CASE (key(1:len_trim(key)))
171
172 CASE ( 'FILL' )
173
174 nfilsol = 1
175 CALL hm_get_intv(
'inibri_fill_count',nb_elements,is_available,lsubmodel)
176
177 DO j=1,nb_elements
178
181
182 ie=
uel2sys(id_elem,ksysusrs,numels)
183 IF(ie/=0) fillsol(ie)=fill
184 ENDDO
185
186 END SELECT
187
188 ENDDO
189
190 DEALLOCATE(ksysusrs,indexs,itris)
191
192 ENDIF
193
194
195 RETURN
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter ncharkey
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
integer function uel2sys(iu, ksysusr, numel)