SUBROUTINE LGTVSP(KFILDO,P,FGFULL,SEALND,NX,NY,PROB1,LAP,IER) C C JANUARY 2020 GLAHN MOS-2000 C FEBRUARY 2020 GLAHN ADDED JGULF TO COMMON BLOCK C C PURPOSE C TO SPLICE TWO GRID FIELDS TOGETHER ALONG A VERTICAL C (NORTH-SOUTH) LINE. SMOOTHING IS OVER AN E-W AREA C IXEAST-2*LAP TO IXEAST AND N-S EXTENT C JYSRTH TO JYNRTH. SUBROUTINE LOG2PT IS CALLED TO C COMPUTE THE LOGIT FUNCTION. C C THE SAME PROCESS IS USED TO SPLICE ALONG A HORIZONTAL C (WEST-EAST) LINE. C C ALL AREAS NOT IN THE NORTHWESTERN GULF ARE RESET TO C THE ORIGINAL FIRST GUESS. C C C DATA SET USE C KFILDO - UNIT NUMBER OF OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE. (INPUT) C P(IX,JY) = THE GRID TO SPLICE (IX=1,NX) (JY=1,NY). C (INPUT). C FGFULL(IX,JY) = THE FIRST GRID BEFORE SETTING THE GUFL AREA C TO GUESS (IX=1,NX) (JY=1,NY). (INPUT). C SEALND(IX,JY) = THE LAND/SEA MASK (IX=1,NX) (JY=1,NY). C 0 = OCEAN WATER GRIDPOINTS; C 3 = INLAND WATER GRIDPOINTS. C 9 = LAND GRIDPOINTS. C (INPUT) C NX = SIZE OF SEALND( , ) IN X DIRECTION. (INPUT) C NY = SIZE OF SEALND( , ) IN Y DIRECTION. (INPUT) C X1 = FIRST X POSITION. (INPUT) C P1 = FIRST GRID VALUE. (INPUT) C X2 = SECOND X POSITION. (INPUT) C P2 = SECOND GRID VALUE. (INPUT) C JY1 = SPLICE STARTS IN N-S DIRECTION AT Y1. (INPUT) C JY2 = SPLICE ENDS IN N-S DIRECTION AT Y2. (INPUT) C GL(L) = LOGIT VALUES (WEIGHTS) FOR IX = X1 THROUGH X2. C THE ARRAY SIZE OF GL( ) IS NX. (OUTPUT) C KFILDI = (NOT USED) C (OUTPUT) C LAP = THE OVERLAP OF THE GRIDS TO BE SPLICED IN TERMS C OF GRIDLENGTHS. (INTERNAL) C C COMMON BLOCK GULF (ALL VALUES INITIALIZED IN GLFFST.) C JGULF = 1 INCICATES THE FULF OF MEXICO IS TO BE C SMOOTHED AND THE OTHER OACEAN IS NOT. C 0 INOPERATIVE; DOES NOT AFFECT SMOOTHING C IXEAST = EASTERN IX OF AREA FS SET TO GUESS. C IXWEST = WESTERN IX OF AREA FS SET TO GUESS. C JYSRTH = SOUTHERN JY OF AREA FS SET TO GUESS. C JYNRTH = NORTHERN JY OF AREA FS SET TO GUESS. C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES CALLED C NONE C COMMON/GULF/JGULF,IXEAST,IXWEST,JYSRTH,JYNRTH C THIS COMMON BLOCK IS USED FOR EASY COMMMUNICATION WITH SKYLVS C SKYLHS, SPOTRM, AND BOGUSG C DIMENSION P(NX,NY),SEALND(NX,NY),FGFULL(NX,NY) DIMENSION GL(NX) C GL( ) IS AN AUTOMATIC ARRAY. C DATA KFILDI/0/ C KFILDI IS A DUMMY NOT USED IN LOG2PT. C CALL TIMPR(KFILDO,KFILDO,'START LGTVSP ') C D WRITE(KFILDO,105)NX,NY,PROB1,LAP D105 FORMAT(/' AT 105 IN LGTVSP--NX,NY,PROB1,LAP',2I6,F8.3,I6) C C THE SPLICE ALONG A VERTICAL IX IS DONE FIRST. C C INITIALIZE GL( ). C DO 110 J=1,NX GL(J)=0. 110 CONTINUE C C RESTORE THE FIRST GUESS TO THE GULF EXCEPT THE AREA ANALYZED. C SOME GRIDPOINTS NOT CHANGED ARE NOT REPLACED (E.G., WEST OF C IX LT IXWEST. C DO 115 JY=1,NY DO 114 IX=1,NX C IF(SEALND(IX,JY).LT..99)THEN C THIS IS AN OCEAN POINT. C IF(IX.GT.IXEAST.OR.IX.LT.IXWEST.OR. 1 JY.LT.JYSRTH.OR.JY.GT.JYNRTH)THEN C THIS IS EAST OF THE GULF AREA, THE PACIFIC, C SOOUTH OF THE GULF AREA TO ANALYZE/SMOOTH, AND C NORTH OF THE GULF (GETS hUDSON BAY) P(IX,JY)=FGFULL(IX,JY) ENDIF C ENDIF C 114 CONTINUE 115 CONTINUE C C FIT THE LOGIT TO GET THE WEIGHTS IN G( ) WITH INDICES C THAT MATCH IX. C CALL LOG2PT(KFILDI,KFILDO,REAL(IXEAST-2*LAP),PROB1, 1 REAL(IXEAST),1.-PROB1,GL) C THIS BRINGS BACK VALUES IX =1,IXEAST VALUES IN GL( ) C TO BE USED AS WEIGHTS. C CCCC DO 125 J=IXEAST-2*LAP,IXEAST CCCCC CCCC WRITE(KFILDO,120)J,GL(J),PROB1,LAP CCCC 120 FORMAT(/' IN LGTVSP--J,GL(J),PROB1,LAP',I8,F10.4,F10.4,I8) CCCCC CCCC 125 CONTINUE C C MAKE THE SPLICE ALONG THE VERTICAL CENTERED IXEAST-LAP C BETWEEN MAX(JYSRTH-LAP,1),MIN(JYNRTH+LAT,NY) C DO 150 JY=MAX(JYSRTH,1),MIN(JYNRTH,NY) C DO 140 IX=MAX(IXEAST-2*LAP,1),IXEAST C IF(SEALND(IX,JY).LT..99)THEN C THIS IS AN OCEAN POINT. IT IS ASSUMED THE SEAM IS IN C THE WATER. P(IX,JY)=P(IX,JY)*GL(IX)+FGFULL(IX,JY)*(1.-GL(IX)) ENDIF C 140 CONTINUE C 150 CONTINUE C C NOW MAKE THE SPLICE ALONG A HORIZONTAL JY. C C INITIALIZE GL( ). C DO 160 J=1,NY GL(J)=0. 160 CONTINUE C C FIT THE LOGIT TO GET THE WEIGHTS IN G( ) WITH INDICES C THAT MATCH JY. C CALL LOG2PT(KFILDI,KFILDO,REAL(JYSRTH),PROB1, 1 REAL(JYSRTH+2*LAP),1.-PROB1,GL) C THIS BRINGS BACK VALUES IX =1,IXEAST VALUES IN GL( ) C TO BE USED AS WEIGHTS. C CCCC DO 170 J=MAX(JYSRTH-2*LAP,1),JYSRTH CCCCC CCCC WRITE(KFILDO,165)J,GL(J),PROB1,LAP CCCC 165 FORMAT(/' IN LGTVSP--J,GL(J),PROB1,LAP',I8,F10.4,F10.4,I8) CCCCC CCCC 170 CONTINUE C C NOW THE SPLICE ALONG THE HORIZONTAL CENTERED AT JYSRTH-LAP C BETWEEN IXWEST AND IXEAST. C DO 190 IX=MAX(IXWEST,1),MIN(IXEAST,NX) C DO 180 JY=JYSRTH,JYSRTH+2*LAP C IF(SEALND(IX,JY).LT..99)THEN C THIS IS AN OCEAN POINT. IT IS ASSUMED THE SEAM IS IN C THE WATER. P(IX,JY)=P(IX,JY)*(1.-GL(JY))+FGFULL(IX,JY)*GL(JY) ENDIF C 180 CONTINUE C 190 CONTINUE C CALL TIMPR(KFILDO,KFILDO,'END LGTVSP ') C RETURN END