Changeset 9940 for NEMO/trunk/src/OCE/ICB
- Timestamp:
- 2018-07-13T12:18:14+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ICB/icbthm.F90
r9598 r9940 50 50 REAL(wp) :: zM, zT, zW, zL, zSST, zVol, zLn, zWn, zTn, znVol, zIC, zDn 51 51 REAL(wp) :: zMv, zMe, zMb, zmelt, zdvo, zdva, zdM, zSs, zdMe, zdMb, zdMv 52 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat 52 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat, z1_12 53 53 REAL(wp) :: zMbits, znMbits, zdMbitsE, zdMbitsM, zLbits, zAbits, zMbb 54 54 REAL(wp) :: zxi, zyj, zff, z1_rday, z1_e1e2, zdt, z1_dt, z1_dt_e1e2 … … 58 58 ! 59 59 z1_rday = 1._wp / rday 60 z1_12 = 1._wp / 12._wp 61 zdt = berg_dt 62 z1_dt = 1._wp / zdt 60 63 ! 61 64 ! we're either going to ignore berg fresh water melt flux and associated heat … … 91 94 ij = mj1( ij ) 92 95 zVol = zT * zW * zL 93 zdt = berg_dt ; z1_dt = 1._wp / zdt94 96 95 97 ! Environment 96 98 zdvo = SQRT( (pt%uvel-pt%uo)**2 + (pt%vvel-pt%vo)**2 ) 97 99 zdva = SQRT( (pt%ua -pt%uo)**2 + (pt%va -pt%vo)**2 ) 98 zSs = 1.5 * SQRT( zdva ) + 0.1* zdva ! Sea state (eqn M.A9)100 zSs = 1.5_wp * SQRT( zdva ) + 0.1_wp * zdva ! Sea state (eqn M.A9) 99 101 100 102 ! Melt rates in m/s (i.e. division by rday) 101 zMv = MAX( 7.62 e-3*zSST+1.29e-3*(zSST**2), 0._wp ) * z1_rday ! Buoyant convection at sides (eqn M.A10)102 zMb = MAX( 0.58 *(zdvo**0.8)*(zSST+4.0)/(zL**0.2), 0._wp ) * z1_rday ! Basal turbulent melting (eqn M.A7 )103 zMe = MAX( 1./12.*(zSST+2.)*zSs*(1+COS(rpi*(zIC**3))), 0._wp ) * z1_rday ! Wave erosion (eqn M.A8 )103 zMv = MAX( 7.62d-3*zSST+1.29d-3*(zSST**2) , 0._wp ) * z1_rday ! Buoyant convection at sides (eqn M.A10) 104 zMb = MAX( 0.58_wp*(zdvo**0.8_wp)*(zSST+4.0_wp)/(zL**0.2_wp) , 0._wp ) * z1_rday ! Basal turbulent melting (eqn M.A7 ) 105 zMe = MAX( z1_12*(zSST+2.)*zSs*(1._wp+COS(rpi*(zIC**3))) , 0._wp ) * z1_rday ! Wave erosion (eqn M.A8 ) 104 106 105 107 IF( ln_operator_splitting ) THEN ! Operator split update of volume/mass 106 108 zTn = MAX( zT - zMb*zdt , 0._wp ) ! new total thickness (m) 107 109 znVol = zTn * zW * zL ! new volume (m^3) 108 zMnew1 = ( znVol/zVol) * zM! new mass (kg)110 zMnew1 = ( znVol / zVol ) * zM ! new mass (kg) 109 111 zdMb = zM - zMnew1 ! mass lost to basal melting (>0) (kg) 110 112 ! … … 112 114 zWn = MAX( zW - zMv*zdt , 0._wp ) ! new width (m) 113 115 znVol = zTn * zWn * zLn ! new volume (m^3) 114 zMnew2 = ( znVol/zVol) * zM! new mass (kg)116 zMnew2 = ( znVol / zVol ) * zM ! new mass (kg) 115 117 zdMv = zMnew1 - zMnew2 ! mass lost to buoyant convection (>0) (kg) 116 118 ! … … 142 144 zLbits = MIN( zL, zW, zT, 40._wp ) ! assume bergy bits are smallest dimension or 40 meters 143 145 zAbits = ( zMbits / rn_rho_bergs ) / zLbits ! Effective bottom area (assuming T=Lbits) 144 zMbb = MAX( 0.58*(zdvo**0.8)*(zSST+2.0)/(zLbits**0.2), 0.) * z1_rday ! Basal turbulent melting (for bits) 146 zMbb = MAX( 0.58_wp*(zdvo**0.8_wp)*(zSST+2._wp) / & 147 & ( zLbits**0.2_wp ) , 0._wp ) * z1_rday ! Basal turbulent melting (for bits) 145 148 zMbb = rn_rho_bergs * zAbits * zMbb ! in kg/s 146 149 zdMbitsM = MIN( zMbb*zdt , znMbits ) ! bergy bits mass lost to melting (kg)
Note: See TracChangeset
for help on using the changeset viewer.