Module name: su_exnmg
____________
Module declaration: GLOBAL GEOMETRY MODULE su_exnmg
___________________
Module description:
__________________
su_exnmg
_________
Store a VARKON CUB_SUR surface as a NMG bicubic surface.
Output: A text file surname.F07 in the bicubic F07 (NMG) format
----- Description of the data in the F07 file -------------------
The order of the patches:
-------------------------
IU=1,IV=NV IU=NU,IV=NV
-----------------------------------------
!
! ! !
! ! !
! 13
! 14 ! 15 ! 16
! 17 ! 18 !
-----------------------------------------
!
! ! !
! ! !
!
7 ! 8
! 9 ! 10
! 11 ! 12 !
----------------------------------------
!
! ! !
! ! !
!
1 ! 2
! 3 !
4 ! 5
! 6 !
----------------------------------------
IU=1,IV=1 IU=NU,IV=1
(Loop index iu= IU-1 and iv= IV-1 in program below)
Surface data header:
-------------------
Surface name Total_number_of_patches (Line 1)
YTA/1 594 ( Ex. )
Patch data header:
------------------
I1
I2 I3 I4
I5 I6 I7
I8 I9 I10
(Line 2)
1 48 1 0 1001 0 0 34 19 0 ( Ex. )
where
I1 = 1 (always one)
I2 = Number of records (coefficients) = 48 for bicubic patch
I3 = Patch number in file
I4 = 0 (always zero)
I5 = Surface type = 1001 for bicubic surface
I6 = 0
I7 = 0
I8 = Number of U lines in the surface
I9 = Number of V lines in the surface
I10 = 0 (always zero)
The order of the coefficients for a patch:
-----------------------------------------
Line Coefficients ( for ) Coefficients ( for )
1 a00x a00y a00z (1.0 * 1.0 ) a10x a10y a10z (U * 1.0 )
2 a20x a20y a20z (U**2 * 1.0 ) a30x a30y a30z (U**3 * 1.0 )
3 a01x a01y a01z (1.0 * V ) a11x a11y a11z (U * V )
4 a21x a21y a21z (U**2 * V ) a31x a31y a31z (U**3 * V )
5 a02x a02y a02z (1.0 * V**2) a12x a12y a12z (U * V**2)
6 a22x a22y a22z (U**2 * V**2) a32x a32y a32z (U**3 * V**2)
7 a03x a03y a03z (1.0 * V**3) a13x a13y a13z (U * V**3)
8 a23x a23y a23z (U**2 * V**3) a33x a33y a34z (U**3 * V**3)
... empty line (no data) ...
Order of coefficients in VARKON's GETCUBP output vector
_______________________________________________________
data( 1) = a00x data( 2) = a00y data( 3) = a00z
data( 4) = a01x data( 5) = a01y data( 6) = a01z
data( 7) = a02x data( 8) = a02y data( 9) = a02z
data(10) = a03x data(11) = a03y data(12) = a03z
data(13) = a10x data(14) = a10y data(15) = a10z
data(16) = a11x data(17) = a11y data(18) = a11z
data(19) = a12x data(20) = a12y data(21) = a12z
data(22) = a13x data(23) = a13y data(24) = a13z
data(25) = a20x data(26) = a20y data(27) = a20z
data(28) = a21x data(29) = a21y data(30) = a21z
data(31) = a22x data(32) = a22y data(33) = a22z
data(34) = a23x data(35) = a23y data(36) = a23z
data(37) = a30x data(38) = a30y data(39) = a30z
data(40) = a31x data(41) = a31y data(42) = a31z
data(43) = a32x data(44) = a32y data(45) = a32z
data(46) = a33x data(47) = a33y data(48) = a33z
The function checks that there are no NULL patches in the surface.
The parameterization is also checked. Global parameters shall be
integers defined by the patch adress IU,IV.
------
Algorithm
1. Initializations and check of input data
Open file. Exit with error if file already exists on
the active JOB directory
Retrieve surface type and number of patches in U and V direction
Write header
Write patch data
Close output file
Module parameters:
___________________
REF s_id >"@t16 Select a CUB_SUR surface";
STRING surname*24:="MySurf" >
"Surface name (will also be file name with .F07 added)" );
No called modules
This document was created 2006-04-01 by module m_extdoc1