- Timestamp:
- 2017-03-14T16:47:48+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r7481 r7792 956 956 !!---------------------------------------------------------------------- 957 957 USE zdf_oce, ONLY : ln_zdfqiao 958 USE sbcflx , ONLY : ln_shelf_flx, nn_drag, jp_std 958 959 959 960 INTEGER, INTENT(in) :: kt ! ocean model time step index … … 1039 1040 ELSE ! No dynamical coupling ! 1040 1041 ! ! ========================= ! 1042 ! it is possible that the momentum is calculated from the winds (ln_shelf_flx) and a coupled drag coefficient 1043 IF( srcv(jpr_wdrag)%laction .AND. ln_shelf_flx .AND. ln_cdgw .AND. nn_drag == jp_std ) THEN 1044 DO jj = 1, jpj 1045 DO ji = 1, jpi 1046 ! here utau and vtau should contain the wind components as read from the forcing files 1047 zcoef = SQRT(utau(ji,jj)*utau(ji,jj) + vtau(ji,jj)*vtau(ji,jj)) 1048 frcv(jpr_otx1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * utau(ji,jj) * zcoef 1049 frcv(jpr_oty1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * vtau(ji,jj) * zcoef 1050 utau(ji,jj) = frcv(jpr_otx1)%z3(ji,jj,1) 1051 vtau(ji,jj) = frcv(jpr_oty1)%z3(ji,jj,1) 1052 END DO 1053 END DO 1054 llnewtx = .TRUE. 1055 ELSE 1041 1056 frcv(jpr_otx1)%z3(:,:,1) = 0.e0 ! here simply set to zero 1042 1057 frcv(jpr_oty1)%z3(:,:,1) = 0.e0 ! an external read in a file can be added instead 1043 1058 llnewtx = .TRUE. 1059 ENDIF 1044 1060 ! 1045 1061 ENDIF … … 1061 1077 END DO 1062 1078 CALL lbc_lnk( frcv(jpr_taum)%z3(:,:,1), 'T', 1. ) 1079 IF( .NOT. srcv(jpr_otx1)%laction .AND. srcv(jpr_wdrag)%laction .AND. & 1080 ln_shelf_flx .AND. ln_cdgw .AND. nn_drag == jp_std ) & 1081 taum(:,:) = frcv(jpr_taum)%z3(:,:,1) 1063 1082 llnewtau = .TRUE. 1064 1083 ELSE … … 1075 1094 ! ! ========================= ! 1076 1095 ! ! 10 m wind speed ! (wndm) 1096 ! ! include wave drag coef ! (wndm) 1077 1097 ! ! ========================= ! 1078 1098 ! … … 1085 1105 !CDIR NOVERRCHK 1086 1106 DO ji = 1, jpi 1107 IF( ln_shelf_flx ) THEN ! the 10 wind module is properly calculated before if ln_shelf_flx 1108 frcv(jpr_w10m)%z3(ji,jj,1) = wndm(ji,jj) 1109 ELSE 1087 1110 frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef ) 1111 ENDIF 1088 1112 END DO 1089 1113 END DO … … 1095 1119 IF( MOD( kt-1, k_fsbc ) == 0 ) THEN 1096 1120 ! 1121 ! if ln_wavcpl, the fields already contain the right information from forcing even if not ln_mixcpl 1097 1122 IF( ln_mixcpl ) THEN 1098 utau(:,:) = utau(:,:) * xcplmask(:,:,0) + frcv(jpr_otx1)%z3(:,:,1) * zmsk(:,:) 1099 vtau(:,:) = vtau(:,:) * xcplmask(:,:,0) + frcv(jpr_oty1)%z3(:,:,1) * zmsk(:,:) 1100 taum(:,:) = taum(:,:) * xcplmask(:,:,0) + frcv(jpr_taum)%z3(:,:,1) * zmsk(:,:) 1101 wndm(:,:) = wndm(:,:) * xcplmask(:,:,0) + frcv(jpr_w10m)%z3(:,:,1) * zmsk(:,:) 1102 ELSE 1123 IF( srcv(jpr_otx1)%laction ) THEN 1124 utau(:,:) = utau(:,:) * xcplmask(:,:,0) + frcv(jpr_otx1)%z3(:,:,1) * zmsk(:,:) 1125 vtau(:,:) = vtau(:,:) * xcplmask(:,:,0) + frcv(jpr_oty1)%z3(:,:,1) * zmsk(:,:) 1126 ENDIF 1127 IF( srcv(jpr_taum)%laction ) & 1128 taum(:,:) = taum(:,:) * xcplmask(:,:,0) + frcv(jpr_taum)%z3(:,:,1) * zmsk(:,:) 1129 IF( srcv(jpr_w10m)%laction ) & 1130 wndm(:,:) = wndm(:,:) * xcplmask(:,:,0) + frcv(jpr_w10m)%z3(:,:,1) * zmsk(:,:) 1131 ELSE IF( ll_purecpl ) THEN 1103 1132 utau(:,:) = frcv(jpr_otx1)%z3(:,:,1) 1104 1133 vtau(:,:) = frcv(jpr_oty1)%z3(:,:,1) … … 1167 1196 IF( srcv(jpr_wstrf)%laction .AND. ln_tauoc ) tauoc_wave(:,:) = frcv(jpr_wstrf)%z3(:,:,1) 1168 1197 1169 ! ! ========================= !1170 ! ! Wave drag coefficient !1171 ! ! ========================= !1172 IF( srcv(jpr_wdrag)%laction .AND. ln_cdgw ) cdn_wave(:,:) = frcv(jpr_wdrag)%z3(:,:,1)1173 1174 1198 ! Fields received by SAS when OASIS coupling 1175 1199 ! (arrays no more filled at sbcssm stage) … … 1242 1266 CALL ctl_stop( 'sbc_cpl_rcv: wrong definition of sn_rcv_emp%cldes' ) 1243 1267 END SELECT 1244 ELSE 1268 ELSE IF( ll_purecpl ) THEN 1245 1269 zemp(:,:) = 0._wp 1246 1270 ENDIF … … 1250 1274 IF( srcv(jpr_cal)%laction ) zemp(:,:) = zemp(:,:) - frcv(jpr_cal)%z3(:,:,1) 1251 1275 1252 IF( ln_mixcpl ) THEN ; emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:) 1253 ELSE ; emp(:,:) = zemp(:,:) 1276 IF( ln_mixcpl .AND. ( srcv(jpr_oemp)%laction .OR. srcv(jpr_rain)%laction )) THEN 1277 emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:) 1278 ELSE IF( ll_purecpl ) THEN ; emp(:,:) = zemp(:,:) 1254 1279 ENDIF 1255 1280 ! … … 1266 1291 ENDIF 1267 1292 ENDIF 1268 IF( ln_mixcpl ) THEN ; qns(:,:) = qns(:,:) * xcplmask(:,:,0) + zqns(:,:) * zmsk(:,:) 1269 ELSE ; qns(:,:) = zqns(:,:) 1293 IF( ln_mixcpl .AND. ( srcv(jpr_qnsoce)%laction .OR. srcv(jpr_qnsmix)%laction )) THEN 1294 qns(:,:) = qns(:,:) * xcplmask(:,:,0) + zqns(:,:) * zmsk(:,:) 1295 ELSE IF( ll_purecpl ) THEN ; qns(:,:) = zqns(:,:) 1270 1296 ENDIF 1271 1297 … … 1276 1302 ENDIF 1277 1303 IF( ln_dm2dc .AND. ln_cpl ) zqsr(:,:) = sbc_dcy( zqsr ) ! modify qsr to include the diurnal cycle 1278 IF( ln_mixcpl ) THEN ; qsr(:,:) = qsr(:,:) * xcplmask(:,:,0) + zqsr(:,:) * zmsk(:,:) 1279 ELSE ; qsr(:,:) = zqsr(:,:) 1304 IF( ln_mixcpl .AND. ( srcv(jpr_qsroce)%laction .OR. srcv(jpr_qsrmix)%laction )) THEN 1305 qsr(:,:) = qsr(:,:) * xcplmask(:,:,0) + zqsr(:,:) * zmsk(:,:) 1306 ELSE IF( ll_purecpl ) THEN ; qsr(:,:) = zqsr(:,:) 1280 1307 ENDIF 1281 1308 !
Note: See TracChangeset
for help on using the changeset viewer.