#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 ! ----------------------------------------------------------------------