c
C SUBROUTINE GXINTP provides for the calculation of the interfacial C pressure source terms in the momentum equations when the IPSA C algorithm is in use, as described in PHOENICS Encyclopaedia C article: Interfacial-Pressure Sources. C C Subroutine GXINTP is called from the following Groups of subroutine C GREX3:- C C * Group 1, Section 1: C in order to allocate storage and assign indices for C identification of the continuous and dispersed phases. C C * Group 13, Section 16: C in order to compute the interfacial-pressure C momentum sources for both phases. C C * Group 19, Section 11: C in order to compute Cp and B and also to make some C once-and-for all settings for the current IZ slab. C C------------------------------------------------------------------- c SUBROUTINE GXINTP INCLUDE 'farray' INCLUDE 'satear' INCLUDE 'grdloc' INCLUDE 'satgrd' INCLUDE 'grdear' INCLUDE 'grdbfc' COMMON/GENI/NXNY,NXM1NY,IGFIL1(7),NFM,IGFIL2(50) COMMON/GENL/LGFIL1(14),DEBGTZ,LGFIL2(45) COMMON/NAMFN/NAMFUN,NAMSUB CHARACTER*6 NAMFUN,NAMSUB,NPAT5*1 LOGICAL LGFIL1,DEBGTZ,LGFIL2,CONPHS,SWEEP1,GRN,GTZ,LTZ,STOIPU, 1 STOIPV,STOIPW,dbgips EQUIVALENCE (L0DPCA,L0RDA,L0CP) SAVE JRC,JRD,JUC,JUD,JVC,JVD,JWC,JWD,JRHOC,JSIPSU,JSIPSV,JSIPSW, 1 L0CP,L0DPC,L0DR,L0SCON,L0SDIS,L0VREL,J0DPC,SWEEP1,RELIPU, 1 RELIPV,RELIPW,STOIPU,STOIPV,STOIPW,dbgips DATA STOIPU,STOIPV,STOIPW/3*.FALSE./ NAMSUB='GXINTP' IF(IGR.EQ.1.AND.ISC.EQ.1) THEN IF(GRN(CPIP).OR.(.NOT.GRN(-CPIP).AND.GTZ(CPIP))) THEN C phase 1 - continuous phase ; phase 2 - dispersed phase CALL SUB4(JRC,R1,JRD,R2,JUC,U1,JUD,U2) CALL SUB4(JVC,V1,JVD,V2,JWC,W1,JWD,W2) JRHOC=LRHO1 IF(.NOT.NULLPR) 1 CALL WRIT40('phase 1 =continuous:phase 2 = dispersed ') ELSEIF (GRN(-CPIP).OR.(.NOT.GRN(CPIP).AND.LTZ(CPIP))) THEN C phase 2 - continuous phase ; phase 1 - dispersed phase CALL SUB4(JRC,R2,JRD,R1,JUC,U2,JUD,U1) CALL SUB4(JVC,V2,JVD,V1,JWC,W2,JWD,W1) JRHOC=LRHO2 IF(.NOT.NULLPR) 1 CALL WRIT40('phase 2 =continuous:phase 1 = dispersed ') ELSE CALL WRIT40('CPIP setting incorrect in the Q1 file ') CALL SET_ERR(245,'Error. CPIP setting incorrect in the Q1.',1) C CALL EAROUT(2) ENDIF C remove any negative signs IF(GRN(-ABS(CPIP))) THEN CPIP=-ABS(CPIP) ELSE CPIP=ABS(CPIP) ENDIF C allocate storage IF(STORE(U1)) THEN JSIPSU=LBNAME('IPSU') STOIPU=STORE(JSIPSU) IF(STOIPU) RELIPU=ABS(DTFALS(JSIPSU)) ENDIF IF(STORE(V1)) THEN JSIPSV=LBNAME('IPSV') STOIPV=STORE(JSIPSV) IF(STOIPV) RELIPV=ABS(DTFALS(JSIPSV)) ENDIF IF(STORE(W1)) THEN JSIPSW=LBNAME('IPSW') STOIPW=STORE(JSIPSW) IF(STOIPW) RELIPW=ABS(DTFALS(JSIPSW)) ENDIF CALL GXMAKE(L0CP ,NXNY, 'CP ') MZ=ITWO(1,NZ,PARAB) CALL GXMAKE(L0DPC ,NXNY*MZ,'DPC ') CALL GXMAKE(L0DR, NXNY, 'DR ') CALL GXMAKE(L0SCON,NXNY, 'SCON') CALL GXMAKE(L0SDIS,NXNY, 'SDIS') CALL GXMAKE(L0VREL,NXNY, 'VREL') ELSEIF(IGR.EQ.19.AND.ISC.EQ.11) THEN dbgips=dbcfip.and.debgtz SWEEP1=ISWEEP.EQ.FSWEEP c... calculate interfacial pressure coefficient IF(GTZ(CPIP)) CALL FN1(-L0CP,CPIP) IF(GRNDNO(1,CPIP)) CALL FN2(-L0CP,JRC,0.0,CPIPA) IF(GRNDNO(2,CPIP)) THEN CALL SUB2(L0RD,L0F(JRD),L0RC,L0F(JRC)) DO 1951 J=1,NXNY F(L0CP+J)=CPIPA*(1.+F(L0RD+J))*F(L0RC+J)*F(L0RC+J) 1951 CONTINUE ENDIF c... calculate Pci-Pc = -cp*rhoc*(ur)**2 CALL FNVSLP(1,L0VREL,CFIPA) CALL FN51(-L0VREL,2.0) J0DPC=ITWO(L0DPC,L0DPC+(IZ-1)*NXNY,PARAB) CALL FN55(-J0DPC,-L0CP,JRHOC,-L0VREL,1.0) if(dbgips) call prn('dpc ',-J0DPC) ELSEIF(IGR.EQ.13.AND.ISC.EQ.16) THEN NPAT5=NPATCH(5:5) C U-Velocity Interfacial-Pressure Momentum Sources C ------------------------------------------------ IF(INDVAR.EQ.U1) THEN C.... calculate sc = 0.5*(DPCP+DPCE)*Ae*(rdE-rdP) CALL FN1(-L0SCON,0.0) CALL FNAV(-L0DPCA,-J0DPC,'EAST') CALL FN103(-L0DR,JRD,3) CALL FN55(-L0SCON,-L0DPCA,LAEX,-L0DR,1.0) C.... zero source at ix=nx when xcycle=f IF(.NOT.XCYCLE) CALL ZERNUM(L0SCON+NXM1NY,NY) IF(NPAT5.EQ.'L') THEN C.... calculate sd = 0.5*(rdP+rdE)*Ae*(DPCE-DPCP) { Lahey et al } CALL FN1(-L0SDIS,0.0) CALL FNAV(-L0RDA,JRD,'EAST') CALL FN103(-L0DR,-J0DPC,3) CALL FN55(-L0SDIS,-L0RDA,LAEX,-L0DR,1.0) IF(.NOT.XCYCLE) CALL ZERNUM(L0SDIS+NXM1NY,NY) IF(STOIPU) THEN CALL FN10(-L0SDIS,-L0SDIS,JSIPSU,0.0,RELIPU,(1.-RELIPU)) CALL FN0(JSIPSU,-L0SDIS) ENDIF ELSEIF(NPAT5.EQ.'S') THEN IF(STOIPU) THEN CALL FN10(-L0SCON,-L0SCON,JSIPSU,0.0,RELIPU,(1.-RELIPU)) CALL FN0(JSIPSU,-L0SCON) ENDIF C.... calculate sd = -sc { Stuhmiller } CALL FN2(-L0SDIS,-L0SCON,0.0,-1.0) ENDIF ENDIF C V-Velocity Interfacial-Pressure Momentum Sources C ------------------------------------------------ IF(INDVAR.EQ.V1) THEN C.... calculate sc = 0.5*(DPCP+DPCN)*An*(rdN-rdP) CALL FN1(-L0SCON,0.0) CALL FNAV(-L0DPCA,-J0DPC,'NORTH') CALL FN103(-L0DR,JRD,1) CALL FN55(-L0SCON,-L0DPCA,LANY,-L0DR,1.0) C.... zero source at iy=ny CALL ZERNY(L0SCON+NY-1) IF(NPAT5.EQ.'L') THEN C.... calculate sd = 0.5*(rdP+rdN)*An*(DPCN-DPCP) { Lahey et al } CALL FN1(-L0SDIS,0.0) CALL FNAV(-L0RDA,JRD,'NORTH') CALL FN103(-L0DR,-J0DPC,1) CALL FN55(-L0SDIS,-L0RDA,LANY,-L0DR,1.0) CALL ZERNY(L0SDIS+NY-1) IF(STOIPV) THEN CALL FN10(-L0SDIS,-L0SDIS,JSIPSV,0.0,RELIPV,(1.-RELIPV)) CALL FN0(JSIPSV,-L0SDIS) ENDIF ELSEIF(NPAT5.EQ.'S') THEN IF(STOIPV) THEN CALL FN10(-L0SCON,-L0SCON,JSIPSV,0.0,RELIPV,(1.-RELIPV)) CALL FN0(JSIPSV,-L0SCON) ENDIF C.... calculate sd = -sc { Stuhmiller } CALL FN2(-L0SDIS,-L0SCON,0.0,-1.0) ENDIF ENDIF C W-Velocity interphase-pressure Momentum Sources C ---------------------------------------- IF(INDVAR.EQ.W1) THEN C.... calculate sc = 0.5*(DPCP+DPCH)*Ah*(rdH-rdP) CALL FN1(-L0SCON,0.0) IF(PARAB) THEN CALL FN1(-L0SDIS,0.0) ELSE IF(SWEEP1) THEN CALL FN0(-L0DPCA,-J0DPC) ELSE CALL AVENXY(L0DPCA,J0DPC,J0DPC+NXNY) ENDIF CALL FN10(-L0DR,HIGH(JRD),JRD,0.0,1.0,-1.0) CALL FN55(-L0SCON,-L0DPCA,LAHZ,-L0DR,1.0) IF(NPAT5.EQ.'L') THEN C.... calculate sd = 0.5*(rdP+rdH)*Anh(DPCH-DPCP) { Lahey et al } CALL FN1(-L0SDIS,0.0) CALL SUB2(L0RD,L0F(JRD),L0RDH,L0F(HIGH(JRD))) CALL AVENXY(L0RDA,L0RD,L0RDH) IF(SWEEP1) THEN CALL FN1(-L0DR,0.0) ELSE CALL FN10(-L0DR,-J0DPC,-(J0DPC+NXNY),0.0,-1.0,1.0) ENDIF CALL FN55(-L0SDIS,-L0RDA,LAHZ,-L0DR,1.0) IF(STOIPW) THEN CALL FN10(-L0SDIS,-L0SDIS,JSIPSW,0.0,RELIPW,(1.-RELIPW)) CALL FN0(JSIPSW,-L0SDIS) ENDIF ELSEIF(NPAT5.EQ.'S') THEN IF(STOIPW) THEN CALL FN10(-L0SCON,-L0SCON,JSIPSW,0.0,RELIPW,(1.-RELIPW)) CALL FN0(JSIPSW,-L0SCON) ENDIF C.... calculate sd = -sc { Stuhmiller } CALL FN2(-L0SDIS,-L0SCON,0.0,-1.0) ENDIF ENDIF ENDIF C CONPHS=INDVAR.EQ.JUC.OR.INDVAR.EQ.JVC.OR.INDVAR.EQ.JWC IF(CONPHS) THEN CALL FN0(VAL,-L0SCON) CALL FN25(VAL,1./TINY) ELSE CALL FN0(VAL,-L0SDIS) CALL FN25(VAL,1./TINY) ENDIF if(dbgips) then call writ3i('indvar ',indvar,'iz ',iz,'isweep ',isweep) call prn('sipc',-l0scon) call prn('sipd',-l0sdis) endif ENDIF END C file-name gxlift.for 071097 C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! c C SUBROUTINE GXLIFT provides for the calculation of the interphase c C lift-force terms in the momentum equations when the IPSA C algorithm is in use, as described in PHOENICS Encyclopaedia C article: Interfacial-Pressure Sources. C C Subroutine GXLIFT is called from the following Groups of subroutine C GREX3:- C C * Group 1, Section 1: C in order to allocate storage and assign indices for C identification of the continuous and dispersed phases. C C * Group 13, Section 16: C in order to compute the interphase lift momentum C sources for both phases. C C * Group 19, Section 11: C in order to compute Cl, curl(Uc), (Ud-Uc) and also to C make some once-and-for all settings for the current C IZ slab. C------------------------------------------------------------------- SUBROUTINE GXLIFT INCLUDE 'farray' INCLUDE 'satear' INCLUDE 'grdloc' INCLUDE 'satgrd' INCLUDE 'grdear' INCLUDE 'grdbfc' COMMON/GENI/NXNY,NXM1NY,IGFIL1(7),NFM,IGFIL2(50) COMMON/GENL/LGFIL1(14),DEBGTZ,LGFIL2(45) COMMON/NAMFN/NAMFUN,NAMSUB CHARACTER*6 NAMFUN,NAMSUB LOGICAL LGFIL1,DEBGTZ,LGFIL2,CONPHS,SWEEP1,GTZ,STOLIU,STOLIV, 1 STOLIW,dbglft EQUIVALENCE (L0LFXA,L0LFYA,L0LFZA,L0UDA) SAVE JCON,JRC,JRD,JUC,JUD,JVC,JVD,JWC,JWD,JRHOC,JSLISU, 1 JSLISV,JSLISW,J0LFZ,L0CL,L0LFX,L0LFY,L0LFZ,dbglft, 1 L0OMGX,L0OMGY,L0OMGZ,L0SCON,L0UCA,L0UDA,L0VRLX,L0VRLY, 1 L0VRLZ,RELLIU,RELLIV,RELLIW,SWEEP1,STOLIU,STOLIV,STOLIW DATA STOLIU,STOLIV,STOLIW/3*.FALSE./ NAMSUB='GXLIFT' IF(IGR.EQ.1.AND.ISC.EQ.1) THEN IF(GTZ(CLIFTB)) THEN C phase 2 - continuous phase ; phase 1 - dispersed phase CALL SUB4(JRC,R2,JRD,R1,JUC,U2,JUD,U1) CALL SUB4(JVC,V2,JVD,V1,JWC,W2,JWD,W1) CALL SUB2(JRHOC,LRHO2,JCON,1) IF(.NOT.NULLPR) 1 CALL WRIT40('phase 2 =continuous:phase 1 = dispersed ') ELSE C phase 1 - continuous phase ; phase 2 - dispersed phase CALL SUB4(JRC,R1,JRD,R2,JUC,U1,JUD,U2) CALL SUB4(JVC,V1,JVD,V2,JWC,W1,JWD,W2) CALL SUB2(JRHOC,LRHO1,JCON,0) IF(.NOT.NULLPR) 1 CALL WRIT40('phase 1 =continuous:phase 2 = dispersed ') ENDIF C allocate storage IF(STORE(U1)) THEN JSLISU=LBNAME('LISU') STOLIU=STORE(JSLISU) IF(STOLIU) RELLIU=ABS(DTFALS(JSLISU)) ENDIF IF(STORE(V1)) THEN JSLISV=LBNAME('LISV') STOLIV=STORE(JSLISV) IF(STOLIV) RELLIV=ABS(DTFALS(JSLISV)) ENDIF IF(STORE(W1)) THEN JSLISW=LBNAME('LISW') STOLIW=STORE(JSLISW) IF(STOLIW) RELLIW=ABS(DTFALS(JSLISW)) ENDIF CALL GXMAKE(L0CL ,NXNY,'CL ') CALL GXMAKE(L0UDA ,NXNY,'UDA ') CALL GXMAKE(L0UCA ,NXNY,'UCA ') CALL GXMAKE(L0VRLX,NXNY,'VRLX') CALL GXMAKE(L0VRLY,NXNY,'VRLY') CALL GXMAKE(L0VRLZ,NXNY,'VRLZ') CALL GXMAKE(L0SCON,NXNY,'SCON') CALL GXMAKE(L0LFX ,NXNY,'LFX ') CALL GXMAKE(L0LFY ,NXNY,'LFY ') MZ=ITWO(1,NZ,PARAB) CALL GXMAKE(L0LFZ ,NXNY*MZ,'LFZ ') C allocate storage for mean vorticity vector CALL GXVORT(JCON,PARAB,NX,NY,NZ,L0OMGX,L0OMGY,L0OMGZ) ELSEIF(IGR.EQ.19.AND.ISC.EQ.11) THEN SWEEP1=ISWEEP.EQ.FSWEEP dbglft=dbcfip.and.debgtz c... calculate lift coefficient IF(GRNDNO(1,CLIFT)) THEN CALL FN2(-L0CL,JRC,0.0,CLIFTA) ELSEIF(GRNDNO(2,CLIFT)) THEN L0RD=L0F(JRD) DO 1941 J=1,NXNY F(L0CL+J)=CLIFTA*(1.-2.78*AMIN1(0.2,F(L0RD+J))) 1941 CONTINUE ELSE CALL FN1(-L0CL,CLIFT) ENDIF if(dbglft) then call writst call writ2i('iz ',iz,'isweep ',isweep) call prn('cl ',-L0CL) endif C... calculate mean vorticity vector at cell centres CALL GXVORT(JCON,PARAB,NX,NY,NZ,L0OMGX,L0OMGY,L0OMGZ) if(dbglft) then call prn('omgx',-L0OMGX) call prn('omgy',-L0OMGY) call prn('omgz',-L0OMGZ) endif C... calculate slip velocity vector at cell centres IF(STORE(U1)) THEN IF(NX.GT.1) THEN CALL FNAV(-L0UDA,JUD,'WEST') CALL FNAV(-L0UCA,JUC,'WEST') CALL FN10(-L0VRLX,-L0UDA,-L0UCA,0.0,1.0,-1.0) ELSE CALL FN10(-L0VRLX,JUD,JUC,0.0,1.0,-1.0) ENDIF ELSE CALL FN1(-L0VRLX,0.0) ENDIF IF(STORE(V1)) THEN CALL FNAV(-L0UDA,JVD,'SOUTH') CALL FNAV(-L0UCA,JVC,'SOUTH') CALL FN10(-L0VRLY,-L0UDA,-L0UCA,0.0,1.0,-1.0) ELSE CALL FN1(-L0VRLY,0.0) ENDIF IF(STORE(W1)) THEN IF(IZ.EQ.1.OR.PARAB) THEN CALL FN10(-L0VRLZ,JWD,JWC,0.0,1.0,-1.0) ELSEIF(IZ.EQ.NZ) THEN CALL FN10(-L0VRLZ,LOW(JWD),LOW(JWC),0.0,1.0,-1.0) ELSE CALL FNAV(-L0UDA,JWD,'LOW') CALL FNAV(-L0UCA,JWC,'LOW') CALL FN10(-L0VRLZ,-L0UDA,-L0UCA,0.0,1.0,-1.0) ENDIF ELSE CALL FN1(-L0VRLZ,0.0) ENDIF if(dbglft) then call prn('vrlx',-L0VRLX) call prn('vrly',-L0VRLY) call prn('vrlz',-L0VRLZ) endif C... calculate circulation vector at cell centres J0LFZ=ITWO(L0LFZ,L0LFZ+(IZ-1)*NXNY,PARAB) CALL VECPRD(L0LFX,L0LFY,J0LFZ,L0VRLX,L0VRLY,L0VRLZ, 1 L0OMGX,L0OMGY,L0OMGZ) C... calculate lift force vector per unit volume at cell centres IF(SOLVE(U1)) THEN CALL FN55(-L0LFX,-L0CL,JRHOC,-L0LFX,1.0) CALL FN26(-L0LFX,JRD) ENDIF IF(SOLVE(V1)) THEN CALL FN55(-L0LFY,-L0CL,JRHOC,-L0LFY,1.0) CALL FN26(-L0LFY,JRD) ENDIF IF(SOLVE(W1)) THEN CALL FN55(-J0LFZ,-L0CL,JRHOC,-J0LFZ,1.0) CALL FN26(-J0LFZ,JRD) ENDIF if(dbglft) then call writst call writ2i('iz ',iz,'isweep ',isweep) call prn('rhoc',JRHOC) call prn('rd ',JRD) call prn('lfxp',-L0LFX) call prn('lfyp',-L0LFY) call prn('lfzp',-J0LFZ) endif ELSEIF(IGR.EQ.13.AND.ISC.EQ.16) THEN C U-Velocity Interfacial-Lift Momentum Sources C -------------------------------------------- IF(INDVAR.EQ.U1) THEN C.... calculate sc = 0.5*(Fx,p + Fx,E)*Ae*dx CALL FN1(-L0SCON,0.0) IF(NX.EQ.1) THEN CALL FN21(-L0SCON,-L0LFX,LVOL,0.0,1.0) ELSE CALL FNAV(-L0LFXA,-L0LFX,'EAST') CALL FN55(-L0SCON,-L0LFXA,LAEX,LXYDXG,1.0) C.... zero sources at ix=nx when xcycle=f IF(.NOT.XCYCLE) CALL ZERNUM(L0SCON+NXM1NY,NY) ENDIF IF(STOLIU) THEN CALL FN10(-L0SCON,-L0SCON,JSLISU,0.0,RELLIU,(1.-RELLIU)) CALL FN0(JSLISU,-L0SCON) ENDIF ENDIF C V-Velocity Interfacial-Lift Momentum Sources C -------------------------------------------- IF(INDVAR.EQ.V1) THEN C.... calculate sc = 0.5*(Fy,p + Fy,N)*An*dy CALL FN1(-L0SCON,0.0) CALL FNAV(-L0LFYA,-L0LFY,'NORTH') CALL FN55(-L0SCON,-L0LFYA,LANY,LXYDYG,1.0) C.... zero sources at iy=ny CALL ZERNY(L0SCON+NY-1) IF(STOLIV) THEN CALL FN10(-L0SCON,-L0SCON,JSLISV,0.0,RELLIV,(1.-RELLIV)) CALL FN0(JSLISV,-L0SCON) ENDIF ENDIF C W-Velocity Interfacial-Lift Momentum Sources C -------------------------------------------- IF(INDVAR.EQ.W1) THEN C.... calculate sc = 0.5*(Fz,p + Fz,H)*Ah*dz CALL FN1(-L0SCON,0.0) IF(SWEEP1.OR.PARAB) THEN CALL FN0(-L0LFZA,-J0LFZ) ELSE CALL AVENXY(L0LFZA,J0LFZ,J0LFZ+NXNY) ENDIF IF(PARAB) THEN CALL FN21(-L0SCON,-L0LFZA,LAHZ,0.0,DZ) ELSE CALL FN55(-L0SCON,-L0LFZA,LAHZ,LXYDZG,1.0) ENDIF IF(STOLIW) THEN CALL FN10(-L0SCON,-L0SCON,JSLISW,0.0,RELLIW,(1.-RELLIW)) CALL FN0(JSLISW,-L0SCON) ENDIF ENDIF C CONPHS=INDVAR.EQ.JUC.OR.INDVAR.EQ.JVC.OR.INDVAR.EQ.JWC IF(CONPHS) THEN CALL FN0(VAL,-L0SCON) CALL FN25(VAL,1./TINY) ELSE CALL FN2(VAL,-L0SCON,0.0,-1.0) CALL FN25(VAL,1./TINY) ENDIF ENDIF NAMSUB='gxlift' END C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! c C**** SUBROUTINE GXVORT provides for the calculation of the mean C vorticity vector. It is called from group 1, section 1 and C group 19, section 11 of GXLIFT. The coding is restricted to C cartesian and cylindrical-polar coordinates at present, and C for parabolic flows the z-direction velocity derivatives are C taken as zero. C C The subroutine may also be used as a general utility if the C user inserts subroutine calls in the appropriate parts of C GROUND. When STORE(OMGX,OMGY,OMGZ) appears in the Q1 file, the C components of the vorticity vector may be printed in the RESULT C file or viewed via PHOTON and AUTOPLOT. C C.... The dummy IPH is the index, which indicates that the calculation C is provided for the first-phase (IPH=0) or the second-phase C (IPH=1); C SUBROUTINE GXVORT(IPH,PARAB,NX,NY,NZ,L0OMGX,L0OMGY,L0OMGZ) INCLUDE 'farray' INCLUDE 'grdear' INCLUDE 'grdloc' INCLUDE 'satgrd' COMMON/GENI/NXNY,NXM1NY,IGFIL1(7),NFM,IGFIL2(50) COMMON/GENL/LGFIL1(14),DEBGTZ,LGFIL2(45) LOGICAL PARAB,LGFIL1,DEBGTZ,LGFIL2 COMMON /NAMFN/NAMFUN,NAMSUB CHARACTER*6 NAMFUN,NAMSUB SAVE LBOMGX,LBOMGY,LBOMGZ,L0DWDY,STOMGX,STOMGY,STOMGZ LOGICAL STOMGX,STOMGY,STOMGZ EQUIVALENCE (L0DUDY,L0DVDX,L0DUDX,L0DVDY,L0DUDZ,L0DWDX, 1 L0DVDZ,L0DWDY) C NAMSUB = 'GXVORT' IF(IGR.EQ.1.AND.ISC.EQ.1) THEN CALL GXMAKE(L0DWDY,NXNY,'DWDY') CALL GXMAKE(L0OMGX,NXNY,'OMGX') LBOMGX=LBNAME('OMGX') STOMGX=STORE(LBOMGX) CALL GXMAKE(L0OMGY,NXNY,'OMGY') LBOMGY=LBNAME('OMGY') STOMGY=STORE(LBOMGY) CALL GXMAKE(L0OMGZ,NXNY,'OMGZ') LBOMGZ=LBNAME('OMGZ') STOMGZ=STORE(LBOMGZ) ELSEIF(IGR.EQ.19.AND.ISC.EQ.11) THEN C.... omega,x = DW/DR - DV/DZ CALL FN1(-L0OMGX,0.0) IF(SOLVE(W1+IPH).AND.NY.GT.1) THEN CALL FNDWDY(-L0DWDY,W1+IPH) CALL FN60(-L0OMGX,-L0DWDY) ENDIF IF((NZ.GT.1.AND..NOT.PARAB).AND.NY.GT.1) THEN CALL FNDVDZ(-L0DVDZ,V1+IPH) CALL FN25(-L0DVDZ,-1.0) CALL FN60(-L0OMGX,-L0DVDZ) ENDIF IF(STOMGX) CALL FN0(LBOMGX,-L0OMGX) C.... omega,y = DU/DZ - DW/DX CALL FN1(-L0OMGY,0.0) IF(SOLVE(U1+IPH).AND.(NZ.GT.1.AND..NOT.PARAB)) THEN CALL FNDUDZ(-L0DUDZ,U1+IPH) CALL FN60(-L0OMGY,-L0DUDZ) ENDIF IF(SOLVE(W1+IPH).AND.NX.GT.1) THEN CALL FNDWDX(-L0DWDX,W1+IPH) CALL FN25(-L0DWDX,-1.0) CALL FN60(-L0OMGY,-L0DWDX) ENDIF IF(STOMGY) CALL FN0(LBOMGY,-L0OMGY) C.... omega,z = DV/DX - DU/DY CALL FN1(-L0OMGZ,0.0) IF(NY.GT.1.AND.NX.GT.1) THEN CALL FNDVDX(-L0DVDX,V1+IPH) CALL FN60(-L0OMGZ,-L0DVDX) ENDIF IF(SOLVE(U1+IPH).AND.NY.GT.1) THEN CALL FNDUDY(-L0DUDY,U1+IPH) CALL FN25(-L0DUDY,-1.0) CALL FN60(-L0OMGZ,-L0DUDY) ENDIF IF(STOMGZ) CALL FN0(LBOMGZ,-L0OMGZ) ENDIF NAMSUB = 'gxvort' END c