36 . CLAUSE ,ISUBMM ,JCLAUSE ,OPT_G ,IS_AVAILABLE ,
67#include "implicit_f.inc"
77 LOGICAL :: IS_AVAILABLE
78 INTEGER,
INTENT(IN),
DIMENSION(NSUBMOD,2) :: ISUBMM
79 INTEGER IPART(LIPART1,NPART)
82 TYPE(SUBMODEL_DATA),
INTENT(IN):: LSUBMODEL(*)
111 . CLAUSE, ISUBMM ,JCLAUSE ,IS_AVAILABLE ,LSUBMODEL,
139#include "implicit_f.inc"
143#include "com04_c.inc"
144#include "scr17_c.inc"
149 LOGICAL :: IS_AVAILABLE
150 INTEGER,
INTENT(IN),
DIMENSION(NSUBMOD,2) :: ISUBMM
151 INTEGER IPART(LIPART1,NPART)
153 TYPE (SET_) :: CLAUSE
158 INTEGER I,J,IDS,NINDX,LIST_SIZE,IDS_MAX,SUBMM,PARTM,ISUB,IP,SUB_INDEX,
159 . LIST_SIZE_S,LIST_SIZE_P,,NODE
162 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: SUBM_READ_TMP,SORTED_SUBM,INDEXS,
163 . PART_READ_TMP,,INDEXP,,NODE_READ_TMP,SORTED_NODES,INDEXN
171 ALLOCATE(subm_read_tmp(ids_max))
172 ALLOCATE(sorted_subm(ids_max))
174 ALLOCATE(part_read_tmp(npart))
175 ALLOCATE(sorted_parts(npart))
177 ALLOCATE(indexs(2*ids_max))
180 ALLOCATE(indexp(2*npart))
183 ALLOCATE(tagnodsub(numnod))
185 ALLOCATE(node_read_tmp(numnod))
201 SUBMM = SET_USRTOS(IDS,ISUBMM,NSUBMOD)
203 ! Submodel was not found. Issue a Warning & Skip.
204 CALL ANCMSG(MSGID=1902,ANMODE=ANINFO,
205 . MSGTYPE=MSGWARNING,
206 . I1 = CLAUSE%SET_ID,
208 . C1=TRIM(CLAUSE%TITLE),
212 SUBMM=ISUBMM(SUBMM,2)
214 NINDX=NINDX+1 ! nb of CLAUSE submodels
215 SUBM_READ_TMP(NINDX) = SUBMM
218 ENDDO ! DO K=1,IDS_MAX
221 ! Sort the Readed SUBSETs and remove eventual duplicates
222 ! ----------------------------------------------------
228 CALL MY_ORDERS(0,IWORK,SUBM_READ_TMP,INDEXS,NINDX,1)
231 SORTED_SUBM(I) = SUBM_READ_TMP(INDEXS(I))
234 CALL REMOVE_DUPLICATES(SORTED_SUBM,NINDX,LIST_SIZE_S)
237 ! TAG Parts from Readed SUBSETs
238 ! ----------------------------------------------------
242 ISUB = SORTED_SUBM(I)
244 SUB_INDEX = IPART(9,IP)
245 IF (ISUB == SUB_INDEX) THEN
249 NINDX=NINDX+1 ! nb of Parts of CLAUSE subsets
250 PART_READ_TMP(NINDX) = PARTM
257 ! Sort of TAG Parts from Readed SUBMODELs and remove eventual duplicates
258 ! ----------------------------------------------------
264 CALL MY_ORDERS(0,IWORK,PART_READ_TMP,INDEXP,NINDX,1)
267 SORTED_PARTS(I) = PART_READ_TMP(INDEXP(I))
271 CALL REMOVE_DUPLICATES(SORTED_PARTS,NINDX,LIST_SIZE_P)
276 CLAUSE%NB_PART = LIST_SIZE_P
277 ALLOCATE( CLAUSE%PART( LIST_SIZE_P ) )
280 CLAUSE%PART(I) = SORTED_PARTS(I)
285 ! Tag & convert Nodes of Submodel
286 ! ---------------------
287 CALL CPP_NODE_SUB_TAG(TAGNODSUB)
292 ISUB = SORTED_SUBM(I)
294 SUB_INDEX = TAGNODSUB(J)
295 IF (ISUB == SUB_INDEX) THEN
299 NINDX=NINDX+1 ! nb of Nodes of CLAUSE subsets
300 NODE_READ_TMP(NINDX) = NODE
307 ! Sort of TAG Nodes from Readed SUBMODELs and remove eventual duplicates
308 ! ----------------------------------------------------
310 ALLOCATE(SORTED_NODES(NINDX))
311 ALLOCATE(INDEXN(2*NINDX))
318 CALL MY_ORDERS(0,IWORK,NODE_READ_TMP,INDEXN,NINDX,1)
321 SORTED_NODES(I) = NODE_READ_TMP(INDEXN(I))
325 CALL REMOVE_DUPLICATES(SORTED_NODES,NINDX,LIST_SIZE_N)
330 CLAUSE%NB_NODE = LIST_SIZE_N
331 ALLOCATE( CLAUSE%NODE( LIST_SIZE_N ) )
334 CLAUSE%NODE(I) = SORTED_NODES(I)
338 DEALLOCATE(SUBM_READ_TMP)
339 DEALLOCATE(SORTED_SUBM)
341 DEALLOCATE(PART_READ_TMP)
342 DEALLOCATE(SORTED_PARTS)
344 DEALLOCATE(TAGNODSUB)
345 DEALLOCATE(NODE_READ_TMP)
346 DEALLOCATE(SORTED_NODES)