*
#$b001
display
*
This example Q1 demonstrates the use line-curve
option for BFC-type grid. This option is used to
create a spline curve between two end-points through
the user-set points, and with the user-set starting
end ending curvature.
In this example, line-curvature is used to create
car-body-like profile which is then copied to
create simplified car body.
CT1=TEXT(CURVATURE_FOR_CAR_BODY B541
#$b002
*
Set the grid type to BFC
CT1=BFC=T
#$b002
*
REAL(LENGTH,CL,HEIGHT,WIDTH)
Enter the overall length of the car (default 3.85m)
READVDU(length,real,3.85)
INTEGER(NAB,NBC)
Characteristic length(CL) is calculated as length/55
Input data used in this example:
CL=LENGTH/55
HEIGHT=20*CL
WIDTH=22*CL
MESG( car length = :length: CL=:cl:
MESG( car height = CL*20 = :height:
MESG( car width = CL*22 = :width:
*
-- Create a car profile --
Define points A,B,C and D
Point A positioned at (0,0,0)
GSET(P,A,0,0,0)
GSET(P,A,0,0,0)
Point B positioned at (0,1.05,0.84)
GSET(P,B,0,cl*15,cl*12)
GSET(P,B,0,1.0500E+00,8.4000E-01)
GSET(P,C,0,1.9600E+00,1.4000E+00)
Point C positioned at (0,1.96,1.4)
GSET(P,C,0,cl*28,cl*20)
Point D positioned at (0,3.85,0)
CT1=GSET(P,D,0,length,0)
#$b003
*
Draw four curves (AB,BC,CD,DA) from A to D
to create a car-profile.
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)
Start a spline curve C1 at point A.
GSET(V,C1,S,A,SPLINE)
GSET(V,C1,S,A,SPLINE)
Start with a zero-curvature; ie. allow program
to fit curve between points and decide curvature.
GSET(V,0,0,0)
GSET(V,0,0,0)
Define point on a curve (0,0.07,0.35)
GSET(V,0,cl*1,cl*5)
GSET(V,0,7.0000E-02,3.5000E-01)
Define point on a curve (0,0.21,0.63)
GSET(V,0,cl*3,cl*9)
GSET(V,0,2.1000E-01,6.3000E-01)
End spline curve at point B.
GSET(V,C1,E,B)
GSET(V,C1,E,B)
MESG(Define line AB, between points A and B with :nab:
uniformly distributed cells, using curve C1.
CT1=GSET(L,AB,A,B,nab,1.0CRVC1)
#$b003
Enter number of cells for BC(&DA) lines (default 5)
readvdu(nbc,int,5)
Start a spline curve C2 at point B.
GSET(V,C2,S,B,SPLINE)
GSET(V,C2,S,B,SPLINE)
Define point on a curve (0,1.33,1.12)
GSET(V,0,cl*19,cl*16)
GSET(V,0,1.3300E+00,1.1200E+00)
Define point on a curve (0,1.61,1.3)
GSET(V,0,cl*23,cl*18.5))
GSET(V,0,1.6100E+00,1.3000E+00)
End spline curve at point C.
GSET(V,C2,E,C)
GSET(V,C2,E,C)
MESG(Define line BC, between points B and C with :nbc:
uniformly distributed cells, using curve C2.
CT1=GSET(L,BC,B,C,nbc,1.0CRVC2)
#$b003
Start a spline curve C3 at point C.
GSET(V,C3,S,C,SPLINE)
GSET(V,C3,S,C,SPLINE)
Define point on a curve (0,2.66,1.3)
GSET(V,0,cl*38,cl*18.5)
GSET(V,0,2.6600E+00,1.3000E+00)
Define point on a curve (0,3.29,0.98)
GSET(V,0,cl*47,cl*14)
GSET(V,0,3.2900E+00,9.8000E-01)
Define point on a curve (0,3.64,0.63)
GSET(V,0,cl*52,cl*9)
GSET(V,0,3.6400E+00,6.3000E-01)
Define point on a curve (0,3.78,0.35)
GSET(V,0,cl*54,cl*5)
GSET(V,0,3.7800E+00,3.5000E-01)
End spline curve at point D.
GSET(V,C3,E,D)
GSET(V,C3,E,D)
MESG(Define line CD, between points C and D with :nab:
uniformly distributed cells, using curve C3.
CT1=GSET(L,CD,C,D,nab,1.0CRVC3)
#$b003
MESG(Define straight line between points D and A with :nbc:
uniformly distributed cells.
GSET(L,DA,D,A,nbc,1.0)
GSET(L,DA,D,A,NBC,1.0)
Define frame ABCD (car profile) which has corner points
A,B,C,D
CT1=GSET(F,ABCD,A,-,B,-,C,-,D,-)
#$b003
*
Enter number of cells in I (car-width) direction (def. 10)
readvdu(nx,int,10)
Set the BFC grid dimension as nx x nbc x nab cells with
reference length width x length x height.
CT1=GSET(D,nx,nbc,nab,width,length,height)
#$B004
*
Match grid plane I1 on frame ABCD using the
trans-finite interpolation method
CT1=GSET(M,ABCD,+K+J,1,1,1,TRANS)
#$B004
*
it1=nx+1
MESG(Copy I:it1: plane from I1 plane by shifting it
with a distance (dx=width,dy=0,dz=0), including internal
planes;internal planes are uniformly distributed, hence
power is set to 1.
CT1=GSET(C,I:it1:,F,I1,1,nbc,1,nab,+,width,0,0,INC,1)
#$B004
enddis