Changeset 9119
- Timestamp:
- 2017-12-18T17:33:07+01:00 (7 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM/NEMO
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_zdf.F90
r9019 r9119 119 119 ENDIF 120 120 ! 121 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT. ln_cndi_U64 .AND. .NOT.ln_cndi_P07 ) ) THEN122 CALL ctl_stop( 'ice_thd_zdf_init: choose one and only oneformulation for thermal conduction (ln_cndi_U64 or ln_cndi_P07)' )121 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT. ln_cndi_U64 .AND. .NOT. ln_cndi_P07 ) ) THEN 122 CALL ctl_stop( 'ice_thd_zdf_init: choose 1 and only 1 formulation for thermal conduction (ln_cndi_U64 or ln_cndi_P07)' ) 123 123 ENDIF 124 124 ! !== set the choice of ice vertical thermodynamic formulation ==! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90
r9118 r9119 236 236 DO jk = 1, nlay_s 237 237 WHERE( v_s(:,:,:) > epsi20 ) !--- icy area 238 t_s(:,:,jk,:) = MAX( -100._wp , MIN( r1_cpic * ( -r1_rhosn * (e_s(:,:,jk,:)/v_s(:,:,:)*zlay_s) + lfus ) , 0._wp ) ) + rt0 238 t_s(:,:,jk,:) = MAX( -100._wp , & 239 & MIN( r1_cpic * ( -r1_rhosn * ( e_s(:,:,jk,:) / v_s(:,:,:) * zlay_s ) + lfus ) , & 240 & 0._wp ) ) & 241 & + rt0 239 242 ELSEWHERE !--- no ice 240 243 t_s(:,:,jk,:) = rt0 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r9090 r9119 236 236 DO ji = 1, jpi 237 237 IF( mikt(ji,jj) <= jk .and. jk <= nk_rnf(ji,jj) ) THEN 238 e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * (-rnf_b(ji,jj) + rnf(ji,jj))*(e3t_n(ji,jj,jk)/h_rnf(ji,jj) )*tmask(ji,jj,jk) 238 e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 239 & * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 239 240 ENDIF 240 241 ENDDO -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r9111 r9119 1980 1980 #endif 1981 1981 ! outputs 1982 IF( srcv(jpr_cal)%laction ) CALL iom_put('hflx_cal_cea' , - frcv(jpr_cal)%z3(:,:,1) * lfus ) ! latent heat from calving 1983 IF( srcv(jpr_icb)%laction ) CALL iom_put('hflx_icb_cea' , - frcv(jpr_icb)%z3(:,:,1) * lfus ) ! latent heat from icebergs melting 1984 IF( iom_use('hflx_snow_cea') ) CALL iom_put('hflx_snow_cea', sprecip(:,:) * ( zcptsnw(:,:) - Lfus ) ) ! heat flux from snow (cell average) 1985 IF( iom_use('hflx_rain_cea') ) CALL iom_put('hflx_rain_cea',( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:) ) ! heat flux from rain (cell average) 1986 IF( iom_use('hflx_evap_cea') ) CALL iom_put('hflx_evap_cea',(frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) & ! heat flux from from evap (cell average) 1987 & ) * zcptn(:,:) * tmask(:,:,1) ) 1988 IF( iom_use('hflx_snow_ao_cea') ) CALL iom_put('hflx_snow_ao_cea',sprecip(:,:) * (zcptsnw(:,:) - Lfus) * (1._wp - zsnw(:,:)) ) ! heat flux from snow (over ocean) 1989 IF( iom_use('hflx_snow_ai_cea') ) CALL iom_put('hflx_snow_ai_cea',sprecip(:,:) * (zcptsnw(:,:) - Lfus) * zsnw(:,:) ) ! heat flux from snow (over ice) 1982 IF ( srcv(jpr_cal)%laction ) CALL iom_put('hflx_cal_cea' , - frcv(jpr_cal)%z3(:,:,1) * lfus ) ! latent heat from calving 1983 IF ( srcv(jpr_icb)%laction ) CALL iom_put('hflx_icb_cea' , - frcv(jpr_icb)%z3(:,:,1) * lfus ) ! latent heat from icebergs melting 1984 IF ( iom_use('hflx_rain_cea') ) CALL iom_put('hflx_rain_cea' , ( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:) ) ! heat flux from rain (cell average) 1985 IF ( iom_use('hflx_evap_cea') ) CALL iom_put('hflx_evap_cea' , ( frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) & 1986 & * picefr(:,:) ) * zcptn(:,:) * tmask(:,:,1) ) ! heat flux from evap (cell average) 1987 IF ( iom_use('hflx_snow_cea') ) CALL iom_put('hflx_snow_cea' , sprecip(:,:) * ( zcptsnw(:,:) - Lfus ) ) ! heat flux from snow (cell average) 1988 IF ( iom_use('hflx_snow_ao_cea') ) CALL iom_put('hflx_snow_ao_cea', sprecip(:,:) * ( zcptsnw(:,:) - Lfus ) & 1989 & * ( 1._wp - zsnw(:,:) ) ) ! heat flux from snow (over ocean) 1990 IF ( iom_use('hflx_snow_ai_cea') ) CALL iom_put('hflx_snow_ai_cea', sprecip(:,:) * ( zcptsnw(:,:) - Lfus ) & 1991 & * zsnw(:,:) ) ! heat flux from snow (over ice) 1990 1992 ! note: hflx for runoff and iceshelf are done in sbcrnf and sbcisf resp. 1991 1993 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r9023 r9119 129 129 sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) ! non solar heat flux 130 130 ELSE IF ( sshn(ji,jj) + ht_0(ji,jj) > rn_wdmin1 ) THEN 131 sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) * (tanh(5._wp*( ( sshn(ji,jj) + ht_0(ji,jj) - rn_wdmin1 )*r_rn_wdmin1)) ) 131 sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) & 132 & * tanh ( 5._wp * ( ( sshn(ji,jj) + ht_0(ji,jj) - rn_wdmin1 ) * r_rn_wdmin1 ) ) 132 133 ELSE 133 134 sbc_tsc(ji,jj,jp_tem) = 0._wp -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRD/trddyn.F90
r9097 r9119 156 156 ikbu = mbku(ji,jj) ! deepest ocean u- & v-levels 157 157 ikbv = mbkv(ji,jj) 158 z3dx(ji,jj,jk) = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) )*un(ji,jj,ikbu)/e3u_n(ji,jj,ikbu) 159 z3dy(ji,jj,jk) = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) )*vn(ji,jj,ikbv)/e3v_n(ji,jj,ikbv) 158 z3dx(ji,jj,jk) = 0.5 * ( rCdU_bot(ji+1,jj) + rCdU_bot(ji,jj) ) & 159 & * un(ji,jj,ikbu) / e3u_n(ji,jj,ikbu) 160 z3dy(ji,jj,jk) = 0.5 * ( rCdU_bot(ji,jj+1) + rCdU_bot(ji,jj) ) & 161 & * vn(ji,jj,ikbv) / e3v_n(ji,jj,ikbv) 160 162 END DO 161 163 END DO -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfosm.F90
r9106 r9119 362 362 ! It could represent the effects of the spread of wave directions 363 363 ! around the mean wind. The effect of this adjustment needs to be tested. 364 zustke(ji,jj) = MAX (1.0 * ( zcos_wind(ji,jj) * ut0sd(ji,jj) + zsin_wind(ji,jj) * vt0sd(ji,jj) ), zustar(ji,jj)/(0.45*0.45 )) 364 zustke(ji,jj) = MAX ( 1.0 * ( zcos_wind(ji,jj) * ut0sd(ji,jj ) + zsin_wind(ji,jj) * vt0sd(ji,jj) ), & 365 & zustar(ji,jj) / ( 0.45 * 0.45 ) ) 365 366 dstokes(ji,jj) = MAX(zfac * hsw(ji,jj)*hsw(ji,jj) / ( MAX(zustke(ji,jj)*wmp(ji,jj), 1.0e-7 ) ), 5.0e-1) !rn_osm_dstokes ! 366 367 END DO … … 454 455 & + 0.135 * zla(ji,jj) * zwstrl(ji,jj)**3/hbl(ji,jj) ) 455 456 456 zvel_max = - ( 1.0 + 1.0 * ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) * zwb_ent(ji,jj) /&457 & 457 zvel_max = - ( 1.0 + 1.0 * ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) & 458 & * zwb_ent(ji,jj) / ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 458 459 ! Entrainment including component due to shear turbulence. Modified Langmuir component, but gives same result for La=0.3 For testing uncomment. 459 460 ! zwb_ent(ji,jj) = -( 2.0 * 0.2 * zwbav(ji,jj) & … … 471 472 IF ( zzdhdt < 0._wp ) THEN 472 473 ! For long timsteps factor in brackets slows the rapid collapse of the OSBL 473 zpert= 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj)474 zpert = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) 474 475 ELSE 475 zpert = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) + MAX( zdb_bl(ji,jj),0.0 ) 476 zpert = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) & 477 & + MAX( zdb_bl(ji,jj), 0.0 ) 476 478 ENDIF 477 479 zzdhdt = 2.0 * zzdhdt / zpert … … 504 506 DO jj = 2, jpjm1 505 507 DO ji = 2, jpim1 506 IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN508 IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN 507 509 ! 508 510 ! If boundary layer changes by more than one level, need to check for stable layers between initial and final depths. 509 511 ! 510 zhbl_s = hbl(ji,jj)511 jm = imld(ji,jj)512 zthermal = rab_n(ji,jj,1,jp_tem)513 zbeta = rab_n(ji,jj,1,jp_sal)514 IF ( lconv(ji,jj) ) THEN512 zhbl_s = hbl(ji,jj) 513 jm = imld(ji,jj) 514 zthermal = rab_n(ji,jj,1,jp_tem) 515 zbeta = rab_n(ji,jj,1,jp_sal) 516 IF ( lconv(ji,jj) ) THEN 515 517 !unstable 516 zvel_max = -( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) * zwb_ent(ji,jj) /&517 &( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird518 519 DO jk = imld(ji,jj), ibld(ji,jj)520 zdb = MAX( grav * ( zthermal * ( zt_bl(ji,jj) - tsn(ji,jj,jm,jp_tem) ) &521 & - zbeta * ( zs_bl(ji,jj) - tsn(ji,jj,jm,jp_sal) ) ), 0.0 ) + zvel_max522 523 zhbl_s = zhbl_s + MIN( - zwb_ent(ji,jj) / zdb * rn_rdt / FLOAT(ibld(ji,jj)-imld(ji,jj) ), e3w_n(ji,jj,jk) )524 zhbl_s = MIN(zhbl_s, ht_n(ji,jj))525 526 IF ( zhbl_s >= gdepw_n(ji,jj,jm+1) ) jm = jm + 1527 END DO528 hbl(ji,jj) = zhbl_s529 ibld(ji,jj) = jm530 hbli(ji,jj) = hbl(ji,jj)531 ELSE518 zvel_max = - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) & 519 & * zwb_ent(ji,jj) / ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 520 521 DO jk = imld(ji,jj), ibld(ji,jj) 522 zdb = MAX( grav * ( zthermal * ( zt_bl(ji,jj) - tsn(ji,jj,jm,jp_tem) ) & 523 & - zbeta * ( zs_bl(ji,jj) - tsn(ji,jj,jm,jp_sal) ) ), 0.0 ) + zvel_max 524 525 zhbl_s = zhbl_s + MIN( - zwb_ent(ji,jj) / zdb * rn_rdt / FLOAT(ibld(ji,jj)-imld(ji,jj) ), e3w_n(ji,jj,jk) ) 526 zhbl_s = MIN(zhbl_s, ht_n(ji,jj)) 527 528 IF ( zhbl_s >= gdepw_n(ji,jj,jm+1) ) jm = jm + 1 529 END DO 530 hbl(ji,jj) = zhbl_s 531 ibld(ji,jj) = jm 532 hbli(ji,jj) = hbl(ji,jj) 533 ELSE 532 534 ! stable 533 DO jk = imld(ji,jj), ibld(ji,jj) 534 zdb = MAX( grav * ( zthermal * ( zt_bl(ji,jj) - tsn(ji,jj,jm,jp_tem) ) - zbeta * ( zs_bl(ji,jj) - tsn(ji,jj,jm,jp_sal) ) ), 0.0 ) + & 535 & 2.0 * zwstrl(ji,jj)**2 / zhbl_s 536 537 zhbl_s = zhbl_s + (& 538 & 0.32 * ( hbli(ji,jj) / zhbl_s -1.0 ) * zwstrl(ji,jj)**3 / hbli(ji,jj) + & 539 & ( ( 0.32 / 3.0 ) * EXP( -2.5 * ( hbli(ji,jj) / zhbl_s -1.0 ) ) - & 540 & ( 0.32 / 3.0 - 0.0485 ) * EXP( -12.5 * ( hbli(ji,jj) / zhbl_s ) ) ) * zwstrl(ji,jj)**3 / hbli(ji,jj) ) / zdb * & 541 & e3w_n(ji,jj,jk) / zdhdt(ji,jj) ! ALMG to investigate whether need to include wn here 542 543 zhbl_s = MIN(zhbl_s, ht_n(ji,jj)) 544 IF ( zhbl_s >= gdepw_n(ji,jj,jm) ) jm = jm + 1 545 END DO 546 hbl(ji,jj) = MAX(zhbl_s, gdepw_n(ji,jj,3) ) 547 ibld(ji,jj) = MAX(jm, 3 ) 548 IF ( hbl(ji,jj) > hbli(ji,jj) ) hbli(ji,jj) = hbl(ji,jj) 549 ENDIF ! IF ( lconv ) 550 ELSE 535 DO jk = imld(ji,jj), ibld(ji,jj) 536 zdb = MAX( grav * ( zthermal * ( zt_bl(ji,jj) - tsn(ji,jj,jm,jp_tem) ) & 537 & - zbeta * ( zs_bl(ji,jj) - tsn(ji,jj,jm,jp_sal) ) ), 0.0 ) & 538 & + 2.0 * zwstrl(ji,jj)**2 / zhbl_s 539 540 zhbl_s = zhbl_s + ( & 541 & 0.32 * ( hbli(ji,jj) / zhbl_s -1.0 ) & 542 & * zwstrl(ji,jj)**3 / hbli(ji,jj) & 543 & + ( ( 0.32 / 3.0 ) * EXP( - 2.5 * ( hbli(ji,jj) / zhbl_s -1.0 ) ) & 544 & - ( 0.32 / 3.0 - 0.0485 ) * EXP( - 12.5 * ( hbli(ji,jj) / zhbl_s ) ) ) & 545 & * zwstrl(ji,jj)**3 / hbli(ji,jj) ) / zdb * e3w_n(ji,jj,jk) / zdhdt(ji,jj) ! ALMG to investigate whether need to include wn here 546 547 zhbl_s = MIN(zhbl_s, ht_n(ji,jj)) 548 IF ( zhbl_s >= gdepw_n(ji,jj,jm) ) jm = jm + 1 549 END DO 550 hbl(ji,jj) = MAX(zhbl_s, gdepw_n(ji,jj,3) ) 551 ibld(ji,jj) = MAX(jm, 3 ) 552 IF ( hbl(ji,jj) > hbli(ji,jj) ) hbli(ji,jj) = hbl(ji,jj) 553 ENDIF ! IF ( lconv ) 554 ELSE 551 555 ! change zero or one model level. 552 hbl(ji,jj) = zhbl_t(ji,jj)553 IF ( lconv(ji,jj) ) THEN554 hbli(ji,jj) = hbl(ji,jj)555 ELSE556 hbl(ji,jj) = MAX(hbl(ji,jj), gdepw_n(ji,jj,3) )557 IF ( hbl(ji,jj) > hbli(ji,jj) ) hbli(ji,jj) = hbl(ji,jj)558 ENDIF559 ENDIF560 zhbl(ji,jj) = gdepw_n(ji,jj,ibld(ji,jj))556 hbl(ji,jj) = zhbl_t(ji,jj) 557 IF ( lconv(ji,jj) ) THEN 558 hbli(ji,jj) = hbl(ji,jj) 559 ELSE 560 hbl(ji,jj) = MAX(hbl(ji,jj), gdepw_n(ji,jj,3) ) 561 IF ( hbl(ji,jj) > hbli(ji,jj) ) hbli(ji,jj) = hbl(ji,jj) 562 ENDIF 563 ENDIF 564 zhbl(ji,jj) = gdepw_n(ji,jj,ibld(ji,jj)) 561 565 END DO 562 566 END DO … … 878 882 zznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj) 879 883 ! 880 zdiffut(ji,jj,jk) = 0.8 * zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_d_sc(ji,jj) * zznd_ml)**1.5884 zdiffut(ji,jj,jk) = 0.8 * zdifml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_d_sc(ji,jj) * zznd_ml )**1.5 881 885 ! 882 zviscos(ji,jj,jk) = 0.375 * zvisml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_v_sc(ji,jj) * zznd_ml ) * ( 1.0 - 0.5 * zznd_ml**2 ) 886 zviscos(ji,jj,jk) = 0.375 * zvisml_sc(ji,jj) * zznd_ml * ( 1.0 - zbeta_v_sc(ji,jj) * zznd_ml ) & 887 & * ( 1.0 - 0.5 * zznd_ml**2 ) 883 888 END DO 884 889 ! pycnocline - if present linear profile … … 887 892 zznd_pyc = -( gdepw_n(ji,jj,jk) - zhml(ji,jj) ) / zdh(ji,jj) 888 893 ! 889 zdiffut(ji,jj,jk) = zdifpyc_sc(ji,jj) *( 1.0 + zznd_pyc )894 zdiffut(ji,jj,jk) = zdifpyc_sc(ji,jj) * ( 1.0 + zznd_pyc ) 890 895 ! 891 896 zviscos(ji,jj,jk) = zvispyc_sc(ji,jj) * ( 1.0 + zznd_pyc ) … … 928 933 DO jk = 2, imld(ji,jj) 929 934 zznd_d = gdepw_n(ji,jj,jk) / dstokes(ji,jj) 930 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 935 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 1.35 * EXP ( -zznd_d ) * ( 1.0 - EXP ( -2.0 * zznd_d ) ) * zsc_wth_1(ji,jj) 931 936 ! 932 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 1.35 * EXP ( -zznd_d ) * ( 1.0 - EXP ( -2.0 * zznd_d ) ) * zsc_ws_1(ji,jj)937 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 1.35 * EXP ( -zznd_d ) * ( 1.0 - EXP ( -2.0 * zznd_d ) ) * zsc_ws_1(ji,jj) 933 938 END DO ! end jk loop 934 939 ELSE ! else for if (lconv) … … 936 941 DO jk = 2, ibld(ji,jj) 937 942 zznd_d=gdepw_n(ji,jj,jk) / dstokes(ji,jj) 938 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_wth_1(ji,jj) 943 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) & 944 & * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_wth_1(ji,jj) 939 945 ! 940 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_ws_1(ji,jj) 946 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 1.5 * EXP ( -0.9 * zznd_d ) & 947 & * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_ws_1(ji,jj) 941 948 END DO 942 949 ENDIF ! endif for check on lconv … … 961 968 DO jk = 2, imld(ji,jj) 962 969 zznd_d = gdepw_n(ji,jj,jk) / dstokes(ji,jj) 963 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) + ( -0.05 * EXP ( -0.4 * zznd_d ) * zsc_uw_1(ji,jj) + 0.00125 * EXP ( -zznd_d ) * zsc_uw_2(ji,jj) ) * ( 1.0 - EXP ( -2.0 * zznd_d ) ) 970 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) + ( -0.05 * EXP ( -0.4 * zznd_d ) * zsc_uw_1(ji,jj) & 971 & + 0.00125 * EXP ( - zznd_d ) * zsc_uw_2(ji,jj) ) & 972 & * ( 1.0 - EXP ( -2.0 * zznd_d ) ) 964 973 ! 965 ghamv(ji,jj,jk) = ghamv(ji,jj,jk) - 0.65 * 0.15 * EXP ( -zznd_d ) * ( 1.0 - EXP ( -2.0 * zznd_d ) ) * zsc_vw_1(ji,jj) 974 ghamv(ji,jj,jk) = ghamv(ji,jj,jk) - 0.65 * 0.15 * EXP ( - zznd_d ) & 975 & * ( 1.0 - EXP ( -2.0 * zznd_d ) ) * zsc_vw_1(ji,jj) 966 976 END DO ! end jk loop 967 977 ELSE … … 969 979 DO jk = 2, ibld(ji,jj) ! corrected to ibld 970 980 zznd_d = gdepw_n(ji,jj,jk) / dstokes(ji,jj) 971 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) - 0.75 * 1.3 * EXP ( -0.5 * zznd_d ) * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_uw_1(ji,jj) 981 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) - 0.75 * 1.3 * EXP ( -0.5 * zznd_d ) & 982 & * ( 1.0 - EXP ( -4.0 * zznd_d ) ) * zsc_uw_1(ji,jj) 972 983 ghamv(ji,jj,jk) = ghamv(ji,jj,jk) + 0._wp 973 984 END DO ! end jk loop … … 980 991 WHERE ( lconv ) 981 992 zsc_wth_1 = zwbav * zwth0 * ( 1.0 + EXP ( 0.2 * zhol ) ) / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 982 zsc_ws_1 = zwbav * zws0* ( 1.0 + EXP ( 0.2 * zhol ) ) / ( zvstr**3 + 0.5 * zwstrc**3 + epsln )993 zsc_ws_1 = zwbav * zws0 * ( 1.0 + EXP ( 0.2 * zhol ) ) / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 983 994 ELSEWHERE 984 995 zsc_wth_1 = 0._wp … … 991 1002 DO jk = 2, imld(ji,jj) 992 1003 zznd_ml = gdepw_n(ji,jj,jk) / zhml(ji,jj) 993 ! calculate turbulent length scale 994 zl_c = 0.9 * ( 1.0 - EXP ( -7.0 * ( zznd_ml - zznd_ml**3 / 3.0 ) ) ) * ( 1.0 - EXP ( -15.0 * ( 1.1 - zznd_ml ) ) ) 995 zl_l = 2.0 * ( 1.0 - EXP ( -2.0 * ( zznd_ml - zznd_ml**3 / 3.0 ) ) ) * (1.0 - EXP ( -5.0 * ( 1.0 -zznd_ml ) ) ) * ( 1.0 + dstokes(ji,jj) / zhml (ji,jj) ) 1004 ! calculate turbulent length scale 1005 zl_c = 0.9 * ( 1.0 - EXP ( - 7.0 * ( zznd_ml - zznd_ml**3 / 3.0 ) ) ) & 1006 & * ( 1.0 - EXP ( -15.0 * ( 1.1 - zznd_ml ) ) ) 1007 zl_l = 2.0 * ( 1.0 - EXP ( - 2.0 * ( zznd_ml - zznd_ml**3 / 3.0 ) ) ) & 1008 & * ( 1.0 - EXP ( - 5.0 * ( 1.0 - zznd_ml ) ) ) * ( 1.0 + dstokes(ji,jj) / zhml (ji,jj) ) 996 1009 zl_eps = zl_l + ( zl_c - zl_l ) / ( 1.0 + EXP ( 3.0 * LOG10 ( - zhol(ji,jj) ) ) ) ** (3.0/2.0) 997 ! non-gradient buoyancy terms1010 ! non-gradient buoyancy terms 998 1011 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3 * 0.5 * zsc_wth_1(ji,jj) * zl_eps * zhml(ji,jj) / ( 0.15 + zznd_ml ) 999 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.3 * 0.5 * zsc_ws_1(ji,jj) * zl_eps * zhml(ji,jj) / ( 0.15 + zznd_ml )1012 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.3 * 0.5 * zsc_ws_1(ji,jj) * zl_eps * zhml(ji,jj) / ( 0.15 + zznd_ml ) 1000 1013 END DO 1001 1014 ELSE 1002 1015 DO jk = 2, ibld(ji,jj) 1003 1016 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + zsc_wth_1(ji,jj) 1004 ghams(ji,jj,jk) = ghams(ji,jj,jk) + zsc_ws_1(ji,jj)1017 ghams(ji,jj,jk) = ghams(ji,jj,jk) + zsc_ws_1(ji,jj) 1005 1018 END DO 1006 1019 ENDIF … … 1011 1024 WHERE ( lconv ) 1012 1025 zsc_uw_1 = -zwb0 * zustar**2 * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 1013 zsc_uw_2 = zwb0 * zustke* zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln )**(2.0/3.0)1026 zsc_uw_2 = zwb0 * zustke * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln )**(2.0/3.0) 1014 1027 zsc_vw_1 = 0._wp 1015 1028 ELSEWHERE … … 1023 1036 DO jk = 2 , imld(ji,jj) 1024 1037 zznd_d = gdepw_n(ji,jj,jk) / dstokes(ji,jj) 1025 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) + 0.3 * 0.5 * ( zsc_uw_1(ji,jj) + 0.125 * EXP( -0.5 * zznd_d ) * ( 1.0 - EXP ( -0.5 * zznd_d) ) * zsc_uw_2(ji,jj) ) 1038 ghamu(ji,jj,jk) = ghamu(ji,jj,jk) + 0.3 * 0.5 * ( zsc_uw_1(ji,jj) + 0.125 * EXP( -0.5 * zznd_d ) & 1039 & * ( 1.0 - EXP( -0.5 * zznd_d ) ) & 1040 & * zsc_uw_2(ji,jj) ) 1026 1041 ghamv(ji,jj,jk) = ghamv(ji,jj,jk) + zsc_vw_1(ji,jj) 1027 1042 END DO ! jk loop … … 1051 1066 DO jk = 2, imld(ji,jj) 1052 1067 zznd_ml=gdepw_n(ji,jj,jk) / zhml(ji,jj) 1053 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3 * zsc_wth_1(ji,jj) * ( -2.0 + 2.75 * ( ( 1.0 + 0.6 * zznd_ml**4 ) - EXP ( -6.0 *zznd_ml ) ) ) & 1054 & * ( 1.0 -EXP ( -15.0 * ( 1.0 - zznd_ml ) ) ) 1068 ghamt(ji,jj,jk) = ghamt(ji,jj,jk) + 0.3 * zsc_wth_1(ji,jj) & 1069 & * ( -2.0 + 2.75 * ( ( 1.0 + 0.6 * zznd_ml**4 ) & 1070 & - EXP( - 6.0 * zznd_ml ) ) ) & 1071 & * ( 1.0 - EXP( - 15.0 * ( 1.0 - zznd_ml ) ) ) 1055 1072 ! 1056 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.3 * zsc_ws_1(ji,jj) * ( -2.0 + 2.75 * ( ( 1.0 + 0.6 * zznd_ml**4 ) - EXP ( -6.0 *zznd_ml ) ) ) & 1057 & * ( 1.0 -EXP ( -15.0 * ( 1.0 - zznd_ml ) ) ) 1073 ghams(ji,jj,jk) = ghams(ji,jj,jk) + 0.3 * zsc_ws_1(ji,jj) & 1074 & * ( -2.0 + 2.75 * ( ( 1.0 + 0.6 * zznd_ml**4 ) & 1075 & - EXP( - 6.0 * zznd_ml ) ) ) & 1076 & * ( 1.0 - EXP ( -15.0 * ( 1.0 - zznd_ml ) ) ) 1058 1077 END DO 1059 1078 ELSE -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/AGE/trcnam_age.F90
r7124 r9119 61 61 WRITE(numout,*) ' trc_nam_age: Read namage, namelist for Age passive tracer' 62 62 WRITE(numout,*) ' ~~~~~~~' 63 WRITE(numout,*) ' depth over which age tracer reset to zero rn_age_depth = ', rn_age_depth 64 WRITE(numout,*) ' recip of relax. timescale (s) for age tracer shallower than age_depth rn_age_kill_rate = ', rn_age_kill_rate 63 WRITE(numout,*) ' depth over which age tracer reset to zero rn_age_depth = ', & 64 & rn_age_depth 65 WRITE(numout,*) ' recip of relax. timescale (s) for age tracer shallower than age_depth rn_age_kill_rate = ', & 66 & rn_age_kill_rate 65 67 WRITE(numout,*) '' 66 68 ENDIF -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/trcbc.F90
r7646 r9119 198 198 WRITE(numout,'(2a)') ' COASTAL BC data repository : ', TRIM(cn_dir_cbc) 199 199 IF( .NOT.ln_rnf .OR. .NOT.ln_linssh ) ln_rnf_ctl = .FALSE. 200 IF( ln_rnf_ctl ) WRITE(numout,'(a)') ' -> Remove runoff dilution effect on tracers with absent river load (ln_rnf_ctl = .TRUE.)' 200 IF( ln_rnf_ctl ) WRITE(numout,'(a)') & 201 & ' -> Remove runoff dilution effect on tracers with absent river load (ln_rnf_ctl = .TRUE.)' 201 202 WRITE(numout,*) ' ' 202 203 WRITE(numout,'(a,i3)') ' Total tracers to be initialized with OPEN BCs data:', nb_trcobc … … 205 206 WRITE(numout,*) ' #trc NAME Boundary Mult.Fact. OBC Settings' 206 207 DO jn = 1, ntrc 207 IF( ln_trc_obc(jn) ) WRITE(numout, 9001) jn, TRIM( sn_trcobc(jn)%clvar ), 'OBC', rn_trofac(jn), (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 208 IF( .NOT. ln_trc_obc(jn) ) WRITE(numout, 9002) jn, 'Set data to IC and use default condition', (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 208 IF ( ln_trc_obc(jn) ) WRITE(numout, 9001) jn, TRIM( sn_trcobc(jn)%clvar ), 'OBC', rn_trofac(jn), & 209 & (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 210 IF ( .NOT. ln_trc_obc(jn) ) WRITE(numout, 9002) jn, 'Set data to IC and use default condition' , & 211 & (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 209 212 ENDDO 210 213 WRITE(numout,*) ' ' 211 214 DO ib = 1, nb_bdy 212 IF(nn_trcdmp_bdy(ib) .EQ. 0) WRITE(numout,9003) ' Boundary ',ib,' -> NO damping of tracers' 213 IF(nn_trcdmp_bdy(ib) .EQ. 1) WRITE(numout,9003) ' Boundary ',ib,' -> damping ONLY for tracers with external data provided' 214 IF(nn_trcdmp_bdy(ib) .EQ. 2) WRITE(numout,9003) ' Boundary ',ib,' -> damping of ALL tracers' 215 IF(nn_trcdmp_bdy(ib) .EQ. 0) WRITE(numout,9003) ' Boundary ', ib, & 216 & ' -> NO damping of tracers' 217 IF(nn_trcdmp_bdy(ib) .EQ. 1) WRITE(numout,9003) ' Boundary ', ib, & 218 & ' -> damping ONLY for tracers with external data provided' 219 IF(nn_trcdmp_bdy(ib) .EQ. 2) WRITE(numout,9003) ' Boundary ', ib, & 220 & ' -> damping of ALL tracers' 215 221 IF(nn_trcdmp_bdy(ib) .GT. 0) THEN 216 222 WRITE(numout,9003) ' USE damping parameters from nambdy for boundary ', ib,' : '
Note: See TracChangeset
for help on using the changeset viewer.