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,IDS_MAX,SUBMM,PARTM,ISUB,IP,SUB_INDEX,
159 . LIST_SIZE_S,LIST_SIZE_P,LIST_SIZE_N,NODE
162 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: SUBM_READ_TMP,SORTED_SUBM,INDEXS,
163 . PART_READ_TMP,SORTED_PARTS,INDEXP,TAGNODSUB,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)
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)
215 subm_read_tmp(nindx) = submm
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)
242 isub = sorted_subm(i)
244 sub_index = ipart(9,ip)
245 IF (isub == sub_index)
THEN
250 part_read_tmp(nindx) = partm
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
276 clause%NB_PART = list_size_p
277 ALLOCATE( clause%PART( list_size_p ) )
280 clause%PART(i) = sorted_parts(i)
287 CALL cpp_node_sub_tag(tagnodsub)
292 isub = sorted_subm(i)
294 sub_index = tagnodsub(j)
295 IF (isub == sub_index)
THEN
300 node_read_tmp(nindx) = node
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)
365 . CLAUSE, ISUBMM ,JCLAUSE ,IS_AVAILABLE ,LSUBMODEL,
393#include "implicit_f.inc"
397#include "com04_c.inc"
398#include "scr17_c.inc"
403 LOGICAL :: IS_AVAILABLE
404 INTEGER,
INTENT(IN),
DIMENSION(NSUBMOD,2) :: ISUBMM
405 INTEGER IPART(LIPART1,NPART)
407 TYPE (SET_) :: CLAUSE
412 INTEGER I,J,LIST_SIZE,PARTM,GENE_MAX,K,S,S1,
413 . nindx,ip,isub,sub_index,node
414 INTEGER START_GENE,END_GENE,INCR_GENE,SSTART,SSTOP,STACK,STACK_ONE,NB_RESULT
416 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: SUBM_READ_TMP,SUBM_READ_ONE,RESULT,
417 . PART_READ_TMP,SORTED_PARTS,INDEX,TAGNODSUB,NODE_READ_TMP,
418 . sorted_nodes,indexn
420 INTEGER SET_USRTOS_NEAREST
421 EXTERNAL SET_USRTOS_NEAREST
424 CALL HM_GET_INT_ARRAY_INDEX(
'genemax' ,GENE_MAX ,JCLAUSE,IS_AVAILABLE,LSUBMODEL)
426 ALLOCATE(subm_read_tmp(
nsubmod))
427 ALLOCATE(subm_read_one(
nsubmod))
429 ALLOCATE(part_read_tmp(npart))
430 ALLOCATE(sorted_parts(npart))
432 ALLOCATE(index(2*npart))
435 IF (gene_max > 1)
THEN
439 ALLOCATE(tagnodsub(numnod))
441 ALLOCATE(node_read_tmp(numnod))
453 sstart = set_usrtos_nearest(start_gene
454 sstop = set_usrtos_nearest(end_gene,isubmm,
nsubmod,2)
460 IF ( mod( s1-start_gene , incr_gene) == 0 )
THEN
461 stack_one = stack_one+1
462 subm_read_one(stack_one) = isubmm(s,2)
467 subm_read_tmp(1:stack_one) = subm_read_one(1:stack_one)
471 CALL union_2_sorted_sets( subm_read_tmp, stack ,
472 * subm_read_one, stack_one
473 * result, nb_result )
475 subm_read_tmp(1:nb_result) = result(1:nb_result)
486 isub = subm_read_tmp(i)
488 sub_index = ipart(9,ip)
489 IF (isub == sub_index)
THEN
494 part_read_tmp(nindx) = partm
508 CALL my_orders(0,iwork,part_read_tmp,index,nindx,1)
511 sorted_parts(i) = part_read_tmp(index(i))
515 CALL remove_duplicates(sorted_parts,nindx,list_size)
522 clause%NB_PART = list_size
523 ALLOCATE(clause%PART(list_size))
524 clause%PART(1:list_size) = sorted_parts(1:list_size)
530 CALL cpp_node_sub_tag(tagnodsub)
535 isub = subm_read_tmp(i)
537 sub_index = tagnodsub(j)
538 IF (isub == sub_index)
THEN
543 node_read_tmp(nindx) = node
553 ALLOCATE(sorted_nodes(nindx))
554 ALLOCATE(indexn(2*nindx))
561 CALL my_orders(0,iwork,node_read_tmp,indexn,nindx,1)
564 sorted_nodes(i) = node_read_tmp(indexn(i))
568 CALL remove_duplicates(sorted_nodes,nindx,list_size)
573 clause%NB_NODE = list_size
574 ALLOCATE( clause%NODE( list_size ) )
577 clause%NODE(i) = sorted_nodes(i)
584 DEALLOCATE (part_read_tmp)
585 DEALLOCATE (sorted_parts)
586 IF (
ALLOCATED(result))
DEALLOCATE (result)
587 DEALLOCATE (subm_read_tmp)
588 DEALLOCATE (subm_read_one)
589 DEALLOCATE(tagnodsub)
590 DEALLOCATE(node_read_tmp)
591 DEALLOCATE(sorted_nodes)
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)