42
43
44
50
51
52
53#include "implicit_f.inc"
54
55
56
57#include "com01_c.inc"
58#include "com04_c.inc"
59
60
61
62 INTEGER IXS(,*)
64 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
65 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
66
67
68
69 INTEGER
70 . INI,J,N,ID_ELEM,IE,UID,SUB_ID,STAT,NB_INIBRI,
71 . IFLAGUNIT,IUNIT,NB_ELEMENTS
72 INTEGER WORKS(70000)
73 INTEGER, DIMENSION(:), ALLOCATABLE :: KSYSUSRS,INDEXS,ITRIS
74 CHARACTER MESS*40
75 CHARACTER(LEN=NCHARKEY) :: KEY
77 LOGICAL IS_AVAILABLE
78 INTEGER UEL2SYS
80
81 DO n=1,numels
82 fillsol(n)=one
83 END DO
84
85 is_available = .false.
86
87
88
89
91
92 IF ( nb_inibri > 0 ) THEN
93
94
96
97 nfilsol=0
98 DO ini=1,nb_inibri
99
101 . unit_id = uid,
102 . submodel_id = sub_id,
103 . keyword2 = key)
104
105 SELECT CASE (key(1:len_trim(key)))
106 CASE ( 'FILL' )
107 nfilsol = 1
108 END SELECT
109
110 ENDDO
111
112
113 IF(nfilsol==0)RETURN
114
115
116
117 ALLOCATE (itris(numels)
118 IF (stat /= 0) THEN
119 CALL ancmsg(msgid=268,anmode=aninfo,
120 . msgtype=msgerror,
121 . c1='ITRIS')
122 RETURN
123 END IF
124 ALLOCATE (indexs(2*numels) ,stat=stat)
125 IF (stat /= 0) THEN
126 CALL ancmsg(msgid=268,anmode=aninfo,
127 . msgtype=msgerror,
128 . c1='INDEXS')
129 RETURN
130 END IF
131 ALLOCATE (ksysusrs(2*numels) ,stat=stat)
132 IF (stat /= 0) THEN
133 CALL ancmsg(msgid=268,anmode=aninfo,
134 . msgtype=msgerror,
135 . c1='KSYSUSRS')
136 RETURN
137 END IF
138 itris = 0
139 indexs = 0
140 ksysusrs=0
141
142 DO ie = 1, numels
143 itris(ie) = ixs(nixs,ie)
144 END DO
145 CALL my_orders(0,works,itris,indexs,numels,1)
146 DO j = 1, numels
147 ie=indexs(j)
148 ksysusrs(j) =ixs(nixs,ie)
149 ksysusrs(numels+j)=ie
150 END DO
151
153 DO ini=1,nb_inibri
154
156 . unit_id = uid,
157 . submodel_id = sub_id,
158 . keyword2 = key)
159
160 iflagunit = 0
161 DO iunit=1,unitab%NUNITS
162 IF (unitab%UNIT_ID(iunit) == uid) THEN
163 iflagunit = 1
164 EXIT
165 ENDIF
166 ENDDO
167 IF (uid/=0.AND.iflagunit == 0) THEN
168 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
169 . i2=uid,i1=sub_id,c1='INIBRI',
170 . c2='INIBRI',c3=' ')
171 ENDIF
172
173 SELECT CASE (key(1:len_trim(key)))
174
175 CASE ( 'FILL' )
176
177 nfilsol = 1
178 CALL hm_get_intv(
'inibri_fill_count',nb_elements,is_available,lsubmodel)
179
180 DO j=1,nb_elements
181
184
185 ie=
uel2sys(id_elem,ksysusrs,numels)
186 IF(ie/=0) fillsol(ie)=fill
187 ENDDO
188
189 END SELECT
190
191 ENDDO
192
193 DEALLOCATE(ksysusrs,indexs,itris)
194
195 ENDIF
196
197
198 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)