*
#$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