* #$b001 display * This example Q1 demonstrates the use of Copy-Rotate option for BFC-type grid; it is used here to create S-bend of a tube. CT1=TEXT(COPY-ROTATE_EXAMPLE : B540 #$b002 * Set the grid type to BFC CT1=BFC=T #$b002 REAL(RADIUS,ROOT) Enter circle radius (default 0.25m); root=0.707*radius READVDU(radius,real,0.25) INTEGER(NAB,NBC) root=0.707*radius Input data used in this example: MESG( radius=:radius: root =:root: * Define points A,B,C and D GSET(P,A,0,0,0) Point A positioned at (0,0,0) GSET(P,A,0,0,0) Point B positioned at (0,radius,radius) GSET(P,B,0,radius,radius) GSET(P,B,0,RADIUS,RADIUS) GSET(P,C,0,RADIUS*2,0) Point C positioned at (0,radius*2,0) GSET(P,C,0,radius*2,0) Point D positioned at (0,radius,-radius) CT1=GSET(P,D,0,radius,-radius) #$b003 * Draw four arc lines (AB,BC,CD,DA) from A to D to create a circle. Lines AB&CD must have equal number of cells, as well as lines BC&DA. Power is set to 1.0, ie. cells are uniformly distributed. Enter number of cells for AB(&CD) lines (default 5) readvdu(nab,int,5) Arc AB (A-B) goes through point (0,radius-root,root) GSET(L,AB,A,B,nab,1.0,ARC,0,radius-root,root) GSET(L,AB,A,B,NAB,1.0,ARC,0,RADIUS-ROOT,ROOT) Enter number of cells for BC(&DA) lines (default 5) readvdu(nbc,int,5) Arc BC (B-C) goes through point (0,radius+root,root) GSET(L,BC,B,C,nbc,1.0,ARC,0,radius+root,root) GSET(L,BC,B,C,NBC,1.0,ARC,0,RADIUS+ROOT,ROOT) Arc CD (C-D) goes through point (0,radius+root,-root) GSET(L,CD,C,D,nab,1.0,ARC,0,radius+root,-root) GSET(L,CD,C,D,NAB,1.0,ARC,0,RADIUS+ROOT,-ROOT) Arc DA (D-A) goes through point (0,radius-root,-root) CT1=GSET(L,DA,D,A,nbc,1.0,ARC,0,radius-root,-root) #$b003 * Define frame ABCD (circle) which has corner points A,B,C,D CT1=GSET(F,ABCD,A,-,B,-,C,-,D,-) #$b003 * Enter number of cells for I direction (default 20) if(iqalib.ne.0) then + nx=0 ! set nx=0 so that readvdu will take default 20 endif readvdu(nx,int,20) MESG(Set the BFC grid dimension as :nx: x :nbc: x :nab: cells with reference length 1 x radius*2 x radius*2. CT1=GSET(D,nx,nbc,nab,1,radius*2,radius*2) #$B004 * Match grid plane I1 on frame ABCD using the trans-finite method CT1=GSET(M,ABCD,+K+J,1,1,1,TRANS) #$B004 * it2=nx/4 MESG(Copy I:it2: plane from I1 plane by shifting. REAL(SHIFT) Enter shifting distance; it will define a straight part of the tube (default radius*4) READVDU(SHIFT,REAL,4*RADIUS) Copy planes with a distance (dx=shift,dy=0,dz=0), including internal planes; internal planes are uniformly distributed, hence power is set to 1. CT1=GSET(C,I:it2:,F,I1,1,nbc,1,nab,+,shift,0,0,INC,1) #$B004 * it1=nx/2 MESG(Copy I:it1: plane from I:it2: plane by rotating it around Z axis located at X=shift, Y=-0.2 m, clock-wise by 90deg.(PI/2) Include internal planes and distribute them uniformly. CT1=GSET(C,I:it1:,F,I:it2:,1,nbc,1,nab CT1=:CT1:,RZ,-1.5700E+00,shift,-0.2,INC,1) #$B004 * it1=nx/2 it2=it1+it2 MESG(Copy I:it2: plane from I:it1: plane by rotating it around Z axis located at X(axis)=shift+radius*2+0.4, Y=-0.2 m, anti- clock-wise by 90deg.(PI/2). Include internal planes and distribute them uniformly. REAL(XAXIS);XAXIS=shift+radius*2+0.4 CT1=GSET(C,I:it2:,F,I:it1:,1,nbc,1,nab CT1=:CT1:,RZ,1.5700E+00,xaxis,-0.2,INC,1) #$B004 * it1=nx+1 MESG(Finish the shape by copying I:it1: plane from I:it2: plane by shifting it with a distance (shift,0,0), including internal planes, uniformly distributed. CT1=GSET(C,I:IT1:,F,I:IT2:,1,nbc,1,nab,+,shift,0,0,INC,1) #$B004 enddis