36 . CLAUSE ,ISUBSM ,JCLAUSE ,OPT_G ,IS_AVAILABLE ,
68#include "implicit_f.inc"
77 LOGICAL :: IS_AVAILABLE
78 INTEGER,
INTENT(IN),
DIMENSION(NSUBS,2) :: ISUBSM
81 TYPE(SUBMODEL_DATA),
INTENT(IN):: LSUBMODEL(*)
82 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
111 . CLAUSE, ISUBSM ,JCLAUSE ,IS_AVAILABLE ,LSUBMODEL,
140#include "implicit_f.inc"
145#include "com04_c.inc"
150 LOGICAL :: IS_AVAILABLE
151 INTEGER,
INTENT(IN),
DIMENSION(NSUBS,2) :: ISUBSM
153 TYPE (SET_) :: CLAUSE
155 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
159 INTEGER I,IDS,NINDX,LIST_SIZE,IDS_MAX,SUBSM,PARTM,ISET,IP
162 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: SUBS_READ_TMP,SORTED_SUBS,INDEXS,
163 . part_read_tmp,sorted_parts,indexp
171 ALLOCATE(subs_read_tmp(ids_max))
172 ALLOCATE(sorted_subs(ids_max))
174 ALLOCATE(part_read_tmp(npart))
175 ALLOCATE(sorted_parts(npart))
177 ALLOCATE(indexs(2*ids_max))
180 ALLOCATE(indexp(2*npart))
191 subsm = set_usrtos(ids,isubsm,nsubs)
194 CALL ancmsg(msgid=1902,anmode=aninfo,
195 . msgtype=msgwarning,
196 . i1 = clause%SET_ID,
198 . c1=trim(clause%TITLE),
202 subsm=isubsm(subsm,2)
205 subs_read_tmp(nindx) = subsm
218 CALL my_orders(0,iwork,subs_read_tmp,indexs,nindx,1)
221 sorted_subs(i) = subs_read_tmp(indexs(i))
224 CALL remove_duplicates(sorted_subs,nindx,list_size)
232 iset = sorted_subs(i)
233 DO ip=1,subset(iset)%NTPART
235 partm = subset(iset)%TPART(ip)
238 part_read_tmp(nindx) = partm
250 CALL my_orders(0,iwork,part_read_tmp,indexp,nindx,1)
253 sorted_parts(i) = part_read_tmp(indexp(i))
257 CALL remove_duplicates(sorted_parts,nindx,list_size)
262 clause%NB_PART = list_size
263 ALLOCATE( clause%PART( list_size ) )
266 clause%PART(i) = sorted_parts(i)
271 DEALLOCATE(subs_read_tmp)
272 DEALLOCATE(sorted_subs)
274 DEALLOCATE(part_read_tmp)
275 DEALLOCATE(sorted_parts)
294 . CLAUSE, ISUBSM ,JCLAUSE ,IS_AVAILABLE ,LSUBMODEL,
323#include "implicit_f.inc"
327#include "com04_c.inc"
332 LOGICAL :: IS_AVAILABLE
333 INTEGER,
INTENT(IN),
DIMENSION(NSUBS,2) :: ISUBSM
335 TYPE (SET_) :: CLAUSE
336 TYPE(SUBMODEL_DATA),
INTENT(IN):: LSUBMODEL(*)
337 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
341 INTEGER I,IDS,LIST_SIZE,IDS_MAX,PARTM,GENE_MAX,,S,S1,
343 INTEGER START_GENE,END_GENE,INCR_GENE,SSTART,SSTOP,STACK,STACK_ONE,NB_RESULT
345 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: SUBS_READ_TMP,SUBS_READ_ONE,RESULT,
346 . PART_READ_TMP,SORTED_PARTS,INDEX
348 INTEGER SET_USRTOS_NEAREST
349 EXTERNAL set_usrtos_nearest
354 ALLOCATE(subs_read_tmp(nsubs))
355 ALLOCATE(subs_read_one(nsubs))
357 ALLOCATE(part_read_tmp(npart))
358 ALLOCATE(sorted_parts(npart))
360 ALLOCATE(index(2*npart))
363 IF (gene_max > 1)
THEN
364 ALLOCATE(result(nsubs))
375 IF (incr_gene == 0) incr_gene = 1
377 sstart = set_usrtos_nearest(start_gene,isubsm,nsubs,1)
378 sstop = set_usrtos_nearest(end_gene,isubsm,nsubs,2)
384 IF ( mod( s1-start_gene , incr_gene) == 0 )
THEN
385 stack_one = stack_one+1
386 subs_read_one(stack_one) = isubsm(s,2)
391 subs_read_tmp(1:stack_one) = subs_read_one(1:stack_one)
395 CALL union_2_sorted_sets( subs_read_tmp, stack ,
396 * subs_read_one, stack_one ,
397 * result, nb_result )
399 subs_read_tmp(1:nb_result) = result(1:nb_result)
410 iset = subs_read_tmp(i)
411 DO ip=1,subset(iset)%NTPART
413 partm = subset(iset)%TPART(ip)
416 part_read_tmp(nindx) = partm
428 CALL my_orders(0,iwork,part_read_tmp,index,nindx,1)
431 sorted_parts(i) = part_read_tmp(index(i))
435 CALL remove_duplicates(sorted_parts,nindx,list_size)
442 clause%NB_PART = list_size
443 ALLOCATE(clause%PART(list_size))
444 clause%PART(1:list_size) = sorted_parts(1:list_size)
446 DEALLOCATE (part_read_tmp)
447 DEALLOCATE (sorted_parts)
448 IF (
ALLOCATED(result))
DEALLOCATE (result)
449 DEALLOCATE (subs_read_tmp)
450 DEALLOCATE (subs_read_one)
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)