*IF DEF,W08_1A GLW1F404.47
C *****************************COPYRIGHT****************************** PREWIND1.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. PREWIND1.4
C PREWIND1.5
C Use, duplication or disclosure of this code is subject to the PREWIND1.6
C restrictions as set forth in the contract. PREWIND1.7
C PREWIND1.8
C Meteorological Office PREWIND1.9
C London Road PREWIND1.10
C BRACKNELL PREWIND1.11
C Berkshire UK PREWIND1.12
C RG12 2SZ PREWIND1.13
C PREWIND1.14
C If no contract has been raised with this copy of the code, the use, PREWIND1.15
C duplication or disclosure of it is strictly prohibited. Permission PREWIND1.16
C to do so must first be obtained in writing from the Head of Numerical PREWIND1.17
C Modelling at the above address. PREWIND1.18
C ******************************COPYRIGHT****************************** PREWIND1.19
! subroutine prewind (for wave model) PREWIND1.20
! PREWIND1.21
! Description: PREWIND1.22
! input values from wave model dump of wind components PREWIND1.23
! are converted to speed and direction, and are then rearranged PREWIND1.24
! into the blocked data arrays required by WAM PREWIND1.25
! the call to airsea will calculate values for ustar (array us_out) PREWIND1.26
! and also roughness length Z0 (array Z0_out) PREWIND1.27
! PREWIND1.28
! Method: PREWIND1.29
! PREWIND1.30
! PREWIND1.31
! PREWIND1.32
! Current Code Owner: Martin Holt PREWIND1.33
! PREWIND1.34
! History: PREWIND1.35
! Version Date Comment PREWIND1.36
! ------- ---- ------- PREWIND1.37
! UM4.1 June 1996 Original code. M Holt PREWIND1.38
! PREWIND1.39
! Code Description: PREWIND1.40
! Language: FORTRAN 77 + common extensions. PREWIND1.41
! PREWIND1.42
!- End of header PREWIND1.43
PREWIND1.44
SUBROUTINE PREWIND(UWIND,VWIND,TAUW_X,TAUW_Y,mdata, ,4PREWIND1.45
& U10_OUT, PREWIND1.46
& THW_OUT, PREWIND1.47
& US_OUT, PREWIND1.48
& Z0_OUT, PREWIND1.49
& TAUW, PREWIND1.50
PREWIND1.51
*CALL ARGWVAL
PREWIND1.52
*CALL ARGWVGD
PREWIND1.53
*CALL ARGWVCP
PREWIND1.54
*CALL ARGWVTB
PREWIND1.55
PREWIND1.56
& icode,cmessage) PREWIND1.57
PREWIND1.58
PREWIND1.59
*CALL PARCONS
PREWIND1.60
*CALL PARWVTB
PREWIND1.61
PREWIND1.62
*CALL TYPWVGD
PREWIND1.63
*CALL TYPWVAL
PREWIND1.64
*CALL TYPWVCP
PREWIND1.65
*CALL TYPWVTB
PREWIND1.66
PREWIND1.67
INTEGER ICODE ! OUT return code PREWIND1.68
CHARACTER*80 CMESSAGE ! OUT message accompanying return code PREWIND1.69
PREWIND1.70
integer mdata PREWIND1.71
PREWIND1.72
real PREWIND1.73
& UWIND(mdata), ! IN u component of wind on sea-points grid PREWIND1.74
& VWIND(mdata), ! IN v component of wind on sea-points grid PREWIND1.75
& TAUW_X(MDATA),! wave stress tauw on sea points grid x comp PREWIND1.76
& TAUW_Y(MDATA) ! wave stress tauw on sea points grid y comp PREWIND1.77
PREWIND1.78
PREWIND1.79
C ARRAYS OUT PREWIND1.80
PREWIND1.81
real PREWIND1.82
& U10_OUT(niblo,nblo), ! blocked wind speeds PREWIND1.83
& THW_OUT(niblo,nblo), ! blocked wind direction PREWIND1.84
& US_OUT(niblo,nblo), ! blocked ustar PREWIND1.85
& Z0_OUT(niblo,nblo), ! blocked roughness length PREWIND1.86
& TAUW(niblo,nblo) ! blocked wave induced stress PREWIND1.87
PREWIND1.88
c local arrays: PREWIND1.89
PREWIND1.90
real windspeed(mdata), windir(mdata), tw_fld(mdata) PREWIND1.91
PREWIND1.92
integer PREWIND1.93
& i ! loop counter PREWIND1.94
& ,ig ! loop counter over blocks PREWIND1.95
PREWIND1.96
PREWIND1.97
CLL 1.0 convert UWIND and VWIND into speed and direction PREWIND1.98
PREWIND1.99
PREWIND1.100
do i=1,mdata PREWIND1.101
PREWIND1.102
windspeed(i)=sqrt(uwind(i)*uwind(i) + vwind(i)*vwind(i) ) PREWIND1.103
PREWIND1.104
tw_fld(i)=sqrt(tauw_x(i)*tauw_x(i) + tauw_y(i)*tauw_y(i) ) PREWIND1.105
PREWIND1.106
windir(i) = atan2(uwind(i),vwind(i)) PREWIND1.107
PREWIND1.108
enddo PREWIND1.109
PREWIND1.110
PREWIND1.111
C NOW call blokfld for windspeed wind direction and wave stress PREWIND1.112
PREWIND1.113
call blokfld
(windspeed,U10_OUT,mdata, PREWIND1.114
*CALL ARGWVAL
PREWIND1.115
*CALL ARGWVGD
PREWIND1.116
& icode) PREWIND1.117
PREWIND1.118
if(icode.eq.1)then PREWIND1.119
CMESSAGE='error in PREWIND: BLOKFLD U10' PREWIND1.120
return PREWIND1.121
endif PREWIND1.122
PREWIND1.123
call blokfld
(windir,THW_OUT,mdata, PREWIND1.124
*CALL ARGWVAL
PREWIND1.125
*CALL ARGWVGD
PREWIND1.126
& icode) PREWIND1.127
PREWIND1.128
if(icode.eq.1)then PREWIND1.129
CMESSAGE='error in PREWIND: BLOKFLD THW' PREWIND1.130
return PREWIND1.131
endif PREWIND1.132
PREWIND1.133
call blokfld
(tw_fld,tauw,mdata, PREWIND1.134
*CALL ARGWVAL
PREWIND1.135
*CALL ARGWVGD
PREWIND1.136
& icode) PREWIND1.137
C PREWIND1.138
if(icode.eq.1)then PREWIND1.139
CMESSAGE='error in WAVSTEP: BLOKFLD TAUW' PREWIND1.140
return PREWIND1.141
endif PREWIND1.142
PREWIND1.143
PREWIND1.144
C now call AIRSEA for each block in turn NOTE IGL is in ARGWVGD PREWIND1.145
PREWIND1.146
DO IG = 1,IGL PREWIND1.147
PREWIND1.148
C this call is for u10 to convert to ustar PREWIND1.149
PREWIND1.150
CALL AIRSEA
(U10_OUT(1,ig), TAUW(1,IG), US_OUT(1,ig), PREWIND1.151
& Z0_OUT(1,ig), IJS(ig), IJL(ig), PREWIND1.152
*CALL ARGWVAL
PREWIND1.153
*CALL ARGWVCP
PREWIND1.154
*CALL ARGWVTB
PREWIND1.155
& icode) PREWIND1.156
PREWIND1.157
if(icode.eq.1)then PREWIND1.158
CMESSAGE='error in PREWIND: AIRSEA ' PREWIND1.159
return PREWIND1.160
endif PREWIND1.161
C PREWIND1.162
ENDDO PREWIND1.163
PREWIND1.164
RETURN PREWIND1.165
END PREWIND1.166
*ENDIF PREWIND1.167