Changeset 13467
- Timestamp:
- 2020-09-15T09:28:26+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/temporary_r4_trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/cfgs/SHARED/field_def_nemo-oce.xml
r13466 r13467 91 91 <field id="alpha" long_name="thermal expansion" unit="degC-1" grid_ref="grid_T_3D" /> 92 92 <field id="beta" long_name="haline contraction" unit="1e3" grid_ref="grid_T_3D" /> 93 <field id="bn2" long_name="squared Brunt-Vaisala frequency" unit="s-1" grid_ref="grid_T_3D" />94 93 <field id="rhop" long_name="potential density (sigma0)" standard_name="sea_water_sigma_theta" unit="kg/m3" grid_ref="grid_T_3D" /> 95 94 … … 543 542 <field id="w_masstr2" long_name="square of vertical mass transport" standard_name="square_of_upward_ocean_mass_transport" unit="kg2/s2" /> 544 543 544 <!-- EOS --> 545 <field id="bn2" long_name="squared Brunt-Vaisala frequency" unit="s-2" /> 546 545 547 </field_group> 546 548 … … 598 600 599 601 600 <!-- variables available with key_float-->602 <!-- variables available with ln_floats --> 601 603 602 604 <field_group id="floatvar" grid_ref="grid_T_nfloat" operation="instant" > -
NEMO/branches/2020/temporary_r4_trunk/cfgs/SHARED/namelist_ice_ref
r13466 r13467 95 95 rn_creepl = 2.0e-9 ! creep limit [1/s] 96 96 rn_ecc = 2.0 ! eccentricity of the elliptical yield curve 97 nn_nevp = 1 20 ! number of EVP subcycles97 nn_nevp = 100 ! number of EVP subcycles 98 98 rn_relast = 0.333 ! ratio of elastic timescale to ice time step: Telast = dt_ice * rn_relast 99 ! advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300) 100 ln_rhg_chkcvg = .false. ! check convergence of rheology (outputs: file ice_cvg.nc & variable uice_cvg) 99 ! advised value: 1/3 (nn_nevp=100) or 1/9 (nn_nevp=300) 100 nn_rhg_chkcvg = 0 ! check convergence of rheology 101 ! = 0 no check 102 ! = 1 check at the main time step (output xml: uice_cvg) 103 ! = 2 check at both main and rheology time steps (additional output: ice_cvg.nc) 104 ! this option 2 asks a lot of communications between cpu 101 105 / 102 106 !------------------------------------------------------------------------------ … … 111 115 !------------------------------------------------------------------------------ 112 116 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-) 113 nn_snwfra = 0! calculate the fraction of ice covered by snow (for zdf and albedo)117 nn_snwfra = 2 ! calculate the fraction of ice covered by snow (for zdf and albedo) 114 118 ! = 0 fraction = 1 (if snow) or 0 (if no snow) 115 119 ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] … … 124 128 ln_cndflx = .false. ! Use conduction flux as surface boundary conditions (i.e. for Jules coupling) 125 129 ln_cndemulate = .false. ! emulate conduction flux (if not provided in the inputs) 126 nn_qtrice = 0! Solar flux transmitted thru the surface scattering layer:130 nn_qtrice = 1 ! Solar flux transmitted thru the surface scattering layer: 127 131 ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 128 132 ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) … … 190 194 &namthd_pnd ! Melt ponds 191 195 !------------------------------------------------------------------------------ 192 ln_pnd = . false.! activate melt ponds or not193 ln_pnd_LEV = . false.! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012)196 ln_pnd = .true. ! activate melt ponds or not 197 ln_pnd_LEV = .true. ! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 194 198 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 195 199 rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? -
NEMO/branches/2020/temporary_r4_trunk/cfgs/SHARED/namelist_ref
r13466 r13467 1054 1054 rn_bshear = 1.e-20 ! background shear (>0) currently a numerical threshold (do not change it) 1055 1055 nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) 1056 nn_mxl = 2! mixing length: = 0 bounded by the distance to surface and bottom1056 nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom 1057 1057 ! ! = 1 bounded by the local vertical scale factor 1058 1058 ! ! = 2 first vertical derivative of mixing length bounded by 1 1059 1059 ! ! = 3 as =2 with distinct dissipative an mixing length scale 1060 1060 ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) 1061 nn_mxlice = 0! type of scaling under sea-ice1061 nn_mxlice = 2 ! type of scaling under sea-ice 1062 1062 ! = 0 no scaling under sea-ice 1063 1063 ! = 1 scaling with constant sea-ice thickness -
NEMO/branches/2020/temporary_r4_trunk/cfgs/SPITZ12/EXPREF/namelist_cfg
r13466 r13467 345 345 !----------------------------------------------------------------------- 346 346 ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) 347 nn_mxlice = 2! type of scaling under sea-ice347 nn_mxlice = 0 ! type of scaling under sea-ice 348 348 ! = 0 no scaling under sea-ice 349 349 ! = 1 scaling with constant sea-ice thickness 350 350 ! = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) 351 351 ! = 3 scaling with maximum sea-ice thickness 352 nn_eice = 1! attenutaion of langmuir & surface wave breaking under ice352 nn_eice = 0 ! attenutaion of langmuir & surface wave breaking under ice 353 353 ! ! = 0 no impact of ice cover on langmuir & surface wave breaking 354 354 ! ! = 1 weigthed by 1-TANH(10*fr_i) -
NEMO/branches/2020/temporary_r4_trunk/cfgs/SPITZ12/EXPREF/namelist_ice_cfg
r13466 r13467 55 55 &namsbc ! Ice surface boundary conditions 56 56 !------------------------------------------------------------------------------ 57 nn_snwfra = 0 ! calculate the fraction of ice covered by snow (for zdf and albedo) 58 ! = 0 fraction = 1 (if snow) or 0 (if no snow) 59 ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] 60 ! = 2 fraction = hsnw / (hsnw+0.02) [CICE formulation] 61 nn_qtrice = 0 ! Solar flux transmitted thru the surface scattering layer: 62 ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 63 ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) 57 64 / 58 65 !------------------------------------------------------------------------------ … … 81 88 &namthd_pnd ! Melt ponds 82 89 !------------------------------------------------------------------------------ 83 ln_pnd = . true. ! activate melt ponds or not84 ln_pnd_LEV = . true. ! activate level ice melt ponds90 ln_pnd = .false. ! activate melt ponds or not 91 ln_pnd_LEV = .false. ! activate level ice melt ponds 85 92 / 86 93 -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/ice.F90
r13466 r13467 155 155 INTEGER , PUBLIC :: nn_nevp !: number of iterations for subcycling 156 156 REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp) 157 LOGICAL , PUBLIC :: ln_rhg_chkcvg !: check ice rheology convergence157 INTEGER , PUBLIC :: nn_rhg_chkcvg !: check ice rheology convergence 158 158 ! 159 159 ! !!** ice-advection namelist (namdyn_adv) ** … … 412 412 ! 413 413 !!---------------------------------------------------------------------- 414 !! * Only for atmospheric coupling415 !!----------------------------------------------------------------------416 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_last_couple !: Ice fractional area at last coupling time417 !418 !!----------------------------------------------------------------------419 414 !! NEMO/ICE 4.0 , NEMO Consortium (2018) 420 415 !! $Id$ … … 429 424 INTEGER :: ice_alloc 430 425 ! 431 INTEGER :: ierr(1 7), ii426 INTEGER :: ierr(16), ii 432 427 !!----------------------------------------------------------------- 433 428 ierr(:) = 0 … … 511 506 ALLOCATE( t_si(jpi,jpj,jpl) , tm_si(jpi,jpj) , qcn_ice_bot(jpi,jpj,jpl) , qcn_ice_top(jpi,jpj,jpl) , STAT = ierr(ii) ) 512 507 513 ! * For atmospheric coupling514 ii = ii + 1515 ALLOCATE( a_i_last_couple(jpi,jpj,jpl) , STAT=ierr(ii) )516 517 508 ice_alloc = MAXVAL( ierr(:) ) 518 509 IF( ice_alloc /= 0 ) CALL ctl_stop( 'STOP', 'ice_alloc: failed to allocate arrays.' ) -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_rhg.F90
r13466 r13467 110 110 INTEGER :: ios, ioptio ! Local integer output status for namelist read 111 111 !! 112 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, ln_rhg_chkcvg112 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg 113 113 !!------------------------------------------------------------------- 114 114 ! … … 132 132 WRITE(numout,*) ' number of iterations for subcycling nn_nevp = ', nn_nevp 133 133 WRITE(numout,*) ' ratio of elastic timescale over ice time step rn_relast = ', rn_relast 134 WRITE(numout,*) ' check convergence of rheology ln_rhg_chkcvg = ', ln_rhg_chkcvg 134 WRITE(numout,*) ' check convergence of rheology nn_rhg_chkcvg = ', nn_rhg_chkcvg 135 IF ( nn_rhg_chkcvg == 0 ) THEN ; WRITE(numout,*) ' no check' 136 ELSEIF( nn_rhg_chkcvg == 1 ) THEN ; WRITE(numout,*) ' check cvg at the main time step' 137 ELSEIF( nn_rhg_chkcvg == 2 ) THEN ; WRITE(numout,*) ' check cvg at both main and rheology time steps' 138 ENDIF 135 139 ENDIF 136 140 ! -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_rhg_evp.F90
r13466 r13467 362 362 ! 363 363 ! convergence test 364 IF( ln_rhg_chkcvg) THEN364 IF( nn_rhg_chkcvg == 1 .OR. nn_rhg_chkcvg == 2 ) THEN 365 365 DO jj = 1, jpj 366 366 DO ji = 1, jpi … … 715 715 716 716 ! convergence test 717 IF( ln_rhg_chkcvg) CALL rhg_cvg( kt, jter, nn_nevp, u_ice, v_ice, zu_ice, zv_ice )717 IF( nn_rhg_chkcvg == 2 ) CALL rhg_cvg( kt, jter, nn_nevp, u_ice, v_ice, zu_ice, zv_ice ) 718 718 ! 719 719 ! ! ==================== ! … … 890 890 ! 891 891 ! --- convergence tests --- ! 892 IF( ln_rhg_chkcvg) THEN892 IF( nn_rhg_chkcvg == 1 .OR. nn_rhg_chkcvg == 2 ) THEN 893 893 IF( iom_use('uice_cvg') ) THEN 894 894 IF( ln_aEVP ) THEN ! output: beta * ( u(t=nn_nevp) - u(t=nn_nevp-1) ) -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icerst.F90
r13466 r13467 18 18 USE phycst , ONLY : rt0 19 19 USE sbc_oce , ONLY : nn_fsbc, ln_cpl 20 USE sbc_oce , ONLY : nn_components, jp_iam_sas ! SAS ss[st]_m init 21 USE sbc_oce , ONLY : sst_m, sss_m ! SAS ss[st]_m init 22 USE oce , ONLY : tsn ! SAS ss[st]_m init 23 USE eosbn2 , ONLY : l_useCT, eos_pt_from_ct ! SAS ss[st]_m init 20 24 USE iceistate ! sea-ice: initial state 21 25 USE icectl ! sea-ice: control … … 278 282 ELSE ! == case of a simplified restart == ! 279 283 ! ! ---------------------------------- ! 280 CALL ctl_warn('ice_rst_read: you are using a simplifiedice restart')284 CALL ctl_warn('ice_rst_read: you are attempting to use an unsuitable ice restart') 281 285 ! 282 CALL ice_istate_init 286 IF( .NOT. ln_iceini .OR. nn_iceini_file == 2 ) THEN 287 CALL ctl_stop('STOP', 'ice_rst_read: you need ln_ice_ini=T and nn_iceini_file=0 or 1') 288 ELSE 289 CALL ctl_warn('ice_rst_read: using ice_istate to set initial conditions instead') 290 ENDIF 291 ! 292 IF( nn_components == jp_iam_sas ) THEN ! SAS case: ss[st]_m were not initialized by sbc_ssm_init 293 ! 294 IF(lwp) WRITE(numout,*) ' SAS: default initialisation of ss[st]_m arrays used in ice_istate' 295 IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 296 ELSE ; sst_m(:,:) = tsn(:,:,1,jp_tem) 297 ENDIF 298 sss_m(:,:) = tsn(:,:,1,jp_sal) 299 ENDIF 300 ! 283 301 CALL ice_istate( nit000 ) 284 302 ! 285 IF( .NOT.ln_iceini .OR. nn_iceini_file == 0 ) &286 & CALL ctl_stop('STOP', 'ice_rst_read: you need ln_ice_ini=T and nn_iceini_file=0')287 !288 303 ENDIF 289 304 -
NEMO/branches/2020/temporary_r4_trunk/src/ICE/icestp.F90
r13466 r13467 257 257 ! 258 258 ! ! Initial sea-ice state 259 CALL ice_istate_init 259 260 IF ( ln_rstart .OR. nn_iceini_file == 2 ) THEN 260 261 CALL ice_rst_read ! start from a restart file 261 262 ELSE 262 CALL ice_istate_init263 263 CALL ice_istate( nit000 ) ! start from rest or read a file 264 264 ENDIF -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/IOM/prtctl.F90
r10068 r13467 361 361 9000 FORMAT(a41,i4.4,a14) 362 362 9001 FORMAT(a59) 363 9002 FORMAT(a20,i4.4,a36,i 3.3)363 9002 FORMAT(a20,i4.4,a36,i4.4) 364 364 9003 FORMAT(a20,i4.4,a17,i4.4) 365 365 9004 FORMAT(a11,i4.4,a26,i4.4,a14) -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbc_ice.F90
r13466 r13467 95 95 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i 96 96 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_i, h_s 97 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_last_couple !: Sea ice fraction on categories at the last coupling point98 97 99 98 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tatm_ice !: air temperature [K] -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbcblk.F90
r13466 r13467 270 270 WRITE(numout,*) ' "NCAR" algorithm (Large and Yeager 2008) ln_NCAR = ', ln_NCAR 271 271 WRITE(numout,*) ' "COARE 3.0" algorithm (Fairall et al. 2003) ln_COARE_3p0 = ', ln_COARE_3p0 272 WRITE(numout,*) ' "COARE 3.5" algorithm (Edson et al. 2013) ln_COARE_3p5 = ', ln_COARE_3p 0272 WRITE(numout,*) ' "COARE 3.5" algorithm (Edson et al. 2013) ln_COARE_3p5 = ', ln_COARE_3p5 273 273 WRITE(numout,*) ' "ECMWF" algorithm (IFS cycle 31) ln_ECMWF = ', ln_ECMWF 274 274 WRITE(numout,*) ' add High freq.contribution to the stress module ln_taudif = ', ln_taudif -
NEMO/branches/2020/temporary_r4_trunk/src/OCE/SBC/sbccpl.F90
r13466 r13467 205 205 206 206 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: alb_oce_mix ! ocean albedo sent to atmosphere (mix clear/overcast sky) 207 #if defined key_si3 || defined key_cice 208 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i_last_couple !: Ice fractional area at last coupling time 209 #endif 207 210 208 211 REAL(wp) :: rpref = 101000._wp ! reference atmospheric pressure[N/m2] … … 224 227 !! *** FUNCTION sbc_cpl_alloc *** 225 228 !!---------------------------------------------------------------------- 226 INTEGER :: ierr( 4)229 INTEGER :: ierr(5) 227 230 !!---------------------------------------------------------------------- 228 231 ierr(:) = 0 … … 234 237 #endif 235 238 ALLOCATE( xcplmask(jpi,jpj,0:nn_cplmodel) , STAT=ierr(3) ) 236 ! 237 IF( .NOT. ln_apr_dyn ) ALLOCATE( ssh_ib(jpi,jpj), ssh_ibb(jpi,jpj), apr(jpi, jpj), STAT=ierr(4) ) 239 #if defined key_si3 || defined key_cice 240 ALLOCATE( a_i_last_couple(jpi,jpj,jpl) , STAT=ierr(4) ) 241 #endif 242 ! 243 IF( .NOT. ln_apr_dyn ) ALLOCATE( ssh_ib(jpi,jpj), ssh_ibb(jpi,jpj), apr(jpi, jpj), STAT=ierr(5) ) 238 244 239 245 sbc_cpl_alloc = MAXVAL( ierr ) … … 2183 2189 ! 2184 2190 isec = ( kt - nit000 ) * NINT( rdt ) ! date of exchanges 2191 info = OASIS_idle 2185 2192 2186 2193 zfr_l(:,:) = 1.- fr_i(:,:) -
NEMO/branches/2020/temporary_r4_trunk/src/TOP/PISCES/P4Z/p4zsms.F90
r13029 r13467 65 65 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d 66 66 REAL(wp), ALLOCATABLE, DIMENSION(:,:,: ) :: zw3d 67 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrdt ! 4D workspace67 REAL(wp), DIMENSION(jpi,jpj,jpk,jp_pisces) :: ztrbbio 68 68 69 69 !!--------------------------------------------------------------------- … … 89 89 rfact = r2dttrc 90 90 ! 91 ! trends computation initialisation92 IF( l_trdtrc ) THEN93 ALLOCATE( ztrdt(jpi,jpj,jpk,jp_pisces) ) !* store now fields before applying the Asselin filter94 ztrdt(:,:,:,:) = trn(:,:,:,:)95 ENDIF96 !97 98 91 IF( ( ln_top_euler .AND. kt == nittrc000 ) .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + nn_dttrc ) ) THEN 99 92 rfactr = 1. / rfact … … 113 106 END DO 114 107 ENDIF 108 109 DO jn = jp_pcs0, jp_pcs1 ! Store the tracer concentrations before entering PISCES 110 ztrbbio(:,:,:,jn) = trb(:,:,:,jn) 111 END DO 112 115 113 ! 116 114 IF( ll_sbc ) CALL p4z_sbc( kt ) ! external sources of nutrients … … 145 143 trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) 146 144 END DO 145 147 146 ! 148 147 IF( iom_use( 'INTdtAlk' ) .OR. iom_use( 'INTdtDIC' ) .OR. iom_use( 'INTdtFer' ) .OR. & … … 194 193 ENDIF 195 194 ! 196 DO jn = jp_pcs0, jp_pcs1 197 tra(:,:,:,jn) = 0._wp 198 END DO 199 ! 200 IF( ln_top_euler ) THEN 201 DO jn = jp_pcs0, jp_pcs1 202 trn(:,:,:,jn) = trb(:,:,:,jn) 203 END DO 204 ENDIF 195 DO jn = jp_pcs0, jp_pcs1 196 tra(:,:,:,jn) = 0._wp 197 END DO 198 ! 199 END DO 200 ! 201 #endif 202 ! 203 IF( ln_sediment ) THEN 204 ! 205 CALL sed_model( kt ) ! Main program of Sediment model 206 ! 207 ENDIF 208 ! 209 DO jn = jp_pcs0, jp_pcs1 210 tra(:,:,:,jn) = ( trb(:,:,:,jn) - ztrbbio(:,:,:,jn) ) * rfactr 211 trb(:,:,:,jn) = ztrbbio(:,:,:,jn) 212 ztrbbio(:,:,:,jn) = 0._wp 205 213 END DO 206 214 ! 207 215 IF( l_trdtrc ) THEN 208 216 DO jn = jp_pcs0, jp_pcs1 209 ztrdt(:,:,:,jn) = ( trb(:,:,:,jn) - ztrdt(:,:,:,jn) ) * rfactr 210 CALL trd_trc( ztrdt(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 217 CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 211 218 END DO 212 DEALLOCATE( ztrdt )213 219 END IF 214 #endif 215 ! 216 IF( ln_sediment ) THEN 217 ! 218 CALL sed_model( kt ) ! Main program of Sediment model 219 ! 220 IF( ln_top_euler ) THEN 221 DO jn = jp_pcs0, jp_pcs1 222 trn(:,:,:,jn) = trb(:,:,:,jn) 223 END DO 224 ENDIF 225 ! 226 ENDIF 227 ! 220 ! 228 221 IF( lrst_trc ) CALL p4z_rst( kt, 'WRITE' ) !* Write PISCES informations in restart file 229 222 !
Note: See TracChangeset
for help on using the changeset viewer.