852 lines
23 KiB
Fortran
Executable File
852 lines
23 KiB
Fortran
Executable File
*dk,unpacktp
|
|
subroutine unpacktp(ioptitp,iopt2,inum,ipitp1,ipitp2,icscode)
|
|
C
|
|
C
|
|
C#######################################################################
|
|
C
|
|
C PURPOSE -
|
|
C
|
|
C THIS ROUTINE FLAGS POINTS THAT SATISFY THE ioptitp
|
|
C OPTION.
|
|
C
|
|
C INPUT ARGUMENTS -
|
|
C
|
|
C ioptitp - (character) The Option.
|
|
C iopt2 - (character) The Suboption.
|
|
C ipitp1 - (pointer) Pointer to Point Type Array.
|
|
C
|
|
C OUTPUT ARGUMENTS -
|
|
C
|
|
C ipitp2 - (pointer) Pointer to Output Array..
|
|
C icscode - (integer) Error flag.
|
|
C
|
|
C CHANGE HISTORY -
|
|
C
|
|
C $Log: unpacktp.f,v $
|
|
C Revision 2.00 2007/11/09 20:04:05 spchu
|
|
C Import to CVS
|
|
C
|
|
CPVCS
|
|
CPVCS Rev 1.12 30 Sep 2004 10:03:44 dcg
|
|
CPVCS use iand, ior in place of .and., .or. with integer variables
|
|
CPVCS
|
|
CPVCS Rev 1.11 Mon Apr 14 17:05:28 1997 pvcs
|
|
CPVCS No change.
|
|
CPVCS
|
|
CPVCS Rev 1.10 Mon Jun 03 13:58:24 1996 dcg
|
|
CPVCS fix typo with virtual type
|
|
CPVCS
|
|
CPVCS Rev 1.9 Mon May 06 10:38:12 1996 dcg
|
|
CPVCS add interior interface mode
|
|
CPVCS 'inteintf'
|
|
CPVCS
|
|
CPVCS Rev 1.8 Fri May 03 17:02:44 1996 dcg
|
|
CPVCS add matlintr category
|
|
CPVCS
|
|
CPVCS Rev 1.7 Fri May 03 10:46:24 1996 dcg
|
|
CPVCS changes for new point type --virtual interfaces
|
|
CPVCS
|
|
CPVCS Rev 1.6 07/14/95 10:16:10 het
|
|
CPVCS Correct errors with point types
|
|
CPVCS
|
|
CPVCS Rev 1.5 05/19/95 10:58:20 ejl
|
|
CPVCS Fixed more bugs. Cleaned up. Implicit none.
|
|
CPVCS
|
|
CPVCS Rev 1.4 05/19/95 08:23:34 ejl
|
|
CPVCS Fixed more bugs with new point types
|
|
CPVCS
|
|
CPVCS Rev 1.3 05/11/95 13:14:10 het
|
|
CPVCS Add new point types for combining free, reflective and interface boundaries
|
|
CPVCS
|
|
CPVCS Rev 1.2 03/23/95 22:59:38 het
|
|
CPVCS Add the model routines and add the cmo name into the idsbs
|
|
CPVCS
|
|
CPVCS Rev 1.1 01/04/95 22:06:34 llt
|
|
CPVCS unicos changes (made by het)
|
|
CPVCS
|
|
CPVCS Rev 1.0 11/10/94 12:20:12 pvcs
|
|
CPVCS Original version.
|
|
C
|
|
C#######################################################################
|
|
C
|
|
implicit none
|
|
C
|
|
C#######################################################################
|
|
C
|
|
include "chydro.h"
|
|
C
|
|
C#######################################################################
|
|
C
|
|
character*(*) ioptitp, iopt2
|
|
C
|
|
integer inum
|
|
C
|
|
pointer (ipitp1, itp1 )
|
|
integer itp1(inum)
|
|
pointer (ipitp2, itp2 )
|
|
integer itp2(inum)
|
|
C
|
|
integer icscode
|
|
C
|
|
C#######################################################################
|
|
C
|
|
integer i1, len1, iset, iset1, iset2, itp, ioptitp2
|
|
C
|
|
C#######################################################################
|
|
C
|
|
integer icharlnf
|
|
C
|
|
C#######################################################################
|
|
C
|
|
C
|
|
C
|
|
icscode = -1
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
do i1=1,inum
|
|
itp2(i1)=0
|
|
enddo
|
|
endif
|
|
C
|
|
len1=icharlnf(ioptitp)
|
|
C
|
|
if (ioptitp(1:len1) .eq. 'allreal') then
|
|
C
|
|
C**** ALLREAL Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset1=0
|
|
if (itp.ge.ifitpst1.and.itp.le.ifitpen1) iset1=1
|
|
iset2=0
|
|
if (itp.ge.ifitpst2.and.itp.le.ifitpen2) iset2=1
|
|
itp2(i1) = ior(iset1,iset2)
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset1=0
|
|
if (itp.ge.ifitpst1.and.itp.le.ifitpen1) iset1=1
|
|
iset2=0
|
|
if (itp.ge.ifitpst2.and.itp.le.ifitpen2) iset2=1
|
|
itp2(i1) = iand(ior(iset1,iset2),itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset1=0
|
|
if (itp.ge.ifitpst1.and.itp.le.ifitpen1) iset1=1
|
|
iset2=0
|
|
if (itp.ge.ifitpst2.and.itp.le.ifitpen2) iset2=1
|
|
itp2(i1) = ior(ior(iset1,iset2),itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'interior') then
|
|
C
|
|
C**** INTERIOR Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst1.and.itp1(i1).le.ifitpen1) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst1.and.itp1(i1).le.ifitpen1) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst1.and.itp1(i1).le.ifitpen1) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'inteintf') then
|
|
C
|
|
C INTERIOR INTERFACE Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpini.or.
|
|
* itp1(i1).eq.ifitpvin.or.
|
|
* itp1(i1).eq.ifitpvrt) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpini.or.
|
|
* itp1(i1).eq.ifitpvin.or.
|
|
* itp1(i1).eq.ifitpvrt) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpini.or.
|
|
* itp1(i1).eq.ifitpvin.or.
|
|
* itp1(i1).eq.ifitpvrt) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'boundary') then
|
|
C
|
|
C**** BOUNDARY Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst2.and.itp1(i1).le.ifitpen2) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst2.and.itp1(i1).le.ifitpen2) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst2.and.itp1(i1).le.ifitpen2) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'matlintr') then
|
|
C
|
|
C**** MATLINTR Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'intrface') then
|
|
C
|
|
C**** INTRFACE Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpvrt) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpvrt) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpvrt) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'reflect') then
|
|
C
|
|
C**** REFLECT Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitprfl) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitprfb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitprfl) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitprfb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = iand(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
itp=itp1(i1)
|
|
iset=0
|
|
if ((itp.eq.ifitprfl) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitprfb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) iset=1
|
|
itp2(i1) = ior(iset,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'free') then
|
|
C
|
|
C**** FREE Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpfre) .or.
|
|
* (itp1(i1).eq.ifitpifb) .or.
|
|
* (itp1(i1).eq.ifitprfb) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpirf)) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpfre) .or.
|
|
* (itp1(i1).eq.ifitpifb) .or.
|
|
* (itp1(i1).eq.ifitprfb) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpirf)) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpfre) .or.
|
|
* (itp1(i1).eq.ifitpifb) .or.
|
|
* (itp1(i1).eq.ifitprfb) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpirf)) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'virtual') then
|
|
C
|
|
C**** VIRTUAL Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpvrt) .or.
|
|
* (itp1(i1).eq.ifitpvin) .or.
|
|
* (itp1(i1).eq.ifitpvir) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpvrb)) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpvrt) .or.
|
|
* (itp1(i1).eq.ifitpvin) .or.
|
|
* (itp1(i1).eq.ifitpvir) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpvfb)) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if ((itp1(i1).eq.ifitpvrt) .or.
|
|
* (itp1(i1).eq.ifitpvin) .or.
|
|
* (itp1(i1).eq.ifitpvir) .or.
|
|
* (itp1(i1).eq.ifitpvfb) .or.
|
|
* (itp1(i1).eq.ifitpvrf) .or.
|
|
* (itp1(i1).eq.ifitpvif) .or.
|
|
* (itp1(i1).eq.ifitpalb) .or.
|
|
* (itp1(i1).eq.ifitpvfb)) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'removed') then
|
|
C
|
|
C**** REMOVED Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst3.and.itp1(i1).le.ifitpen3) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst3.and.itp1(i1).le.ifitpen3) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).ge.ifitpst3.and.itp1(i1).le.ifitpen3) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'merged') then
|
|
C
|
|
C**** MERGED Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpmrg) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpmrg) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpmrg) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'dudded') then
|
|
C
|
|
C**** DUDDED Option.
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpdud) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpdud) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ifitpdud) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
else
|
|
C
|
|
C**** Specific Point Type Option.
|
|
C
|
|
read(ioptitp,'(i10)') ioptitp2
|
|
C
|
|
if (iopt2(1:3) .eq. 'set') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ioptitp2) iset=1
|
|
itp2(i1) = iset
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:3) .eq. 'and') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ioptitp2) iset=1
|
|
itp2(i1) = iand(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
elseif (iopt2(1:2) .eq. 'or') then
|
|
C
|
|
icscode=0
|
|
do i1=1,inum
|
|
iset=0
|
|
if (itp1(i1).eq.ioptitp2) iset=1
|
|
itp2(i1) = ior(iset ,itp2(i1))
|
|
enddo
|
|
C
|
|
endif
|
|
C
|
|
endif
|
|
C
|
|
return
|
|
end
|
|
*dk,itsttp
|
|
function itsttp(ioptitp,itp)
|
|
C
|
|
C
|
|
C#######################################################################
|
|
C
|
|
C PURPOSE -
|
|
C
|
|
C THIS ROUTINE FRETURNS TRUE IF ITP IS IN THE CLASS ioptitp
|
|
C IT RETURNS FALSE OTHERWISE
|
|
C
|
|
C INPUT ARGUMENTS -
|
|
C
|
|
C ioptitp - (character) The Option.
|
|
C classes are interior, boundary, matlintr, reflect, free,
|
|
C intrface,virtual, removed, dudded, merged, allreal
|
|
C itp - (integer) point type to be tested.
|
|
C
|
|
C OUTPUT ARGUMENTS -
|
|
C
|
|
C
|
|
C#######################################################################
|
|
C
|
|
implicit none
|
|
C
|
|
C#######################################################################
|
|
C
|
|
include "chydro.h"
|
|
C
|
|
C#######################################################################
|
|
C
|
|
character*(*) ioptitp
|
|
character*132 logmess
|
|
integer itp
|
|
logical itsttp
|
|
C
|
|
integer icharlnf,ierror,len1
|
|
C
|
|
len1=icharlnf(ioptitp)
|
|
itsttp=.false.
|
|
C
|
|
if (ioptitp(1:len1) .eq. 'allreal') then
|
|
C
|
|
C**** ALLREAL Option.
|
|
C
|
|
if (itp.ge.ifitpst1.and.itp.le.ifitpen1) itsttp=.true.
|
|
if (itp.ge.ifitpst2.and.itp.le.ifitpen2) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'interior') then
|
|
C
|
|
C**** INTERIOR Option.
|
|
C
|
|
if (itp.ge.ifitpst1.and.itp.le.ifitpen1) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'inteintf') then
|
|
C
|
|
C**** INTERIOR INTERFACE Option.
|
|
C
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvrt)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'boundary') then
|
|
C
|
|
C**** BOUNDARY Option.
|
|
C
|
|
if (itp.ge.ifitpst2.and.itp.le.ifitpen2) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'matlintr') then
|
|
C
|
|
C**** MATLINTR Option.
|
|
C
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'intrface') then
|
|
C
|
|
C**** INTRFACE Option.
|
|
C
|
|
if ((itp.eq.ifitpini) .or.
|
|
* (itp.eq.ifitpvrt) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'reflect') then
|
|
C
|
|
C**** REFLECT Option.
|
|
C
|
|
if ((itp.eq.ifitprfl) .or.
|
|
* (itp.eq.ifitpirb) .or.
|
|
* (itp.eq.ifitprfb) .or.
|
|
* (itp.eq.ifitpvrb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'free') then
|
|
C
|
|
C**** FREE Option.
|
|
C
|
|
if ((itp.eq.ifitpfre) .or.
|
|
* (itp.eq.ifitpifb) .or.
|
|
* (itp.eq.ifitprfb) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpirf)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'virtual') then
|
|
C
|
|
C**** FREE Option.
|
|
C
|
|
if ((itp.eq.ifitpvrt) .or.
|
|
* (itp.eq.ifitpvin) .or.
|
|
* (itp.eq.ifitpvir) .or.
|
|
* (itp.eq.ifitpvfb) .or.
|
|
* (itp.eq.ifitpvrf) .or.
|
|
* (itp.eq.ifitpvif) .or.
|
|
* (itp.eq.ifitpalb) .or.
|
|
* (itp.eq.ifitpvrb)) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'removed') then
|
|
C
|
|
C**** REMOVED Option.
|
|
C
|
|
if (itp.ge.ifitpst3.and.itp.le.ifitpen3) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'merged') then
|
|
C
|
|
C**** MERGED Option.
|
|
C
|
|
if (itp.eq.ifitpmrg) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'dudded') then
|
|
C
|
|
C**** DUDDED Option.
|
|
C
|
|
if (itp.eq.ifitpdud) itsttp=.true.
|
|
C
|
|
elseif (ioptitp(1:len1) .eq. 'parent') then
|
|
C
|
|
C**** PARENT Option.
|
|
C
|
|
if (itp.eq.ifitpcup) itsttp=.true.
|
|
C
|
|
else
|
|
write(logmess,"('Illegal option to itsttp',a8)") ioptitp
|
|
call writloga('default',0,logmess,0,ierror)
|
|
endif
|
|
return
|
|
end
|