Changeset 11587
- Timestamp:
- 2019-09-20T18:50:21+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/AGRIF_DEMO/EXPREF/namelist_cfg
r11413 r11587 108 108 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 109 109 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 110 sn_tdif = 'taudif_core' , 24. , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 110 111 / 111 112 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/C1D_PAPA/EXPREF/namelist_cfg
r11413 r11587 159 159 sn_snow = 'forcing_C1D_PAPA' , 3. , 'sososnow', .false. , .false. , 'yearly' , '' , '' , '' 160 160 sn_slp = 'forcing_C1D_PAPA' , 3. , 'somslpre', .true. , .false. , 'yearly' , '' , '' , '' 161 sn_tdif = 'forcing_C1D_PAPA' , 24. , 'taudif' , .false. , .false. , 'yearly' , '' , '' , '' 162 161 163 / 162 164 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg
r11413 r11587 118 118 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 119 119 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 120 sn_tdif = 'taudif_core' , 24. , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 120 121 / 121 122 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/ORCA2_SAS_ICE/EXPREF/namelist_cfg
r11413 r11587 58 58 !----------------------------------------------------------------------- 59 59 nn_fsbc = 1 ! frequency of SBC module call 60 ! (also = the frequency of sea-ice & iceberg model call)61 ! Type of air-sea fluxes62 60 ln_blk = .true. ! Bulk formulation (T => fill namsbc_blk ) 63 ln_abl = .false. ! ABL formulation (T => fill namsbc_abl ) 64 ! Sea-ice : 65 nn_ice = 2 ! =2 or 3 automatically for SI3 or CICE ("key_si3" or "key_cice") 66 ! except in AGRIF zoom where it has to be specified 61 nn_ice = 2 ! =2 sea-ice model ("key_SI3" or "key_cice") 67 62 / 68 63 !----------------------------------------------------------------------- … … 84 79 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 85 80 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 81 sn_tdif = 'taudif_core' , 24. , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 86 82 / 87 83 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/SHARED/field_def_nemo-ice.xml
r11586 r11587 258 258 <field id="iceage_cat" long_name="Ice age per category" unit="days" detect_missing_value="true" /> 259 259 <field id="icebrv_cat" long_name="Brine volume per category" unit="%" detect_missing_value="true" /> 260 <field id="icealb_cat" long_name="Sea-ice or snow albedo" unit="" detect_missing_value="true" /> 260 261 261 262 <!-- Add-ons for SIMIP --> -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/SHARED/field_def_nemo-oce.xml
r11586 r11587 8 8 ============================================================================================================ 9 9 --> 10 <field_definition level="1" prec=" 8" operation="instant" enabled=".TRUE." default_value="1.e20" > <!-- time step automaticaly defined -->10 <field_definition level="1" prec="4" operation="average" enabled=".TRUE." default_value="1.e20" > <!-- time step automaticaly defined --> 11 11 12 12 <!-- … … 24 24 25 25 <field id="toce" long_name="temperature" standard_name="sea_water_potential_temperature" unit="degC" grid_ref="grid_T_3D"/> 26 <field id="toce_e3t" long_name="temperature (thickness weighted)" unit="degC" grid_ref="grid_T_3D" > toce * e3t </field >26 <field id="toce_e3t" long_name="temperature (thickness weighted)" unit="degC" grid_ref="grid_T_3D" > toce * e3t </field > 27 27 <field id="soce" long_name="salinity" standard_name="sea_water_practical_salinity" unit="1e-3" grid_ref="grid_T_3D"/> 28 <field id="soce_e3t" long_name="salinity (thickness weighted)" unit="1e-3" grid_ref="grid_T_3D" > soce * e3t </field >28 <field id="soce_e3t" long_name="salinity (thickness weighted)" unit="1e-3" grid_ref="grid_T_3D" > soce * e3t </field > 29 29 30 30 <!-- t-eddy viscosity coefficients (ldfdyn) --> … … 33 33 34 34 <field id="sst" long_name="sea surface temperature" standard_name="sea_surface_temperature" unit="degC" /> 35 <field id="sst2" long_name="square of sea surface temperature" standard_name="square_of_sea_surface_temperature" unit="degC2" > sst * sst </field>35 <field id="sst2" long_name="square of sea surface temperature" standard_name="square_of_sea_surface_temperature" unit="degC2" > sst * sst </field > 36 36 <field id="sstmax" long_name="max of sea surface temperature" field_ref="sst" operation="maximum" /> 37 37 <field id="sstmin" long_name="min of sea surface temperature" field_ref="sst" operation="minimum" /> … … 45 45 46 46 <field id="sss" long_name="sea surface salinity" standard_name="sea_surface_salinity" unit="1e-3" /> 47 <field id="sss2" long_name="square of sea surface salinity" unit="1e-6" > sss * sss </field >47 <field id="sss2" long_name="square of sea surface salinity" unit="1e-6" > sss * sss </field > 48 48 <field id="sssmax" long_name="max of sea surface salinity" field_ref="sss" operation="maximum" /> 49 49 <field id="sssmin" long_name="min of sea surface salinity" field_ref="sss" operation="minimum" /> … … 54 54 55 55 <field id="ssh" long_name="sea surface height" standard_name="sea_surface_height_above_geoid" unit="m" /> 56 <field id="ssh2" long_name="square of sea surface height" standard_name="square_of_sea_surface_height_above_geoid" unit="m2" > ssh * ssh </field >56 <field id="ssh2" long_name="square of sea surface height" standard_name="square_of_sea_surface_height_above_geoid" unit="m2" > ssh * ssh </field > 57 57 <field id="wetdep" long_name="wet depth" standard_name="wet_depth" unit="m" /> 58 58 <field id="sshmax" long_name="max of sea surface height" field_ref="ssh" operation="maximum" /> … … 237 237 238 238 <!-- SBC --> 239 240 239 <field_group id="SBC" > <!-- time step automaticaly defined based on nn_fsbc --> 241 240 … … 301 300 <field id="iceshelf_cea" long_name="Iceshelf" standard_name="water_flux_into_sea_water_from_iceshelf" unit="kg/m2/s" /> 302 301 302 303 303 <!-- available if key_oasis3 + conservative method --> 304 304 <field id="rain" long_name="Liquid precipitation" standard_name="rainfall_flux" unit="kg/m2/s" /> … … 454 454 <field id="voces" long_name="ocean transport along j-axis times salinity (CRS)" unit="1e-3*m/s" grid_ref="grid_V_3D" /> 455 455 <field id="ssvww" long_name="ocean surface wind work along j-axis" standard_name="surface_y_wind_work" unit="N/m*s" > vtau * ssv </field> 456 457 456 458 457 <!-- v-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/SPITZ12/EXPREF/namelist_cfg
r11586 r11587 107 107 sn_snow = 'MARv3.6-9km-Svalbard-2hourly_spitz' , 2. , 'snow' , .true. , .false. , 'yearly' , 'weights_bilin', '' , '' 108 108 sn_slp = 'MARv3.6-9km-Svalbard-2hourly_spitz' , 2. , 'slp' , .true. , .false. , 'yearly' , 'weights_bilin', '' , '' 109 sn_tdif = 'MARv3.6-9km-Svalbard-2hourly_spitz' , 2. , 'tdif' , .true. , .false. , 'yearly' , 'weights_bilin', '' , '' 109 110 / 110 111 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/cfgs/SPITZ12/EXPREF/namelist_ice_cfg
r11586 r11587 103 103 &namdia ! Diagnostics 104 104 !------------------------------------------------------------------------------ 105 ln_icediachk = .true. ! check online the heat, mass & salt budgets (T) or not (F)106 105 / -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/ICE/icedyn_rdgrft.F90
r11586 r11587 278 278 ! controls 279 279 IF( ln_ctl ) CALL ice_prt3D ('icedyn_rdgrft') ! prints 280 IF( ln_icectl ) CALL ice_prt (kt, iiceprt, jiceprt,-1, ' - ice dyn rdgrft - ') ! prints 280 281 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icedyn_rdgrft', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation 281 282 IF( ln_icediachk ) CALL ice_cons2D (1, 'icedyn_rdgrft', diag_v, diag_s, diag_t, diag_fv, diag_fs, diag_ft) ! conservation -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/ICE/icesbc.F90
r11413 r11587 165 165 ALLOCATE( zalb(jpi,jpj), zmsk00(jpi,jpj) ) 166 166 167 WHERE( at_i_b < = epsi06)167 WHERE( at_i_b < 1.e-03 ) 168 168 zmsk00(:,:) = 0._wp 169 169 zalb (:,:) = rn_alb_oce -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/ICE/icevar.F90
r11586 r11587 868 868 !! ** Purpose : converting 1-cat ice to jpl ice categories 869 869 !! 870 !! ice thickness distribution follows a gaussian law 871 !! around the concentration of the most likely ice thickness 872 !! (similar as iceistate.F90) 873 !! 874 !! ** Method: Iterative procedure 875 !! 876 !! 1) Try to fill the jpl ice categories (bounds hi_max(0:jpl)) with a gaussian 877 !! 878 !! 2) Check whether the distribution conserves area and volume, positivity and 879 !! category boundaries 870 !! 871 !! ** Method: ice thickness distribution follows a gamma function from Abraham et al. (2015) 872 !! it has the property of conserving total concentration and volume 880 873 !! 881 !! 3) If not (input ice is too thin), the last category is empty and882 !! the number of categories is reduced (jpl-1)883 !!884 !! 4) Iterate until ok (SUM(itest(:) = 4)885 874 !! 886 875 !! ** Arguments : phti: 1-cat ice thickness … … 890 879 !! ** Output : jpl-cat 891 880 !! 892 !! (Example of application: BDY forcings when input are cell averaged) 881 !! Abraham, C., Steiner, N., Monahan, A. and Michel, C., 2015. 882 !! Effects of subgrid‐scale snow thickness variability on radiative transfer in sea ice. 883 !! Journal of Geophysical Research: Oceans, 120(8), pp.5597-5614 893 884 !!------------------------------------------------------------------- 894 885 REAL(wp), DIMENSION(:), INTENT(in) :: phti, phts, pati ! input ice/snow variables … … 897 888 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pt_i, pt_s, pt_su, ps_i, pa_ip, ph_ip ! output ice/snow temp & sal & ponds 898 889 ! 899 INTEGER , DIMENSION(4) :: itest 900 REAL(wp), ALLOCATABLE, DIMENSION(:) :: zfra 890 REAL(wp), ALLOCATABLE, DIMENSION(:) :: zfra, z1_hti 901 891 INTEGER :: ji, jk, jl 902 INTEGER :: idim, i_fill, jl0 903 REAL(wp) :: zarg, zV, zconv, zdh, zdv 904 !!------------------------------------------------------------------- 905 ! 906 ! == thickness and concentration == ! 907 ! distribution over the jpl ice categories 908 ! a gaussian distribution for ice concentration is used 909 ! then we check whether the distribution fullfills 910 ! volume and area conservation, positivity and ice categories bounds 892 INTEGER :: idim 893 REAL(wp) :: zv, zdh 894 !!------------------------------------------------------------------- 895 ! 911 896 idim = SIZE( phti , 1 ) 912 897 ! … … 915 900 pa_i(1:idim,1:jpl) = 0._wp 916 901 ! 902 ALLOCATE( z1_hti(idim) ) 903 WHERE( phti(:) /= 0._wp ) ; z1_hti(:) = 1._wp / phti(:) 904 ELSEWHERE ; z1_hti(:) = 0._wp 905 END WHERE 906 ! 907 ! == thickness and concentration == ! 908 ! for categories 1:jpl-1, integrate the gamma function from hi_max(jl-1) to hi_max(jl) 909 DO jl = 1, jpl-1 910 DO ji = 1, idim 911 ! 912 IF( phti(ji) > 0._wp ) THEN 913 ! concentration : integrate ((4A/H^2)xexp(-2x/H))dx from x=hi_max(jl-1) to hi_max(jl) 914 pa_i(ji,jl) = pati(ji) * z1_hti(ji) * ( ( phti(ji) + 2.*hi_max(jl-1) ) * EXP( -2.*hi_max(jl-1)*z1_hti(ji) ) & 915 & - ( phti(ji) + 2.*hi_max(jl ) ) * EXP( -2.*hi_max(jl )*z1_hti(ji) ) ) 916 ! 917 ! volume : integrate ((4A/H^2)x^2exp(-2x/H))dx from x=hi_max(jl-1) to hi_max(jl) 918 zv = pati(ji) * z1_hti(ji) * ( ( phti(ji)*phti(ji) + 2.*phti(ji)*hi_max(jl-1) + 2.*hi_max(jl-1)*hi_max(jl-1) ) & 919 & * EXP( -2.*hi_max(jl-1)*z1_hti(ji) ) & 920 & - ( phti(ji)*phti(ji) + 2.*phti(ji)*hi_max(jl) + 2.*hi_max(jl)*hi_max(jl) ) & 921 & * EXP(-2.*hi_max(jl)*z1_hti(ji)) ) 922 ! thickness 923 IF( pa_i(ji,jl) > epsi06 ) THEN 924 ph_i(ji,jl) = zv / pa_i(ji,jl) 925 ELSE 926 ph_i(ji,jl) = 0. 927 pa_i(ji,jl) = 0. 928 ENDIF 929 ENDIF 930 ! 931 ENDDO 932 ENDDO 933 ! 934 ! for the last category (jpl), integrate the gamma function from hi_max(jpl-1) to infinity 917 935 DO ji = 1, idim 918 936 ! 919 937 IF( phti(ji) > 0._wp ) THEN 920 ! 921 ! find which category (jl0) the input ice thickness falls into 922 jl0 = jpl 923 DO jl = 1, jpl 924 IF ( ( phti(ji) >= hi_max(jl-1) ) .AND. ( phti(ji) < hi_max(jl) ) ) THEN 925 jl0 = jl 926 CYCLE 927 ENDIF 928 END DO 929 ! 930 itest(:) = 0 931 i_fill = jpl + 1 !------------------------------------ 932 DO WHILE ( ( SUM( itest(:) ) /= 4 ) .AND. ( i_fill >= 2 ) ) ! iterative loop on i_fill categories 933 ! !------------------------------------ 934 i_fill = i_fill - 1 935 ! 936 ph_i(ji,1:jpl) = 0._wp 937 pa_i(ji,1:jpl) = 0._wp 938 itest(:) = 0 939 ! 940 IF ( i_fill == 1 ) THEN !-- case very thin ice: fill only category 1 941 ph_i(ji,1) = phti(ji) 942 pa_i(ji,1) = pati (ji) 943 ELSE !-- case ice is thicker: fill categories >1 944 ! thickness 945 DO jl = 1, i_fill - 1 946 ph_i(ji,jl) = hi_mean(jl) 947 END DO 948 ! 949 ! concentration 950 pa_i(ji,jl0) = pati(ji) / SQRT(REAL(jpl)) 951 DO jl = 1, i_fill - 1 952 IF ( jl /= jl0 ) THEN 953 zarg = ( ph_i(ji,jl) - phti(ji) ) / ( phti(ji) * 0.5_wp ) 954 pa_i(ji,jl) = pa_i (ji,jl0) * EXP(-zarg**2) 955 ENDIF 956 END DO 957 ! 958 ! last category 959 pa_i(ji,i_fill) = pati(ji) - SUM( pa_i(ji,1:i_fill-1) ) 960 zV = SUM( pa_i(ji,1:i_fill-1) * ph_i(ji,1:i_fill-1) ) 961 ph_i(ji,i_fill) = ( phti(ji) * pati(ji) - zV ) / MAX( pa_i(ji,i_fill), epsi10 ) 962 ! 963 ! correction if concentration of upper cat is greater than lower cat 964 ! (it should be a gaussian around jl0 but sometimes it is not) 965 IF ( jl0 /= jpl ) THEN 966 DO jl = jpl, jl0+1, -1 967 IF ( pa_i(ji,jl) > pa_i(ji,jl-1) ) THEN 968 zdv = ph_i(ji,jl) * pa_i(ji,jl) 969 ph_i(ji,jl ) = 0._wp 970 pa_i (ji,jl ) = 0._wp 971 pa_i (ji,1:jl-1) = pa_i(ji,1:jl-1) + zdv / MAX( REAL(jl-1) * phti(ji), epsi10 ) 972 END IF 973 END DO 974 ENDIF 975 ! 976 ENDIF 977 ! 978 ! Compatibility tests 979 zconv = ABS( pati(ji) - SUM( pa_i(ji,1:jpl) ) ) 980 IF ( zconv < epsi06 ) itest(1) = 1 ! Test 1: area conservation 981 ! 982 zconv = ABS( phti(ji)*pati(ji) - SUM( pa_i(ji,1:jpl)*ph_i(ji,1:jpl) ) ) 983 IF ( zconv < epsi06 ) itest(2) = 1 ! Test 2: volume conservation 984 ! 985 IF ( ph_i(ji,i_fill) >= hi_max(i_fill-1) ) itest(3) = 1 ! Test 3: thickness of the last category is in-bounds ? 986 ! 987 itest(4) = 1 988 DO jl = 1, i_fill 989 IF ( pa_i(ji,jl) < 0._wp ) itest(4) = 0 ! Test 4: positivity of ice concentrations 990 END DO 991 ! !---------------------------- 992 END DO ! end iteration on categories 993 ! !---------------------------- 938 ! concentration : integrate ((4A/H^2)xexp(-2x/H))dx from x=hi_max(jpl-1) to infinity 939 pa_i(ji,jpl) = pati(ji) * z1_hti(ji) * ( phti(ji) + 2.*hi_max(jpl-1) ) * EXP( -2.*hi_max(jpl-1)*z1_hti(ji) ) 940 941 ! volume : integrate ((4A/H^2)x^2exp(-2x/H))dx from x=hi_max(jpl-1) to infinity 942 zv = pati(ji) * z1_hti(ji) * ( phti(ji)*phti(ji) + 2.*phti(ji)*hi_max(jpl-1) + 2.*hi_max(jpl-1)*hi_max(jpl-1) ) & 943 & * EXP( -2.*hi_max(jpl-1)*z1_hti(ji) ) 944 ! thickness 945 IF( pa_i(ji,jpl) > epsi06 ) THEN 946 ph_i(ji,jpl) = zv / pa_i(ji,jpl) 947 else 948 ph_i(ji,jpl) = 0. 949 pa_i(ji,jpl) = 0. 950 ENDIF 994 951 ENDIF 995 END DO 996 952 ! 953 ENDDO 954 ! 997 955 ! Add Snow in each category where pa_i is not 0 998 956 DO jl = 1, jpl 999 957 DO ji = 1, idim 1000 958 IF( pa_i(ji,jl) > 0._wp ) THEN 1001 ph_s(ji,jl) = ph_i(ji,jl) * ( phts(ji) / phti(ji))959 ph_s(ji,jl) = ph_i(ji,jl) * phts(ji) * z1_hti(ji) 1002 960 ! In case snow load is in excess that would lead to transformation from snow to ice 1003 961 ! Then, transfer the snow excess into the ice (different from icethd_dh) … … 1009 967 END DO 1010 968 END DO 969 ! 970 DEALLOCATE( z1_hti ) 1011 971 ! 1012 972 ! == temperature and salinity == ! -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/ICE/icewri.F90
r11586 r11587 164 164 IF( iom_use('icehpnd_cat' ) ) CALL iom_put( 'icehpnd_cat' , h_ip * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! melt pond frac for categories 165 165 IF( iom_use('iceafpnd_cat') ) CALL iom_put( 'iceafpnd_cat', a_ip_frac * zmsk00l ) ! melt pond frac for categories 166 IF( iom_use('icealb_cat' ) ) CALL iom_put( 'icealb_cat' , alb_ice * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice albedo for categories 166 167 167 168 !------------------
Note: See TracChangeset
for help on using the changeset viewer.