Changeset 15004 for NEMO/trunk/src/OCE/ISF
- Timestamp:
- 2021-06-16T12:33:18+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE/ISF
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ISF/isfcav.F90
r14995 r15004 60 60 !! - output 61 61 !! 62 !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean )62 !! ** Convention : all fluxes are from isf to oce 63 63 !! 64 64 !!--------------------------------------------------------------------- 65 65 !!-------------------------- OUT -------------------------------------- 66 REAL(wp), DIMENSION(jpi,jpj) , INTENT(inout) :: pqfwf ! ice shelf melt (>0 out)66 REAL(wp), DIMENSION(jpi,jpj) , INTENT(inout) :: pqfwf ! ice shelf fwf 67 67 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(inout) :: ptsc ! T & S ice shelf cavity contents 68 68 !!-------------------------- IN -------------------------------------- … … 127 127 END DO 128 128 ! 129 ! compute heat and water flux ( > 0 out)129 ! compute heat and water flux ( > 0 from isf to oce) 130 130 pqfwf(:,:) = pqfwf(:,:) * mskisf_cav(:,:) 131 131 zqoce(:,:) = zqoce(:,:) * mskisf_cav(:,:) 132 132 zqhc (:,:) = zqhc(:,:) * mskisf_cav(:,:) 133 133 ! 134 ! compute heat content flux ( > 0 out)134 ! compute heat content flux ( > 0 from isf to oce) 135 135 zqlat(:,:) = - pqfwf(:,:) * rLfusisf ! 2d latent heat flux (W/m2) 136 136 ! 137 ! total heat flux ( > 0 out)137 ! total heat flux ( > 0 from isf to oce) 138 138 zqh(:,:) = ( zqhc (:,:) + zqoce(:,:) ) 139 139 ! … … 145 145 ! 146 146 ! set temperature content 147 ptsc(:,:,jp_tem) = -zqh(:,:) * r1_rho0_rcp147 ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp 148 148 ! 149 149 ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) -
NEMO/trunk/src/OCE/ISF/isfcavmlt.F90
r14995 r15004 9 9 10 10 !!---------------------------------------------------------------------- 11 !! isfcav_mlt : compute or read ice shelf fwf/heat fluxes in the ice shelf cavity 11 !! isfcav_mlt : compute or read ice shelf fwf/heat fluxes from isf 12 !! to oce 12 13 !!---------------------------------------------------------------------- 13 14 … … 114 115 CALL eos_fzp( pstbl(:,:), ztfrz(:,:), risfdep(:,:) ) 115 116 ! 116 ! read input file 117 ! read input file of fwf (from isf to oce; ie melt) 117 118 CALL fld_read ( kt, 1, sf_isfcav_fwf ) 118 119 ! 119 120 ! define fwf and qoce 120 121 ! ocean heat flux is assume to be equal to the latent heat 121 pqfwf(:,:) = - sf_isfcav_fwf(1)%fnow(:,:,1) ! fwf ( >0 out)122 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 out)123 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out)122 pqfwf(:,:) = sf_isfcav_fwf(1)%fnow(:,:,1) ! fwf ( > 0 from isf to oce) 123 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 from isf to oce) 124 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 124 125 ! 125 126 ! output freezing point at the interface … … 163 164 ! 164 165 ! compute ocean-ice heat flux and then derive fwf assuming that ocean heat flux equal latent heat 165 pqfwf(:,:) = - pgt(:,:) * rho0_rcp * zthd(:,:) / rLfusisf ! fresh water flux ( > 0 out)166 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocea-ice flux ( > 0 out)167 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out)166 pqfwf(:,:) = pgt(:,:) * rho0_rcp * zthd(:,:) / rLfusisf ! fresh water flux ( > 0 from isf to oce) 167 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocea-ice flux ( > 0 from isf to oce) 168 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 168 169 ! 169 170 ! output thermal driving and freezinpoint at the ice shelf interface … … 240 241 ! 241 242 ! compute the upward water and heat flux (eq. 24 and eq. 26) 242 pqfwf(ji,jj) = rho0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux (> 0 out)243 pqoce(ji,jj) = rho0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux (> 0 out)244 pqhc (ji,jj) = rcp * pqfwf(ji,jj) * ztfrz(ji,jj) ! heat content flux (> 0 out)243 pqfwf(ji,jj) = - rho0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux ( > 0 from isf to oce) 244 pqoce(ji,jj) = - rho0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux ( > 0 from isf to oce) 245 pqhc (ji,jj) = rcp * pqfwf(ji,jj) * ztfrz(ji,jj) ! heat content flux ( > 0 from isf to oce) 245 246 ! 246 247 zqcon(ji,jj) = zeps3 * ( ztfrz(ji,jj) - rtsurf ) … … 283 284 CALL eos_fzp( pstbl(:,:), ztfrz(:,:), risfdep(:,:) ) 284 285 ! 285 ! read input file 286 ! read input file of fwf from isf to oce 286 287 CALL fld_read ( kt, 1, sf_isfcav_fwf ) 287 288 ! 288 289 ! ice shelf 2d map 289 zfwf(:,:) = -sf_isfcav_fwf(1)%fnow(:,:,1)290 zfwf(:,:) = sf_isfcav_fwf(1)%fnow(:,:,1) 290 291 ! 291 292 ! compute glob sum from input file … … 302 303 ! define fwf and qoce 303 304 ! ocean heat flux is assume to be equal to the latent heat 304 pqfwf(:,:) = zfwf(:,:) ! fwf ( > 0 out)305 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 out)306 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out)305 pqfwf(:,:) = zfwf(:,:) ! fwf ( > 0 from isf to oce) 306 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 from isf to oce) 307 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 307 308 ! 308 309 CALL iom_put('isftfrz_cav', ztfrz * mskisf_cav(:,:) ) -
NEMO/trunk/src/OCE/ISF/isfcpl.F90
r14433 r15004 685 685 !============================================================================== 686 686 ! 687 ! mask (>0 out)687 ! mask 688 688 risfcpl_cons_vol(:,:,: ) = risfcpl_cons_vol(:,:,: ) * tmask(:,:,:) 689 689 risfcpl_cons_tsc(:,:,:,jp_sal) = risfcpl_cons_tsc(:,:,:,jp_sal) * tmask(:,:,:) -
NEMO/trunk/src/OCE/ISF/isfdiags.F90
r13295 r15004 40 40 !! 41 41 !! ** Purpose : manage the 2d and 3d flux outputs of the ice shelf module 42 !! f wf, latent heat flux, heat content flux, oce->ice heat flux42 !! from isf to oce fwf, latent heat, heat content fluxes 43 43 !! 44 44 !!---------------------------------------------------------------------- … … 62 62 ! 63 63 ! output 2d melt rate, latent heat and heat content flux from the injected water 64 CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) ) ! mass flux ( > 0 out)65 CALL iom_put( TRIM(cvarqoce), pqoce(:,:) ) ! oce to ice flux ( > 0 out)66 CALL iom_put( TRIM(cvarqlat), pqlat(:,:) ) ! latent heat flux ( > 0 out)67 CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) ) ! heat content flux ( > 0 out)64 CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) ) ! mass flux ( > 0 from isf to oce) 65 CALL iom_put( TRIM(cvarqoce), pqoce(:,:) ) ! oce to ice flux ( > 0 from isf to oce) 66 CALL iom_put( TRIM(cvarqlat), pqlat(:,:) ) ! latent heat flux ( > 0 from isf to oce) 67 CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) ) ! heat content flux ( > 0 from isf to oce) 68 68 ! 69 69 ! output 3d Diagnostics -
NEMO/trunk/src/OCE/ISF/isfdynatf.F90
r14053 r15004 83 83 ! add the increment 84 84 DO jk = 1, jpkm1 85 pe3t_f(:,:,jk) = pe3t_f(:,:,jk) -tmask(:,:,jk) * zfwfinc(:,:) &85 pe3t_f(:,:,jk) = pe3t_f(:,:,jk) + tmask(:,:,jk) * zfwfinc(:,:) & 86 86 & * e3t(:,:,jk,Kmm) 87 87 END DO -
NEMO/trunk/src/OCE/ISF/isfhdiv.F90
r14834 r15004 107 107 ! level fully include in the ice shelf boundary layer 108 108 DO jk = ikt, ikb - 1 109 phdiv(ji,jj,jk) = phdiv(ji,jj,jk) +zhdiv(ji,jj)109 phdiv(ji,jj,jk) = phdiv(ji,jj,jk) - zhdiv(ji,jj) 110 110 END DO 111 111 ! level partially include in ice shelf boundary layer 112 phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) +zhdiv(ji,jj) * pfrac(ji,jj)112 phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) - zhdiv(ji,jj) * pfrac(ji,jj) 113 113 END_2D 114 114 ! -
NEMO/trunk/src/OCE/ISF/isfpar.F90
r14995 r15004 57 57 !! the name tbl was kept. 58 58 !! 59 !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean )59 !! ** Convention : all fluxes are from isf to oce 60 60 !! 61 61 !!--------------------------------------------------------------------- … … 73 73 CALL isfpar_mlt( kt, Kmm, zqhc, zqoce, pqfwf ) 74 74 ! 75 ! compute heat and water flux ( > 0 out)75 ! compute heat and water flux (from isf to oce) 76 76 pqfwf(:,:) = pqfwf(:,:) * mskisf_par(:,:) 77 77 zqoce(:,:) = zqoce(:,:) * mskisf_par(:,:) 78 78 zqhc (:,:) = zqhc(:,:) * mskisf_par(:,:) 79 79 ! 80 ! compute latent heat flux ( > 0 out)80 ! compute latent heat flux (from isf to oce) 81 81 zqlat(:,:) = - pqfwf(:,:) * rLfusisf ! 2d latent heat flux (W/m2) 82 82 ! 83 ! total heat flux ( > 0 out)83 ! total heat flux (from isf to oce) 84 84 zqh(:,:) = ( zqhc (:,:) + zqoce(:,:) ) 85 85 ! … … 91 91 ! 92 92 ! set temperature content 93 ptsc(:,:,jp_tem) = -zqh(:,:) * r1_rho0_rcp93 ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp 94 94 ! 95 95 ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) -
NEMO/trunk/src/OCE/ISF/isfparmlt.F90
r14995 r15004 102 102 !!-------------------------------------------------------------------- 103 103 ! 104 ! 0. ------------Read specified runoff104 ! 0. ------------Read specified fwf from isf to oce 105 105 CALL fld_read ( kt, 1, sf_isfpar_fwf ) 106 106 ! … … 112 112 CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 113 113 ! 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)114 pqfwf(:,:) = sf_isfpar_fwf(1)%fnow(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) ( > 0 from isf to oce) 115 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean/ice shelf flux assume to be equal to latent heat flux ( > 0 from isf to oce) 116 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 117 117 ! 118 118 CALL iom_put('isftfrz_par', ztfrz(:,:) * mskisf_par(:,:) ) … … 157 157 ! 158 158 ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 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)159 pqfwf(:,:) = rho0 * rcp * rn_isfpar_bg03_gt0 * risfLeff(:,:) * e1t(:,:) * (ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:) / rLfusisf ! ( > 0 from isf to oce) 160 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean/ice shelf flux assume to be equal to latent heat flux ( > 0 from isf to oce) 161 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 162 162 ! 163 163 ! 3. ------------BG03 output … … 207 207 ! 208 208 ! 2. ------------Scale isf melt pattern with total amount from oasis 209 ! ice shelf 2d map 210 zfwf(:,:) = -sf_isfpar_fwf(1)%fnow(:,:,1)209 ! ice shelf 2d map of fwf from isf to oce 210 zfwf(:,:) = sf_isfpar_fwf(1)%fnow(:,:,1) 211 211 ! 212 212 ! compute glob sum from input file … … 223 223 ! 3. -----------Define fwf and qoce 224 224 ! ocean heat flux is assume to be equal to the latent heat 225 pqfwf(:,:) = zfwf(:,:) ! fwf ( > 0 out)226 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 out) (assumed to be the latent heat flux)227 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out)225 pqfwf(:,:) = zfwf(:,:) ! fwf ( > 0 from isf to oce) 226 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocean heat flux ( > 0 from isf to oce) (assumed to be the latent heat flux) 227 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 from isf to oce) 228 228 ! 229 229 CALL iom_put('isftfrz_par', ztfrz )
Note: See TracChangeset
for help on using the changeset viewer.