Changeset 8962
- Timestamp:
- 2017-12-08T16:15:25+01:00 (7 years ago)
- Location:
- branches/2017/dev_CNRS_2017/NEMOGCM
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/README
r8900 r8962 1 1 ------- 2 Context 2 Purpose 3 3 ------- 4 Th e aim of this demonstration case is to study the advection of a patch of ice in a bi-periodic channel with a slab ocean (i.e. 1 ocean layer which does not interact with sea-ice).4 This demonstration case can serve to different purposes: 5 5 6 1) The main one: study of the advection of a patch of ice in a bi-periodic channel with a slab ocean (i.e. 1 ocean layer) 7 ==> set ln_icethd=false in namelist_ice_cfg 8 9 2) Secondary: study of ice thermodynamics in the same basin 10 ==> set ln_icedyn=false in namelist_ice_cfg 11 ==> eventually change usrdef_sbc.F90 in MY_SRC to fit your needs 12 13 ----------- 14 Experiments 15 ----------- 6 16 Two experiments can be configured: 17 7 18 a) A simple channel at 3km horizontal resolution (slightly variable => +- 10%) 19 ==> remove key_agrif in cpp keys 20 8 21 b) Same as a) but with an Agrif zoom in the center 1:3, and 3 ghost cells (defined in par_oce.F90) 22 ==> add key_agrif in cpp keys 9 23 10 24 ---------- … … 13 27 Be careful, the model can only run on 1 processor in the N-S dimension 14 28 15 Compile and run the model once to get a mesh_mask.nc file with the following command (note; remove key_agrif in cpp keys for experiment a):29 a) Compile and run the model once to get a mesh_mask.nc file with the following command: 16 30 ../../../makenemo -a TEST_CASES -n SAS_BIPER -m X64_ADA -j 4 17 31 poe ./opa -procs 1 18 32 19 Create the initial condition file for sea-ice (initice.nc) by running this python script:33 b) Create the initial condition file for sea-ice (initice.nc) by running this python script: 20 34 python ./make_INITICE.py 21 35 22 Run the model a second time36 c) Run the model a second time 23 37 poe ./opa -procs 1 24 38 … … 26 40 What to look at 27 41 --------------- 28 One can test29 42 In case of purpose 1, One can test 43 --- 30 44 a) the advection scheme: Ultimate-Macho (ln_adv_UMx=T) versus Prather (ln_adv_Pra=T) 31 45 for a square (ice concentration) or a gaussian (ice volume) … … 36 50 b) the advection through an agrif zoom 1:3 37 51 52 In case of purpose 2, one can test conservation of properties: 53 --- 54 c) ice should not change at all if surface fluxes = 0 and SST = freezing temperature 55 38 56 -------------------------------------- 39 57 Interpretation of the results (remarks) -
branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/file_def_nemo-lim.xml
r8884 r8962 30 30 <field field_ref="iceshe" name="sishea" /> 31 31 <field field_ref="icestr" name="sistre" /> 32 <field field_ref="sst_m" name="sst_m" /> 32 33 <!-- categories --> 33 34 <field field_ref="snwthic_cat" name="snthicat"/> -
branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/MY_SRC/usrdef_sbc.F90
r8882 r8962 25 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 26 26 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 27 USE wrk_nemo28 27 29 28 IMPLICIT NONE … … 93 92 END SUBROUTINE usrdef_sbc_ice_tau 94 93 95 SUBROUTINE usrdef_sbc_ice_flx( kt )94 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 96 95 !!--------------------------------------------------------------------- 97 96 !! *** ROUTINE usrdef_sbc_ice_flx *** … … 99 98 !! ** Purpose : provide the surface boundary (flux) condition over sea-ice 100 99 !!--------------------------------------------------------------------- 101 REAL(wp), DIMENSION(:,:), POINTER :: zsnw ! snw distribution after wind blowing102 100 INTEGER, INTENT(in) :: kt ! ocean time step 101 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 102 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 103 !! 104 REAL(wp) :: zfr1, zfr2 ! local variables 105 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 103 106 !!--------------------------------------------------------------------- 104 CALL wrk_alloc( jpi,jpj, zsnw )105 107 ! 106 108 IF( kt==nit000 .AND. lwp) WRITE(numout,*)' usrdef_sbc_ice : SAS_BIPER case: NO flux forcing' … … 133 135 qsr_tot (:,:) = at_i_b(:,:) * qsr_oce(:,:) + SUM( a_i_b(:,:,:) * qsr_ice(:,:,:), dim=3 ) 134 136 135 !-------------------------------------------------------------------- 136 ! FRACTIONs of net shortwave radiation which is not absorbed in the 137 ! thin surface layer and penetrates inside the ice cover 138 ! ( Maykut and Untersteiner, 1971 ; Ebert and Curry, 1993 ) 139 fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 140 fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 141 142 CALL wrk_dealloc( jpi,jpj, zsnw ) 143 137 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 138 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm 139 zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1 140 ! 141 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 142 qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 143 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 144 qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1 145 ELSEWHERE ! zero when hs>0 146 qsr_ice_tr(:,:,:) = 0._wp 147 END WHERE 148 144 149 END SUBROUTINE usrdef_sbc_ice_flx 145 150 -
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r8920 r8962 139 139 ! 140 140 CASE( jp_usr ) !--- user defined formulation 141 CALL usrdef_sbc_ice_flx( kt )141 CALL usrdef_sbc_ice_flx( kt, h_s, h_i ) 142 142 CASE( jp_blk ) !--- bulk formulation 143 143 CALL blk_ice_flx ( t_su, h_s, h_i, alb_ice ) ! -
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r8920 r8962 843 843 REAL(wp) :: zcoef_dqlw, zcoef_dqla ! - - 844 844 REAL(wp) :: zztmp, z1_lsub ! - - 845 REAL(wp) :: zfrqsr_tr_i ! sea ice shortwave fraction transmitted below through the ice 846 REAL(wp) :: zfr1, zfr2, zfac ! local variables 845 REAL(wp) :: zfr1, zfr2 ! local variables 847 846 REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_qlw ! long wave heat flux over ice 848 847 REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_qsb ! sensible heat flux over ice … … 951 950 END DO 952 951 953 ! --- absorbed and transmitted shortwave radiation (W/m2) --- ! 954 ! 955 ! former coding was 956 ! fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 957 ! fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 958 959 ! --- surface transmission parameter (i0, Grenfell Maykut 77) --- ! 960 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! standard value 961 zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1 962 963 qsr_ice_tr(:,:,:) = 0._wp 964 965 DO jl = 1, jpl 966 DO jj = 1, jpj 967 DO ji = 1, jpi 968 ! 969 zfac = MAX( 0._wp , 1._wp - phi(ji,jj,jl) * 10._wp ) ! linear weighting factor: =0 for phi=0, =1 for phi = 0.1 970 zfrqsr_tr_i = zfr1 + zfac * zfr2 ! below 10 cm, linearly increase zfrqsr_tr_i until 1 at zero thickness 971 ! 972 IF ( phs(ji,jj,jl) <= 0._wp ) THEN ; zfrqsr_tr_i = zfr1 + zfac * zfr2 973 ELSE ; zfrqsr_tr_i = 0._wp ! snow fully opaque 974 ENDIF 975 ! 976 qsr_ice_tr(ji,jj,jl) = zfrqsr_tr_i * qsr_ice(ji,jj,jl) ! transmitted solar radiation 977 ! 978 END DO 979 END DO 980 END DO 952 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 953 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm 954 zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1 955 ! 956 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 957 qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 958 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 959 qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1 960 ELSEWHERE ! zero when hs>0 961 qsr_ice_tr(:,:,:) = 0._wp 962 END WHERE 981 963 ! 982 964 IF(ln_ctl) THEN -
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r8948 r8962 47 47 USE iom ! NetCDF library 48 48 USE lib_mpp ! distribued memory computing library 49 USE wrk_nemo ! work arrays50 49 USE timing ! Timing 51 50 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 244 243 INTEGER :: jn ! dummy loop index 245 244 INTEGER :: ios, inum ! Local integer 246 REAL(wp), POINTER, DIMENSION(:,:) :: zacs, zaos245 REAL(wp), DIMENSION(jpi,jpj) :: zacs, zaos 247 246 !! 248 247 NAMELIST/namsbc_cpl/ sn_snd_temp , sn_snd_alb , sn_snd_thick, sn_snd_crt , sn_snd_co2 , & … … 258 257 IF( nn_timing == 1 ) CALL timing_start('sbc_cpl_init') 259 258 ! 260 CALL wrk_alloc( jpi,jpj, zacs, zaos )261 262 259 ! ================================ ! 263 260 ! Namelist informations ! … … 1028 1025 IF( ln_dm2dc .AND. ln_cpl ) ncpl_qsr_freq = 86400 / ncpl_qsr_freq 1029 1026 1030 CALL wrk_dealloc( jpi,jpj, zacs, zaos )1031 1027 ! 1032 1028 IF( nn_timing == 1 ) CALL timing_stop('sbc_cpl_init') -
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_sbc.F90
r8882 r8962 229 229 END SUBROUTINE usrdef_sbc_ice_tau 230 230 231 SUBROUTINE usrdef_sbc_ice_flx( kt )231 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 232 232 INTEGER, INTENT(in) :: kt ! ocean time step 233 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 234 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 233 235 END SUBROUTINE usrdef_sbc_ice_flx 234 236
Note: See TracChangeset
for help on using the changeset viewer.