- Timestamp:
- 2015-11-13T08:01:08+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r5845 r5883 71 71 REAL(wp), DIMENSION(:,:,:), POINTER :: zusd_t, zvsd_t, ze3hdiv ! 3D workspace 72 72 !! 73 NAMELIST/namsbc_wave/ sn_cdg, cn_dir, sn_usd, sn_vsd, sn_wn 73 NAMELIST/namsbc_wave/ sn_cdg, cn_dir, sn_usd, sn_vsd, sn_wn, ln_cdgw , ln_sdw 74 74 !!--------------------------------------------------------------------- 75 75 ! … … 80 80 READ ( numnam_ref, namsbc_wave, IOSTAT = ios, ERR = 901) 81 81 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_wave in reference namelist', lwp ) 82 82 ! 83 83 REWIND( numnam_cfg ) ! Namelist namsbc_wave in configuration namelist : File for drag coeff. from wave model 84 84 READ ( numnam_cfg, namsbc_wave, IOSTAT = ios, ERR = 902 ) … … 86 86 IF(lwm) WRITE ( numond, namsbc_wave ) 87 87 ! 88 IF ( ln_cdgw ) THEN 88 IF(lwp) THEN ! Control print 89 WRITE(numout,*) ' Namelist namsbc_wave : surface wave setting' 90 WRITE(numout,*) ' wave drag coefficient ln_cdgw = ', ln_cdgw 91 WRITE(numout,*) ' wave stokes drift ln_sdw = ', ln_sdw 92 ENDIF 93 ! 94 IF( .NOT.( ln_cdgw .OR. ln_sdw ) ) & 95 & CALL ctl_warn( 'ln_sbcwave=T but nor drag coefficient (ln_cdgw=F) neither stokes drift activated (ln_sdw=F)' ) 96 IF( ln_cdgw .AND. .NOT.(ln_blk_mfs .OR. ln_blk_core) ) & 97 & CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core') 98 ! 99 IF( ln_cdgw ) THEN 89 100 ALLOCATE( sf_cd(1), STAT=ierror ) !* allocate and fill sf_wave with sn_cdg 90 101 IF( ierror > 0 ) CALL ctl_stop( 'STOP', 'sbc_wave: unable to allocate sf_wave structure' ) … … 96 107 cdn_wave(:,:) = 0.0 97 108 ENDIF 98 IF 109 IF( ln_sdw ) THEN 99 110 slf_i(jp_usd) = sn_usd ; slf_i(jp_vsd) = sn_vsd; slf_i(jp_wn) = sn_wn 100 111 ALLOCATE( sf_sd(3), STAT=ierror ) !* allocate and fill sf_wave with sn_cdg … … 114 125 ENDIF 115 126 ! 116 IF ( ln_cdgw ) THEN!== Neutral drag coefficient ==!127 IF( ln_cdgw ) THEN !== Neutral drag coefficient ==! 117 128 CALL fld_read( kt, nn_fsbc, sf_cd ) ! read from external forcing 118 129 cdn_wave(:,:) = sf_cd(1)%fnow(:,:,1) 119 130 ENDIF 120 131 ! 121 IF ( ln_sdw ) THEN !== Computation of the 3d Stokes Drift ==! 132 IF( ln_sdw ) THEN !== Computation of the 3d Stokes Drift ==! 133 ! 134 CALL wrk_alloc( jpi,jpj,jpk, zusd_t, zvsd_t, ze3hdiv ) 122 135 ! 123 136 CALL fld_read( kt, nn_fsbc, sf_sd ) !* read drag coefficient from external forcing 124 137 ! 125 ! 126 CALL wrk_alloc( jpi,jpj,jpk, zusd_t, zvsd_t, ze3hdiv ) 127 ! !* distribute it on the vertical 128 DO jk = 1, jpkm1 138 DO jk = 1, jpkm1 !* distribute it on the vertical 129 139 zusd_t(:,:,jk) = sf_sd(jp_usd)%fnow(:,:,1) * EXP( -2._wp * sf_sd(jp_wn)%fnow(:,:,1) * gdept_n(:,:,jk) ) 130 140 zvsd_t(:,:,jk) = sf_sd(jp_vsd)%fnow(:,:,1) * EXP( -2._wp * sf_sd(jp_wn)%fnow(:,:,1) * gdept_n(:,:,jk) ) 131 141 END DO 132 ! !* interpolate the stokes drift from t-point to u- and v-points 133 DO jk = 1, jpkm1 142 DO jk = 1, jpkm1 !* interpolate the stokes drift from t-point to u- and v-points 134 143 DO jj = 1, jpjm1 135 144 DO ji = 1, jpim1
Note: See TracChangeset
for help on using the changeset viewer.