*IF DEF,W08_1A GLW1F404.60 C *****************************COPYRIGHT****************************** WV_SHAPE.3 C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. WV_SHAPE.4 C WV_SHAPE.5 C Use, duplication or disclosure of this code is subject to the WV_SHAPE.6 C restrictions as set forth in the contract. WV_SHAPE.7 C WV_SHAPE.8 C Meteorological Office WV_SHAPE.9 C London Road WV_SHAPE.10 C BRACKNELL WV_SHAPE.11 C Berkshire UK WV_SHAPE.12 C RG12 2SZ WV_SHAPE.13 C WV_SHAPE.14 C If no contract has been raised with this copy of the code, the use, WV_SHAPE.15 C duplication or disclosure of it is strictly prohibited. Permission WV_SHAPE.16 C to do so must first be obtained in writing from the Head of Numerical WV_SHAPE.17 C Modelling at the above address. WV_SHAPE.18 C ******************************COPYRIGHT****************************** WV_SHAPE.19 !+ subroutine SHAPE WV_SHAPE.20 ! WV_SHAPE.21 ! Description: WV_SHAPE.22 ! subroutine to calculate JONSWAP spectral shape array for use in WV_SHAPE.23 ! unified wave model wave height assimilation routines WV_SHAPE.24 ! WV_SHAPE.25 ! Method: WV_SHAPE.26 ! As in UKMO 2G operational wave model WV_SHAPE.27 ! WV_SHAPE.28 ! WV_SHAPE.29 ! Current Code Owner: Martin Holt WV_SHAPE.30 ! WV_SHAPE.31 ! History: WV_SHAPE.32 ! Version Date Comment WV_SHAPE.33 ! ------- ---- ------- WV_SHAPE.34 ! UM4.1 June 1996 Original code. Sophie Kelsall WV_SHAPE.35 ! WV_SHAPE.36 ! Code Description: WV_SHAPE.37 ! Language: FORTRAN 77 + common extensions. WV_SHAPE.38 ! WV_SHAPE.39 !- End of header WV_SHAPE.40 WV_SHAPE.41 WV_SHAPE.42subroutine shape(nfre,nang,df, WV_SHAPE.43 *CALL ARGWVFD
WV_SHAPE.44 *CALL ARGWVJO
WV_SHAPE.45 & icode) WV_SHAPE.46 C WV_SHAPE.47 C WV_SHAPE.48 C subroutine to calculate JONSWAP spectral shape array for use is WV_SHAPE.49 C UKMO wave height assimilation routines WV_SHAPE.50 C WV_SHAPE.51 C WV_SHAPE.52 ccc REAL jonswap_shape(24,220,nfre) ! out WV_SHAPE.53 *CALL TYPWVJO
WV_SHAPE.54 WV_SHAPE.55 WV_SHAPE.56 WV_SHAPE.57 REAL shnor(24,220) ! local WV_SHAPE.58 REAL df(nfre) ! local WV_SHAPE.59 WV_SHAPE.60 *CALL TYPWVFD
WV_SHAPE.61 WV_SHAPE.62 integer l,ifj,igam WV_SHAPE.63 real a,b,d WV_SHAPE.64 WV_SHAPE.65 *CALL C_PI
WV_SHAPE.66 WV_SHAPE.67 WRITE(6,*)'subroutine shape called to set array jonswap_shape'
GIE0F403.709 WV_SHAPE.69 mfj=220 WV_SHAPE.70 sigma=0.08 WV_SHAPE.71 WV_SHAPE.72 CCC pi=3.1415926 WV_SHAPE.73 rpio2=2.0/pi WV_SHAPE.74 WV_SHAPE.75 C ---------------------------------------------------------------------- WV_SHAPE.76 CL 2.5 CREATE A LOOKUP TABLE OF JONSWAP SHAPE FUNCTIONS. A THREE WV_SHAPE.77 C *** PARAMETER FORM OF THE JONSWAP SPECTRUM IS USED: EJ(F,FJ,GAMMA) WV_SHAPE.78 C *** AND THE SHAPE FUNCTION IS NORMALISED OVER FREQUENCY WV_SHAPE.79 C WV_SHAPE.80 C *** ZERO LOOKUP TABLE WV_SHAPE.81 DO L=1,nfre WV_SHAPE.82 DO IFJ=1,mfj WV_SHAPE.83 DO IGAM=1,24 WV_SHAPE.84 SHNOR(IGAM,IFJ)=0.0 WV_SHAPE.85 jonswap_shape(IGAM,IFJ,L)=0.0 WV_SHAPE.86 enddo WV_SHAPE.87 enddo WV_SHAPE.88 enddo WV_SHAPE.89 WV_SHAPE.90 WV_SHAPE.91 C WV_SHAPE.92 C *** FILL LOOKUP TABLE AND INTEGRATE OVER FREQUENCY WV_SHAPE.93 C *** NEW IMPROVED LOOKUP TABLE IGAM FROM 1.0 TO 3.3,220 FREQUENCIES. WV_SHAPE.94 WV_SHAPE.95 F1L = ALOG10(fr(1)) WV_SHAPE.96 ffac=1.8 WV_SHAPE.97 FN1L=ALOG10(ffac*fr(nfre-1)) WV_SHAPE.98 DFLOOK = (F1L-FN1L)/(MFJ-1.) WV_SHAPE.99 RDFLK = 1./DFLOOK WV_SHAPE.100 WV_SHAPE.101 C WV_SHAPE.102 C WV_SHAPE.103 C WV_SHAPE.104 C *** SET UP ARRAY OF MODEL FREQUENCY INTERVALS WV_SHAPE.105 DO L=3,NFRE WV_SHAPE.106 DF(L-1)=(fr(L)-fr(L-2))*0.5 WV_SHAPE.107 ENDDO WV_SHAPE.108 DF(1)=(fr(2)-fr(1))*0.5+0.005 WV_SHAPE.109 C *** TOP INTERVAL CONTAINS CORRECTION FACTOR BASED ON INTEGRATION OF WV_SHAPE.110 C *** PHILLIPS SPECTRUM ABOVE TOP FREQUENCY WV_SHAPE.111 DF(NFRE)=fr(NFRE)-fr(NFRE-1)-DF(NFRE-1)*0.5+fr(NFRE)*0.25 WV_SHAPE.112 WV_SHAPE.113 WV_SHAPE.114 DO L=1,nfre WV_SHAPE.115 DO IFJ=1,MFJ WV_SHAPE.116 FJ = 10.**(FN1L+(IFJ-1)*DFLOOK) WV_SHAPE.117 WV_SHAPE.118 IF (fr(L).GE.FJ*0.8) THEN WV_SHAPE.119 DO IGAM=1,24 WV_SHAPE.120 IGG = IGAM+9 WV_SHAPE.121 GAM = FLOAT(IGG)*0.1 WV_SHAPE.122 A = -1.25*(FJ/fr(L))**4 WV_SHAPE.123 B = 0.0 WV_SHAPE.124 d = ((fr(L)-FJ)/(FJ*SIGMA))**2 WV_SHAPE.125 IF (d.LT.50.) then WV_SHAPE.126 B = ALOG(GAM)*EXP(-d*0.5) WV_SHAPE.127 endif WV_SHAPE.128 jonswap_shape(IGAM,IFJ,L) = EXP(A+B)/fr(L)**5 WV_SHAPE.129 SHNOR(IGAM,IFJ) = SHNOR(IGAM,IFJ) WV_SHAPE.130 & + jonswap_shape(IGAM,IFJ,L)*DF(L) WV_SHAPE.131 enddo WV_SHAPE.132 END IF WV_SHAPE.133 enddo WV_SHAPE.134 enddo WV_SHAPE.135 WV_SHAPE.136 C WV_SHAPE.137 C *** NORMALIZE OVER FREQUENCY AND MULTIPLY BY 2/PI TO ALLOW FOR LATER WV_SHAPE.138 C *** COS SQUARED DISTRIBUTION WV_SHAPE.139 WV_SHAPE.140 DO L=1,nfre WV_SHAPE.141 DO IFJ=1,MFJ WV_SHAPE.142 DO IGAM=1,24 WV_SHAPE.143 IF (SHNOR(IGAM,IFJ).GE.0.0000001) THEN WV_SHAPE.144 jonswap_shape(IGAM,IFJ,L) = RPIO2 * jonswap_shape(IGAM,IFJ,L) WV_SHAPE.145 & / SHNOR(IGAM,IFJ) WV_SHAPE.146 END IF WV_SHAPE.147 enddo WV_SHAPE.148 enddo WV_SHAPE.149 enddo WV_SHAPE.150 WV_SHAPE.151 WV_SHAPE.152 return WV_SHAPE.153 end WV_SHAPE.154 *ENDIF WV_SHAPE.155