*
#$b001
display
*
This example Q1 demonstrates the use of 'Set internal
points of a blok' option for BFC-type grid. This option
is used to perform a three-dimensional interpolation
for the internal grid coordinates of a sub-domain; it
is used in three-dimensional cases when internal
points of a certain shape need smoothing; that
shape is then declared as a sub-domain over which
trans-finite or Laplace solver is used to perform
interpolation.
In this example 'Set internal points of a block'
option is used to distribute grid within a cube
that has been deformed by a half-cylinder.
CT1=TEXT(Sub-domain_smoothing B542
#$b002
*
Set the grid type to BFC
CT1=BFC=T
#$b002
*
REAL(DIAMETER,SIDE,RT1)
Enter cylinder diameter (default 0.5m)
READVDU(diameter,real,0.5)
LOOP
LOK=T
Enter length of cube side (default 1.0m)
READVDU(side,real,1.0)
RT1=DIAMETER+(SIDE/3)
if(side.lt.rt1) then
MESG(Please, cube side must be greater than :rt1:
LOK=F
endif
if(lok) exit
ENDLOOP
rt1=side/3
INTEGER(NAB,NBC)
Input data used in this example:
MESG( cylinder diameter = :diameter:
MESG( cube side = :side:
*
-- Create half-cylinder --
Define points A,B,C and D
MESG(Point A positioned at (0,0,:rt1:)
MESG(GSET(P,A,0,0,:rt1:)
GSET(P,A,0,0,rt1)
MESG(Point B positioned at (0,0,:rt1:+diameter)
MESG(GSET(P,B,0,0,:rt1:+diameter)
GSET(P,B,0,0,RT1+DIAMETER)
MESG(Point C positioned at (side,0,:rt1:+diameter))
MESG(GSET(P,C,side,0,:rt1:+diameter)
GSET(P,C,side,0,rt1+diameter)
MESG(Point D positioned at (side,0,:rt1:)
CT1=GSET(P,D,SIDE,0,:rt1:)
#$b003
*
Draw two arc lines(AB & CD) and two straight
lines (BC & DA) to create a half-cylinder.
Lines AB&CD must have equal number of cells, as
well as lines BC&DA.
Enter number of cells for AB(&CD) lines (default 10)
readvdu(nab,int,10)
Enter power distribution (for symmetric power-law
precede the number with S. (default 1.0)
readvdu(pwr1,char,1.0)
MESG(Arc AB (A-B) goes through point (0,diameter/2,:rt1:+diameter/2)
MESG( GSET(L,AB,A,B,nab,pwr1,ARC,0,diameter/2,:rt1:+(diameter/2))
GSET(L,AB,A,B,nab,pwr1,ARC,0,diameter/2,rt1+(diameter/2))
Enter number of cells for BC(&DA) lines (default 10)
readvdu(nbc,int,10)
Enter power distribution (for symmetric power-law
precede the number with S. (default 1.0)
readvdu(pwr2,char,1.0)
GSET(L,BC,B,C,nbc,pwr2)
GSET(L,BC,B,C,nbc,pwr2)
Arc CD (C-D) goes through point
MESG((side,diameter/2,:rt1:+diameter/2)
GSET(L,CD,C,D,nab,pwr1,ARC,side,
MESG(diameter/2,:rt1:+(diameter/2))
GSET(L,CD,C,D,nab,pwr1,ARC,side,diameter/2,rt1+(diameter/2))
CT1=GSET(L,DA,D,A,nbc,pwr2)
#$B004
*
Define frame ABCD (half-cylinder) which has corner points
A,B,C,D
CT1=GSET(F,ABCD,A,-,B,-,C,-,D,-)
#$b003
*
nx=nbc
Enter number of cells for J direction (default 10)
readvdu(ny,int,10)
it1=nab+4
MESG(Enter number of cells for K direction (default :it1:)
readvdu(nz,int,it1)
if(nz.le.nab+3) then
nz=nab+4
endif
Set the BFC grid dimension as nx x ny x nz cells with
cube dimensions (reference length) side x side x side.
CT1=GSET(D,nx,ny,nz,side,side,side)
#$B004
*
Match grid plane J1 on frame ABCD using the
trans-finite method
it1=(nz-nab)/2
CT1=GSET(M,ABCD,+K+I,1,1,:it1:+1,TRANS)
#$B004
*
Cube grid lines now pass through the cylinder. In
order to fit the grid to the new shape, the whole
domain is defined as 'sub-domain block' over which
Laplace solver is used to make internal grid
as orthogonal as possible.
CT1=GSET(B,1,nx,1,ny,1,nz,LAP15.TTNNTT)
#$B004
enddis