-
Notifications
You must be signed in to change notification settings - Fork 0
/
wwm_buildstress.F90
92 lines (76 loc) · 3.16 KB
/
wwm_buildstress.F90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#ifdef WAM_ECMWF
SUBROUTINE BUILDSTRESS(U10OLD,THWOLD,USOLD,TAUW,Z0OLD, &
& ROAIRO, ZIDLOLD, ICEMASK, &
& IREAD)
#endif
SUBROUTINE BUILDSTRESS
! ----------------------------------------------------------------------
! J. BIDLOT ECMWF APRIL 1998
! J. BIDLOT ECMWF FEBRUARY 1999 TAUT --> SQRT(TAUT)
! S. ABDALLA ECMWF OCTOBER 1999 MODIFICATION THE CALL TO GETWND
! J. BIDLOT ECMWF AUGUST 2008 : MAKE IT MORE PARALLEL.
!* PURPOSE.
! --------
! CREATES WIND AND STRESS FIELDS FROM GRIB WINDS AND CD.
!** INTERFACE.
! ----------
! CALL *BUILDSTRESS*(U10OLD,THWOLD,USOLD,TAUW,Z0OLD,ROAIRO,
! & ROAIRO, ZIDLOLD, ICEMASK,
! & IREAD)*
! *U10OLD* WIND SPEED.
! *THWOLD* WIND DIRECTION (RADIANS).
! *USOLD* FRICTION VELOCITY.
! *TAUW* WAVE STRESS.
! *Z0OLD* ROUGHNESS LENGTH IN M.
! *RAD0OLD* AIR DENSITY IN KG/M3.
! *RZIDL0OLD* Zi/L (Zi: INVERSION HEIGHT, L: MONIN-OBUKHOV LENGTH).
! *ICEMASK* SEA ICE MASK
! *IREAD* PROCESSOR WHICH WILL ACCESS THE FILE ON DISK
! METHOD.
! -------
! EXTERNALS.
! ----------
! *ABORT1*
! *AIRSEA*
! *GETWND*
! *PBOPEN*
! *PBREAD*
! *PBCLOSE*
! *READWGRIB*
! REFERENCE.
! ----------
! NONE
! ----------------------------------------------------------------------
! USE YOWCOUP , ONLY : LWCOU ,ALPHA ,XKAPPA ,XNLEV
! USE YOWGRIBHD, ONLY : NKSEK1
! USE YOWGRID , ONLY : IGL ,IJS ,IJL
! USE YOWMPP , ONLY : NINF ,NSUP
! USE YOWMESPAS, ONLY : LMESSPASS,LNOCDIN ,LWAVEWIND
! USE YOWPARAM , ONLY : NBLO ,NIBLO ,NGX ,NGY
! USE YOWPCONS , ONLY : G ,ROAIR ,EPSUS ,EPSU10
! USE YOWSTAT , ONLY : CDATEA ,CDTPRO ,NWAM_BLKS
! USE YOWTABL , ONLY : ITAUMAX ,JUMAX ,JPLEVT ,TAUT
! USE YOWTEST , ONLY : IU06 ,ITEST
! USE YOWWIND , ONLY : CDAWIFL ,CDATEWO ,CDATEFL ,FIELDG
! USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
USE DATAPOOL, ONLY : MNP, EPSU10, CD, U10OLD, USOLD, Z0OLD, ILEV, EPSUS, TAUW, WINDXY
USE DATAPOOL, ONLY : RKIND, ITEST, IU06
IMPLICIT NONE
! ----------------------------------------------------------------------
INTEGER :: IREAD, IP
REAL(rkind) :: CDINV
! ----------------------------------------------------------------------
! 1.3 INITIALISE CD USING THE FRICTION VELOCITY FOR TAUW=0.
! ----------------------------------------------------
DO IP = 1, MNP
TAUW(IP)=0.
U10OLD(IP,1) = SQRT(WINDXY(IP,1)**2.+WINDXY(IP,2)**2.)
CALL AIRSEA (U10OLD(IP,1),TAUW(IP),USOLD(IP,1), Z0OLD(IP,1), IP, IP, ILEV)
CDINV = MAX(U10OLD(IP,1)**2,EPSU10)/MAX(USOLD(IP,1)**2,EPSUS)
CDINV = MIN(CDINV,10000.0_rkind)
CD(IP) = 1./CDINV
IF (ITEST.GT.0) WRITE (IU06,*) ' SUB. AIRSEA DONE AT 1'
ENDDO
IF (ITEST.GE.1) WRITE(IU06,*) ' SUB. BUILDSTRESS: INPUT OF RESTART FILES DONE'
END SUBROUTINE BUILDSTRESS
! ----------------------------------------------------------------------