C PROGRAM S M O O T H C ********************* C C PROGRAM SMOOTH IS DESIGNED FOR GENERATION OF SMOOTH VELOCITY C INPUT DATA FOR PROGRAM SEIS88 OR OTHER PROGRAMS WITH THE SAME C STRUCTURE OF INPUT DATA FOR VELOCITY DISTRIBUTION. C C *************************************************************** C C A SHORT DESCRIPTION OF THE PROGRAM. C *********************************** C C PROGRAM SMOOTH TRANSFORMS AND SMOOTHES VELOCITY DATA DESCRI- C BING VELOCITY DISTRIBUTION IN ANY LAYER OF A 2-D LATERALLY VARY- C ING LAYERED MODEL. THE INPUT VELOCITIES MAY BE SPECIFIED AT C ARBITRARY DEPTHS ON VERTICAL LINES OF A 2-D RECTANGULAR NETWORK C COVERING THE LAYER. THESE DEPTHS MAY BE DIFFERENT FOR DIFFERENT C NETWORK LINES. PROGRAM SMOOTH RETURNS THE SMOOTHED VELOCITY C VALUES AT GRID POINTS OF THE 2-D RECTANGULAR NETWORK IN THE C FORM OF INPUT DATA FOR PROGRAM SEIS83 (FOR MM=0 OR 2, SEE DE- C SCRIPTION OF INPUT DATA IN SEIS88). C TWO TYPES OF DATA ARE MOST COMMONLY USED AS INPUT DATA FOR C PROGRAM SMOOTH: C A) GRAPHS OF VELOCITY DEPTH VARIATIONS FOR DIFFERENT X-COOR- C DINATES ALONG THE PROFILE. C B) MAPS OF VELOCITY ISOLINES. C C THE ALGORITHM USED IN THE PROGRAM SMOOTH FOR ANY LAYER CAN BE C DIVIDED INTO TWO STEPS: C A) IN THE FIRST STEP LINEAR INTERPOLATION (OR EXTRAPOLATION, C IF NECESSARY) IS USED ALONG VERTICAL LINES OF THE VELOCITY NET- C WORK TO DETERMINE THE VELOCITY VALUES AT THE GRID POINTS OF C THE RECTANGULAR NETWORK. C B) IN THE SECOND STEP, THE SMOOTHED SPLINE ALGORITHM IS AP- C PLIED TO SMOOTH DATA OBTAINED IN STEP 1. FOR THE DETAILED C DESCRIPTION OF THE ALGORITHM USED FOR SMOOTHED 2-D SPLINES C SEE: C V.PRETLOVA: BICUBIC SPLINE SMOOTHING OF TWO-DIMENSIONAL GEO- C PHYSICAL DATA. STUDIA GEOPH.ET GEOD.,20 (1976),168-177. C C FOR THE INSPECTION OF THE VELOCITY DISTRIBUTION GENERATED C BY THE PROGRAM SMOOTH FOR A LAYER, A PRINTER PLOT OF THE VELO- C CITY DISTRIBUTION IN THE LAYER MAY BE PRINTED ON THE LINE PRIN- C TER IN THE SAME WAY AS THE PRINTER PLOT OF THE WHOLE MODEL IN C PROGRAM SEIS88. FOR SPECIFIED RANGES OF VELOCITIES, DIFFERENT C DIGITS ARE PRINTED. IN THIS WAY, THE BOUNDARIES BETWEEN REGIONS C COVERED BY DIFFERENT DIGITS REPRESENT ISOLINES OF VELOCITY. C SMOOTHING OF VELOCITY DATA FOR SEVERAL LAYERS MAY BE PERFOR- C MED WITHIN ONE RUN OF PROGRAM SMOOTH. IN THIS WAY THE GENERATED C FILE WITH SMOOTHED VELOCITY VALUES FOR ALL LAYERS OF A 2-D C LAYERED MODEL CAN BE DIRECTLY USED AS AN INPUT FILE IN THE PRO- C GRAM PACKAGE SEIS88 OR ANY OTHER PROGRAM WITH THE SAME STRUCTURE C OF INPUT VELOCITY DATA. C C PROGRAM SMOOTH IS A GENERAL-PURPOSE PROGRAM. IT CAN BE USED ALSO C IN MANY OTHER APPLICATIONS, WHERE IT IS NECESSARY TO FIND A 2-D C SMOOTHED APPROXIMATION OF DATA SPECIFIED REGULARLY OR IRREGULARLY C ALONG A SYSTEM OF LINES OF A 2-D RECTANGULAR NETWORK. C C THE PROCEDURE FOR BICUBIC SPLINE SMOOTHING WAS WRITTEN BY C V.PRETLOVA, 1980. C C *************************************************************** C C INPUT DATA C ********** C C 1) ONE CARD C LU,MTEXT FORMAT(I2,20A4) C LU... NUMBER OF FILE IN WHICH THE SMOOTHED VELO- C CITY VALUES CORRESPONDING TO THE GRID POINTS C OF THE RECTANGULAR NETWORK ARE STORED. THE C FILE CAN BE USED IN THE PROGRAM PACKAGE C SEIS88 OR IN ANY OTHER PROGRAM WITH THE SA- C ME STRUCTURE OF INPUT VELOCITY DATA. FOR C DETAILS SEE THE DESCRIPTION OF THE OUTPUT C FILE. C MTEXT... AN ARBITRARY ALPHANUMERIC TEXT DESCRIBING C APPROXIMATED MODEL. C C 2) ONE CARD C M,N,IPRINT,DELTA FORMAT(3I5,F10.5) C M... NUMBER OF VERTICAL LINES IN THE RECTANGU- C LAR NETWORK (M.GT.2, M.LE.30). C N... NUMBER OF HORIZONTAL LINES IN THE RECTANGU- C LAR NETWORK (N.GT.2, N.LE.30). C IPRINT... CONTROLS THE OUTPUT OF RESULTS ON THE LINE C PRINTER: C IPRINT=0... ONLY INPUT DATA ARE PRINTED ON C A LINE PRINTER. C IPRINT=1... THE SAME AS FOR IPRINT=0 PLUS THE C PRINTER PLOT OF THE VELOCITY DISTRIBUTION FOR C THE GIVEN LAYER IS PRINTED. C IPRINT=1... THE SAME AS FOR IPRINT=1 PLUS C THE VELOCITY VALUES AT THE SPECIFIED GRID C POINTS OF A RECTANGULAR NETWORK ARE PRINTED C ON A LINE PRINTER. TWO TABLES ARE PRINTED: C A) THE TABLE OF VELOCITY VALUES AT GRID C POINTS OBTAINED BY THE LINEAR INTERPOLATION C (EXTRAPOLATION) ALONG THE VERTICAL LINES C OF THE NETWORK. C B) THE TABLE OF SMOOTHED VELOCITY VALUES C OBTAINED BY THE SMOOTHED BICUBIC SPLINE C ALGORITHM FROM DATA A). C DELTA... PARAMETER CONTROLLING THE EXTENT OF SMOOTHING. C IT CONTROLS THE GLOBAL ACCURACY OF THE VELO- C CITY DETERMINATION IN KM/S. C FOR DELTA.LT.000001, NO SMOOTHING IS PERFORMED, C ONLY TRANSFORMATION OF DATA INTO THE GRID C POINTS OF A RECTANGULAR NETWORK IS PERFORMED C (PRINTER PLOT CORRESPONDS TO INTERPOLATING C BICUBIC SPLINES). C RECOMMENDED VALUES: FOR AVERAGE SMOOTHING, C USE DELTA EQUAL APPROXIMATELY TO 0.01. C FOR LARGE SMOOTHING, USE DELTA AROUND 0.1. C FOR VERY SLIGHT SMOOTHING, USE DELTA AROUND C 0.001. IN THE LATTER CASE AND FOR DELTA C SMALLER THAN 0.001 THE SMOOTHED SPLINE AP- C PROXIMATION PRACTICALLY CORRESPONDS TO C THE SPLINE INTERPOLATION. C NOTE1: FOR VERY SMALL VALUES OF DELTA, THERE C IS A DANGER OF EXPRESSIVE OSCILLATIONS OF THE C VELOCITY DISTRIBUTION. C NOTE2: DELTA HAS A GLOBAL CHARACTER. THUS, AT C INDIVIDUAL POINTS THE DIFFERENCE BETWEEN THE C VELOCITY VALUES OBTAINED BY THE LINEAR INTER- C POLATION (EXTRAPOLATION) AND BY THE SMOOTHED C SPLINE ALGORITHM MAY EXCEED DELTA. C C 3) ONE CARD C INCLUDED ONLY IF IPRINT.NE.0. C NIZ FORMAT(I5) C NIZ... CONTROLS THE PRINTER PLOT OF SMOOTHED 2-D C VELOCITY DISTRIBUTION ON A LINE PRINTER. C IT GIVES NUMBER OF ISOLINES TO BE SHOWN IN C THE PRINTER PLOT. REMEMBER THAT THE ISO- C LINES ARE SHOWN AS THE BOUNDARIES BETWEEN C REGIONS COVERED BY DIFFERENT DIGITS STAR- C TING FROM 0. USE NIZ.LE.10. C C 4) ONE CARD C INCLUDED ONLY IF IPRINT.NE.0. C FIZ(I),I=1,...,NIZ FORMAT(16F5.1) C FIZ... CONTROL THE PRINTER PLOT OF SMOOTHED 2-D C VELOCITY DISTRIBUTION ON A LINE PRINTER. C FIZ(I) GIVES THE VALUE OF VELOCITY ON THE C I-TH ISOLINE OF VELOCITY. USE FIZ(I).GT. C FIZ(I-1) FOR I=2,3,...NIZ. C C 5) ONE CARD (OR GROUP OF CARDS) C X(I),I=1,...,M FORMAT(16F5.1) C X(I)... X-COORDINATE OF THE I-TH VERTICAL LINE OF THE C NETWORK. C NOTE THAT X(1) SPECIFIES THE LEFT-HAND BOUN- C DARY AND X(M) SPECIFIES THE RIGHT-HAND BOUN- C DARY OF THE 2-D RECTANGULAR NETWORK. C IF THE PROGRAM SMOOTH IS USED FOR SMOOTHING C VELOCITY DATA FOR PROGRAM PACKAGE SEIS83 C OR ANY OTHER SIMILAR PROGRAM, X(1) AND X(M) C MUST BE SPECIFIED THE SAME FOR ALL LAYERS. C C C 6) ONE CARD (OR GROUP OF CARDS) C Y(I),I=1,...,N FORMAT(16F5.1) C Y(I)... Z-COORDINATE (DEPTH) OF THE I-TH HORIZONTAL C LINE OF THE NETWORK. C NOTE THAT Y(1) SPECIFIES THE UPPER BOUNDARY C AND Y(N) SPECIFIES THE LOWER BOUNDARY OF THE C 2-D RECTANGULAR NETWORK. C IF THE PROGRAM SMOOTH IS USED FOR SMOOTHING C VELOCITY DATA FOR PROGRAM PACKAGE SEIS83 C OR ANY OTHER SIMILAR PROGRAM, Y(1) AND Y(N) C MUST BE CHOSEN IN SUCH A WAY THAT THE NET- C WORK COVERS THE WHOLE LAYER UNDER CONSIDE- C RATION. IF THE INTERFACES BOUNDING THE LAYER C ARE CURVED, THEN THE HORIZONTAL LINES OF C THE NETWORK Y(1) AND Y(N) MUST NOT INTERSECT C THE INTERFACES AND MUST BE FULLY SITUATED C OUTSIDE THE LAYER. C C 7) ONE CARD C NN(I),I=1,...,M FORMAT(26I3) C NN(I)... NUMBER OF Z-COORDINATES ALONG THE I-TH VERTICAL C NETWORK LINE AT WHICH THE VELOCITY VALUES ARE C SPECIFIED. THE SAME VERTICAL NETWORK LINES AS C IN THE RECTANGULAR NETWORK X,Y, SEE CARDS 5,6, C ARE USED HERE. THE Z-COORDINATES MAY, OF COURSE, C DIFFER FROM COORDINATES Y(I), CORRESPONDING TO C THE HORIZONTAL LINES OF THE RECTANGULAR NETWORK. C IF THE NUMBERS NN(I) ARE THE SAME FOR ALL THE C VERTICAL LINES, IT IS SUFFICIENT TO SPECIFY C ONLY NN(1). NN(I) WILL BE AUTOMATICALLY PUT C EQUAL TO NN(1). C NOTE: IF THE PROGRAM SMOOTH IS USED FOR SMOOTH- C ING DATA FOR PROGRAM PACKAGE SEIS88, THE VELO- C CITY VALUES SHOULD BE SPECIFIED ONLY AT THOSE C POINTS ON VERTICAL NETWORK LINES WHICH ARE C SITUATED INSIDE THE LAYER OR AT THE LAYER INTER- C FACES, NOT OUTSIDE THE LAYER. A LINEAR EXTRAPO- C LATION IS USED IN THE PROGRAM SMOOTH TO FIND C THE VELOCITY VALUES AT GRID POINTS SITUATED C OUTSIDE THE LAYER. C C 8) A SYSTEM OF CARDS C ((F(I,J),HY(J),J=1,N1),I=1,M) FORMAT(16F5.1) C F(I,J), HY(J)... Z-COORDINATE AND THE VELOCITY VALUE C AT THE J-TH POINT ON THE I-TH VERTICAL GRID C LINE. N1=NN(I), SEE 7 FOR NN(I). C C ****************************************************************** C C TERMINATION OF COMPUTATIONS C *************************** C C AN ARBITRARY NUMBER OF SYSTEMS OF DATA TO BE SMOOTHED CAN BE C EVALUATED WITHIN ONE RUN OF PROGRAM SMOOTH. FOR EACH SYSTEM, C DATA 2-8 MUST BE READ IN. TO TERMINATE THE COMPUTATIONS, INSERT C TWO BLANK CARDS BEYOND THE LAST SYSTEM. C C ****************************************************************** C C NOTE C C IN THE FILE LU GENERATED FOR INPUT FOR PROGRAM SEIS88, THE TOTAL C NUMBER OF VERTICAL LINES IN ALL LAYERS MUST NOT EXCEED 350. SIMI- C LARLY, THE TOTAL NUMBER OF ALL HORIZONTAL LINES IN ALL LAYERS MUST C NOT EXCEED 350. FINALLY, THE TOTAL NUMBER OF ALL GRID POINTS (IN C ALL THE LAYERS) MUST NOT EXCEED 1000. C C ****************************************************************** C C C THE OUTPUT ON A FILE LU C *********************** C C THE OUTPUT ON THE FILE LU CORRESPONDS EXACTLY TO THE REQUIREMENTS C ON THE SPECIFICATION OF VELOCITY DISTRIBUTION IN THE PROGRAM PAC- C KAGE SEIS88, SEE SUB 4 (FOR MM=0 AND 2) IN DESCRIPTION OF INPUT DATA C FOR PROGRAM SEIS88. C FOR EACH LAYER, THE FILE LU CONTAINS THE FOLLOWING DATA SPECI- C FIED IN A FORMATTED FORM): C A) M,N FORMAT(2I5) C B) X(1),X(2),...,X(M) FORMAT(8F10.5) C C) Y(1),Y(2),...,Y(N) FORMAT(8F10.5) C D) THE VELOCITY VALUES AT GRID POINTS ALONG THE VERTICAL NET- C WORK LINES (FROM THE TOP TO THE BOTTOM). FOR EACH VERTICAL C LINE, N VALUES OF VELOCITY ARE GIVEN, FORMAT (8F10.5). C THE VERTICAL LINES ARE TAKEN FROM THE LEFT TO THE RIGHT. C C ******************************************************************* C