Changeset 14995 for NEMO/trunk/src
- Timestamp:
- 2021-06-15T19:15:26+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ISF/isf_oce.F90
r14064 r14995 47 47 ! 48 48 ! 0.3 -------- ice shelf cavity parametrised namelist parameter ------------- 49 LOGICAL , PUBLIC :: ln_isfpar_mlt !: logical for the computation of melt inside the cavity 50 CHARACTER(LEN=256), PUBLIC :: cn_isfpar_mlt !: melt formulation (cavity/param) 51 TYPE(FLD_N) , PUBLIC :: sn_isfpar_fwf !: information about the isf melting file to be read 52 TYPE(FLD_N) , PUBLIC :: sn_isfpar_zmax !: information about the grounding line depth file to be read 53 TYPE(FLD_N) , PUBLIC :: sn_isfpar_zmin !: information about the calving line depth file to be read 54 TYPE(FLD_N) , PUBLIC :: sn_isfpar_Leff !: information about the effective length file to be read 49 LOGICAL , PUBLIC :: ln_isfpar_mlt !: logical for the computation of melt inside the cavity 50 REAL(wp) , PUBLIC :: rn_isfpar_bg03_gt0 !: temperature exchange coeficient [m/s] 51 CHARACTER(LEN=256), PUBLIC :: cn_isfpar_mlt !: melt formulation (cavity/param) 52 TYPE(FLD_N) , PUBLIC :: sn_isfpar_fwf !: information about the isf melting file to be read 53 TYPE(FLD_N) , PUBLIC :: sn_isfpar_zmax !: information about the grounding line depth file to be read 54 TYPE(FLD_N) , PUBLIC :: sn_isfpar_zmin !: information about the calving line depth file to be read 55 TYPE(FLD_N) , PUBLIC :: sn_isfpar_Leff !: information about the effective length file to be read 55 56 ! 56 57 ! 0.4 -------- coupling namelist parameter ------------- -
NEMO/trunk/src/OCE/ISF/isfcav.F90
r14433 r14995 59 59 !! - compute heat and fwf fluxes 60 60 !! - output 61 !! 62 !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean ) 63 !! 61 64 !!--------------------------------------------------------------------- 62 65 !!-------------------------- OUT -------------------------------------- … … 132 135 zqlat(:,:) = - pqfwf(:,:) * rLfusisf ! 2d latent heat flux (W/m2) 133 136 ! 134 ! total heat flux ( > 0 out )137 ! total heat flux ( > 0 out ) 135 138 zqh(:,:) = ( zqhc (:,:) + zqoce(:,:) ) 136 139 ! … … 148 151 ! 149 152 IF ( ln_isfdebug ) THEN 153 IF(lwp) WRITE(numout,*) '' 150 154 CALL debug('isf_cav: ptsc T',ptsc(:,:,1)) 151 155 CALL debug('isf_cav: ptsc S',ptsc(:,:,2)) 152 156 CALL debug('isf_cav: pqfwf fwf',pqfwf(:,:)) 157 IF(lwp) WRITE(numout,*) '' 153 158 END IF 154 159 ! -
NEMO/trunk/src/OCE/ISF/isfcavmlt.F90
r13472 r14995 79 79 ! 80 80 IF (ln_isfdebug) THEN 81 IF(lwp) WRITE(numout,*) '' 81 82 CALL debug( 'isfcav_mlt qhc :', pqhc (:,:) ) 82 83 CALL debug( 'isfcav_mlt qoce :', pqoce(:,:) ) 83 84 CALL debug( 'isfcav_mlt qfwf :', pqfwf(:,:) ) 85 IF(lwp) WRITE(numout,*) '' 84 86 END IF 85 87 ! … … 122 124 ! 123 125 ! output freezing point at the interface 124 CALL iom_put('isftfrz_cav', ztfrz )126 CALL iom_put('isftfrz_cav', ztfrz(:,:) * mskisf_cav(:,:) ) 125 127 ! 126 128 END SUBROUTINE isfcav_mlt_spe … … 167 169 ! output thermal driving and freezinpoint at the ice shelf interface 168 170 CALL iom_put('isfthermald_cav', zthd ) 169 CALL iom_put('isftfrz_cav' , ztfrz )171 CALL iom_put('isftfrz_cav' , ztfrz(:,:) * mskisf_cav(:,:) ) 170 172 ! 171 173 END SUBROUTINE isfcav_mlt_2eq -
NEMO/trunk/src/OCE/ISF/isfpar.F90
r14433 r14995 9 9 !! 3.4 ! 2013-03 (P. Mathiot) Merging + parametrization 10 10 !! 4.1 ! 2019-09 (P. Mathiot) Restructuration 11 !! 4.2 ! 2021-05 (C. Ethe ) Test and fix oasis case 11 12 !!---------------------------------------------------------------------- 12 13 … … 56 57 !! the name tbl was kept. 57 58 !! 59 !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean ) 60 !! 58 61 !!--------------------------------------------------------------------- 59 62 !!-------------------------- OUT -------------------------------------- … … 75 78 zqhc (:,:) = zqhc(:,:) * mskisf_par(:,:) 76 79 ! 77 ! compute heat content flux ( > 0 out )78 zqlat(:,:) = pqfwf(:,:) * rLfusisf ! 2d latent heat flux (W/m2)80 ! compute latent heat flux ( > 0 out ) 81 zqlat(:,:) = - pqfwf(:,:) * rLfusisf ! 2d latent heat flux (W/m2) 79 82 ! 80 83 ! total heat flux ( > 0 out ) … … 88 91 ! 89 92 ! set temperature content 90 ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp93 ptsc(:,:,jp_tem) = - zqh(:,:) * r1_rho0_rcp 91 94 ! 92 95 ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) … … 94 97 ! 95 98 IF ( ln_isfdebug ) THEN 99 IF(lwp) WRITE(numout,*) 96 100 CALL debug('isf_par: ptsc T',ptsc(:,:,1)) 97 101 CALL debug('isf_par: ptsc S',ptsc(:,:,2)) 98 102 CALL debug('isf_par: pqfwf fwf',pqfwf(:,:)) 103 IF(lwp) WRITE(numout,*) 99 104 END IF 100 105 ! … … 175 180 CASE ( 'oasis' ) 176 181 ! 182 ALLOCATE( sf_isfpar_fwf(1), STAT=ierr ) 183 ALLOCATE( sf_isfpar_fwf(1)%fnow(jpi,jpj,1), sf_isfpar_fwf(1)%fdta(jpi,jpj,1,2) ) 184 CALL fld_fill( sf_isfpar_fwf, (/ sn_isfpar_fwf /), cn_isfdir, 'isf_par_init', 'read fresh water flux isf data', 'namisf' ) 185 ! 177 186 IF(lwp) WRITE(numout,*) 178 187 IF(lwp) WRITE(numout,*) ' ==>>> isf melt provided by OASIS (cn_isfmlt_par = oasis)' -
NEMO/trunk/src/OCE/ISF/isfparmlt.F90
r12489 r14995 10 10 USE isf_oce ! ice shelf 11 11 USE isftbl , ONLY: isf_tbl ! ice shelf depth average 12 USE isfutils,ONLY: debug ! debug subroutine 12 13 13 14 USE dom_oce ! ocean space and time domain … … 39 40 ! ------------------------------------------------------------------------------------------------------- 40 41 41 SUBROUTINE isfpar_mlt( kt, Kmm, pqhc, pqoce, pqfwf )42 SUBROUTINE isfpar_mlt( kt, Kmm, pqhc, pqoce, pqfwf ) 42 43 !!--------------------------------------------------------------------- 43 44 !! *** ROUTINE isfpar_mlt *** … … 69 70 END SELECT 70 71 ! 72 IF (ln_isfdebug) THEN 73 IF(lwp) WRITE(numout,*) '' 74 CALL debug( 'isfpar_mlt qhc :', pqhc (:,:) ) 75 CALL debug( 'isfpar_mlt qoce :', pqoce(:,:) ) 76 CALL debug( 'isfpar_mlt qfwf :', pqfwf(:,:) ) 77 IF(lwp) WRITE(numout,*) '' 78 END IF 79 ! 71 80 END SUBROUTINE isfpar_mlt 72 81 … … 103 112 CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 104 113 ! 105 pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 106 pqoce(:,:) = pqfwf(:,:) * rLfusisf ! ocean/ice shelf flux assume to be equal to latent heat flux107 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux 108 ! 109 CALL iom_put('isftfrz_par', ztfrz )114 pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) ( > 0 out ) 115 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean/ice shelf flux assume to be equal to latent heat flux ( > 0 out ) 116 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out ) 117 ! 118 CALL iom_put('isftfrz_par', ztfrz(:,:) * mskisf_par(:,:) ) 110 119 ! 111 120 END SUBROUTINE isfpar_mlt_spe … … 145 154 ! 146 155 ! 1. ------------Mean temperature 147 CALL isf_tbl(Kmm, ts(:,:, jk,jp_tem,Kmm), ztavg, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par )156 CALL isf_tbl(Kmm, ts(:,:,:,jp_tem,Kmm), ztavg, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 148 157 ! 149 158 ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 150 pq oce(:,:) = rho0 * rcp * rn_gammat0 * risfLeff(:,:) * e1t(:,:) * ( ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:)151 pq fwf(:,:) = - pqoce(:,:) / rLfusisf ! derived from the latent heat flux152 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux 159 pqfwf(:,:) = - rho0 * rcp * rn_isfpar_bg03_gt0 * risfLeff(:,:) * e1t(:,:) * (ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:) / rLfusisf ! ( > 0 out ) 160 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean/ice shelf flux assume to be equal to latent heat flux ( > 0 out ) 161 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out ) 153 162 ! 154 163 ! 3. ------------BG03 output … … 157 166 ! 158 167 ! output thermal driving 159 CALL iom_put('isfthermald_par',( zt frz(:,:) - ztavg(:,:) ) * mskisf_par(:,:))168 CALL iom_put('isfthermald_par',( ztavg(:,:) - ztfrz(:,:) ) * mskisf_par(:,:)) 160 169 ! 161 170 ! output freezing point used to define the thermal driving and heat content fluxes 162 CALL iom_put('isftfrz_par', ztfrz )171 CALL iom_put('isftfrz_par', ztfrz(:,:) * mskisf_par(:,:) ) 163 172 ! 164 173 END SUBROUTINE isfpar_mlt_bg03 -
NEMO/trunk/src/OCE/ISF/isfstp.F90
r14143 r14995 262 262 IF ( l_isfoasis .AND. ln_isf ) THEN 263 263 ! 264 CALL ctl_stop( 'namelist combination ln_cpl and ln_isf not tested' )265 !266 264 ! NEMO coupled to ATMO model with isf cavity need oasis method for melt computation 267 265 IF ( ln_isfcav_mlt .AND. TRIM(cn_isfcav_mlt) /= 'oasis' ) CALL ctl_stop( 'cn_isfcav_mlt = oasis is the only option availble if fwf send by oasis' ) 268 266 IF ( ln_isfpar_mlt .AND. TRIM(cn_isfpar_mlt) /= 'oasis' ) CALL ctl_stop( 'cn_isfpar_mlt = oasis is the only option availble if fwf send by oasis' ) 269 !270 ! oasis melt computation not tested (coded but not tested)271 IF ( ln_isfcav_mlt .OR. ln_isfpar_mlt ) THEN272 IF ( TRIM(cn_isfcav_mlt) == 'oasis' ) CALL ctl_stop( 'cn_isfcav_mlt = oasis not tested' )273 IF ( TRIM(cn_isfpar_mlt) == 'oasis' ) CALL ctl_stop( 'cn_isfpar_mlt = oasis not tested' )274 END IF275 267 ! 276 268 ! oasis melt computation with cavity open and cavity parametrised (not coded) … … 301 293 & sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff, & 302 294 & ln_isfcpl , nn_drown , ln_isfcpl_cons, ln_isfdebug, & 303 & cn_isfload , rn_isfload_T , rn_isfload_S , cn_isfdir 295 & cn_isfload , rn_isfload_T , rn_isfload_S , cn_isfdir , & 296 & rn_isfpar_bg03_gt0 304 297 !!---------------------------------------------------------------------- 305 298 ! -
NEMO/trunk/src/OCE/SBC/sbccpl.F90
r14834 r14995 285 285 & sn_rcv_charn , sn_rcv_taw , sn_rcv_bhd , sn_rcv_tusd , sn_rcv_tvsd, & 286 286 & sn_rcv_wdrag , sn_rcv_qns , sn_rcv_emp , sn_rcv_rnf , sn_rcv_cal , & 287 & sn_rcv_iceflx, sn_rcv_co2 , sn_rcv_icb , sn_rcv_isf , sn_rcv_ts_ice !!, sn_rcv_qtrice 287 & sn_rcv_iceflx, sn_rcv_co2 , sn_rcv_icb , sn_rcv_isf , sn_rcv_ts_ice, & !!, sn_rcv_qtrice 288 & sn_rcv_mslp 288 289 289 290 !!--------------------------------------------------------------------- … … 528 529 IF(lwp) WRITE(numout,*) 529 530 IF(lwp) WRITE(numout,*) ' iceshelf received from oasis ' 530 CALL ctl_stop('STOP','not coded')531 ENDIF531 ENDIF 532 ! 532 533 ! 533 534 ! ! ------------------------- !
Note: See TracChangeset
for help on using the changeset viewer.