C THIS IS A PROGRAM TO PLOT CONTOURS IN TWO DIMENSIONS C X,Y FOR SEVERAL VALUES OF THE THIRD INDEPENDENT VARIABLE Z C THE DATA FOR WHICH CONTOURS ARE TO BE DRAWN IS ASSUMED TO BE C A DISCRETE TABULATION OF A SINGLE VALUED FUNCTION C Z=F(X,Y) C C THE TECHNIQUE USED HERE FOCUSES ON FOUR ADJACENT POINTS C ZZ(1),ZZ(2),ZZ(3),ZZ(4),WHICH HAVE THE VALUES OF THE INDEPENDENT C VARIABLES AS (X1,Y1),(X2,Y1),(X1,Y2),(X2,Y2). ASSUMING THAT THE C DATA CONTAINS I POINTS IN X DIRECTION AND J POINTS IN Y DIRECTION C THE ALGORITHIM MUST BE APPLIED TO N=(I-1)(J-1) CELLS. C WITHIN SUCH A CELL, THE CENTER POINT IS LOCATED AND ASSIGNED C A VALUE Z2 WHICH IS THE AVERAGE OF FOUR VALUES ZZ(1) TO ZZ(4).THESE C FIVE VALUES ARE THEN CONNECTED WITH LINE SEGMENTS WHICH IN C TURN ARE NUMBERED ONE THROUGH EIGHT IN CLOCKWISE DIRECTION. C EACH SEGMENT IS THEN TESTED TO SEE IF THE REQUIRED CONTOUR INTER- C SECTS WITH IT. THE POINTS OF INTERSECTION ARE STORED IN AN ARRAY C PX AND PY AND PLOTTED. C C C THE ABOVE TECHNIQUE ASSUMES THAT FOUR DATA POINTS FORM C A RECTANGLE, BUT THE EXPERIMENTAL DATA POINTS MAY NOT BE C IN THAT ORDER. E.G. YT(K),K=1,2-------J MAY NOT BE EQUAL FOR ALL C X(L), L=1,2,---I. IN SHORT TWO ADJACENT POINTS (X(1),YT(1)), AND C (X(2),YT(1)) MAY NOT FORM A STRAIGHT LINE PARALLEL TO X-AXIS. C C TO SOLVE THIS PROBLEM, THE PROGRAM CALCULATES THE MINIMUM C AND MAXIMUM VALUE OF YT(I,J) IN DATA ,YMIN,YMAX. THE RANGE (YMAX-YMIN) C IS CALCULATED AND THEN DIVIDED BY THE NUMBER WHICH IS FOUR TIMES C THE MAXIMUM # OF POINTS ON Y AXIS. THIS WAS DONE TO MINIMIZE C AND SPREAD OUT ANY ERROR ENCOUNTERED LATER ON DUE TO THE C LINEAR INTERPOLATION OF Z VALUES. IT ALSO PICKS UP ANY STEEP C VARIATION IN Z VALUES. C THE VALUE THUS CALCULATED IS CALLED IYINC, WHICH IS USED TO C INCREMENT THE VALUES OF Y C THE VALUES OF Y ARE PUT IN AN ARRAY YT, AND THOSE OF Z IN AN ARRAY C ZT. C THE PROGRAM NOW TAKES TWO VALUES OF Y I.E. C Y1=YMIN C Y2=YMIN+IYINC C AND TWO VALUES OF X I.E. C X1=X(1) C X2=X(2) C THUS WE GET OUR FIRST RECTANGLE WITH CORNER POINTS AS (X(1),YMIN) C (X(2),YMIN), (X(1),Y2), AND (X(2),Y2). C THE VALUES OF FOUR ZZS ARE NOW CALCULATED BY LINEAR INTERPOLATION. C AFTER THIS THE SUBROUTINE CONTUR IS CALLED TO CALCULATE THE C POINTS OF INTERSECTION FOR A GIVEN VALUE. C AFTER THIS NEXT TWO VALUES OF XS ARE TAKEN,NAMELY C X(2),X(3) AND KEEPING YS CONSTANT UNTIL ALL XS ARE DONE. NEXT THE C CONTOUR IS PLOTTED BY INCREASING THE VALUES OF YS BY IYINC AND C TAKING FIRST TWO VALUES OF XS. THIS PROCESS IS REPEATED TILL ALL C YS HAVE BEEN DONE. THE PROGRAM REPEATS THE WHOLE PROCESS FOR C EACH VALUE OF ZS FOR WHICH CONTOURS ARE PLOTTED. C C THE PROGRAM REQUIRES VERY LITTLE EFFORT FROM THE USER,AND C IT CAN BE CHANGED ACCORDING TO INDIVIDUAL NEEDS. AS THE PROGRAM C RUNS, IT ASKS QUESTIONS WHICH USER SHOULD ANSWER. THE FIRST QUESTION C ASKED IS : C " PUT THE MAXIMUM POINTS ON THE X AND Y AXIS." C THE USER SHOULD THEN TYPE THE VALUES OF IX, IY IN THE FORMAT I2,I2 C THE VALUE OF IY SHOULD BE MAXIMUM # OF POINTS ON THAT X POINT C WHICH HAS THE LARGEST # OF Y POINTS.THE NEXT QUESTION ASKED C IS : " ARE YOU PUTTING NEW DATA"?. THE ANSWER TO THIS IS YES ONLY C FOR THE FIRST TIME DATA IS BEING PUT. LATER IN THE PROGRAM THE COMPUTER C PUNCHES THE PAPER TAPE OF DATA PUT, WHICH CAN BE USED AGAIN & AGAIN. C IF THE ANSWER TO THE LAST QUESTION IS NO. THEN THE COMPUTER INSTRUCTS C TO PUT THE TAPE IN THE READER AND WAITS TILL THE USER GIVES GO AHEAD. C C THE VALUES OF Y AND Z ARE PUT FOR A GIVEN X AT ATIME. C THE FORMAT FOR PUTTING THE VALUES OF Y AND Z IS F10.2,F10.2 C IF THE USER MAKES ANY MISTAKES IN TYPING THE DATA POINTS C HE SHOULD GO AHEAD AND PUT ALL THE POINTS FOR THAT PARTICULAR C X, AND AFTER THAT PROGRAM ASKS QUESTIONS AND USER CAN CORRECT ITS C MISTAKES. THE DATA POINTS SHOULD BE PUT STRICTLY IN THE ACCENDING C ORDER FOR X, Y. C IF ANY Y ARE MISSED, THE USER SHOULD TYPE THE WHOLE PARTI- C CULAR ARRAY AGAIN. C C NOTE: C IF THERE ARE LESS # OF POINTS FOR ANY X THEN THE VALUE OF C IY USER PUT IN THE BEGINNING, THEN THE REST OF THE POINTS SHOULD C BE FILLED BY PUTTING THE VALUES OF YS AND ZS WHICH ARE SLIGHTLY C GREATER THEN THE LAST ACTUAL DATA POINT. FOR EXAMPLE IF IY=16 C AND USER HAS ONLY 14 POINTS ON A PARTICULAR X POINT, THEN THE C LAST TWO POINTS SHOULD BE: C Y(15)=Y(14)+E C Z(15)=Z(14)+E C Y(16)=Y(15)+E C Z(16)=Z(15)+E WHERE 0.5