67 CHARACTER(CHRLEN) :: &
68 RCSIdentString =
'$RCSfile: RFLU_ModRocstarTools.F90,v $ $Revision: 1.29 $'
159 TYPE(t_region
),
POINTER :: pregion
165 INTEGER :: cntr,errorflag,ifl,ipatch,ivg,ivl
166 INTEGER :: coordtrans1,coordtrans2,coordlong,ldir
167 INTEGER :: bocount, botot, cvcount, cvtot,info
168 REAL(RFREAL) :: caseradius,caseradius2,radius2,theta,
x,
y,
z
169 REAL(RFREAL) :: ellipsc,ellipslong,ellipstrans,ellipslong2,ellipstrans2
170 REAL(RFREAL) :: casetip, spherecenter, longc, ignhole
171 REAL(RFREAL) :: backx, backy, tolerance, dispmag
172 REAL(RFREAL) :: lminplane, lmaxplane, t1minplane
173 REAL(RFREAL) :: t1maxplane, t2minplane, t2maxplane
174 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pxyz,pxyzold
176 TYPE(t_grid),
POINTER :: pgrid,pgridold
177 TYPE(t_patch),
POINTER :: ppatch
183 global => pregion%global
186 'RFLU_ModRocstarTools.F90')
188 IF ( global%myProcid == masterproc .AND. &
189 global%verbLevel >= verbose_high )
THEN
190 WRITE(stdout,
'(A,1X,A)') solver_name,
'Constraining displacements...'
193 pgrid => pregion%grid
201 coordtrans1 = global%cnstrCoordT1
202 coordtrans2 = global%cnstrCoordT2
203 coordlong = global%cnstrCoordL
205 ldir = nint(
sign(1.0_rfreal,global%cnstrAftEnd - global%cnstrHeadEnd))
212 caseradius = global%cnstrCaseRad
213 caseradius2 = caseradius*caseradius
219 ellipslong = global%cnstrEllipsL
220 ellipstrans = global%cnstrEllipsT
221 ellipslong2 = 1.0_rfreal/(ellipslong * ellipslong)
222 ellipstrans2 = 1.0_rfreal/(ellipstrans * ellipstrans)
223 ellipsc = global%cnstrHeadEnd
231 backx = global%cnstrAftEnd
232 backy = global%cnstrNozY
233 tolerance = global%cnstrTol2
234 spherecenter = backx - ldir*
sqrt(caseradius2 - backy**2)
239 lminplane = global%cnstrLMinPlane
240 lmaxplane = global%cnstrLMaxPlane
241 t1minplane = global%cnstrT1MinPlane
242 t1maxplane = global%cnstrT1MaxPlane
243 t2minplane = global%cnstrT2MinPlane
244 t2maxplane = global%cnstrT2MaxPlane
256 DO ipatch = 1,pgrid%nPatches
257 ppatch => pregion%patches(ipatch)
264 DO ivl = 1,ppatch%nBVert
267 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
268 y = pxyz(coordtrans1,ivg) + ppatch%dXyz(coordtrans1,ivl)
269 z = pxyz(coordtrans2,ivg) + ppatch%dXyz(coordtrans2,ivl)
275 IF( ( ppatch%bcCoupled == bc_burning ) .AND. &
276 ( (ldir > 0 .AND.
x > spherecenter ) .OR. &
277 (ldir < 0 .AND.
x < spherecenter ) ) )
THEN
288 ELSE IF( ( ldir > 0 .AND.
x < ellipsc) .OR. &
289 ( ldir < 0 .AND.
x > ellipsc) )
THEN
293 radius2 =(
x*
x*ellipslong2+
y*
y*ellipstrans2+
z*
z*ellipstrans2)*&
312 IF(radius2 > caseradius2)
THEN
318 dispmag =
sqrt(ppatch%dXyz(coordlong,ivl)**2 + &
319 ppatch%dXyz(coordtrans1,ivl)**2 + &
320 ppatch%dXyz(coordtrans2,ivl)**2 )
321 IF(dispmag > 1.0e-12)
THEN
323 cvcount = cvcount + 1
324 theta =
sqrt(caseradius2/radius2)
342 ppatch%dXyz(coordlong,ivl) =
x - pxyz(coordlong,ivg)
343 ppatch%dXyz(coordtrans1,ivl) =
y - pxyz(coordtrans1,ivg)
344 ppatch%dXyz(coordtrans2,ivl) =
z - pxyz(coordtrans2,ivg)
349 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
353 dispmag =
sqrt(ppatch%dXyz(coordlong,ivl)**2 + &
354 ppatch%dXyz(coordtrans1,ivl)**2 + &
355 ppatch%dXyz(coordtrans2,ivl)**2 )
356 IF(dispmag > 1.0e-12)
THEN
358 IF(
x < lminplane)
x = lminplane
359 IF(
x > lmaxplane)
x = lmaxplane
360 IF(
y < t1minplane)
y = t1minplane
361 IF(
y > t1maxplane)
y = t1maxplane
362 IF(
z < t2minplane)
z = t2minplane
363 IF(
z > t2maxplane)
z = t2maxplane
394 ppatch%dXyz(coordlong,ivl) =
x - pxyz(coordlong,ivg)
395 ppatch%dXyz(coordtrans1,ivl) =
y - pxyz(coordtrans1,ivg)
396 ppatch%dXyz(coordtrans2,ivl) =
z - pxyz(coordtrans2,ivg)
405 IF ( ppatch%bcCoupled == bc_burning )
THEN
406 DO ifl = 1,ppatch%nBTris
410 ivg = ppatch%bTri2v(ivl,ifl)
412 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
413 y = pxyz(coordtrans1,ivg) + ppatch%dXyz(coordtrans1,ivl)
414 z = pxyz(coordtrans2,ivg) + ppatch%dXyz(coordtrans2,ivl)
416 IF( (ldir > 0 .AND.
x > spherecenter) .OR. &
417 (ldir < 0 .AND.
x < spherecenter) )
THEN
420 ELSE IF ( (ldir > 0 .AND.
x < ellipsc) .OR. &
421 (ldir < 0 .AND.
x > ellipsc) )
THEN
423 radius2 = (
x*
x*ellipslong2+
y*
y*ellipstrans2+
z*
z*ellipstrans2) &
428 IF ( radius2 >= (caseradius2-global%cnstrTol1))
THEN
431 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
432 IF(
x <= lminplane)
THEN
434 ELSE IF(
x >= lmaxplane)
THEN
436 ELSE IF(
y <= t1minplane)
THEN
438 ELSE IF(
y >= t1maxplane)
THEN
440 ELSE IF(
z <= t2minplane)
THEN
442 ELSE IF(
z >= t2maxplane)
THEN
449 IF ( cntr == 3 )
THEN
450 bocount = bocount + 1
451 ppatch%bflag(ifl) = 0
452 ppatch%mdotAlp(ifl) = 0.0_rfreal
462 DO ifl = 1,ppatch%nBQuads
466 ivg = ppatch%bQuad2v(ivl,ifl)
468 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
469 y = pxyz(coordtrans1,ivg) + ppatch%dXyz(coordtrans1,ivl)
470 z = pxyz(coordtrans2,ivg) + ppatch%dXyz(coordtrans2,ivl)
472 IF( (ldir > 0 .AND.
x > spherecenter) .OR. &
473 (ldir < 0 .AND.
x < spherecenter) )
THEN
476 ELSE IF ( (ldir > 0 .AND.
x < ellipsc) .OR. &
477 (ldir > 0 .AND.
x < ellipsc) )
THEN
479 radius2 = (
x*
x*ellipslong2+
y*
y*ellipstrans2+
z*
z*ellipstrans2) &
484 IF ( radius2 >= (caseradius2-global%cnstrTol1))
THEN
487 x = pxyz(coordlong,ivg) + ppatch%dXyz(coordlong,ivl)
488 IF(
x <= lminplane)
THEN
490 ELSE IF(
x >= lmaxplane)
THEN
492 ELSE IF(
y <= t1minplane)
THEN
494 ELSE IF(
y >= t1maxplane)
THEN
496 ELSE IF(
z <= t2minplane)
THEN
498 ELSE IF(
z >= t2maxplane)
THEN
504 IF ( cntr == 4 )
THEN
505 bocount = bocount + 1
506 ppatch%bflag(ifl+ppatch%nBTris) = 0
507 ppatch%mdotAlp(ifl+ppatch%nBTris) = 0.0_rfreal
519 IF (global%checkLevel == check_high)
THEN
522 CALL mpi_reduce(bocount,botot,1,mpi_integer,mpi_sum, &
523 masterproc,global%mpiComm,global%error)
524 IF ( global%error /= err_none )
THEN
525 CALL
errorstop(global,err_mpi_trouble,__line__)
527 CALL mpi_reduce(cvcount,cvtot,1,mpi_integer,mpi_sum, &
528 masterproc,global%mpiComm,global%error)
529 IF ( global%error /= err_none )
THEN
530 CALL
errorstop(global,err_mpi_trouble,__line__)
532 IF ( global%myProcid == masterproc .AND. &
533 global%verbLevel >= verbose_high)
THEN
534 WRITE(stdout,
'(A,3X,A,1X,I9)') solver_name, &
535 'Total number of constrained nodes:',cvtot
536 WRITE(stdout,
'(A,3X,A,1X,I9)') solver_name, &
537 'Total number of burned out faces:',botot
541 IF ( global%myProcid == masterproc .AND. &
542 global%verbLevel >= verbose_high )
THEN
543 WRITE(stdout,
'(A,1X,A)') solver_name,
'Constraining displacements done.'
565 TYPE(t_region
),
POINTER :: pregion
571 INTEGER :: cntr,errorflag,ifl,ipatch,ivg,ivl
572 INTEGER :: coordtrans1,coordtrans2,coordlong,ldir
573 INTEGER :: bocount, botot, cvcount, cvtot,info
574 REAL(RFREAL) :: caseradius,caseradius2,radius2,theta,
x,
y,
z
575 REAL(RFREAL) :: ellipsc,ellipslong,ellipstrans,ellipslong2,ellipstrans2
576 REAL(RFREAL) :: casetip, spherecenter, longc, ignhole
577 REAL(RFREAL) :: backx, backy, tolerance
578 REAL(RFREAL) :: lminplane, lmaxplane, t1minplane
579 REAL(RFREAL) :: t1maxplane, t2minplane, t2maxplane
580 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pxyz,pxyzold
582 TYPE(t_grid),
POINTER :: pgrid,pgridold
583 TYPE(t_patch),
POINTER :: ppatch
589 global => pregion%global
592 'RFLU_ModRocstarTools.F90')
594 IF ( global%myProcid == masterproc .AND. &
595 global%verbLevel >= verbose_high )
THEN
596 WRITE(stdout,
'(A,1X,A)') solver_name,
'Initializing BFLAG...'
599 pgrid => pregion%grid
606 IF(global%cnstrCaseRad > 0)
THEN
607 coordtrans1 = global%cnstrCoordT1
608 coordtrans2 = global%cnstrCoordT2
609 coordlong = global%cnstrCoordL
610 ldir = nint(
sign(1.0_rfreal,global%cnstrAftEnd - global%cnstrHeadEnd))
617 caseradius = global%cnstrCaseRad
618 caseradius2 = caseradius*caseradius
624 ellipslong = global%cnstrEllipsL
625 ellipstrans = global%cnstrEllipsT
626 ellipslong2 = 1.0_rfreal/(ellipslong * ellipslong)
627 ellipstrans2 = 1.0_rfreal/(ellipstrans * ellipstrans)
628 ellipsc = global%cnstrHeadEnd
636 backx = global%cnstrAftEnd
637 backy = global%cnstrNozY
638 tolerance = global%cnstrTol2
639 spherecenter = backx - ldir*
sqrt(caseradius2 - backy**2)
644 lminplane = global%cnstrLMinPlane
645 lmaxplane = global%cnstrLMaxPlane
646 t1minplane = global%cnstrT1MinPlane
647 t1maxplane = global%cnstrT1MaxPlane
648 t2minplane = global%cnstrT2MinPlane
649 t2maxplane = global%cnstrT2MaxPlane
661 DO ipatch = 1,pgrid%nPatches
662 ppatch => pregion%patches(ipatch)
668 IF ( ppatch%bcCoupled == bc_burning )
THEN
669 DO ifl = 1,ppatch%nBTris
673 ivg = ppatch%bTri2v(ivl,ifl)
675 x = pxyz(coordlong,ivg)
676 y = pxyz(coordtrans1,ivg)
677 z = pxyz(coordtrans2,ivg)
679 IF( (ldir > 0 .AND.
x > spherecenter) .OR. &
680 (ldir < 0 .AND.
x < spherecenter) )
THEN
683 ELSE IF ( (ldir > 0 .AND.
x < ellipsc) .OR. &
684 (ldir < 0 .AND.
x > ellipsc) )
THEN
686 radius2 = (
x*
x*ellipslong2+
y*
y*ellipstrans2+
z*
z*ellipstrans2) &
691 IF ( radius2 >= (caseradius2-global%cnstrTol1))
THEN
694 x = pxyz(coordlong,ivg)
695 IF(
x <= lminplane)
THEN
697 ELSE IF(
x >= lmaxplane)
THEN
699 ELSE IF(
y <= t1minplane)
THEN
701 ELSE IF(
y >= t1maxplane)
THEN
703 ELSE IF(
z <= t2minplane)
THEN
705 ELSE IF(
z >= t2maxplane)
THEN
712 IF ( cntr == 3 )
THEN
713 bocount = bocount + 1
714 ppatch%bflag(ifl) = 0
715 ppatch%mdotAlp(ifl) = 0.0_rfreal
717 ppatch%bflag(ifl) = 1
725 DO ifl = 1,ppatch%nBQuads
729 ivg = ppatch%bQuad2v(ivl,ifl)
731 x = pxyz(coordlong,ivg)
732 y = pxyz(coordtrans1,ivg)
733 z = pxyz(coordtrans2,ivg)
735 IF( (ldir > 0 .AND.
x > spherecenter) .OR. &
736 (ldir < 0 .AND.
x < spherecenter) )
THEN
739 ELSE IF ( (ldir > 0 .AND.
x < ellipsc) .OR. &
740 (ldir < 0 .AND.
x < ellipsc) )
THEN
742 radius2 = (
x*
x*ellipslong2+
y*
y*ellipstrans2+
z*
z*ellipstrans2) &
747 IF ( radius2 >= (caseradius2-global%cnstrTol1))
THEN
750 x = pxyz(coordlong,ivg)
751 IF(
x <= lminplane)
THEN
753 ELSE IF(
x >= lmaxplane)
THEN
755 ELSE IF(
y <= t1minplane)
THEN
757 ELSE IF(
y >= t1maxplane)
THEN
759 ELSE IF(
z <= t2minplane)
THEN
761 ELSE IF(
z >= t2maxplane)
THEN
767 IF ( cntr == 4 )
THEN
768 bocount = bocount + 1
769 ppatch%bflag(ifl+ppatch%nBTris) = 0
770 ppatch%mdotAlp(ifl+ppatch%nBTris) = 0.0_rfreal
772 ppatch%bflag(ifl) = 1
782 IF (global%checkLevel == check_high)
THEN
784 CALL mpi_reduce(bocount,botot,1,mpi_integer,mpi_sum, &
785 masterproc,global%mpiComm,global%error)
786 IF ( global%error /= err_none )
THEN
787 CALL
errorstop(global,err_mpi_trouble,__line__)
789 IF ( global%myProcid == masterproc .AND. &
790 global%verbLevel >= verbose_high)
THEN
791 WRITE(stdout,
'(A,3X,A,1X,I9)') solver_name, &
792 'Total number of burned out faces:',botot
798 IF ( global%myProcid == masterproc .AND. &
799 global%verbLevel >= verbose_high )
THEN
800 WRITE(stdout,
'(A,1X,A)') solver_name,
'Initializing BFLAG done.'
841 TYPE(t_region
),
DIMENSION(:),
POINTER :: regions
847 CHARACTER(CHRLEN) :: winname
848 INTEGER :: errorflag,icg,ipatch,ireg,ivg,ivl
849 INTEGER :: handledisp,handleoption,handlepmesh,handlesmooth
850 REAL(RFREAL) :: disptot,dispmax
851 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pdisp,prhs,pxyz,pxyzold
853 TYPE(t_grid),
POINTER :: pgrid,pgridold
854 TYPE(t_patch),
POINTER :: ppatch
855 TYPE(t_region
),
POINTER :: pregion
861 global => regions(1)%global
864 'RFLU_ModRocstarTools.F90')
866 IF ( global%myProcid == masterproc .AND. &
867 global%verbLevel >= verbose_high )
THEN
868 WRITE(stdout,
'(A,1X,A)') solver_name,
'Moving grid...'
875 winname = trim(global%volWinName)
877 handlesmooth = com_get_function_handle(
'Rocflu-MOP.smooth')
878 handlepmesh = com_get_attribute_handle(trim(winname)//
'.pmesh')
879 handledisp = com_get_attribute_handle(trim(winname)//
'.disp')
881 handleoption = com_get_function_handle(
'Rocflu-MOP.set_value')
882 CALL com_call_function(handleoption,2,
'inverted',1)
892 IF ( global%solverType .NE. solv_implicit_nk )
THEN
893 DO ireg = 1,global%nRegionsLocal
894 pgrid => regions(ireg)%grid
895 pgridold => regions(ireg)%gridOld
897 DO icg = 1,pgrid%nCellsTot
898 pgridold%vol(icg) = pgrid%vol(icg)
901 DO ivg = 1,pgrid%nVertTot
902 pgridold%xyz(xcoord,ivg) = pgrid%xyz(xcoord,ivg)
903 pgridold%xyz(ycoord,ivg) = pgrid%xyz(ycoord,ivg)
904 pgridold%xyz(zcoord,ivg) = pgrid%xyz(zcoord,ivg)
917 DO ireg = 1,global%nRegionsLocal
918 pgrid => regions(ireg)%grid
919 pgridold => regions(ireg)%gridOld
923 pxyzold => pgridold%xyz
925 DO ivg = 1,pgrid%nVertTot
926 pdisp(xcoord,ivg) = 0.0_rfreal
927 pdisp(ycoord,ivg) = 0.0_rfreal
928 pdisp(zcoord,ivg) = 0.0_rfreal
931 DO ipatch = 1,pgrid%nPatches
932 ppatch => regions(ireg)%patches(ipatch)
934 DO ivl = 1,ppatch%nBVert
937 pxyz(xcoord,ivg) = pxyzold(xcoord,ivg) + ppatch%dXyz(xcoord,ivl)
938 pxyz(ycoord,ivg) = pxyzold(ycoord,ivg) + ppatch%dXyz(ycoord,ivl)
939 pxyz(zcoord,ivg) = pxyzold(zcoord,ivg) + ppatch%dXyz(zcoord,ivl)
943 pdisp(xcoord,ivg) = ppatch%dXyz(xcoord,ivl)
944 pdisp(ycoord,ivg) = ppatch%dXyz(ycoord,ivl)
945 pdisp(zcoord,ivg) = ppatch%dXyz(zcoord,ivl)
949 IF (global%checkLevel == check_high)
THEN
950 DO ipatch = 1,pgrid%nPatches
951 ppatch => regions(ireg)%patches(ipatch)
953 DO ivl = 1,ppatch%nBVert
956 disptot = pdisp(xcoord,ivg)*pdisp(xcoord,ivg) + &
957 pdisp(ycoord,ivg)*pdisp(ycoord,ivg) + &
958 pdisp(zcoord,ivg)*pdisp(zcoord,ivg)
959 IF(disptot > dispmax)
THEN
969 IF (global%checkLevel == check_high)
THEN
971 CALL mpi_reduce(disptot,dispmax,1,mpi_rfreal,mpi_max, &
972 masterproc,global%mpiComm,global%error)
973 IF ( global%error /= err_none )
THEN
974 CALL
errorstop(global,err_mpi_trouble,__line__)
976 IF ( global%myProcid == masterproc .AND. &
977 global%verbLevel >= verbose_high)
THEN
978 dispmax =
sqrt(dispmax)
979 WRITE(stdout,
'(A,3X,A,1X,E13.6)') solver_name, &
980 'Maximum nodal displacement from Rocstar:',dispmax
988 IF ( global%myProcid == masterproc .AND. &
989 global%verbLevel >= verbose_high )
THEN
990 WRITE(stdout,
'(A,1X,A)') solver_name,
'Smoothing grid with Rocmop...'
993 CALL com_call_function(handlesmooth,2,handlepmesh,handledisp)
995 CALL mpi_barrier(global%mpiComm,global%error)
996 IF ( global%myProcid == masterproc .AND. &
997 global%verbLevel >= verbose_high )
THEN
998 WRITE(stdout,
'(A,1X,A)') solver_name,
'Done smoothing grid with Rocmop.'
1003 IF (global%checkLevel == check_high)
THEN
1004 DO ireg = 1,global%nRegionsLocal
1005 pgrid => regions(ireg)%grid
1007 DO ipatch = 1,pgrid%nPatches
1008 ppatch => regions(ireg)%patches(ipatch)
1009 DO ivl = 1,ppatch%nBVert
1010 ivg = ppatch%bv(ivl)
1011 pdisp(xcoord,ivg) = 0.0_rfreal
1012 pdisp(ycoord,ivg) = 0.0_rfreal
1013 pdisp(zcoord,ivg) = 0.0_rfreal
1014 disptot = pdisp(xcoord,ivg)*pdisp(xcoord,ivg) + &
1015 pdisp(ycoord,ivg)*pdisp(ycoord,ivg) + &
1016 pdisp(zcoord,ivg)*pdisp(zcoord,ivg)
1017 IF(disptot > dispmax)
THEN
1024 CALL mpi_reduce(disptot,dispmax,1,mpi_rfreal,mpi_max, &
1025 masterproc,global%mpiComm,global%error)
1026 IF ( global%error /= err_none )
THEN
1027 CALL
errorstop(global,err_mpi_trouble,__line__)
1029 IF (dispmax /= 0.0)
THEN
1030 IF ( global%myProcid == masterproc .AND. &
1031 global%verbLevel >= verbose_none)
THEN
1032 dispmax =
sqrt(dispmax)
1033 WRITE(stdout,
'(A,3X,A,1X,E13.6)') solver_name, &
1034 '***WARNING - NONZERO SURFACE DISP FROM ROCMOP:',&
1043 DO ireg = 1,global%nRegionsLocal
1044 pgrid => regions(ireg)%grid
1048 DO ivg = 1,pgrid%nVertTot
1049 pxyz(xcoord,ivg) = pxyz(xcoord,ivg) + pdisp(xcoord,ivg)
1050 pxyz(ycoord,ivg) = pxyz(ycoord,ivg) + pdisp(ycoord,ivg)
1051 pxyz(zcoord,ivg) = pxyz(zcoord,ivg) + pdisp(zcoord,ivg)
1055 IF (global%checkLevel == check_high)
THEN
1059 DO ireg = 1,global%nRegionsLocal
1060 pgrid => regions(ireg)%grid
1063 DO ivg = 1,pgrid%nVertTot
1064 disptot = pdisp(xcoord,ivg)*pdisp(xcoord,ivg)+ &
1065 pdisp(ycoord,ivg)*pdisp(ycoord,ivg)+ &
1066 pdisp(zcoord,ivg)*pdisp(zcoord,ivg)
1067 IF(disptot > dispmax)
THEN
1075 CALL mpi_reduce(disptot,dispmax,1,mpi_rfreal,mpi_max, &
1076 masterproc,global%mpiComm,global%error)
1077 IF ( global%error /= err_none )
THEN
1078 CALL
errorstop(global,err_mpi_trouble,__line__)
1080 IF ( global%myProcid == masterproc .AND. &
1081 global%verbLevel >= verbose_high)
THEN
1082 dispmax =
sqrt(dispmax)
1083 WRITE(stdout,
'(A,3X,A,1X,E13.6)') solver_name, &
1084 'Maximum nodal displacement from Rocmop:',dispmax
1093 IF ( global%myProcid == masterproc .AND. &
1094 global%verbLevel >= verbose_high )
THEN
1095 WRITE(stdout,
'(A,1X,A)') solver_name,
'Moving grid done.'
static SURF_BEGIN_NAMESPACE double sign(double x)
void int int REAL REAL * y
subroutine registerfunction(global, funName, fileName)
void int int int REAL REAL REAL * z
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)