c=============================================================================== logical function belongToSet (typeTarget, numTarget, setTarget) c c CONTACT: ap@marc.de c implicit real*8 (a-h,o-z) c external: integer typeTarget ! musst gleich als ipttyp sein (s. /setnam/) integer numTarget ! Elemente-, Knoten-, usw.-nummer ! nach RENUMBER character*(*) setTarget ! Setname (klein buchstabiert) c internal: character*1 name character*12 setName dimension iiname(12) c common blocks: include '../common/dimen' include '../common/setnam' include '../common/space' c Im common /setnam/ sind folgende Parameter definiert: c ndset: Anzahl der definierten Sets c nsetmx: maximal moegliche Anzahl von Sets entsprechend der c Parameteroption SETNAME (default: nsetmx =10) c iptnam: Zeiger auf die Setnamen. Jeder Setname belegt 12 c character und wird im Format integer abgelegt. c ipttyp: Zeiger auf die Settypen. Es gilt: c ipttyp Settyp c 0 Elemente c 1 Knoten c 2 Integrationspunkte c 3 Schichten c 4 Freiheitsgrade c 5 Inkremente c iptnum: Zeiger auf die Anzahl der Elemente im Set c iptloc: Zeiger auf die abgespeicherten Elemente eines Sets c iptbeg: Zeiger auf alle abgespeicherten Elemente des Sets c c write(*,*) 'belongToSet: set type=',typeTarget, - ' num=',numTarget,' name= *',setTarget,'*' c Schleife ueber alle Sets do iset = 1, ndset istype = ints (ipttyp + (iset-1)) if ( istype.eq.typeTarget ) then isname = (iptnam +(iset-1)*12) !Anfangsadresse des Setnamens do j=1,12 iiname(j) = ints(isname+j-1) write(name,'(A1)') iiname(j) setName(j:j) = name if (name .ne. ' ') then isnamlen = j end if end do if (setName (1:isnamlen) .eq. setTarget) then c write(*,*) 'belongToSet: identified set *',setName(1:isnamlen),'*' isnumb = ints (iptnum+iset-1) !Anzahl der Elemente !in diesem Set ieptr = iptbeg + ints (iptloc+iset-1)-1 !Anfangsadresse der !abgespeicherten Elemente do i=1, isnumb iexx = ints(ieptr+i-1) if (numTarget .eq. iexx) then belongToSet = .True. write(*,*) 'belongToSet: matched: type=',typeTarget, - ' num=',numTarget,' set=',setTarget return end if end do belongToSet = .False. return endif end if end do write(*,*) 'belongToSet: set *',setTarget,'* not found' belongToSet = .FALSE. return end c===============================================================================