TALK=F;RUN( 1, 1) CPVNAM=VDI;SPPNAM=Core TEXT(USP. Conductivity task on divided grid) title DISPLAY This case solves a simple three-dimensional conductivity task on divided grid in cube. The exact solution is one-dimensional constant gradient of temperature. User can change direction of gradient and coefficient of conductivity. ENDDIS STEADY = T RSET(M,64,64,64) RSET(D,DOM,1.,1.,1.) ONEPHS = T NAME(148) =KOND; NAME(150) =TEM1 STORE(KOND) SOLVE(TEM1) SOLUTN(TEM1,Y,Y,Y,N,N,Y) integer(idir) idir = 1 mesg(Default direction of temperature gradient is X. mesg(Do you want to change it? (y/n) readvdu(ans,char,n) if(:ans:.eq.y)then mesg(Please, enter direction of temperature gradient. (x/y/z) readvdu(ans,char,n) if(:ans:.eq.x)then idir = 1 mesg(New direction of temperature gradient is X. endif if(:ans:.eq.y)then idir = 2 mesg(New direction of temperature gradient is Y. endif if(:ans:.eq.z)then idir = 3 mesg(New direction of temperature gradient is Z. endif endif real(MINT,MAXT,MINKOND,MAXKOND,KONDC,DK,MINGR) MINKOND=1.e-2 MAXKOND=1.e-2 mesg(Default coefficient of conductivity is constant. mesg(Conductivity is :MINKOND: mesg(Do you want to change it? (y/n) readvdu(ans,char,n) if(:ans:.eq.y)then mesg(Enter coductivity at minimum temperature readvdu(MINKOND,real,MINKOND) mesg(New coductivity at minimum temperature is :MINKOND: mesg(Enter coductivity at maximum temperature readvdu(MAXKOND,real,MAXKOND) mesg(New coductivity at maximum temperature is :MAXKOND: endif MINT=0 MAXT=100 if(idir.eq.1)then MINGR = MINKOND*2*NX MINGR = MINKOND/0.125 PATCH(LESS,WEST,1,1,1,NY,1,NZ,1,1) COVAL(LESS,TEM1,FIXVAL,MINT) COVAL(LESS,TEM1,MINGR,MINT) PATCH(MORE,EAST,NX,NX,1,NY,1,NZ,1,1) COVAL(MORE,TEM1,FIXVAL,MAXT) COVAL(MORE,TEM1,MINGR,MAXT) DK = (MAXKOND-MINKOND)/NX DO II=1,NX + KONDC = MINKOND+0.5*DK+(II-1)*DK + PATCH(IP:II:,INIVAL,:II:,:II:,1,NY,1,NZ,1,1) + INIT(IP:II:,KOND,0.0,KONDC) ENDDO endif if(idir.eq.2)then PATCH(LESS,SOUTH,1,NX,1,1,1,NZ,1,1) COVAL(LESS,TEM1,FIXVAL,MINT) PATCH(MORE,NORTH,1,NX,NY,NY,1,NZ,1,1) COVAL(MORE,TEM1,FIXVAL,MAXT) DK = (MAXKOND-MINKOND)/NY DO JJ=1,NY + KONDC = MINKOND+0.5*DK+(JJ-1)*DK + PATCH(IP:JJ:,INIVAL,1,NX,:JJ:,:JJ:,1,NZ,1,1) + INIT(IP:JJ:,KOND,0.0,KONDC) ENDDO endif if(idir.eq.3)then PATCH(LESS,LOW,1,NX,1,NY,1,1,1,1) COVAL(LESS,TEM1,FIXVAL,MINT) PATCH(MORE,HIGH,1,NX,1,NY,NZ,NZ,1,1) COVAL(MORE,TEM1,FIXVAL,MAXT) DK = (MAXKOND-MINKOND)/NZ DO KK=1,NZ + KONDC = MINKOND+0.5*DK+(KK-1)*DK + PATCH(IP:KK:,INIVAL,1,NX,1,NY,:KK:,:KK:,1,1) + INIT(IP:KK:,KOND,0.0,KONDC) ENDDO endif INTEGER(LEVEL) LEVEL = 4 mesg(Level of coarsening is :LEVEL: mesg(Do you want to change it? (y/n) readvdu(ans,char,n) if(:ans:.eq.y)then mesg(Enter level of coarsening readvdu(LEVEL,int,LEVEL) mesg(New level of coarsening is :LEVEL: endif mesg(Do you want to view results in the centres of cells? (y/n) readvdu(ans,char,n) if(:ans:.eq.y)then SPEDAT(SET,USPIO,VERTCENT,L,F) endif mesg(Do you want to solve task without calculation of gradients ? (y/n) readvdu(ans,char,n) if(:ans:.eq.y)then SPEDAT(SET,USP,CALCGRAD,L,F) endif LSWEEP = 100 RESFAC = 1.000000E-07 PARSOL=F ECHO=T IXMON=2 ;IYMON=2 ;IZMON=2 NPRMON=100000 NPRMNT=1 TSTSWP=-1 NPRINT=100000 ISWPRF=1 ;ISWPRL=100000 SAVE7BEGIN ******** Test In-Form ****** (STORED of EXT1 is 100.*XG) (STORED of DTEM is EXT1-TEM1) SAVE7END Usp related variables USP = T UAUTO = F USPDBG = F UTCPLT = T USPIMB = F MXLEV = LEVEL MYLEV = LEVEL MZLEV = LEVEL DOMAT = -1 MINPRP = -1 MAXPRP = 250 CELLST = 10 FACEST = 10 SPEDAT(SET,USPVTK,GRADOUT,C,TEM1) PARSOL = F ISG62 = 0 ISG60 = 1 > DOM, SIZE, 1.000000E+00, 1.000000E+00, 1.000000E+00 > DOM, MONIT, 4.250000E-01, 4.250000E-01, 4.454545E-01 > DOM, SCALE, 1.000000E+00, 1.000000E+00, 1.000000E+00 > DOM, SNAPSIZE, 1.000000E-02 if(LEVEL.gt.0)then > OBJ, NAME, B1 > OBJ, POSITION, 0.468750E+00, 0.468750E+00, 0.468750E+00 > OBJ, SIZE, 6.250000E-02, 6.250000E-02, 6.250000E-02 > OBJ, GEOMETRY, fine > OBJ, ROTATION24, 1 > OBJ, TYPE, FINE_GRID_VOL > OBJ, LEVELS, 0.000000E+00, 0.000000E+00, 0.000000E+00 > OBJ, AXES, OXYZ endif if(LEVEL.gt.1)then > OBJ, NAME, B2 > OBJ, POSITION, 0.437500E+00, 0.437500E+00, 0.437500E+00 > OBJ, SIZE, 0.125000E+00, 0.125000E+00, 0.125000E+00 > OBJ, GEOMETRY, fine > OBJ, ROTATION24, 1 > OBJ, TYPE, FINE_GRID_VOL > OBJ, LEVELS, 1.000000E+00, 1.000000E+00, 1.000000E+00 > OBJ, AXES, OXYZ endif if(LEVEL.gt.2)then > OBJ, NAME, B3 > OBJ, POSITION, 0.375000E+00, 0.375000E+00, 0.375000E+00 > OBJ, SIZE, 0.250000E+00, 0.250000E+00, 0.250000E+00 > OBJ, GEOMETRY, fine > OBJ, ROTATION24, 1 > OBJ, TYPE, FINE_GRID_VOL > OBJ, LEVELS, 2.000000E+00, 2.000000E+00, 2.000000E+00 > OBJ, AXES, OXYZ endif if(LEVEL.gt.3)then > OBJ, NAME, E1 > OBJ, POSITION, 0.250000E+00, 0.250000E+00, 0.250000E+00 > OBJ, SIZE, 0.500000E+00, 0.500000E+00, 0.500000E+00 > OBJ, GEOMETRY, fine > OBJ, ROTATION24, 1 > OBJ, TYPE, FINE_GRID_VOL > OBJ, LEVELS, 3.000000E+00, 3.000000E+00, 3.000000E+00 > OBJ, AXES, OXYZ endif STOP